import foauth.providers


class Flickr(foauth.providers.OAuth1):
    # General info about the provider
    provider_url = 'http://www.flickr.com/'
    docs_url = 'http://www.flickr.com/services/api/'
    category = 'Pictures'

    # URLs to interact with the API
    request_token_url = 'http://www.flickr.com/services/oauth/request_token'
    authorize_url = 'http://www.flickr.com/services/oauth/authorize'
    access_token_url = 'http://www.flickr.com/services/oauth/access_token'
    api_domain = 'secure.flickr.com'

    available_permissions = [
        (None, 'access your public and private photos'),
        ('write', 'upload, edit and replace your photos'),
        ('delete', 'upload, edit, replace and delete your photos'),
    ]
    permissions_widget = 'radio'

    def get_authorize_params(self, redirect_uri, scopes):
        params = super(Flickr, self).get_authorize_params(redirect_uri, scopes)

        if any(scopes):
            params['perms'] = scopes[0]
        else:
            params['perms'] = 'read'

        return params

    def get_user_id(self, key):
        url = u'/services/rest/?method=flickr.people.getLimits'
        url += u'&format=json&nojsoncallback=1'
        r = self.api(key, self.api_domain, url)
        return r.json()[u'person'][u'nsid']

import foauth.providers


class Flickr(foauth.providers.OAuth1):
    # General info about the provider
    provider_url = 'http://www.flickr.com/'
    docs_url = 'http://www.flickr.com/services/api/'
    category = 'Pictures'

    # URLs to interact with the API
    request_token_url = 'http://www.flickr.com/services/oauth/request_token'
    authorize_url = 'http://www.flickr.com/services/oauth/authorize'
    access_token_url = 'http://www.flickr.com/services/oauth/access_token'
    api_domain = 'secure.flickr.com'

    available_permissions = [
        (None, 'access your public and private photos'),
        ('write', 'upload, edit and replace your photos'),
        ('delete', 'upload, edit, replace and delete your photos'),
    ]
    permissions_widget = 'radio'

    def get_authorize_params(self, redirect_uri, scopes):
        params = super(Flickr, self).get_authorize_params(redirect_uri, scopes)
        params['perms'] = scopes[0] or 'read'
        return params

    def get_user_id(self, key):
        url = u'/services/rest/?method=flickr.people.getLimits'
        url += u'&format=json&nojsoncallback=1'
        r = self.api(key, self.api_domain, url)
        return r.json()[u'person'][u'nsid']

Simplify Flickr's scope handling a bit
Simplify Flickr's scope handling a bit

  import foauth.providers
  
  
  class Flickr(foauth.providers.OAuth1):
      # General info about the provider
      provider_url = 'http://www.flickr.com/'
      docs_url = 'http://www.flickr.com/services/api/'
      category = 'Pictures'
  
      # URLs to interact with the API
      request_token_url = 'http://www.flickr.com/services/oauth/request_token'
      authorize_url = 'http://www.flickr.com/services/oauth/authorize'
      access_token_url = 'http://www.flickr.com/services/oauth/access_token'
      api_domain = 'secure.flickr.com'
  
      available_permissions = [
          (None, 'access your public and private photos'),
          ('write', 'upload, edit and replace your photos'),
          ('delete', 'upload, edit, replace and delete your photos'),
      ]
      permissions_widget = 'radio'
  
      def get_authorize_params(self, redirect_uri, scopes):
          params = super(Flickr, self).get_authorize_params(redirect_uri, scopes)
- 
-         if any(scopes):
-             params['perms'] = scopes[0]
+         params['perms'] = scopes[0] or 'read'
-         else:
-             params['perms'] = 'read'
- 
          return params
  
      def get_user_id(self, key):
          url = u'/services/rest/?method=flickr.people.getLimits'
          url += u'&format=json&nojsoncallback=1'
          r = self.api(key, self.api_domain, url)
          return r.json()[u'person'][u'nsid']
  
Simplify Flickr's scope handling a bit
## Code Before:
import foauth.providers


class Flickr(foauth.providers.OAuth1):
    # General info about the provider
    provider_url = 'http://www.flickr.com/'
    docs_url = 'http://www.flickr.com/services/api/'
    category = 'Pictures'

    # URLs to interact with the API
    request_token_url = 'http://www.flickr.com/services/oauth/request_token'
    authorize_url = 'http://www.flickr.com/services/oauth/authorize'
    access_token_url = 'http://www.flickr.com/services/oauth/access_token'
    api_domain = 'secure.flickr.com'

    available_permissions = [
        (None, 'access your public and private photos'),
        ('write', 'upload, edit and replace your photos'),
        ('delete', 'upload, edit, replace and delete your photos'),
    ]
    permissions_widget = 'radio'

    def get_authorize_params(self, redirect_uri, scopes):
        params = super(Flickr, self).get_authorize_params(redirect_uri, scopes)

        if any(scopes):
            params['perms'] = scopes[0]
        else:
            params['perms'] = 'read'

        return params

    def get_user_id(self, key):
        url = u'/services/rest/?method=flickr.people.getLimits'
        url += u'&format=json&nojsoncallback=1'
        r = self.api(key, self.api_domain, url)
        return r.json()[u'person'][u'nsid']

## Instruction:
Simplify Flickr's scope handling a bit
## Code After:
import foauth.providers


class Flickr(foauth.providers.OAuth1):
    # General info about the provider
    provider_url = 'http://www.flickr.com/'
    docs_url = 'http://www.flickr.com/services/api/'
    category = 'Pictures'

    # URLs to interact with the API
    request_token_url = 'http://www.flickr.com/services/oauth/request_token'
    authorize_url = 'http://www.flickr.com/services/oauth/authorize'
    access_token_url = 'http://www.flickr.com/services/oauth/access_token'
    api_domain = 'secure.flickr.com'

    available_permissions = [
        (None, 'access your public and private photos'),
        ('write', 'upload, edit and replace your photos'),
        ('delete', 'upload, edit, replace and delete your photos'),
    ]
    permissions_widget = 'radio'

    def get_authorize_params(self, redirect_uri, scopes):
        params = super(Flickr, self).get_authorize_params(redirect_uri, scopes)
        params['perms'] = scopes[0] or 'read'
        return params

    def get_user_id(self, key):
        url = u'/services/rest/?method=flickr.people.getLimits'
        url += u'&format=json&nojsoncallback=1'
        r = self.api(key, self.api_domain, url)
        return r.json()[u'person'][u'nsid']
