Commit e0c4966f65655c25162c0d0b9d176d45b2901759
1 parent
180657c9
Exists in
master
and in
3 other branches
Adding function to generate notifications (not generating yet) and django-cron package
Showing
4 changed files
with
50 additions
and
0 deletions
Show diff stats
amadeus/settings.py
... | ... | @@ -52,6 +52,7 @@ INSTALLED_APPS = [ |
52 | 52 | 's3direct', |
53 | 53 | 'django_summernote', |
54 | 54 | 'session_security', |
55 | + 'django_cron', | |
55 | 56 | |
56 | 57 | 'amadeus', |
57 | 58 | 'users', |
... | ... | @@ -169,6 +170,10 @@ STATICFILES_DIRS = [ |
169 | 170 | os.path.join(BASE_DIR, "amadeus/static") |
170 | 171 | ] |
171 | 172 | |
173 | +CRON_CLASSES = [ | |
174 | + 'notifications.cron.Test' | |
175 | +] | |
176 | + | |
172 | 177 | #SECURITY |
173 | 178 | SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO','https') |
174 | 179 | ... | ... |
... | ... | @@ -0,0 +1,14 @@ |
1 | +import datetime | |
2 | +from django_cron import CronJobBase, Schedule | |
3 | + | |
4 | +from .utils import set_notifications | |
5 | + | |
6 | +class Test(CronJobBase): | |
7 | + RUN_EVERY_MINS = 1 # every minute | |
8 | + | |
9 | + schedule = Schedule(run_every_mins=RUN_EVERY_MINS) | |
10 | + code = 'amadeus.notification_cron' # a unique code | |
11 | + | |
12 | + def do(self): | |
13 | + print("Hey") | |
14 | + set_notifications() | |
0 | 15 | \ No newline at end of file | ... | ... |
... | ... | @@ -0,0 +1,30 @@ |
1 | +from datetime import datetime | |
2 | +from django.db.models import Q | |
3 | + | |
4 | +from log.models import Log | |
5 | +from pendencies.models import Pendencies | |
6 | +from users.models import User | |
7 | + | |
8 | +def get_resource_users(resource): | |
9 | + if resource.all_students: | |
10 | + return resource.topic.subject.students.all() | |
11 | + | |
12 | + return User.objects.filter(Q(resource_students = resource) | Q(group_participants__resource_groups = resource)).distinct() | |
13 | + | |
14 | +def set_notifications(): | |
15 | + pendencies = Pendencies.objects.filter(begin_date__date__lt = datetime.now(), resource__visible = True) | |
16 | + | |
17 | + for pendency in pendencies: | |
18 | + users = get_resource_users(pendency.resource) | |
19 | + subject_begin_date = pendency.resource.topic.subject.init_date | |
20 | + pend_action = pendency.action | |
21 | + resource_type = pendency.resource._my_subclass | |
22 | + resource_key = resource_type + "_id" | |
23 | + resource_id = pendency.resource.id | |
24 | + | |
25 | + for user in users: | |
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() | |
27 | + | |
28 | + print(has_action) | |
29 | + | |
30 | + | ... | ... |