Commit 6f82ec2dddc474272b29c8806c8309d7629f9644
1 parent
d93501ee
Exists in
master
and in
3 other branches
Adding notification creation
Showing
1 changed file
with
36 additions
and
3 deletions
Show diff stats
notifications/utils.py
1 | -from datetime import datetime | 1 | +from datetime import date |
2 | +from django.utils import timezone | ||
2 | from django.db.models import Q | 3 | from django.db.models import Q |
3 | 4 | ||
4 | from log.models import Log | 5 | from log.models import Log |
5 | from pendencies.models import Pendencies | 6 | from pendencies.models import Pendencies |
6 | from users.models import User | 7 | from users.models import User |
7 | 8 | ||
9 | +from .models import Notification | ||
10 | + | ||
8 | def get_resource_users(resource): | 11 | def get_resource_users(resource): |
9 | if resource.all_students: | 12 | if resource.all_students: |
10 | return resource.topic.subject.students.all() | 13 | return resource.topic.subject.students.all() |
@@ -12,7 +15,7 @@ def get_resource_users(resource): | @@ -12,7 +15,7 @@ def get_resource_users(resource): | ||
12 | return User.objects.filter(Q(resource_students = resource) | Q(group_participants__resource_groups = resource)).distinct() | 15 | return User.objects.filter(Q(resource_students = resource) | Q(group_participants__resource_groups = resource)).distinct() |
13 | 16 | ||
14 | def set_notifications(): | 17 | def set_notifications(): |
15 | - pendencies = Pendencies.objects.filter(begin_date__date__lt = datetime.now(), resource__visible = True) | 18 | + pendencies = Pendencies.objects.filter(begin_date__date__lt = timezone.now(), resource__visible = True) |
16 | 19 | ||
17 | for pendency in pendencies: | 20 | for pendency in pendencies: |
18 | users = get_resource_users(pendency.resource) | 21 | users = get_resource_users(pendency.resource) |
@@ -23,8 +26,38 @@ def set_notifications(): | @@ -23,8 +26,38 @@ def set_notifications(): | ||
23 | resource_id = pendency.resource.id | 26 | resource_id = pendency.resource.id |
24 | 27 | ||
25 | for user in users: | 28 | for user in users: |
29 | + prev_notify = Notification.objects.filter(user = user, task = pendency).order_by("-creation_date") | ||
30 | + notify_type = 1 | ||
31 | + | ||
32 | + if prev_notify.count() > 0: | ||
33 | + last_notify = prev_notify[0] | ||
34 | + | ||
35 | + if last_notify.creation_date == date.today(): | ||
36 | + continue | ||
37 | + | ||
38 | + if last_notify.meta: | ||
39 | + if last_notify.creation_date < date.today() < last_notify.meta: | ||
40 | + continue | ||
41 | + | ||
42 | + notify_type = 2 | ||
43 | + | ||
26 | has_action = Log.objects.filter(user_id = user.id, action = pend_action, resource = resource_type, context__contains = {resource_key: resource_id}, datetime__date__gte = subject_begin_date).exists() | 44 | has_action = Log.objects.filter(user_id = user.id, action = pend_action, resource = resource_type, context__contains = {resource_key: resource_id}, datetime__date__gte = subject_begin_date).exists() |
27 | 45 | ||
28 | - print(has_action) | 46 | + if not has_action: |
47 | + if pendency.end_date: | ||
48 | + if timezone.now() > pendency.end_date: | ||
49 | + notify_type = 3 | ||
50 | + | ||
51 | + if pendency.limit_date: | ||
52 | + if timezone.now() > pendency.limit_date: | ||
53 | + notify_type = 4 | ||
54 | + | ||
55 | + | ||
56 | + notification = Notification() | ||
57 | + notification.user = user | ||
58 | + notification.level = notify_type | ||
59 | + notification.task = pendency | ||
60 | + | ||
61 | + notification.save() | ||
29 | 62 | ||
30 | 63 |