Commit ed90db29fef6d4370802020766241402bda83bcb

Authored by Zambom
1 parent 6f82ec2d

Adding notifications count badge

amadeus/context_processors.py
  1 +from datetime import datetime
  2 +
1 3 from themes.models import Themes
  4 +from notifications.models import Notification
2 5  
3 6 def theme(request):
4 7 context = {}
... ... @@ -7,4 +10,13 @@ def theme(request):
7 10  
8 11 context['theme'] = theme
9 12  
  13 + return context
  14 +
  15 +def notifies(request):
  16 + context = {}
  17 +
  18 + notifications = Notification.objects.filter(creation_date = datetime.now()).count()
  19 +
  20 + context['notifications_count'] = notifications
  21 +
10 22 return context
11 23 \ No newline at end of file
... ...
amadeus/settings.py
... ... @@ -103,6 +103,7 @@ TEMPLATES = [
103 103 'django.contrib.auth.context_processors.auth',
104 104 'django.contrib.messages.context_processors.messages',
105 105 'amadeus.context_processors.theme',
  106 + 'amadeus.context_processors.notifies',
106 107 ],
107 108 },
108 109 },
... ... @@ -171,7 +172,7 @@ STATICFILES_DIRS = [
171 172 ]
172 173  
173 174 CRON_CLASSES = [
174   - 'notifications.cron.Test'
  175 + 'notifications.cron.Notify'
175 176 ]
176 177  
177 178 #SECURITY
... ...
amadeus/static/css/base/amadeus.css
... ... @@ -30,36 +30,28 @@ a:focus {
30 30  
31 31 .users-cloud .small a {
32 32 font-size: 1.25em;
33   - color: #2E8B57;
34 33 }
35 34  
36 35  
37 36 .users-cloud .big a {
38 37 font-size: 2.25em;
39   - color: #6B8E23;
40 38 }
41 39  
42 40 .users-cloud .medium a {
43 41 font-size: 1.75em;
44   - color: #66CDAA;
45 42 }
46 43  
47 44 .users-cloud .tiny a {
48 45 font-size: 0.75em;
49   - color: #654321;
50 46 }
51 47 .users-cloud a {
52 48 text-decoration: none;
53 49 }
54 50  
55   -#search-results-title{
56   - color: #BDBDBD;
57   -}
58   -
59 51 .div-users-cloud{
60   - height: 100%;
61   - margin-left: -10px;
62   - width: 100%;
  52 + height: 100%;
  53 + margin-left: -10px;
  54 + width: 100%;
63 55 }
64 56  
65 57 .my-subjects-title {
... ... @@ -590,11 +582,6 @@ a:focus {
590 582 .subscribe-subject {
591 583 border:none;
592 584 }
593   -
594   -.no-subscribe-btn{
595   - background-color: #BDBDBD !important;
596   - color: #F5F5F5 !important;
597   -}
598 585 /* subjects app ends */
599 586  
600 587 /* Themes */
... ... @@ -827,4 +814,24 @@ a.add-row {
827 814  
828 815 .add_resource ul {
829 816 width: 100%;
  817 +}
  818 +
  819 +.action_icon {
  820 + position: relative;
  821 +}
  822 +
  823 +li.item .notify_badge {
  824 + top: 0px;
  825 + right: 0px;
  826 +}
  827 +
  828 +.notify_badge {
  829 + position: absolute;
  830 + right: 4px;
  831 + top: -5px;
  832 + width: 1.9rem;
  833 + line-height: 1.9rem;
  834 + font-size: 0.9rem;
  835 + border-radius: 50%;
  836 + padding: 0px;
830 837 }
831 838 \ No newline at end of file
... ...
amadeus/static/css/themes/green.css
... ... @@ -397,6 +397,35 @@ a.add-row {
397 397 background-color: initial !important;
398 398 }
399 399  
  400 +.notify_badge {
  401 + background-color: #FF0000 !important;
  402 +}
  403 +
  404 +#search-results-title{
  405 + color: #BDBDBD;
  406 +}
  407 +
  408 +.users-cloud .small a {
  409 + color: #2E8B57;
  410 +}
  411 +
  412 +.users-cloud .big a {
  413 + color: #6B8E23;
  414 +}
  415 +
  416 +.users-cloud .medium a {
  417 + color: #66CDAA;
  418 +}
  419 +
  420 +.users-cloud .tiny a {
  421 + color: #654321;
  422 +}
  423 +
  424 +.no-subscribe-btn{
  425 + background-color: #BDBDBD !important;
  426 + color: #F5F5F5 !important;
  427 +}
  428 +
400 429 @media(max-width: 768px) {
401 430 .navbar .navbar-nav .dropdown .dropdown-menu li > a {
402 431 color: #333333 !important;
... ...
amadeus/templates/base.html
... ... @@ -160,8 +160,13 @@
160 160 <li class="item" data-toggle="tooltip" data-placement="right" title="{% trans "Messages" %}">
161 161 <i class="fa fa-envelope-o" aria-hidden="true"></i>
162 162 </li>
163   - <li class="item" data-toggle="tooltip" data-placement="right" title="{% trans "Pendencias" %}">
164   - <i class="fa fa-exclamation-triangle" aria-hidden="true"></i>
  163 + <li class="item action_icon" data-toggle="tooltip" data-placement="right" title="{% trans "Pendencias" %}">
  164 + <a href="">
  165 + <i class="fa fa-exclamation-triangle" aria-hidden="true"></i>
  166 + {% if notifications_count > 0 %}
  167 + <span class="badge notify_badge">{% if notifications_count > 99 %} +99 {% else %} {{ notifications_count }} {% endif %}</span>
  168 + {% endif %}
  169 + </a>
165 170 </li>
166 171 <li class="item" data-toggle="tooltip" data-placement="right" title="{% trans "Analytics" %}">
167 172 <i class="fa fa-bar-chart" aria-hidden="true"></i>
... ... @@ -204,8 +209,13 @@
204 209 <li class="item" data-toggle="tooltip" data-placement="top" title="{% trans "Messages" %}">
205 210 <i class="fa fa-envelope-o" aria-hidden="true"></i>
206 211 </li>
207   - <li class="item" data-toggle="tooltip" data-placement="top" title="{% trans "Pendencias" %}">
208   - <i class="fa fa-exclamation-triangle" aria-hidden="true"></i>
  212 + <li class="item action_icon" data-toggle="tooltip" data-placement="top" title="{% trans "Pendencias" %}">
  213 + <a href="">
  214 + <i class="fa fa-exclamation-triangle" aria-hidden="true"></i>
  215 + {% if notifications_count > 0 %}
  216 + <span class="badge notify_badge">{% if notifications_count > 99 %} +99 {% else %} {{ notifications_count }} {% endif %}</span>
  217 + {% endif %}
  218 + </a>
209 219 </li>
210 220 <li class="item" data-toggle="tooltip" data-placement="top" title="{% trans "Analytics" %}">
211 221 <i class="fa fa-bar-chart" aria-hidden="true"></i>
... ...
categories/templatetags/category_counters.py 0 → 100644
... ... @@ -0,0 +1,14 @@
  1 +from django import template
  2 +from datetime import datetime
  3 +
  4 +from notifications.models import Notification
  5 +
  6 +register = template.Library()
  7 +
  8 +@register.inclusion_tag('subjects/badge.html')
  9 +def notifies_cat_number(category):
  10 + context = {}
  11 +
  12 + context['number'] = Notification.objects.filter(task__resource__topic__subject__category = category, creation_date = datetime.now()).count()
  13 +
  14 + return context
0 15 \ No newline at end of file
... ...
notifications/cron.py
... ... @@ -3,7 +3,7 @@ from django_cron import CronJobBase, Schedule
3 3  
4 4 from .utils import set_notifications
5 5  
6   -class Test(CronJobBase):
  6 +class Notify(CronJobBase):
7 7 RUN_EVERY_MINS = 1 # every minute
8 8  
9 9 schedule = Schedule(run_every_mins=RUN_EVERY_MINS)
... ...
subjects/templates/subjects/badge.html 0 → 100644
... ... @@ -0,0 +1,3 @@
  1 +{% if number > 0 %}
  2 + <span class="badge notify_badge">{% if number > 99 %} +99 {% else %} {{ number }} {% endif %}</span>
  3 +{% endif %}
0 4 \ No newline at end of file
... ...
subjects/templates/subjects/list.html
1 1 {% extends 'categories/home.html' %}
2 2  
3 3 {% load static i18n pagination %}
4   -{% load django_bootstrap_breadcrumbs subject_counter %}
  4 +{% load django_bootstrap_breadcrumbs subject_counter category_counters %}
5 5  
6 6 {% block javascript%}
7 7 {{ block.super }}
... ... @@ -79,10 +79,14 @@
79 79 <a href="javascript:delete_course.get('{% url 'categories:delete' category.slug %}?view=index','#category','#modal_course')" aria-hidden="true"><i class="fa fa-trash fa-fw" aria-hidden="true"></i> {% trans 'Remove' %}</a></li>
80 80 </ul>
81 81 {% endif %}
82   - <a href=""><i class="fa fa-bar-chart" aria-hidden="true"></i></a>
83   - <a href=""><i class="fa fa-exclamation-triangle" aria-hidden="true"></i></a>
84   - <a href=""><i class="fa fa-envelope-o" aria-hidden="true"></i></a>
85   - <a href="" ><i class="fa fa-list" aria-hidden="true"></i></a>
  82 +
  83 + <a href="" class="pull-right action_icon"><i class="fa fa-bar-chart" aria-hidden="true"></i></a>
  84 + <a href="" class="pull-right action_icon">
  85 + <i class="fa fa-exclamation-triangle" aria-hidden="true"></i>
  86 + {% notifies_cat_number category %}
  87 + </a>
  88 + <a href="" class="pull-right action_icon"><i class="fa fa-envelope-o" aria-hidden="true"></i></a>
  89 + <a href="" class="pull-right action_icon"><i class="fa fa-list" aria-hidden="true"></i></a>
86 90 </div>
87 91 </div>
88 92 </div>
... ...
subjects/templates/subjects/subject_card.html
... ... @@ -36,10 +36,13 @@
36 36  
37 37  
38 38  
39   - <a href=""><i class="fa fa-bar-chart" aria-hidden="true"></i></a>
40   - <a href=""><i class="fa fa-exclamation-triangle" aria-hidden="true"></i></a>
41   - <a href=""><i class="fa fa-envelope-o" aria-hidden="true"></i></a>
42   - <a href="" ><i class="fa fa-list" aria-hidden="true"></i></a>
  39 + <a href="" class="pull-right action_icon"><i class="fa fa-bar-chart" aria-hidden="true"></i></a>
  40 + <a href="" class="pull-right action_icon">
  41 + <i class="fa fa-exclamation-triangle" aria-hidden="true"></i>
  42 + {% notifies_number subject %}
  43 + </a>
  44 + <a href="" class="pull-right action_icon"><i class="fa fa-envelope-o" aria-hidden="true"></i></a>
  45 + <a href="" class="pull-right action_icon"><i class="fa fa-list" aria-hidden="true"></i></a>
43 46 </div>
44 47 </div>
45 48 </div>
... ...
subjects/templatetags/subject_counter.py
1   -from django import template
2 1 import datetime
  2 +from django import template
  3 +from django.db.models import Q
  4 +
  5 +from notifications.models import Notification
  6 +
3 7 register = template.Library()
4 8  
5 9 @register.filter(name = 'subject_count')
... ... @@ -15,6 +19,13 @@ def subject_count(category, user):
15 19  
16 20 return total
17 21  
  22 +@register.inclusion_tag('subjects/badge.html')
  23 +def notifies_number(subject):
  24 + context = {}
  25 +
  26 + context['number'] = Notification.objects.filter(task__resource__topic__subject = subject, creation_date = datetime.datetime.now()).count()
  27 +
  28 + return context
18 29  
19 30 @register.filter(name = 'aftertoday')
20 31 def after_today(date):
... ...