def check_provider(self): # Load provider provider = get_provider(self.kwargs['provider'], self.request.user) if not provider: raise PermissionDenied # Load query string args = parse_qs(self.request.META['QUERY_STRING'], strict_parsing=True) if not 'code' in args: raise PermissionDenied # Check state if 'state' in args and len(args['state']) == 1: state = args['state'][0].replace(' ', '+') # removed by parse_qs :( seed, _ = state.split('.') state_check = provider.build_user_state(int(seed)) if state != state_check: raise PermissionDenied # Get access token error = None response = None try: response = provider.get_token(args['code'][0]) except Exception, e: error = e
class Command(BaseCommand): option_list = BaseCommand.option_list + ( make_option( '--username', action='store', dest='username', type='string', default=False, help='Ran the import on the specified user.', ), make_option( '--provider', action='store', dest='provider', type='string', default=False, help='Ran the import with this provider.', ), make_option( '--full', action='store_true', dest='full', default=False, help='Run a full import on user, don\'t skip any track.', ), ) user = None provider = None def handle(self, *args, **options): # Check input if not options['username']: raise CommandError("Missing username") if not options['provider']: raise CommandError("Missing provider") # Load user try: self.user = Athlete.objects.get(username=options['username']) print 'User #%d %s %s' % (self.user.id, self.user.first_name, self.user.last_name) except Exception, e: raise CommandError("Invalid user %s : %s" % (options['username'], str(e))) # Load provider self.provider = get_provider(options['provider'], self.user) if not self.provider: raise CommandError("Invalid provider %s" % options['provider']) # Check connectivity if not self.provider.is_connected(): raise CommandError("Provider %s is not connected for user %s" % (self.provider.NAME, self.provider.user)) # Run the import self.provider.import_user(options['full'])
def get_provider(self): self.provider = get_provider(self.kwargs['name'], self.request.user) if not self.provider.is_connected(): raise Http404('Not connected') return self.provider