From a433929b6d2879ade21c45c6aff44f3e8bb83537 Mon Sep 17 00:00:00 2001 From: bashmak Date: Thu, 16 Feb 2017 17:42:26 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BE=D0=B1=D1=91=D1=80=D1=82=D0=BA=D1=83=20=D0=B4=D0=BB=D1=8F?= =?UTF-8?q?=20=D0=BF=D0=BE=D0=B4=D0=BA=D0=BB=D1=8E=D1=87=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=B3=D0=B4=D0=B5=20=D0=BD=D0=B5=D0=BE=D0=B1=D1=85?= =?UTF-8?q?=D0=BE=D0=B4=D0=B8=D0=BC=D0=BE=20ssl=20=D1=88=D0=B8=D1=84=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mydefs.py | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/mydefs.py b/mydefs.py index e122e32..51e7256 100644 --- a/mydefs.py +++ b/mydefs.py @@ -5,11 +5,12 @@ import socket import struct from collections import Iterator import os -from django.http import HttpResponse, Http404 +from functools import wraps +from django.http import HttpResponse, Http404, HttpResponseRedirect from django.shortcuts import redirect from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage from django.db import models -from djing.settings import PAGINATION_ITEMS_PER_PAGE +from djing.settings import PAGINATION_ITEMS_PER_PAGE, DEBUG ip_addr_regex = r'^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' @@ -138,6 +139,7 @@ def order_helper(request): # Декоратор проверяет аккаунт, чтоб не пускать клиентов в страницы администрации def only_admins(fn): + @wraps(fn) def wrapped(request, *args, **kwargs): if request.user.is_admin: return fn(request, *args, **kwargs) @@ -180,3 +182,18 @@ class RuTimedelta(timedelta): ru_days = 'день' text_date = '%d %s %s' % (self.days, ru_days, text_date) return text_date + + +def require_ssl(view): + """ + Decorator that requires an SSL connection. If the current connection is not SSL, we redirect to the SSL version of + the page. + from: https://gist.github.com/ckinsey/9709984 + """ + @wraps(view) + def wrapper(request, *args, **kwargs): + if not DEBUG and not request.is_secure(): + target_url = "https://" + request.META['HTTP_HOST'] + request.path_info + return HttpResponseRedirect(target_url) + return view(request, *args, **kwargs) + return wrapper