Revision 68122bae

b/snf-astakos-app/astakos/oa2/backends/base.py
44 44
logger = logging.getLogger(__name__)
45 45

  
46 46

  
47
def urlencode(params):
48
    if hasattr(params, 'urlencode') and callable(getattr(params, 'urlencode')):
49
        return params.urlencode()
50
    return urllib.urlencode(params)
51

  
52

  
47 53
def handles_oa2_requests(func):
48 54
    def wrapper(self, *args, **kwargs):
49 55
        if not self._errors_to_http:
......
341 347
        return bool(self.get_client_by_id(client_id))
342 348

  
343 349
    def build_site_url(self, prefix='', **params):
344
        params = urllib.urlencode(params)
350
        params = urlencode(params)
345 351
        return "%s%s%s%s" % (self.base_url, self.endpoints_prefix, prefix,
346 352
                             params)
347 353

  
......
352 358
    def build_client_redirect_uri(self, client, uri, **params):
353 359
        if not client.redirect_uri_is_valid(uri):
354 360
            raise OA2Error("Invalid redirect uri")
355
        params = urllib.urlencode(params)
361
        params = urlencode(params)
356 362
        uri = self._get_uri_base(uri)
357 363
        return "%s?%s" % (uri, params)
358 364

  
......
396 402

  
397 403
    def redirect_to_login_response(self, request, params):
398 404
        parts = list(urlparse.urlsplit(request.path))
399
        parts[3] = urllib.urlencode(params)
405
        parts[3] = urlencode(params)
400 406
        query = {'next': urlparse.urlunsplit(parts)}
401 407
        return Response(302,
402 408
                        headers={'Location': '%s?%s' %
403 409
                                 (self.get_login_uri(),
404
                                  urllib.urlencode(query))})
410
                                  urlencode(query))})
405 411

  
406 412
    def redirect_to_uri(self, redirect_uri, code, state=None):
407 413
        parts = list(urlparse.urlsplit(redirect_uri))
......
409 415
        params['code'] = code
410 416
        if state is not None:
411 417
            params['state'] = state
412
        parts[3] = urllib.urlencode(params)
418
        parts[3] = urlencode(params)
413 419
        return Response(302,
414 420
                        headers={'Location': '%s' %
415 421
                                 urlparse.urlunsplit(parts)})
b/snf-astakos-app/astakos/oa2/tests/djangobackend.py
1
# -*- coding: utf8 -*-
1 2
# Copyright 2013 GRNET S.A. All rights reserved.
2 3
#
3 4
# Redistribution and use in source and binary forms, with or
......
298 299
        # valid request: untrusted client
299 300
        params = {'redirect_uri': self.client1_redirect_uri,
300 301
                  'scope': self.client1_redirect_uri,
301
                  'extra_param': '123'}
302
                  'extra_param': 'γιουνικοντ'}
302 303
        self.client.set_credentials('client1', 'secret')
303 304
        r = self.client.authorize_code('client1', urlparams=params)
304 305
        self.assertEqual(r.status_code, 302)

Also available in: Unified diff