From 4bca2152407505e9a7538a04e80adf9146fba1fa Mon Sep 17 00:00:00 2001 From: Raphael Das Gupta <raphael.das.gupta@hsr.ch> Date: Tue, 2 May 2017 13:16:56 +0200 Subject: [PATCH] refactoring: use furl instead of urllib.parse --- osmaxx/profile/email_confirmation.py | 10 ++++------ requirements-all.txt | 4 +++- requirements.in | 1 + requirements.txt | 4 +++- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/osmaxx/profile/email_confirmation.py b/osmaxx/profile/email_confirmation.py index c6f5d2b93..f7df70360 100644 --- a/osmaxx/profile/email_confirmation.py +++ b/osmaxx/profile/email_confirmation.py @@ -1,5 +1,3 @@ -from urllib.parse import urlsplit, urlunsplit, parse_qs, urlencode - from django.conf import settings from django.contrib import messages from django.core.cache import cache @@ -7,6 +5,7 @@ from django.core.mail import send_mail from django.template.loader import render_to_string from django.urls import reverse from django.utils.translation import ugettext as _ +from furl import furl RATE_LIMIT_SECONDS = 30 @@ -22,10 +21,9 @@ def send_email_confirmation(profile, request): user_administrator_email = settings.OSMAXX['ACCOUNT_MANAGER_EMAIL'] token = profile.activation_key() activation_base_uri = request.build_absolute_uri(reverse('profile:activation')) - uri_components = urlsplit(activation_base_uri) - query_dict = parse_qs(uri_components.query) - query_dict['token'] = token - token_url = urlunsplit(uri_components._replace(query=urlencode(query_dict))) + f = furl(activation_base_uri) + f.args['token'] = token + token_url = f.url subject = render_to_string('profile/verification_email/subject.txt', context={}).strip() subject = ''.join(subject.splitlines()) message = render_to_string( diff --git a/requirements-all.txt b/requirements-all.txt index 6d4d76e6d..8b8ddfd42 100644 --- a/requirements-all.txt +++ b/requirements-all.txt @@ -28,6 +28,7 @@ docutils==0.13.1 # via pyroma dodgy==0.1.9 # via prospector drf-extensions==0.3.1 flake8==3.3.0 +furl==1.0.0 geoalchemy2==0.4.0 geometalab.drf-utm-zone-info==0.2.0 geometalab.osm-pbf-file-size-estimation-service==1.1.0 @@ -49,6 +50,7 @@ mkdocs==0.16.3 multidict==2.1.4 # via yarl numpy==1.12.1 oauthlib==2.0.2 # via requests-oauthlib, social-auth-core +orderedmultidict==0.7.11 # via furl pep8-naming==0.4.1 # via prospector pexpect==4.2.1 # via ipython pickleshare==0.7.4 # via ipython @@ -96,7 +98,7 @@ scipy==0.19.0 selenium==3.4.1 # via pytest-selenium setoptconf==0.2.0 # via prospector simplegeneric==0.8.1 # via ipython -six==1.10.0 # via astroid, django-downloadview, django-environ, django-extensions, livereload, prompt-toolkit, pyhamcrest, pylint, requests-mock, social-auth-app-django, social-auth-core, sqlalchemy-utils, traitlets, vcrpy +six==1.10.0 # via astroid, django-downloadview, django-environ, django-extensions, furl, livereload, orderedmultidict, prompt-toolkit, pyhamcrest, pylint, requests-mock, social-auth-app-django, social-auth-core, sqlalchemy-utils, traitlets, vcrpy social-auth-app-django==1.1.0 # via python-social-auth social-auth-core==1.2.0 # via python-social-auth, social-auth-app-django sqlalchemy-utils==0.32.14 diff --git a/requirements.in b/requirements.in index ea024f5b9..581a74af2 100644 --- a/requirements.in +++ b/requirements.in @@ -30,6 +30,7 @@ SQLAlchemy SQLAlchemy-Utils sqlalchemy-views GeoAlchemy2 +furl # fallback for python < 3.5 scandir diff --git a/requirements.txt b/requirements.txt index 176541c93..4689294d3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -28,6 +28,7 @@ docutils==0.13.1 # via pyroma dodgy==0.1.9 # via prospector drf-extensions==0.3.1 flake8==3.3.0 +furl==1.0.0 geoalchemy2==0.4.0 geometalab.drf-utm-zone-info==0.2.0 geometalab.osm-pbf-file-size-estimation-service==1.1.0 @@ -49,6 +50,7 @@ mkdocs==0.16.3 multidict==2.1.4 # via yarl numpy==1.12.1 oauthlib==2.0.2 # via requests-oauthlib, social-auth-core +orderedmultidict==0.7.11 # via furl pep8-naming==0.4.1 # via prospector pexpect==4.2.1 # via ipython pickleshare==0.7.4 # via ipython @@ -94,7 +96,7 @@ scipy==0.19.0 selenium==3.4.1 # via pytest-selenium setoptconf==0.2.0 # via prospector simplegeneric==0.8.1 # via ipython -six==1.10.0 # via astroid, django-downloadview, django-environ, django-extensions, livereload, prompt-toolkit, pyhamcrest, pylint, requests-mock, social-auth-app-django, social-auth-core, sqlalchemy-utils, traitlets, vcrpy +six==1.10.0 # via astroid, django-downloadview, django-environ, django-extensions, furl, livereload, orderedmultidict, prompt-toolkit, pyhamcrest, pylint, requests-mock, social-auth-app-django, social-auth-core, sqlalchemy-utils, traitlets, vcrpy social-auth-app-django==1.1.0 # via python-social-auth social-auth-core==1.2.0 # via python-social-auth, social-auth-app-django sqlalchemy-utils==0.32.14 -- GitLab