Commit 4fcd45330521855b3caec85e05c7708115244c39

Authored by Zambom
1 parent d9c91f9e

Adding pendencies log

amadeus/static/js/pendencies.js
@@ -65,6 +65,40 @@ $('.pendencies-content').on('hidden.bs.collapse', function(e) { @@ -65,6 +65,40 @@ $('.pendencies-content').on('hidden.bs.collapse', function(e) {
65 if (h_items > 10) { 65 if (h_items > 10) {
66 h_holder.jPages("destroy"); 66 h_holder.jPages("destroy");
67 } 67 }
  68 +
  69 + var url = pendencies.find('.view_log_url').val();
  70 + var log_id = pendencies.find('.view_log_id').val();
  71 +
  72 + if (typeof(url) != 'undefined') {
  73 + $.ajax({
  74 + url: url,
  75 + data: {'action': 'close', 'log_id': log_id},
  76 + dataType: 'json',
  77 + success: function (data) {
  78 + console.log(data.message);
  79 + },
  80 + error: function (data) {
  81 + console.log(data);
  82 + }
  83 + });
  84 + }
  85 +
  86 + var hist_url = history.find('.hist_log_url').val();
  87 + var hist_log_id = history.find('.hist_log_id').val();
  88 +
  89 + if (typeof(hist_url) != 'undefined' && hist_log_id != "") {
  90 + $.ajax({
  91 + url: hist_url,
  92 + data: {'action': 'close', 'log_id': hist_log_id},
  93 + dataType: 'json',
  94 + success: function (data) {
  95 + console.log(data.message);
  96 + },
  97 + error: function (data) {
  98 + console.log(data);
  99 + }
  100 + });
  101 + }
68 } 102 }
69 }); 103 });
70 104
@@ -111,6 +145,40 @@ function getPendencies(panel_id) { @@ -111,6 +145,40 @@ function getPendencies(panel_id) {
111 metaFunctions(); 145 metaFunctions();
112 } 146 }
113 147
  148 + var url = list.parent().find('.view_log_url').val();
  149 + var log_input = list.parent().find('.view_log_id');
  150 +
  151 + if (typeof(url) != 'undefined') {
  152 + $.ajax({
  153 + url: url,
  154 + data: {'action': 'open'},
  155 + dataType: 'json',
  156 + success: function (data) {
  157 + log_input.val(data.log_id);
  158 + },
  159 + error: function (data) {
  160 + console.log(data);
  161 + }
  162 + });
  163 + }
  164 +
  165 + var hist_url = list.parent().parent().find('.hist_log_url').val();
  166 + var hist_log_id = list.parent().parent().find('.hist_log_id').val();
  167 +
  168 + if (typeof(hist_url) != 'undefined' && hist_log_id != "") {
  169 + $.ajax({
  170 + url: hist_url,
  171 + data: {'action': 'close', 'log_id': hist_log_id},
  172 + dataType: 'json',
  173 + success: function (data) {
  174 + console.log(data.message);
  175 + },
  176 + error: function (data) {
  177 + console.log(data);
  178 + }
  179 + });
  180 + }
  181 +
114 list.parent().parent().find('.history').attr('style', 'display: none'); 182 list.parent().parent().find('.history').attr('style', 'display: none');
115 list.parent().attr('style', 'display: block'); 183 list.parent().attr('style', 'display: block');
116 184
@@ -166,6 +234,40 @@ function getHistory(panel_id) { @@ -166,6 +234,40 @@ function getHistory(panel_id) {
166 } 234 }
167 } 235 }
168 236
  237 + var url = container.find('.view_log_url').val();
  238 + var log_id = container.find('.view_log_id').val();
  239 +
  240 + if (typeof(url) != 'undefined') {
  241 + $.ajax({
  242 + url: url,
  243 + data: {'action': 'close', 'log_id': log_id},
  244 + dataType: 'json',
  245 + success: function (data) {
  246 + console.log(data.message);
  247 + },
  248 + error: function (data) {
  249 + console.log(data);
  250 + }
  251 + });
  252 + }
  253 +
  254 + var hist_url = container.find('.hist_log_url').val();
  255 + var hist_log_input = container.find('.hist_log_id');
  256 +
  257 + if (typeof(hist_url) != 'undefined') {
  258 + $.ajax({
  259 + url: hist_url,
  260 + data: {'action': 'open'},
  261 + dataType: 'json',
  262 + success: function (data) {
  263 + hist_log_input.val(data.log_id);
  264 + },
  265 + error: function (data) {
  266 + console.log(data);
  267 + }
  268 + });
  269 + }
  270 +
169 container.find('.pendencies_link').removeClass('active'); 271 container.find('.pendencies_link').removeClass('active');
170 container.find('.history_link').addClass('active'); 272 container.find('.history_link').addClass('active');
171 273
notifications/templates/notifications/index.html
@@ -41,11 +41,17 @@ @@ -41,11 +41,17 @@
41 </div> 41 </div>
42 42
43 <div class="pendencies" data-url="{% url 'notifications:ajax_view' notification.task__resource__topic__subject %}"> 43 <div class="pendencies" data-url="{% url 'notifications:ajax_view' notification.task__resource__topic__subject %}">
  44 + <input type="hidden" class="view_log_url" value="{% url 'notifications:view_log' notification.task__resource__topic__subject %}" />
  45 + <input type="hidden" class="view_log_id" value="" />
  46 +
44 <div id="pendencies_list_{{ notification.task__resource__topic__subject }}" class="pendencies-cards"></div> 47 <div id="pendencies_list_{{ notification.task__resource__topic__subject }}" class="pendencies-cards"></div>
45 <div class="holder"></div> 48 <div class="holder"></div>
46 </div> 49 </div>
47 50
48 <div class="history" data-url="{% url 'notifications:ajax_history' notification.task__resource__topic__subject %}"> 51 <div class="history" data-url="{% url 'notifications:ajax_history' notification.task__resource__topic__subject %}">
  52 + <input type="hidden" class="hist_log_url" value="{% url 'notifications:hist_log' notification.task__resource__topic__subject %}" />
  53 + <input type="hidden" class="hist_log_id" value="" />
  54 +
49 <div class="history_data"></div> 55 <div class="history_data"></div>
50 <div class="text-center"> 56 <div class="text-center">
51 <div class="holder"></div> 57 <div class="holder"></div>
notifications/urls.py
@@ -7,6 +7,8 @@ urlpatterns = [ @@ -7,6 +7,8 @@ urlpatterns = [
7 url(r'^set_goal/$', views.set_goal, name='set_goal'), 7 url(r'^set_goal/$', views.set_goal, name='set_goal'),
8 url(r'^ajax/(?P<id>[\w_-]+)/$', views.AjaxNotifications.as_view(), name='ajax_view'), 8 url(r'^ajax/(?P<id>[\w_-]+)/$', views.AjaxNotifications.as_view(), name='ajax_view'),
9 url(r'^ajax_history/(?P<id>[\w_-]+)/$', views.AjaxHistory.as_view(), name='ajax_history'), 9 url(r'^ajax_history/(?P<id>[\w_-]+)/$', views.AjaxHistory.as_view(), name='ajax_history'),
  10 + url(r'^view_log/(?P<subject>[\w_-]+)/$', views.pendencies_view_log, name = 'view_log'),
  11 + url(r'^hist_log/(?P<subject>[\w_-]+)/$', views.pendencies_hist_log, name = 'hist_log'),
10 url(r'^(?P<slug>[\w_-]+)/$', views.SubjectNotifications.as_view(), name='view'), 12 url(r'^(?P<slug>[\w_-]+)/$', views.SubjectNotifications.as_view(), name='view'),
11 url(r'^(?P<slug>[\w_-]+)/history/$', views.SubjectHistory.as_view(), name='history'), 13 url(r'^(?P<slug>[\w_-]+)/history/$', views.SubjectHistory.as_view(), name='history'),
12 ] 14 ]
13 \ No newline at end of file 15 \ No newline at end of file
notifications/views.py
@@ -17,10 +17,20 @@ from amadeus.permissions import has_subject_view_permissions, has_category_permi @@ -17,10 +17,20 @@ from amadeus.permissions import has_subject_view_permissions, has_category_permi
17 from subjects.models import Subject 17 from subjects.models import Subject
18 from categories.models import Category 18 from categories.models import Category
19 19
  20 +from log.models import Log
  21 +from log.mixins import LogMixin
  22 +from log.decorators import log_decorator, log_decorator_ajax
  23 +import time
  24 +
20 from .models import Notification 25 from .models import Notification
21 from .utils import get_order_by, is_date 26 from .utils import get_order_by, is_date
22 27
23 -class SubjectNotifications(LoginRequiredMixin, generic.ListView): 28 +class SubjectNotifications(LoginRequiredMixin, LogMixin, generic.ListView):
  29 + log_component = 'pendencies'
  30 + log_action = 'view'
  31 + log_resource = 'pendencies'
  32 + log_context = {}
  33 +
24 login_url = reverse_lazy("users:login") 34 login_url = reverse_lazy("users:login")
25 redirect_field_name = 'next' 35 redirect_field_name = 'next'
26 36
@@ -60,9 +70,24 @@ class SubjectNotifications(LoginRequiredMixin, generic.ListView): @@ -60,9 +70,24 @@ class SubjectNotifications(LoginRequiredMixin, generic.ListView):
60 context['subject'] = subject 70 context['subject'] = subject
61 context['total'] = self.total 71 context['total'] = self.total
62 72
  73 + self.log_context['subject_id'] = subject.id
  74 + self.log_context['subject_name'] = subject.name
  75 + self.log_context['subject_slug'] = subject.slug
  76 + self.log_context['view_page'] = self.request.GET.get("page", 1)
  77 + self.log_context['timestamp_start'] = str(int(time.time()))
  78 +
  79 + super(SubjectNotifications, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
  80 +
  81 + self.request.session['log_id'] = Log.objects.latest('id').id
  82 +
63 return context 83 return context
64 84
65 -class SubjectHistory(LoginRequiredMixin, generic.ListView): 85 +class SubjectHistory(LoginRequiredMixin, LogMixin, generic.ListView):
  86 + log_component = 'pendencies'
  87 + log_action = 'view_history'
  88 + log_resource = 'pendencies'
  89 + log_context = {}
  90 +
66 login_url = reverse_lazy("users:login") 91 login_url = reverse_lazy("users:login")
67 redirect_field_name = 'next' 92 redirect_field_name = 'next'
68 93
@@ -127,6 +152,17 @@ class SubjectHistory(LoginRequiredMixin, generic.ListView): @@ -127,6 +152,17 @@ class SubjectHistory(LoginRequiredMixin, generic.ListView):
127 context['rows'] = self.num_rows 152 context['rows'] = self.num_rows
128 context['searched'] = self.request.GET.get("search", "") 153 context['searched'] = self.request.GET.get("search", "")
129 154
  155 + self.log_context['subject_id'] = subject.id
  156 + self.log_context['subject_name'] = subject.name
  157 + self.log_context['subject_slug'] = subject.slug
  158 + self.log_context['history_page'] = self.request.GET.get("page", 1)
  159 + self.log_context['searched'] = self.request.GET.get("search", "")
  160 + self.log_context['timestamp_start'] = str(int(time.time()))
  161 +
  162 + super(SubjectHistory, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
  163 +
  164 + self.request.session['log_id'] = Log.objects.latest('id').id
  165 +
130 return context 166 return context
131 167
132 class IndexView(LoginRequiredMixin, generic.ListView): 168 class IndexView(LoginRequiredMixin, generic.ListView):
@@ -237,6 +273,7 @@ class AjaxHistory(LoginRequiredMixin, generic.ListView): @@ -237,6 +273,7 @@ class AjaxHistory(LoginRequiredMixin, generic.ListView):
237 return context 273 return context
238 274
239 @login_required 275 @login_required
  276 +@log_decorator('pendencies', 'set_goal', 'pendencies')
240 def set_goal(request): 277 def set_goal(request):
241 if request.method == "POST" and request.is_ajax(): 278 if request.method == "POST" and request.is_ajax():
242 meta = request.POST.get('meta', None) 279 meta = request.POST.get('meta', None)
@@ -264,9 +301,59 @@ def set_goal(request): @@ -264,9 +301,59 @@ def set_goal(request):
264 notification.meta = meta 301 notification.meta = meta
265 notification.save() 302 notification.save()
266 303
  304 + log_context = {}
  305 + log_context['notification_id'] = notification.id
  306 + log_context['notification'] = str(notification)
  307 +
  308 + request.log_context = log_context
  309 +
267 if notification.level == 2: 310 if notification.level == 2:
268 - message = _('Your new goal to realize the task %s is %s')%(str(notification.task), formats.date_format(meta, "SHORT_DATETIME_FORMAT")) 311 + message = _('Your new goal to realize the task %s is %s')%(str(notification), formats.date_format(meta, "SHORT_DATETIME_FORMAT"))
269 else: 312 else:
270 - message = _('Your goal to realize the task %s is %s')%(str(notification.task), formats.date_format(meta, "SHORT_DATETIME_FORMAT")) 313 + message = _('Your goal to realize the task %s is %s')%(str(notification), formats.date_format(meta, "SHORT_DATETIME_FORMAT"))
  314 +
  315 + return JsonResponse({'error': False, 'message': message})
  316 +
  317 +@log_decorator_ajax('pendencies', 'view', 'pendencies')
  318 +def pendencies_view_log(request, subject):
  319 + action = request.GET.get('action')
  320 +
  321 + if action == 'open':
  322 + subject = get_object_or_404(Subject, id = subject)
  323 +
  324 + log_context = {}
  325 + log_context['subject_id'] = subject.id
  326 + log_context['subject_name'] = subject.name
  327 + log_context['subject_slug'] = subject.slug
  328 + log_context['timestamp_start'] = str(int(time.time()))
  329 + log_context['timestamp_end'] = '-1'
  330 +
  331 + request.log_context = log_context
  332 +
  333 + log_id = Log.objects.latest('id').id
  334 +
  335 + return JsonResponse({'message': 'ok', 'log_id': log_id})
  336 +
  337 + return JsonResponse({'message': 'ok'})
  338 +
  339 +@log_decorator_ajax('pendencies', 'view_history', 'pendencies')
  340 +def pendencies_hist_log(request, subject):
  341 + action = request.GET.get('action')
  342 +
  343 + if action == 'open':
  344 + subject = get_object_or_404(Subject, id = subject)
  345 +
  346 + log_context = {}
  347 + log_context['subject_id'] = subject.id
  348 + log_context['subject_name'] = subject.name
  349 + log_context['subject_slug'] = subject.slug
  350 + log_context['timestamp_start'] = str(int(time.time()))
  351 + log_context['timestamp_end'] = '-1'
  352 +
  353 + request.log_context = log_context
  354 +
  355 + log_id = Log.objects.latest('id').id
  356 +
  357 + return JsonResponse({'message': 'ok', 'log_id': log_id})
271 358
272 - return JsonResponse({'error': False, 'message': message})  
273 \ No newline at end of file 359 \ No newline at end of file
  360 + return JsonResponse({'message': 'ok'})
274 \ No newline at end of file 361 \ No newline at end of file