1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-05-07 07:27:44 +00:00
seahub/thirdpart/termsandconditions/pipeline.py
2020-07-27 14:59:18 +08:00

41 lines
1.5 KiB
Python

"""This file contains functions used as part of a user creation pipeline, such as django-social-auth."""
# pylint: disable=W0613
try:
from urllib.parse import urlparse, urlunparse
except ImportError:
from urllib.parse import urlparse, urlunparse
from .models import TermsAndConditions
from django.http import HttpResponseRedirect, QueryDict
from django.conf import settings
from django.urls import reverse
import logging
ACCEPT_TERMS_PATH = getattr(settings, 'ACCEPT_TERMS_PATH', '/terms/accept/')
TERMS_RETURNTO_PARAM = getattr(settings, 'TERMS_RETURNTO_PARAM', 'returnTo')
LOGGER = logging.getLogger(name='termsandconditions')
def user_accept_terms(backend, user, uid, social_user=None, *args, **kwargs):
"""Check if the user has accepted the terms and conditions after creation."""
LOGGER.debug('user_accept_terms')
if not TermsAndConditions.agreed_to_latest(user):
return redirect_to_terms_accept('/')
else:
return {'social_user': social_user, 'user': user}
def redirect_to_terms_accept(current_path='/', slug='default'):
"""Redirect the user to the terms and conditions accept page."""
redirect_url_parts = list(urlparse(ACCEPT_TERMS_PATH))
if slug != 'default':
redirect_url_parts[2] += slug
querystring = QueryDict(redirect_url_parts[4], mutable=True)
querystring[TERMS_RETURNTO_PARAM] = current_path
redirect_url_parts[4] = querystring.urlencode(safe='/')
return HttpResponseRedirect(urlunparse(redirect_url_parts))