From 663eebc8edd3637a4fb8c5c3cf408226044aa697 Mon Sep 17 00:00:00 2001 From: zhengxie Date: Tue, 6 Feb 2018 17:36:04 +0800 Subject: [PATCH] [Django 1.11] Feature removed in Django 1.9. Use shortcut to get current site --- seahub/api2/views.py | 4 ++-- seahub/auth/forms.py | 6 ++---- seahub/auth/views.py | 15 +++++---------- seahub/base/accounts.py | 12 ++++-------- seahub/utils/__init__.py | 5 +++++ seahub/views/file.py | 4 ++-- seahub/views/wiki.py | 1 - tests/seahub/thirdpart/registration/tests.py | 4 ++-- thirdpart/registration/admin.py | 9 +++------ .../registration/backends/default/__init__.py | 9 +++------ 10 files changed, 28 insertions(+), 41 deletions(-) diff --git a/seahub/api2/views.py b/seahub/api2/views.py index 7e40928d7a..1493fd91e1 100644 --- a/seahub/api2/views.py +++ b/seahub/api2/views.py @@ -21,7 +21,7 @@ from rest_framework.response import Response from django.conf import settings as dj_settings from django.contrib.auth.hashers import check_password -from django.contrib.sites.models import RequestSite +from django.contrib.sites.shortcuts import get_current_site from django.db import IntegrityError from django.db.models import F from django.http import HttpResponse @@ -1813,7 +1813,7 @@ def get_shared_link(request, repo_id, path): return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, e.msg) http_or_https = request.is_secure() and 'https' or 'http' - domain = RequestSite(request).domain + domain = get_current_site(request).domain file_shared_link = '%s://%s%sf/%s/' % (http_or_https, domain, settings.SITE_ROOT, token) return file_shared_link diff --git a/seahub/auth/forms.py b/seahub/auth/forms.py index 2cce70aa14..7dc9ae5776 100644 --- a/seahub/auth/forms.py +++ b/seahub/auth/forms.py @@ -1,5 +1,4 @@ # Copyright (c) 2012-2016 Seafile Ltd. -from django.contrib.sites.models import Site from django.conf import settings from django import forms from django.utils.translation import ugettext_lazy as _ @@ -13,7 +12,7 @@ from seahub.auth.tokens import default_token_generator from seahub.options.models import UserOptions from seahub.profile.models import Profile from seahub.utils import IS_EMAIL_CONFIGURED, send_html_email, \ - is_ldap_user, is_user_password_strong + is_ldap_user, is_user_password_strong, get_site_name from captcha.fields import CaptchaField @@ -132,8 +131,7 @@ class PasswordResetForm(forms.Form): user = self.users_cache if not domain_override: - current_site = Site.objects.get_current() - site_name = current_site.name + site_name = get_site_name() else: site_name = domain_override diff --git a/seahub/auth/views.py b/seahub/auth/views.py index af476080b2..425de29f62 100644 --- a/seahub/auth/views.py +++ b/seahub/auth/views.py @@ -8,7 +8,7 @@ from django.views.decorators.csrf import csrf_protect from django.core.urlresolvers import reverse from django.contrib import messages from django.shortcuts import render -from django.contrib.sites.models import Site, RequestSite +from django.contrib.sites.shortcuts import get_current_site from django.http import HttpResponseRedirect, Http404 from django.utils.http import urlquote, base36_to_int, is_safe_url @@ -30,7 +30,7 @@ from seahub.base.accounts import User from seahub.options.models import UserOptions from seahub.profile.models import Profile from seahub.two_factor.views.login import is_device_remembered -from seahub.utils import is_ldap_user +from seahub.utils import is_ldap_user, get_site_name from seahub.utils.ip import get_remote_ip from seahub.utils.file_size import get_quota_from_string from seahub.utils.two_factor_auth import two_factor_auth_enabled, handle_two_factor_auth @@ -162,11 +162,7 @@ def login(request, template_name='registration/login.html', form = authentication_form() request.session.set_test_cookie() - - if Site._meta.installed: - current_site = Site.objects.get_current() - else: - current_site = RequestSite(request) + current_site = get_current_site(request) multi_tenancy = getattr(settings, 'MULTI_TENANCY', False) @@ -193,7 +189,7 @@ def login(request, template_name='registration/login.html', 'form': form, redirect_field_name: redirect_to, 'site': current_site, - 'site_name': current_site.name, + 'site_name': get_site_name(), 'remember_days': config.LOGIN_REMEMBER_DAYS, 'signup_url': signup_url, 'enable_shib_login': enable_shib_login, @@ -302,8 +298,7 @@ def password_reset(request, is_admin_site=False, template_name='registration/pas opts['domain_override'] = request.META['HTTP_HOST'] else: opts['email_template_name'] = email_template_name - if not Site._meta.installed: - opts['domain_override'] = RequestSite(request).domain + opts['domain_override'] = get_current_site(request).domain try: form.save(**opts) except Exception, e: diff --git a/seahub/base/accounts.py b/seahub/base/accounts.py index cbfc35ebab..49e79bd2b1 100644 --- a/seahub/base/accounts.py +++ b/seahub/base/accounts.py @@ -8,8 +8,7 @@ from django.core.mail import send_mail from django.utils import translation from django.utils.translation import ugettext_lazy as _ from django.conf import settings -from django.contrib.sites.models import RequestSite -from django.contrib.sites.models import Site +from django.contrib.sites.shortcuts import get_current_site import seaserv from seaserv import ccnet_threaded_rpc, unset_repo_passwd, is_passwd_set, \ seafile_api, ccnet_api @@ -21,7 +20,7 @@ from seahub.profile.models import Profile, DetailedProfile from seahub.role_permissions.models import AdminRole from seahub.role_permissions.utils import get_enabled_role_permissions_by_role, \ get_enabled_admin_role_permissions_by_role -from seahub.utils import is_user_password_strong, \ +from seahub.utils import is_user_password_strong, get_site_name, \ clear_token, get_system_admins, is_pro_version from seahub.utils.mail import send_html_email_with_dj_template, MAIL_PRIORITY from seahub.utils.licenseparse import user_number_over_limit @@ -396,7 +395,7 @@ class User(object): u.email, dj_template='sysadmin/user_freeze_email.html', subject=_('Account %(account)s froze on %(site)s.') % { "account": self.email, - "site": settings.SITE_NAME, + "site": get_site_name(), }, context={'user': self.email}, priority=MAIL_PRIORITY.now @@ -560,10 +559,7 @@ class RegistrationBackend(object): """ email, password = kwargs['email'], kwargs['password1'] username = email - if Site._meta.installed: - site = Site.objects.get_current() - else: - site = RequestSite(request) + site = get_current_site(request) from registration.models import RegistrationProfile if bool(config.ACTIVATE_AFTER_REGISTRATION) is True: diff --git a/seahub/utils/__init__.py b/seahub/utils/__init__.py index 81332572cc..8a4eb2cd2c 100644 --- a/seahub/utils/__init__.py +++ b/seahub/utils/__init__.py @@ -813,6 +813,11 @@ def get_site_scheme_and_netloc(): parse_result = urlparse(get_service_url()) return "%s://%s" % (parse_result.scheme, parse_result.netloc) +def get_site_name(): + """Return site name from settings. + """ + return SITE_NAME + def send_html_email(subject, con_template, con_context, from_email, to_email, reply_to=None): """Send HTML email diff --git a/seahub/views/file.py b/seahub/views/file.py index b3823411c6..10a0fbb6d5 100644 --- a/seahub/views/file.py +++ b/seahub/views/file.py @@ -21,7 +21,7 @@ import hashlib from django.core import signing from django.core.cache import cache -from django.contrib.sites.models import RequestSite +from django.contrib.sites.shortcuts import get_current_site from django.contrib import messages from django.core.urlresolvers import reverse from django.db.models import F @@ -566,7 +566,7 @@ def _file_view(request, repo_id, path): username=username).filter(path=path) fileshare = l[0] if len(l) > 0 else None http_or_https = request.is_secure() and 'https' or 'http' - domain = RequestSite(request).domain + domain = get_current_site(request).domain if fileshare: file_shared_link = gen_file_share_link(fileshare.token) else: diff --git a/seahub/views/wiki.py b/seahub/views/wiki.py index d8260bf82b..285ffc3c87 100644 --- a/seahub/views/wiki.py +++ b/seahub/views/wiki.py @@ -15,7 +15,6 @@ import urllib import urllib2 import chardet -from django.contrib.sites.models import Site, RequestSite from django.core.urlresolvers import reverse from django.contrib import messages from django.http import HttpResponse, HttpResponseBadRequest, Http404, \ diff --git a/tests/seahub/thirdpart/registration/tests.py b/tests/seahub/thirdpart/registration/tests.py index 5b8a5e54e8..7f26e0a66c 100644 --- a/tests/seahub/thirdpart/registration/tests.py +++ b/tests/seahub/thirdpart/registration/tests.py @@ -1,5 +1,5 @@ from django.core import mail -from django.contrib.sites.models import RequestSite +from django.contrib.sites.shortcuts import get_current_site from django.test import TestCase from django.test.client import RequestFactory @@ -12,7 +12,7 @@ class RegistrationTest(TestCase): def setUp(self): self.request = RequestFactory().get('/accounts/signup/') - self.site = RequestSite(self.request) + self.site = get_current_site(self.request) def tearDown(self): self.request = None diff --git a/thirdpart/registration/admin.py b/thirdpart/registration/admin.py index d7626d750d..5005261c73 100644 --- a/thirdpart/registration/admin.py +++ b/thirdpart/registration/admin.py @@ -1,6 +1,6 @@ from django.contrib import admin -from django.contrib.sites.models import RequestSite -from django.contrib.sites.models import Site +from django.contrib.sites.shortcuts import get_current_site + from django.utils.translation import ugettext_lazy as _ from registration.models import RegistrationProfile @@ -32,10 +32,7 @@ class RegistrationAdmin(admin.ModelAdmin): activated. """ - if Site._meta.installed: - site = Site.objects.get_current() - else: - site = RequestSite(request) + site = get_current_site(request) for profile in queryset: if not profile.activation_key_expired(): diff --git a/thirdpart/registration/backends/default/__init__.py b/thirdpart/registration/backends/default/__init__.py index 59b3da776d..2b5acc16a3 100644 --- a/thirdpart/registration/backends/default/__init__.py +++ b/thirdpart/registration/backends/default/__init__.py @@ -1,6 +1,5 @@ from django.conf import settings -from django.contrib.sites.models import RequestSite -from django.contrib.sites.models import Site +from django.contrib.sites.shortcuts import get_current_site from registration import signals from registration.forms import RegistrationForm @@ -71,10 +70,8 @@ class DefaultBackend(object): """ username, email, password = kwargs['username'], kwargs['email'], kwargs['password1'] - if Site._meta.installed: - site = Site.objects.get_current() - else: - site = RequestSite(request) + site = get_current_site(request) + new_user = RegistrationProfile.objects.create_inactive_user(username, email, password, site) signals.user_registered.send(sender=self.__class__,