Commit 2384ac7f3fe335ef3d938b47d86f26e3610ae022

Authored by Felipe Henrique de Almeida Bormann
1 parent fd1aead1

update link update view cycle but there is still a problem on filling the data correctly

links/models.py
... ... @@ -23,5 +23,14 @@ class Link(Resource):
23 23 verbose_name_plural = "Links"
24 24  
25 25 def __str__(self):
26   - pass
  26 + return self.name
  27 +
  28 + def access_link(self):
  29 + return 'links:view'
  30 +
  31 + def update_link(self):
  32 + return 'links:update'
  33 +
  34 + def delete_link(self):
  35 + return 'links:delete'
27 36  
28 37 \ No newline at end of file
... ...
links/templates/links/delete.html 0 → 100644
links/templates/links/update.html 0 → 100644
... ... @@ -0,0 +1,36 @@
  1 +{% extends 'subjects/view.html' %}
  2 +
  3 +{% load static i18n django_bootstrap_breadcrumbs %}
  4 +
  5 +{% block style %}
  6 + {{block.super}}
  7 + <link rel="stylesheet" type="text/css" href="{% static "css/bootstrap-tagsinput.css" %}">
  8 +{% endblock %}
  9 +
  10 +{% block javascript %}
  11 + {{block.super}}
  12 + <script type="text/javascript" src="{% static "js/bootstrap-tagsinput.js" %} "></script>
  13 +{% endblock %}
  14 +
  15 +{% block breadcrumbs %}
  16 + {{ block.super }}
  17 +
  18 + {% breadcrumb topic 'subjects:topic_view' topic.subject.slug topic.slug %}
  19 +
  20 + {% trans 'Edit: ' as bread %}
  21 + {% with bread|add:link.name as bread_slug %}
  22 + {% breadcrumb bread_slug 'links:update' topic.slug link.slug %}
  23 + {% endwith %}
  24 +{% endblock %}
  25 +
  26 +{% block content %}
  27 + <div class="card">
  28 + <div class="card-content">
  29 + <div class="card-body">
  30 + {% include 'links/_form.html' %}
  31 + </div>
  32 + </div>
  33 + </div>
  34 + <br clear="all" />
  35 + <br clear="all" />
  36 +{% endblock %}
... ...
links/urls.py
... ... @@ -4,4 +4,7 @@ from django.contrib.auth import views as auth_views
4 4 from . import views
5 5  
6 6 urlpatterns = [
7   - url(r'^create/(?P<slug>[\w_-]+)/$', views.CreateLinkView.as_view(), name='create'),]
8 7 \ No newline at end of file
  8 + url(r'^create/(?P<slug>[\w_-]+)/$', views.CreateLinkView.as_view(), name='create'),
  9 + url(r'^delete/(?P<slug>[\w_-]+)/$', views.DeleteLinkView.as_view(), name='delete'),
  10 + url(r'^update/(?P<topic_slug>[\w_-]+)/(?P<slug>[\w_-]+)/$', views.UpdateLinkView.as_view(), name='update'),
  11 + url(r'^view/(?P<slug>[\w_-]+)/$', views.DetailLinkView.as_view(), name='view')]
9 12 \ No newline at end of file
... ...
links/views.py
... ... @@ -20,119 +20,249 @@ from amadeus.permissions import has_subject_permissions, has_resource_permission
20 20 from topics.models import Topic
21 21 # Create your views here.
22 22 class CreateLinkView(LoginRequiredMixin, LogMixin, generic.edit.CreateView):
23   - log_component = 'resources'
24   - log_action = 'create'
25   - log_resource = 'file_link'
26   - log_context = {}
  23 + log_component = 'resources'
  24 + log_action = 'create'
  25 + log_resource = 'file_link'
  26 + log_context = {}
27 27  
28   - login_url = reverse_lazy("users:login")
29   - redirect_field_name = 'next'
  28 + login_url = reverse_lazy("users:login")
  29 + redirect_field_name = 'next'
30 30  
31   - template_name = 'links/create.html'
32   - form_class = LinkForm
  31 + template_name = 'links/create.html'
  32 + form_class = LinkForm
33 33  
34   - def dispatch(self, request, *args, **kwargs):
35   - slug = self.kwargs.get('slug', '')
36   - topic = get_object_or_404(Topic, slug = slug)
  34 + def dispatch(self, request, *args, **kwargs):
  35 + slug = self.kwargs.get('slug', '')
  36 + topic = get_object_or_404(Topic, slug = slug)
37 37  
38   - if not has_subject_permissions(request.user, topic.subject):
39   - return redirect(reverse_lazy('subjects:home'))
  38 + if not has_subject_permissions(request.user, topic.subject):
  39 + return redirect(reverse_lazy('subjects:home'))
40 40  
41   - return super(CreateLinkView, self).dispatch(request, *args, **kwargs)
  41 + return super(CreateLinkView, self).dispatch(request, *args, **kwargs)
42 42  
43   - def get(self, request, *args, **kwargs):
44   - self.object = None
45   -
46   - form_class = self.get_form_class()
47   - form = self.get_form(form_class)
  43 + def get(self, request, *args, **kwargs):
  44 + self.object = None
  45 +
  46 + form_class = self.get_form_class()
  47 + form = self.get_form(form_class)
48 48  
49   - slug = self.kwargs.get('slug', '')
50   - topic = get_object_or_404(Topic, slug = slug)
  49 + slug = self.kwargs.get('slug', '')
  50 + topic = get_object_or_404(Topic, slug = slug)
51 51  
52   - pendencies_form = PendenciesForm(initial = {'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize"))]})
  52 + pendencies_form = PendenciesForm(initial = {'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize"))]})
53 53  
54   - return self.render_to_response(self.get_context_data(form = form, pendencies_form = pendencies_form))
  54 + return self.render_to_response(self.get_context_data(form = form, pendencies_form = pendencies_form))
55 55  
56   - def post(self, request, *args, **kwargs):
57   - self.object = None
58   -
59   - form_class = self.get_form_class()
60   - form = self.get_form(form_class)
  56 + def post(self, request, *args, **kwargs):
  57 + self.object = None
  58 +
  59 + form_class = self.get_form_class()
  60 + form = self.get_form(form_class)
61 61  
62   - slug = self.kwargs.get('slug', '')
63   - topic = get_object_or_404(Topic, slug = slug)
  62 + slug = self.kwargs.get('slug', '')
  63 + topic = get_object_or_404(Topic, slug = slug)
64 64  
65   - pendencies_form = PendenciesForm(self.request.POST, initial = {'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize"))]})
66   -
67   - if (form.is_valid() and pendencies_form.is_valid()):
68   - return self.form_valid(form, pendencies_form)
69   - else:
70   - return self.form_invalid(form, pendencies_form)
  65 + pendencies_form = PendenciesForm(self.request.POST, initial = {'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize"))]})
  66 +
  67 + if (form.is_valid() and pendencies_form.is_valid()):
  68 + return self.form_valid(form, pendencies_form)
  69 + else:
  70 + return self.form_invalid(form, pendencies_form)
71 71  
72   - def get_initial(self):
73   - initial = super(CreateLinkView, self).get_initial()
  72 + def get_initial(self):
  73 + initial = super(CreateLinkView, self).get_initial()
74 74  
75   - slug = self.kwargs.get('slug', '')
  75 + slug = self.kwargs.get('slug', '')
76 76  
77   - topic = get_object_or_404(Topic, slug = slug)
78   - initial['subject'] = topic.subject
79   -
80   - return initial
  77 + topic = get_object_or_404(Topic, slug = slug)
  78 + initial['subject'] = topic.subject
  79 +
  80 + return initial
81 81  
82   - def form_invalid(self, form, pendencies_form):
83   - return self.render_to_response(self.get_context_data(form = form, pendencies_form = pendencies_form))
  82 + def form_invalid(self, form, pendencies_form):
  83 + return self.render_to_response(self.get_context_data(form = form, pendencies_form = pendencies_form))
84 84  
85   - def form_valid(self, form, pendencies_form):
86   - self.object = form.save(commit = False)
  85 + def form_valid(self, form, pendencies_form):
  86 + self.object = form.save(commit = False)
87 87  
88   - slug = self.kwargs.get('slug', '')
89   - topic = get_object_or_404(Topic, slug = slug)
  88 + slug = self.kwargs.get('slug', '')
  89 + topic = get_object_or_404(Topic, slug = slug)
90 90  
91   - self.object.topic = topic
92   - self.object.order = topic.resource_topic.count() + 1
  91 + self.object.topic = topic
  92 + self.object.order = topic.resource_topic.count() + 1
93 93  
94   - if not self.object.topic.visible and not self.object.topic.repository:
95   - self.object.visible = False
  94 + if not self.object.topic.visible and not self.object.topic.repository:
  95 + self.object.visible = False
96 96  
97   - self.object.save()
  97 + self.object.save()
98 98  
99   - pend_form = pendencies_form.save(commit = False)
100   - pend_form.resource = self.object
101   -
102   - if not pend_form.action == "":
103   - pend_form.save()
104   -
105   - self.log_context['category_id'] = self.object.topic.subject.category.id
106   - self.log_context['category_name'] = self.object.topic.subject.category.name
107   - self.log_context['category_slug'] = self.object.topic.subject.category.slug
108   - self.log_context['subject_id'] = self.object.topic.subject.id
109   - self.log_context['subject_name'] = self.object.topic.subject.name
110   - self.log_context['subject_slug'] = self.object.topic.subject.slug
111   - self.log_context['topic_id'] = self.object.topic.id
112   - self.log_context['topic_name'] = self.object.topic.name
113   - self.log_context['topic_slug'] = self.object.topic.slug
114   - self.log_context['link_id'] = self.object.id
115   - self.log_context['link_name'] = self.object.name
116   - self.log_context['link_slug'] = self.object.slug
  99 + pend_form = pendencies_form.save(commit = False)
  100 + pend_form.resource = self.object
  101 +
  102 + if not pend_form.action == "":
  103 + pend_form.save()
  104 +
  105 + self.log_context['category_id'] = self.object.topic.subject.category.id
  106 + self.log_context['category_name'] = self.object.topic.subject.category.name
  107 + self.log_context['category_slug'] = self.object.topic.subject.category.slug
  108 + self.log_context['subject_id'] = self.object.topic.subject.id
  109 + self.log_context['subject_name'] = self.object.topic.subject.name
  110 + self.log_context['subject_slug'] = self.object.topic.subject.slug
  111 + self.log_context['topic_id'] = self.object.topic.id
  112 + self.log_context['topic_name'] = self.object.topic.name
  113 + self.log_context['topic_slug'] = self.object.topic.slug
  114 + self.log_context['link_id'] = self.object.id
  115 + self.log_context['link_name'] = self.object.name
  116 + self.log_context['link_slug'] = self.object.slug
117 117  
118   - super(CreateLinkView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
  118 + super(CreateLinkView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
119 119  
120   - return redirect(self.get_success_url())
  120 + return redirect(self.get_success_url())
121 121  
122   - def get_context_data(self, **kwargs):
123   - context = super(CreateLinkView, self).get_context_data(**kwargs)
  122 + def get_context_data(self, **kwargs):
  123 + context = super(CreateLinkView, self).get_context_data(**kwargs)
124 124  
125   - context['title'] = _('Create Webiste Link')
  125 + context['title'] = _('Create Webiste Link')
126 126  
127   - slug = self.kwargs.get('slug', '')
128   - topic = get_object_or_404(Topic, slug = slug)
  127 + slug = self.kwargs.get('slug', '')
  128 + topic = get_object_or_404(Topic, slug = slug)
129 129  
130   - context['topic'] = topic
131   - context['subject'] = topic.subject
  130 + context['topic'] = topic
  131 + context['subject'] = topic.subject
132 132  
133   - return context
  133 + return context
134 134  
135   - def get_success_url(self):
136   - messages.success(self.request, _('The Link "%s" was added to the Topic "%s" of the virtual environment "%s" successfully!')%(self.object.name, self.object.topic.name, self.object.topic.subject.name))
  135 + def get_success_url(self):
  136 + messages.success(self.request, _('The Link "%s" was added to the Topic "%s" of the virtual environment "%s" successfully!')%(self.object.name, self.object.topic.name, self.object.topic.subject.name))
137 137  
138   - return reverse_lazy('subjects:view', kwargs = {'slug': self.object.topic.subject.slug})
139 138 \ No newline at end of file
  139 + return reverse_lazy('subjects:view', kwargs = {'slug': self.object.topic.subject.slug})
  140 +
  141 +
  142 +
  143 +class DeleteLinkView(LoginRequiredMixin, LogMixin, generic.edit.DeleteView):
  144 +
  145 + login_url = reverse_lazy("users:login")
  146 + redirect_field_name = 'next'
  147 + model = Link
  148 + template_name = 'links/delete.html'
  149 +
  150 +
  151 +class DetailLinkView(LoginRequiredMixin, LogMixin, generic.detail.DetailView):
  152 +
  153 + login_url = reverse_lazy("users:login")
  154 + redirect_field_name = 'next'
  155 +
  156 + model = Link
  157 + template_name = 'links/view.html'
  158 + context_object_name = 'web_link'
  159 +
  160 +class UpdateLinkView(LoginRequiredMixin, LogMixin, generic.edit.UpdateView):
  161 + model = Link
  162 + form_class = LinkForm
  163 + template_name = 'links/update.html'
  164 +
  165 + login_url = reverse_lazy("users:login")
  166 + redirect_field_name = 'next'
  167 +
  168 + def dispatch(self, request, *args, **kwargs):
  169 +
  170 +
  171 + slug = self.kwargs.get('topic_slug', '')
  172 + topic = get_object_or_404(Topic, slug = slug)
  173 +
  174 + if not has_subject_permissions(request.user, topic.subject):
  175 + return redirect(reverse_lazy('subjects:home'))
  176 +
  177 + return super(UpdateLinkView, self).dispatch(request, *args, **kwargs)
  178 +
  179 +
  180 + def get(self, request, *args, **kwargs):
  181 + self.object = self.get_object()
  182 +
  183 + form_class = self.get_form_class()
  184 + form = self.get_form(form_class)
  185 +
  186 + slug = self.kwargs.get('topic_slug', '')
  187 + topic = get_object_or_404(Topic, slug = slug)
  188 +
  189 + pend_form = self.object.pendencies_resource.all()
  190 +
  191 + if len(pend_form) > 0:
  192 + pendencies_form = PendenciesForm(instance = pend_form[0], initial = {'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize"))]})
  193 + else:
  194 + pendencies_form = PendenciesForm(initial = {'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize"))]})
  195 +
  196 + return self.render_to_response(self.get_context_data(form = form, pendencies_form = pendencies_form))
  197 +
  198 + def post(self, request, *args, **kwargs):
  199 + self.object = self.get_object()
  200 +
  201 + form_class = self.get_form_class()
  202 + form = self.get_form(form_class)
  203 +
  204 + slug = self.kwargs.get('topic_slug', '')
  205 + topic = get_object_or_404(Topic, slug = slug)
  206 +
  207 + pend_form = self.object.pendencies_resource.all()
  208 +
  209 + if len(pend_form) > 0:
  210 + pendencies_form = PendenciesForm(self.request.POST, instance = pend_form[0], initial = {'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize"))]})
  211 + else:
  212 + pendencies_form = PendenciesForm(self.request.POST, initial = {'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize"))]})
  213 +
  214 + if (form.is_valid() and pendencies_form.is_valid()):
  215 + return self.form_valid(form, pendencies_form)
  216 + else:
  217 + return self.form_invalid(form, pendencies_form)
  218 +
  219 + def form_invalid(self, form, pendencies_form):
  220 + return self.render_to_response(self.get_context_data(form = form, pendencies_form = pendencies_form))
  221 +
  222 + def form_valid(self, form, pendencies_form):
  223 + self.object = form.save(commit = False)
  224 +
  225 + if not self.object.topic.visible and not self.object.topic.repository:
  226 + self.object.visible = False
  227 +
  228 + self.object.save()
  229 +
  230 + pend_form = pendencies_form.save(commit = False)
  231 + pend_form.resource = self.object
  232 +
  233 + if not pend_form.action == "":
  234 + pend_form.save()
  235 +
  236 + self.log_context['category_id'] = self.object.topic.subject.category.id
  237 + self.log_context['category_name'] = self.object.topic.subject.category.name
  238 + self.log_context['category_slug'] = self.object.topic.subject.category.slug
  239 + self.log_context['subject_id'] = self.object.topic.subject.id
  240 + self.log_context['subject_name'] = self.object.topic.subject.name
  241 + self.log_context['subject_slug'] = self.object.topic.subject.slug
  242 + self.log_context['topic_id'] = self.object.topic.id
  243 + self.log_context['topic_name'] = self.object.topic.name
  244 + self.log_context['topic_slug'] = self.object.topic.slug
  245 + self.log_context['link_id'] = self.object.id
  246 + self.log_context['link_name'] = self.object.name
  247 + self.log_context['link_slug'] = self.object.slug
  248 +
  249 + super(UpdateLinkView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
  250 +
  251 + return redirect(self.get_success_url())
  252 +
  253 + def get_context_data(self, **kwargs):
  254 + context = super(UpdateLinkView, self).get_context_data(**kwargs)
  255 +
  256 + context['title'] = _('Update Website Link')
  257 +
  258 + slug = self.kwargs.get('topic_slug', '')
  259 + topic = get_object_or_404(Topic, slug = slug)
  260 +
  261 + context['topic'] = topic
  262 + context['subject'] = topic.subject
  263 +
  264 + return context
  265 +
  266 + def get_success_url(self):
  267 + messages.success(self.request, _('The Website Link "%s" was updated successfully!')%(self.object.name))
  268 +
  269 + return reverse_lazy('subjects:view', kwargs = {'slug': self.object.topic.subject.slug})
... ...
notifications/views.py
... ... @@ -20,226 +20,226 @@ from .models import Notification
20 20 from .utils import get_order_by, is_date
21 21  
22 22 class SubjectNotifications(LoginRequiredMixin, generic.ListView):
23   - login_url = reverse_lazy("users:login")
24   - redirect_field_name = 'next'
  23 + login_url = reverse_lazy("users:login")
  24 + redirect_field_name = 'next'
25 25  
26   - context_object_name = 'notifications'
27   - template_name = 'notifications/subject.html'
28   - paginate_by = 10
29   - total = 0
  26 + context_object_name = 'notifications'
  27 + template_name = 'notifications/subject.html'
  28 + paginate_by = 10
  29 + total = 0
30 30  
31   - def dispatch(self, request, *args, **kwargs):
32   - slug = self.kwargs.get('slug', '')
33   - subject = get_object_or_404(Subject, slug = slug)
  31 + def dispatch(self, request, *args, **kwargs):
  32 + slug = self.kwargs.get('slug', '')
  33 + subject = get_object_or_404(Subject, slug = slug)
34 34  
35   - if not has_subject_view_permissions(request.user, subject):
36   - return redirect(reverse_lazy('subjects:home'))
  35 + if not has_subject_view_permissions(request.user, subject):
  36 + return redirect(reverse_lazy('subjects:home'))
37 37  
38   - return super(SubjectNotifications, self).dispatch(request, *args, **kwargs)
  38 + return super(SubjectNotifications, self).dispatch(request, *args, **kwargs)
39 39  
40   - def get_queryset(self):
41   - slug = self.kwargs.get('slug', '')
42   - subject = get_object_or_404(Subject, slug = slug)
  40 + def get_queryset(self):
  41 + slug = self.kwargs.get('slug', '')
  42 + subject = get_object_or_404(Subject, slug = slug)
43 43  
44   - notifications = Notification.objects.filter(user = self.request.user, task__resource__topic__subject = subject, creation_date = datetime.now()).order_by("task__limit_date", "task__end_date")
  44 + notifications = Notification.objects.filter(user = self.request.user, task__resource__topic__subject = subject, creation_date = datetime.now()).order_by("task__limit_date", "task__end_date")
45 45  
46   - self.total = notifications.count()
  46 + self.total = notifications.count()
47 47  
48   - return notifications
  48 + return notifications
49 49  
50   - def get_context_data(self, **kwargs):
51   - context = super(SubjectNotifications, self).get_context_data(**kwargs)
  50 + def get_context_data(self, **kwargs):
  51 + context = super(SubjectNotifications, self).get_context_data(**kwargs)
52 52  
53   - slug = self.kwargs.get('slug', '')
54   - subject = get_object_or_404(Subject, slug = slug)
  53 + slug = self.kwargs.get('slug', '')
  54 + subject = get_object_or_404(Subject, slug = slug)
55 55  
56   - context['title'] = _('%s - Pendencies')%(subject.name)
57   - context['subject'] = subject
58   - context['total'] = self.total
  56 + context['title'] = _('%s - Pendencies')%(subject.name)
  57 + context['subject'] = subject
  58 + context['total'] = self.total
59 59  
60   - return context
  60 + return context
61 61  
62 62 class SubjectHistory(LoginRequiredMixin, generic.ListView):
63   - login_url = reverse_lazy("users:login")
64   - redirect_field_name = 'next'
  63 + login_url = reverse_lazy("users:login")
  64 + redirect_field_name = 'next'
65 65  
66   - context_object_name = 'notifications'
67   - template_name = 'notifications/subject.html'
68   - paginate_by = 10
69   - total = 0
70   - num_rows = 0
  66 + context_object_name = 'notifications'
  67 + template_name = 'notifications/subject.html'
  68 + paginate_by = 10
  69 + total = 0
  70 + num_rows = 0
71 71  
72   - def dispatch(self, request, *args, **kwargs):
73   - slug = self.kwargs.get('slug', '')
74   - subject = get_object_or_404(Subject, slug = slug)
  72 + def dispatch(self, request, *args, **kwargs):
  73 + slug = self.kwargs.get('slug', '')
  74 + subject = get_object_or_404(Subject, slug = slug)
75 75  
76   - if not has_subject_view_permissions(request.user, subject):
77   - return redirect(reverse_lazy('subjects:home'))
  76 + if not has_subject_view_permissions(request.user, subject):
  77 + return redirect(reverse_lazy('subjects:home'))
78 78  
79   - return super(SubjectHistory, self).dispatch(request, *args, **kwargs)
  79 + return super(SubjectHistory, self).dispatch(request, *args, **kwargs)
80 80  
81   - def get_queryset(self):
82   - slug = self.kwargs.get('slug', '')
83   - subject = get_object_or_404(Subject, slug = slug)
  81 + def get_queryset(self):
  82 + slug = self.kwargs.get('slug', '')
  83 + subject = get_object_or_404(Subject, slug = slug)
84 84  
85   - order = get_order_by(self.request.GET.get("order_by", None))
86   - search = self.request.GET.get("search", None)
  85 + order = get_order_by(self.request.GET.get("order_by", None))
  86 + search = self.request.GET.get("search", None)
87 87  
88   - notifications = Notification.objects.filter(user = self.request.user, task__resource__topic__subject = subject).order_by(*order)
  88 + notifications = Notification.objects.filter(user = self.request.user, task__resource__topic__subject = subject).order_by(*order)
89 89  
90   - self.total = notifications.filter(creation_date = datetime.now()).count()
91   -
92   - if search:
93   - queries = Q(task__resource__name__icontains = search)
94   - queries |= Q(task__action__icontains = search)
  90 + self.total = notifications.filter(creation_date = datetime.now()).count()
  91 +
  92 + if search:
  93 + queries = Q(task__resource__name__icontains = search)
  94 + queries |= Q(task__action__icontains = search)
95 95  
96   - if search.isdigit():
97   - queries |= Q(level = search)
  96 + if search.isdigit():
  97 + queries |= Q(level = search)
98 98  
99   - if is_date(search):
100   - search_date = parser.parse(search)
101   - search_date = timezone.make_aware(search_date, timezone.get_current_timezone())
  99 + if is_date(search):
  100 + search_date = parser.parse(search)
  101 + search_date = timezone.make_aware(search_date, timezone.get_current_timezone())
102 102  
103   - queries |= Q(creation_date = search_date)
104   - queries |= Q(task__limit_date = search_date)
105   - queries |= Q(task__end_date = search_date)
106   - queries |= Q(meta__date = search_date)
  103 + queries |= Q(creation_date = search_date)
  104 + queries |= Q(task__limit_date = search_date)
  105 + queries |= Q(task__end_date = search_date)
  106 + queries |= Q(meta__date = search_date)
107 107  
108   - notifications = notifications.filter(queries).order_by(*order)
  108 + notifications = notifications.filter(queries).order_by(*order)
109 109  
110   - self.num_rows = notifications.count()
  110 + self.num_rows = notifications.count()
111 111  
112   - return notifications
  112 + return notifications
113 113  
114   - def get_context_data(self, **kwargs):
115   - context = super(SubjectHistory, self).get_context_data(**kwargs)
  114 + def get_context_data(self, **kwargs):
  115 + context = super(SubjectHistory, self).get_context_data(**kwargs)
116 116  
117   - slug = self.kwargs.get('slug', '')
118   - subject = get_object_or_404(Subject, slug = slug)
  117 + slug = self.kwargs.get('slug', '')
  118 + subject = get_object_or_404(Subject, slug = slug)
119 119  
120   - context['title'] = _('%s - Pendencies')%(subject.name)
121   - context['subject'] = subject
122   - context['history'] = True
123   - context['total'] = self.total
124   - context['rows'] = self.num_rows
125   - context['searched'] = self.request.GET.get("search", "")
  120 + context['title'] = _('%s - Pendencies')%(subject.name)
  121 + context['subject'] = subject
  122 + context['history'] = True
  123 + context['total'] = self.total
  124 + context['rows'] = self.num_rows
  125 + context['searched'] = self.request.GET.get("search", "")
126 126  
127   - return context
  127 + return context
128 128  
129 129 class IndexView(LoginRequiredMixin, generic.ListView):
130   - login_url = reverse_lazy("users:login")
131   - redirect_field_name = 'next'
  130 + login_url = reverse_lazy("users:login")
  131 + redirect_field_name = 'next'
132 132  
133   - context_object_name = 'notifications'
134   - template_name = 'notifications/index.html'
135   - paginate_by = 10
  133 + context_object_name = 'notifications'
  134 + template_name = 'notifications/index.html'
  135 + paginate_by = 10
136 136  
137   - def get_queryset(self):
138   - notifications = Notification.objects.filter(user = self.request.user, viewed = False, creation_date = datetime.now()).values('task__resource__topic__subject', 'task__resource__topic__subject__name').annotate(total = Count('task__resource__topic__subject'))
  137 + def get_queryset(self):
  138 + notifications = Notification.objects.filter(user = self.request.user, viewed = False, creation_date = datetime.now()).values('task__resource__topic__subject', 'task__resource__topic__subject__name').annotate(total = Count('task__resource__topic__subject'))
139 139  
140   - return notifications
  140 + return notifications
141 141  
142   - def get_context_data(self, **kwargs):
143   - context = super(IndexView, self).get_context_data(**kwargs)
  142 + def get_context_data(self, **kwargs):
  143 + context = super(IndexView, self).get_context_data(**kwargs)
144 144  
145   - context['title'] = _('Pendencies')
  145 + context['title'] = _('Pendencies')
146 146  
147   - return context
  147 + return context
148 148  
149 149 class AjaxNotifications(LoginRequiredMixin, generic.ListView):
150   - login_url = reverse_lazy("users:login")
151   - redirect_field_name = 'next'
  150 + login_url = reverse_lazy("users:login")
  151 + redirect_field_name = 'next'
152 152  
153   - context_object_name = 'notifications'
154   - template_name = 'notifications/_view.html'
  153 + context_object_name = 'notifications'
  154 + template_name = 'notifications/_view.html'
155 155  
156   - def get_queryset(self):
157   - subject_id = self.kwargs.get('id', '')
158   -
159   - notifications = Notification.objects.filter(user = self.request.user, task__resource__topic__subject__id = subject_id, creation_date = datetime.now()).order_by("task__limit_date", "task__end_date")
  156 + def get_queryset(self):
  157 + subject_id = self.kwargs.get('id', '')
  158 +
  159 + notifications = Notification.objects.filter(user = self.request.user, task__resource__topic__subject__id = subject_id, creation_date = datetime.now()).order_by("task__limit_date", "task__end_date")
160 160  
161   - return notifications
  161 + return notifications
162 162  
163 163 class AjaxHistory(LoginRequiredMixin, generic.ListView):
164   - login_url = reverse_lazy("users:login")
165   - redirect_field_name = 'next'
  164 + login_url = reverse_lazy("users:login")
  165 + redirect_field_name = 'next'
166 166  
167   - context_object_name = 'notifications'
168   - template_name = 'notifications/_ajax_history.html'
  167 + context_object_name = 'notifications'
  168 + template_name = 'notifications/_ajax_history.html'
169 169  
170   - def get_queryset(self):
171   - subject_id = self.kwargs.get('id', '')
  170 + def get_queryset(self):
  171 + subject_id = self.kwargs.get('id', '')
172 172  
173   - order = get_order_by(self.request.GET.get("order_by", None))
174   - search = self.request.GET.get("search", None)
  173 + order = get_order_by(self.request.GET.get("order_by", None))
  174 + search = self.request.GET.get("search", None)
175 175  
176   - notifications = Notification.objects.filter(user = self.request.user, task__resource__topic__subject__id = subject_id).order_by(*order)
  176 + notifications = Notification.objects.filter(user = self.request.user, task__resource__topic__subject__id = subject_id).order_by(*order)
177 177  
178   - if search:
179   - queries = Q(task__resource__name__icontains = search)
180   - queries |= Q(task__action__icontains = search)
  178 + if search:
  179 + queries = Q(task__resource__name__icontains = search)
  180 + queries |= Q(task__action__icontains = search)
181 181  
182   - if search.isdigit():
183   - queries |= Q(level = search)
  182 + if search.isdigit():
  183 + queries |= Q(level = search)
184 184  
185   - if is_date(search):
186   - search_date = parser.parse(search)
187   - search_date = timezone.make_aware(search_date, timezone.get_current_timezone())
  185 + if is_date(search):
  186 + search_date = parser.parse(search)
  187 + search_date = timezone.make_aware(search_date, timezone.get_current_timezone())
188 188  
189   - queries |= Q(creation_date = search_date)
190   - queries |= Q(task__limit_date = search_date)
191   - queries |= Q(task__end_date = search_date)
192   - queries |= Q(meta__date = search_date)
  189 + queries |= Q(creation_date = search_date)
  190 + queries |= Q(task__limit_date = search_date)
  191 + queries |= Q(task__end_date = search_date)
  192 + queries |= Q(meta__date = search_date)
193 193  
194   - notifications = notifications.filter(queries).order_by(*order)
  194 + notifications = notifications.filter(queries).order_by(*order)
195 195  
196   - self.num_rows = notifications.count()
  196 + self.num_rows = notifications.count()
197 197  
198   - return notifications
  198 + return notifications
199 199  
200   - def get_context_data(self, **kwargs):
201   - context = super(AjaxHistory, self).get_context_data(**kwargs)
  200 + def get_context_data(self, **kwargs):
  201 + context = super(AjaxHistory, self).get_context_data(**kwargs)
202 202  
203   - subject_id = self.kwargs.get('id', '')
  203 + subject_id = self.kwargs.get('id', '')
204 204  
205   - context['subject_id'] = subject_id
206   - context['rows'] = self.num_rows
207   - context['searched'] = self.request.GET.get("search", "")
208   - context['order_by'] = self.request.GET.get("order_by", "")
  205 + context['subject_id'] = subject_id
  206 + context['rows'] = self.num_rows
  207 + context['searched'] = self.request.GET.get("search", "")
  208 + context['order_by'] = self.request.GET.get("order_by", "")
209 209  
210   - return context
  210 + return context
211 211  
212 212 @login_required
213 213 def set_goal(request):
214   - if request.method == "POST" and request.is_ajax():
215   - meta = request.POST.get('meta', None)
  214 + if request.method == "POST" and request.is_ajax():
  215 + meta = request.POST.get('meta', None)
216 216  
217   - if not meta:
218   - return JsonResponse({'error': True, 'message': _('No goal date received')})
  217 + if not meta:
  218 + return JsonResponse({'error': True, 'message': _('No goal date received')})
219 219  
220   - meta = parser.parse(meta)
  220 + meta = parser.parse(meta)
221 221  
222   - notify_id = request.POST.get('id', None)
  222 + notify_id = request.POST.get('id', None)
223 223  
224   - if not notify_id:
225   - return JsonResponse({'error': True, 'message': _('Could not identify the notification')})
  224 + if not notify_id:
  225 + return JsonResponse({'error': True, 'message': _('Could not identify the notification')})
226 226  
227   - notification = get_object_or_404(Notification, id = notify_id)
  227 + notification = get_object_or_404(Notification, id = notify_id)
228 228  
229   - meta = timezone.make_aware(meta, timezone.get_current_timezone())
  229 + meta = timezone.make_aware(meta, timezone.get_current_timezone())
230 230  
231   - if meta < timezone.now():
232   - return JsonResponse({'error': True, 'message': _("The goal date should be equal or after today's date")})
  231 + if meta < timezone.now():
  232 + return JsonResponse({'error': True, 'message': _("The goal date should be equal or after today's date")})
233 233  
234   - if meta.date() > notification.task.resource.topic.subject.end_date:
235   - return JsonResponse({'error': True, 'message': _("The goal date should be equal or before subject's date")})
  234 + if meta.date() > notification.task.resource.topic.subject.end_date:
  235 + return JsonResponse({'error': True, 'message': _("The goal date should be equal or before subject's date")})
236 236  
237   - notification.meta = meta
238   - notification.save()
  237 + notification.meta = meta
  238 + notification.save()
239 239  
240   - if notification.level == 2:
241   - message = _('Your new goal to realize the task %s is %s')%(str(notification.task), formats.date_format(meta, "SHORT_DATETIME_FORMAT"))
242   - else:
243   - message = _('Your goal to realize the task %s is %s')%(str(notification.task), formats.date_format(meta, "SHORT_DATETIME_FORMAT"))
  240 + if notification.level == 2:
  241 + message = _('Your new goal to realize the task %s is %s')%(str(notification.task), formats.date_format(meta, "SHORT_DATETIME_FORMAT"))
  242 + else:
  243 + message = _('Your goal to realize the task %s is %s')%(str(notification.task), formats.date_format(meta, "SHORT_DATETIME_FORMAT"))
244 244  
245   - return JsonResponse({'error': False, 'message': message})
246 245 \ No newline at end of file
  246 + return JsonResponse({'error': False, 'message': message})
247 247 \ No newline at end of file
... ...
topics/templates/resources/list.html
... ... @@ -14,8 +14,8 @@
14 14 <input type="hidden" class="url_order" value="{% url 'topics:update_resource_order' %}" />
15 15  
16 16 <h4 class="pull-left list-group-item-heading">
17   - <a href="{% url resource.access_link resource.slug %}" class="resource_link" {% if resource.show_window %}target="_blank"{% endif %}>
18   - {{ resource }}
  17 + <a href="{% url resource.access_link resource.slug %}" class="resource_link" >
  18 + {{ resource.name }}
19 19 </a>
20 20 </h4>
21 21  
... ...