diff --git a/src/customer/admin.py b/src/customer/admin.py
index b513fc5..34ba314 100644
--- a/src/customer/admin.py
+++ b/src/customer/admin.py
@@ -21,7 +21,7 @@ class LicenseAdmin(admin.ModelAdmin):
'order_date',
'date_from',
'date_to',
- 'balance_days',
+ 'balance_days'
)
list_display_links = list_display
diff --git a/src/customer/context_processors.py b/src/customer/context_processors.py
index d0f2a13..5aee1f4 100644
--- a/src/customer/context_processors.py
+++ b/src/customer/context_processors.py
@@ -3,7 +3,7 @@ import logging
from datetime import datetime, timedelta
from django.core.cache import cache
from customer.models import License
-from customer.utils import get_display_message_for_bonus
+from customer.utils import get_display_message_for_bonus, check_confirm_bonus_to_user
log = logging.getLogger(__name__)
@@ -15,6 +15,8 @@ def license_check_soon_ends(request):
days_left = cache.get(f'days_left_{request.user.username}', None)
cur_license = cache.get(f'cur_license_{request.user.username}', None)
+ print('license_15days=', license_15days)
+
if not days_left or not cur_license:
now = datetime.today()
cur_license = License.objects.filter(
@@ -29,6 +31,9 @@ def license_check_soon_ends(request):
cache.set(f'days_left_{request.user.username}', days_left, 3600)
cache.set(f'cur_license_{request.user.username}', cur_license, 3600)
+ if license_cookie:
+ license_15days = ''
+
if not license_cookie:
now = datetime.today()
if license_15days is None:
@@ -47,8 +52,8 @@ def license_check_soon_ends(request):
days_to_end = licenses_ends[0].date_to
cache.set(f'license_15_{request.user.username}', days_to_end, 3600)
license_15days = days_to_end
- else:
- license_15days = ''
+ else:
+ license_15days = ''
return {
'license_15days': license_15days,
@@ -56,28 +61,31 @@ def license_check_soon_ends(request):
'cur_license': cur_license,
}
except Exception as e:
- log.warning(e)
+ log.info(e)
return {}
def confirm_user_bonus(request):
+ """
+ If the user can get a notification about the bonus and
+ did not close the pop-up message, display this message
+ :param request: request( get from request user)
+ :return: context, dictionary
+ """
+ context = {}
+ message = ''
if request.user:
- context = {}
+
close_bonus_cookie = request.COOKIES.get('close_message_bonus')
confirm_bonus_days = cache.get(f'confirm_bonus_days_{request.user.username}', None)
+ if not confirm_bonus_days:
+ confirm_bonus_days = check_confirm_bonus_to_user(request.user)
+ cache.set(f'confirm_bonus_days_{request.user.username}', confirm_bonus_days, 3600)
- if confirm_bonus_days >= 0:
- message = get_display_message_for_bonus(confirm_bonus_days)
- context['confirm_bonus'] = True
- context['message'] = message
- return context
-
+ if close_bonus_cookie:
+ message = ''
if not close_bonus_cookie:
- pass
- else:
- return context
+ message = get_display_message_for_bonus(confirm_bonus_days)
- # return {
- # 'confirm_bonus': True,
- # 'message_bonus': message
- # }
+ context['message_bonus'] = message
+ return context
diff --git a/src/customer/utils.py b/src/customer/utils.py
index af8a59b..5b5e398 100644
--- a/src/customer/utils.py
+++ b/src/customer/utils.py
@@ -110,7 +110,7 @@ def check_confirm_bonus_to_user(user):
If user already have licenses don't display message
:param user: DockUser instance
:return: count of days remaining for getting bonus,
- integer or False if nothing to use
+ integer or integer (-1) if nothing to use
"""
from customer.models import License
@@ -120,16 +120,16 @@ def check_confirm_bonus_to_user(user):
deleted=False
)
if lic:
- return False
+ return -1
today = timezone.now().date()
date_join_start = today - timezone.timedelta(days=15)
- date_join_end = today - timezone.timedelta(days=6)
+ date_join_end = today - timezone.timedelta(days=5)
if date_join_start <= user.date_joined.date() <= date_join_end:
delta = user.date_joined.date() - date_join_start
return delta.days
- return False
+ return -1
def get_display_message_for_bonus(day_count):
diff --git a/src/myauth/admin.py b/src/myauth/admin.py
index ef0a788..f4abe27 100644
--- a/src/myauth/admin.py
+++ b/src/myauth/admin.py
@@ -3,6 +3,7 @@ from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.utils.translation import ugettext_lazy as _
+from customer.utils import check_confirm_bonus_to_user
from myauth.models import DokUser, ConfirmEmail
from myauth.forms import CustomUserChangeForm, CustomUserCreationForm
@@ -28,10 +29,27 @@ class CustomUserAdmin(UserAdmin):
)
form = CustomUserChangeForm
add_form = CustomUserCreationForm
- list_display = ('username', 'email', 'first_name', 'last_name', 'is_staff', 'date_joined')
+ list_display = (
+ 'username',
+ 'email',
+ 'first_name',
+ 'last_name',
+ 'is_staff',
+ 'date_joined',
+ 'remain_confirm_bonus_days'
+ )
search_fields = ('username', 'email', 'first_name', 'last_name')
ordering = ('email',)
+ def remain_confirm_bonus_days(self, obj):
+ confirm_bonus_days = check_confirm_bonus_to_user(obj)
+ if confirm_bonus_days != -1:
+ return confirm_bonus_days
+ else:
+ return '-'
+
+ remain_confirm_bonus_days.short_description = 'Дней для активации бонуса'
+
admin.site.register(DokUser, CustomUserAdmin)
admin.site.register(ConfirmEmail)
diff --git a/src/tests/test_utils.py b/src/tests/test_utils.py
index d3a651b..f7d6051 100644
--- a/src/tests/test_utils.py
+++ b/src/tests/test_utils.py
@@ -8,11 +8,11 @@ from customer.utils import check_one_profile, check_confirm_bonus_to_user
from customer.utils import get_display_message_for_bonus
-dates = [timezone.now() - timezone.timedelta(days=6),
+dates = [timezone.now() - timezone.timedelta(days=5),
timezone.now() - timezone.timedelta(days=10),
timezone.now() - timezone.timedelta(days=15)]
-dates_not_in_range = [timezone.now() - timezone.timedelta(days=5),
+dates_not_in_range = [timezone.now() - timezone.timedelta(days=2),
timezone.now() - timezone.timedelta(days=16)]
days = [1, 5, 10, 4, 6, 0]
@@ -44,7 +44,7 @@ def test_check_confirm_bonus_to_user_not_in_range(user, create_date):
user.date_joined = create_date
user.save()
day_remain = check_confirm_bonus_to_user(user)
- assert day_remain is False
+ assert day_remain == -1
@pytest.mark.parametrize('create_date', dates)
@@ -54,7 +54,7 @@ def test_check_confirm_bonus_to_user_with_license(lic, create_date):
user.date_joined = create_date
user.save()
day_remain = check_confirm_bonus_to_user(user)
- assert day_remain is False
+ assert day_remain == -1
@pytest.mark.parametrize('count_day', days)
diff --git a/templates/base.html b/templates/base.html
index 4f9c850..9f720b6 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -17,7 +17,7 @@
{% cms_toolbar %}
-{% if license_15days or confirm_bonus %}
+{% if license_15days or message_bonus %}
@@ -25,7 +25,7 @@
- {{ license_15days }} заканчивается Ваша лицензия на Документор. Купите новую лицензию заранее, чтобы работать без перерывов.Закрыть
{% endif %}
- {% if confirm_bonus %}
+ {% if message_bonus %}
- {{ message_bonus| safe }}Закрыть
{% endif %}