Commit 2ace89260d55f20c2b4e7785bd6f20f63b742c51
Exists in
master
and in
2 other branches
Merge branch 'refactoring' of https://github.com/amadeusproject/amadeuslms into refactoring
Showing
84 changed files
with
1417 additions
and
494 deletions
Show diff stats
amadeus/locale/pt_BR/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
8 | msgstr "" | 8 | msgstr "" |
9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
11 | -"POT-Creation-Date: 2017-08-30 22:41-0300\n" | 11 | +"POT-Creation-Date: 2017-09-07 22:29-0300\n" |
12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
14 | "Language-Team: LANGUAGE <LL@li.org>\n" | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" |
amadeus/settings.py
@@ -215,7 +215,7 @@ CRON_CLASSES = [ | @@ -215,7 +215,7 @@ CRON_CLASSES = [ | ||
215 | ] | 215 | ] |
216 | 216 | ||
217 | CRONJOBS = [ | 217 | CRONJOBS = [ |
218 | - ('0 0 * * *', 'notifications.cron.notification_cron'), | 218 | + ('0 5 * * *', 'notifications.cron.notification_cron'), |
219 | ('0 0 * * *', 'goals.cron.setgoals_cron') | 219 | ('0 0 * * *', 'goals.cron.setgoals_cron') |
220 | ] | 220 | ] |
221 | 221 |
amadeus/static/js/crop_news.js
1 | $(function () { | 1 | $(function () { |
2 | - | ||
3 | /* Script para abrir o modal com a imagem selecionada */ | 2 | /* Script para abrir o modal com a imagem selecionada */ |
4 | $("#id_image").change(function () { | 3 | $("#id_image").change(function () { |
4 | + var max_size = 5*1024*1024; | ||
5 | + var submit_btn = $("#news-form").find("input[type='submit']"); | ||
6 | + var mimeTypes = $(this).data('mimetypes'); | ||
7 | + var errors = 0; | ||
8 | + | ||
9 | + $(".client-file-errors").hide(); | ||
10 | + $(".size").hide(); | ||
11 | + $(".format").hide(); | ||
12 | + $(submit_btn).prop('disable', false); | ||
13 | + $(submit_btn).prop('disabled', false); | ||
14 | + | ||
5 | if (this.files && this.files[0]) { | 15 | if (this.files && this.files[0]) { |
6 | - var reader = new FileReader(); | ||
7 | - reader.onload = function (e) { | ||
8 | - $("#image").attr("src", e.target.result); | ||
9 | - $("#modalCrop").modal("show"); | 16 | + if (this.files[0].size > max_size) { |
17 | + $(submit_btn).prop('disable', true); | ||
18 | + $(submit_btn).prop('disabled', true); | ||
19 | + | ||
20 | + $(".client-file-errors").show(); | ||
21 | + $(".size").show(); | ||
22 | + | ||
23 | + errors++; | ||
24 | + } | ||
25 | + | ||
26 | + if (!mimeTypes.includes(this.files[0].type)) { | ||
27 | + $(submit_btn).prop('disable', true); | ||
28 | + $(submit_btn).prop('disabled', true); | ||
29 | + | ||
30 | + $(".client-file-errors").show(); | ||
31 | + $(".format").show(); | ||
32 | + | ||
33 | + errors++; | ||
34 | + } | ||
35 | + | ||
36 | + if (errors == 0) { | ||
37 | + var reader = new FileReader(); | ||
38 | + reader.onload = function (e) { | ||
39 | + $("#image").attr("src", e.target.result); | ||
40 | + $("#modalCrop").modal("show"); | ||
41 | + } | ||
42 | + reader.readAsDataURL(this.files[0]); | ||
10 | } | 43 | } |
11 | - reader.readAsDataURL(this.files[0]); | ||
12 | } | 44 | } |
13 | }); | 45 | }); |
14 | 46 | ||
@@ -19,7 +51,7 @@ $(function () { | @@ -19,7 +51,7 @@ $(function () { | ||
19 | $("#modalCrop").on("shown.bs.modal", function () { | 51 | $("#modalCrop").on("shown.bs.modal", function () { |
20 | $image.cropper({ | 52 | $image.cropper({ |
21 | viewMode: 1 , | 53 | viewMode: 1 , |
22 | - aspectRatio: 24/5, | 54 | + aspectRatio: 3/1, |
23 | minCropBoxWidth: 200, | 55 | minCropBoxWidth: 200, |
24 | minCropBoxHeight: 200, | 56 | minCropBoxHeight: 200, |
25 | dragMode: 'move', | 57 | dragMode: 'move', |
amadeus/static/js/mural.js
@@ -91,7 +91,12 @@ function seeComplete(btn, post) { | @@ -91,7 +91,12 @@ function seeComplete(btn, post) { | ||
91 | function setPostFormSubmit(post = "") { | 91 | function setPostFormSubmit(post = "") { |
92 | var frm = $('#post-form'); | 92 | var frm = $('#post-form'); |
93 | 93 | ||
94 | - frm.submit(function () { | 94 | + frm.submit(function (e) { |
95 | + var btn = frm.parent().parent().parent().find("button[form='post-form']") | ||
96 | + | ||
97 | + btn.prop('disable', true); | ||
98 | + btn.prop('disabled', true); | ||
99 | + | ||
95 | var formData = new FormData($(this)[0]); | 100 | var formData = new FormData($(this)[0]); |
96 | 101 | ||
97 | $.ajax({ | 102 | $.ajax({ |
@@ -250,6 +255,11 @@ function setCommentFormSubmit(post, comment = "") { | @@ -250,6 +255,11 @@ function setCommentFormSubmit(post, comment = "") { | ||
250 | var frm = $('#comment-form'); | 255 | var frm = $('#comment-form'); |
251 | 256 | ||
252 | frm.submit(function () { | 257 | frm.submit(function () { |
258 | + var btn = frm.parent().parent().parent().find("button[form='comment-form']") | ||
259 | + | ||
260 | + btn.prop('disable', true); | ||
261 | + btn.prop('disabled', true); | ||
262 | + | ||
253 | var formData = new FormData($(this)[0]); | 263 | var formData = new FormData($(this)[0]); |
254 | 264 | ||
255 | $.ajax({ | 265 | $.ajax({ |
amadeus/static/js/resources.js
@@ -135,16 +135,30 @@ function FileSelectHandler(e) { | @@ -135,16 +135,30 @@ function FileSelectHandler(e) { | ||
135 | parent = $(e.target.offsetParent), | 135 | parent = $(e.target.offsetParent), |
136 | max_size = parseInt($(e.target).data("max_size")) * 1024 * 1024, | 136 | max_size = parseInt($(e.target).data("max_size")) * 1024 * 1024, |
137 | submit_btn = $(e.target).closest("form").find("input[type='submit']"), | 137 | submit_btn = $(e.target).closest("form").find("input[type='submit']"), |
138 | - mimeTypes = $(e.target).data('mimetypes'); | 138 | + mimeTypes = $(e.target).data('mimetypes'), |
139 | + file_id = parent.data('file_id'); | ||
139 | 140 | ||
140 | - $(".client-file-errors").hide(); | ||
141 | - $(".size").hide(); | ||
142 | - $(".format").hide(); | ||
143 | - $(submit_btn).prop('disable', false); | ||
144 | - $(submit_btn).prop('disabled', false); | 141 | + if ($(e.target).closest("form").prop('id') == "bulletin") { |
142 | + parent.removeClass('alert-file'); | ||
143 | + | ||
144 | + var alerts_open = $(e.target).closest("form").find(".alert-file").length; | ||
145 | + | ||
146 | + if (alerts_open == 0) { | ||
147 | + $(submit_btn).prop('disable', false); | ||
148 | + $(submit_btn).prop('disabled', false); | ||
149 | + } | ||
150 | + | ||
151 | + $("." + file_id + "-file-errors").hide(); | ||
152 | + $("." + file_id + "-file-errors .size").hide(); | ||
153 | + $("." + file_id + "-file-errors .format").hide(); | ||
154 | + } else { | ||
155 | + $(".client-file-errors").hide(); | ||
156 | + $(".size").hide(); | ||
157 | + $(".format").hide(); | ||
158 | + $(submit_btn).prop('disable', false); | ||
159 | + $(submit_btn).prop('disabled', false); | ||
160 | + } | ||
145 | 161 | ||
146 | - console.log($(e.target).data('mimetypes')); | ||
147 | - console.log(mimeTypes); | ||
148 | 162 | ||
149 | // process all File objects | 163 | // process all File objects |
150 | for (var i = 0, f; f = files[i]; i++) { | 164 | for (var i = 0, f; f = files[i]; i++) { |
@@ -153,16 +167,30 @@ function FileSelectHandler(e) { | @@ -153,16 +167,30 @@ function FileSelectHandler(e) { | ||
153 | $(submit_btn).prop('disable', true); | 167 | $(submit_btn).prop('disable', true); |
154 | $(submit_btn).prop('disabled', true); | 168 | $(submit_btn).prop('disabled', true); |
155 | 169 | ||
156 | - $(".client-file-errors").show(); | ||
157 | - $(".size").show(); | 170 | + if ($(e.target).closest("form").prop('id') == "bulletin") { |
171 | + $("." + file_id + "-file-errors").show(); | ||
172 | + $("." + file_id + "-file-errors .size").show(); | ||
173 | + | ||
174 | + parent.addClass('alert-file'); | ||
175 | + } else { | ||
176 | + $(".client-file-errors").show(); | ||
177 | + $(".size").show(); | ||
178 | + } | ||
158 | } | 179 | } |
159 | 180 | ||
160 | if (!mimeTypes.includes(f.type)) { | 181 | if (!mimeTypes.includes(f.type)) { |
161 | $(submit_btn).prop('disable', true); | 182 | $(submit_btn).prop('disable', true); |
162 | $(submit_btn).prop('disabled', true); | 183 | $(submit_btn).prop('disabled', true); |
163 | 184 | ||
164 | - $(".client-file-errors").show(); | ||
165 | - $(".format").show(); | 185 | + if ($(e.target).closest("form").prop('id') == "bulletin") { |
186 | + $("." + file_id + "-file-errors").show(); | ||
187 | + $("." + file_id + "-file-errors .format").show(); | ||
188 | + | ||
189 | + parent.addClass('alert-file'); | ||
190 | + } else { | ||
191 | + $(".client-file-errors").show(); | ||
192 | + $(".format").show(); | ||
193 | + } | ||
166 | } | 194 | } |
167 | 195 | ||
168 | parent.find('.filedrag').html(f.name); | 196 | parent.find('.filedrag').html(f.name); |
analytics/locale/pt_BR/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
8 | msgstr "" | 8 | msgstr "" |
9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
11 | -"POT-Creation-Date: 2017-08-30 22:41-0300\n" | 11 | +"POT-Creation-Date: 2017-09-07 22:29-0300\n" |
12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
14 | "Language-Team: LANGUAGE <LL@li.org>\n" | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" |
api/locale/pt_BR/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
8 | msgstr "" | 8 | msgstr "" |
9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
11 | -"POT-Creation-Date: 2017-08-30 22:41-0300\n" | 11 | +"POT-Creation-Date: 2017-09-07 22:29-0300\n" |
12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
14 | "Language-Team: LANGUAGE <LL@li.org>\n" | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" |
@@ -18,23 +18,31 @@ msgstr "" | @@ -18,23 +18,31 @@ msgstr "" | ||
18 | "Content-Transfer-Encoding: 8bit\n" | 18 | "Content-Transfer-Encoding: 8bit\n" |
19 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" | 19 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" |
20 | 20 | ||
21 | -#: api/views.py:332 | 21 | +#: api/utils.py:35 |
22 | +msgid " sent a message" | ||
23 | +msgstr "" | ||
24 | + | ||
25 | +#: api/utils.py:40 | ||
26 | +msgid "[Photo]" | ||
27 | +msgstr "" | ||
28 | + | ||
29 | +#: api/views.py:341 | ||
22 | #, python-format | 30 | #, python-format |
23 | msgid "Last message in %s" | 31 | msgid "Last message in %s" |
24 | msgstr "" | 32 | msgstr "" |
25 | 33 | ||
26 | -#: api/views.py:349 | 34 | +#: api/views.py:358 |
27 | msgid "Message sent successfully!" | 35 | msgid "Message sent successfully!" |
28 | msgstr "" | 36 | msgstr "" |
29 | 37 | ||
30 | -#: api/views.py:353 | 38 | +#: api/views.py:364 |
31 | msgid "Error while sending message!" | 39 | msgid "Error while sending message!" |
32 | msgstr "" | 40 | msgstr "" |
33 | 41 | ||
34 | -#: api/views.py:360 | 42 | +#: api/views.py:371 |
35 | msgid "No information received!" | 43 | msgid "No information received!" |
36 | msgstr "" | 44 | msgstr "" |
37 | 45 | ||
38 | -#: api/views.py:366 | 46 | +#: api/views.py:377 |
39 | msgid "Amadeus" | 47 | msgid "Amadeus" |
40 | msgstr "" | 48 | msgstr "" |
@@ -0,0 +1,42 @@ | @@ -0,0 +1,42 @@ | ||
1 | +import json | ||
2 | +import textwrap | ||
3 | +from django.utils.html import strip_tags | ||
4 | +from django.utils.translation import ugettext as _ | ||
5 | + | ||
6 | +from fcm_django.models import FCMDevice | ||
7 | +from fcm_django.fcm import fcm_send_message | ||
8 | + | ||
9 | +from chat.serializers import ChatSerializer | ||
10 | + | ||
11 | +def sendChatPushNotification(user, message): | ||
12 | + device = FCMDevice.objects.filter(user = user, active = True).first() | ||
13 | + | ||
14 | + if not device is None: | ||
15 | + serializer = ChatSerializer(message) | ||
16 | + | ||
17 | + json_r = json.dumps(serializer.data) | ||
18 | + json_r = json.loads(json_r) | ||
19 | + | ||
20 | + info = {} | ||
21 | + | ||
22 | + info["data"] = {} | ||
23 | + info["data"]["messages"] = [] | ||
24 | + info["data"]["message_sent"] = json_r | ||
25 | + | ||
26 | + info["message"] = "" | ||
27 | + info["type"] = "" | ||
28 | + info["title"] = "" | ||
29 | + info["success"] = True | ||
30 | + info["number"] = 1 | ||
31 | + info['extra'] = 0 | ||
32 | + | ||
33 | + response = json.dumps(info) | ||
34 | + | ||
35 | + title = str(message.user).join(_(" sent a message")) | ||
36 | + | ||
37 | + simple_notify = textwrap.shorten(strip_tags(message.text), width = 30, placeholder = "...") | ||
38 | + | ||
39 | + if message.image: | ||
40 | + simple_notify += " ".join(_("[Photo]")) | ||
41 | + | ||
42 | + device.send_message(data = {"response": response, "title": title, "body": simple_notify, "user_from": message.user.email, "user_name": str(message.user), "user_img": message.user.image_url}) | ||
0 | \ No newline at end of file | 43 | \ No newline at end of file |
api/views.py
@@ -35,6 +35,8 @@ from django.http import HttpResponse | @@ -35,6 +35,8 @@ from django.http import HttpResponse | ||
35 | 35 | ||
36 | from fcm_django.models import FCMDevice | 36 | from fcm_django.models import FCMDevice |
37 | 37 | ||
38 | +from .utils import sendChatPushNotification | ||
39 | + | ||
38 | @csrf_exempt | 40 | @csrf_exempt |
39 | def getToken(request): | 41 | def getToken(request): |
40 | oauth = Application.objects.filter(name = "amadeus-droid") | 42 | oauth = Application.objects.filter(name = "amadeus-droid") |
@@ -303,7 +305,14 @@ class ChatViewset(viewsets.ModelViewSet): | @@ -303,7 +305,14 @@ class ChatViewset(viewsets.ModelViewSet): | ||
303 | 305 | ||
304 | talk.save() | 306 | talk.save() |
305 | 307 | ||
306 | - subject = Subject.objects.get(slug = subject) | 308 | + if subject != "": |
309 | + subject = Subject.objects.get(slug = subject) | ||
310 | + space = subject.slug | ||
311 | + space_type = "subject" | ||
312 | + else: | ||
313 | + subject = None | ||
314 | + space = 0 | ||
315 | + space_type = "general" | ||
307 | 316 | ||
308 | message = TalkMessages() | 317 | message = TalkMessages() |
309 | message.text = "<p>" + msg_text + "</p>" | 318 | message.text = "<p>" + msg_text + "</p>" |
@@ -318,11 +327,11 @@ class ChatViewset(viewsets.ModelViewSet): | @@ -318,11 +327,11 @@ class ChatViewset(viewsets.ModelViewSet): | ||
318 | 327 | ||
319 | if not message.pk is None: | 328 | if not message.pk is None: |
320 | simple_notify = textwrap.shorten(strip_tags(message.text), width = 30, placeholder = "...") | 329 | simple_notify = textwrap.shorten(strip_tags(message.text), width = 30, placeholder = "...") |
321 | - | 330 | + |
322 | notification = { | 331 | notification = { |
323 | "type": "chat", | 332 | "type": "chat", |
324 | - "subtype": "subject", | ||
325 | - "space": subject.slug, | 333 | + "subtype": space_type, |
334 | + "space": space, | ||
326 | "user_icon": message.user.image_url, | 335 | "user_icon": message.user.image_url, |
327 | "notify_title": str(message.user), | 336 | "notify_title": str(message.user), |
328 | "simple_notify": simple_notify, | 337 | "simple_notify": simple_notify, |
@@ -349,6 +358,8 @@ class ChatViewset(viewsets.ModelViewSet): | @@ -349,6 +358,8 @@ class ChatViewset(viewsets.ModelViewSet): | ||
349 | info["message"] = _("Message sent successfully!") | 358 | info["message"] = _("Message sent successfully!") |
350 | info["success"] = True | 359 | info["success"] = True |
351 | info["number"] = 1 | 360 | info["number"] = 1 |
361 | + | ||
362 | + sendChatPushNotification(user_to, message) | ||
352 | else: | 363 | else: |
353 | info["message"] = _("Error while sending message!") | 364 | info["message"] = _("Error while sending message!") |
354 | info["success"] = False | 365 | info["success"] = False |
backup.json
1 | -[[{"id": 6, "topic": {"id": 32, "name": "Now Invisble", "slug": "now-invisble", "description": "<p>TIme to</p>", "repository": false, "visible": true, "order": 2, "create_date": "2017-01-17T18:44:24.976186Z", "last_update": "2017-03-08T01:28:52.845818Z"}, "tags": [{"id": 48, "name": "anything"}, {"id": 49, "name": "lsoe"}], "pendencies_resource": [], "groups": [], "students": [{"id": 179, "log": [], "password": "pbkdf2_sha256$30000$5gbyp9Al3C2n$rroJzhQWFLetSzLJto5kyVC4z2hycFSWhH8uq3lhazI=", "last_login": "2017-01-23T22:49:17.560412Z", "is_superuser": false, "email": "e178@amadeus.br", "username": "e", "last_name": "178", "social_name": "Estudante 178", "description": "<p>Estudante da Universidade Federal do Vale do S\u00e3o Francisco - <b>UNIVASF</b>.</p>", "image": "/uploads/users/e178.jpg", "date_created": "2017-01-01T03:00:00Z", "last_update": "2017-01-01T03:00:00Z", "show_email": 1, "is_staff": false, "is_active": true, "groups": [], "user_permissions": []}, {"id": 180, "log": [{"id": 521, "component": "user", "context": {}, "action": "logout", "resource": "system", "user": "Estudante 179", "user_id": 180, "user_email": "e179@amadeus.br", "datetime": "2017-02-09T15:20:22.785376Z"}, {"id": 661, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 179", "user_id": 180, "user_email": "e179@amadeus.br", "datetime": "2017-02-20T13:47:40.169910Z"}, {"id": 1182, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1488941129", "category_id": 22, "timestamp_start": "1488941127"}, "action": "view", "resource": "subject", "user": "Estudante 179", "user_id": 180, "user_email": "e179@amadeus.br", "datetime": "2017-03-08T02:45:27.700588Z"}, {"id": 1183, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1488941132", "category_id": 22, "timestamp_start": "1488941129"}, "action": "access", "resource": "subject", "user": "Estudante 179", "user_id": 180, "user_email": "e179@amadeus.br", "datetime": "2017-03-08T02:45:29.258883Z"}, {"id": 1184, "component": "topic", "context": {"topic_id": 32, "category_name": "F\u00cdSICA", "topic_slug": "now-invisble", "subject_id": 459, "topic_name": "Now Invisble", "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "timestamp_end": "1488941132", "category_id": 22, "timestamp_start": "1488941131", "category_slug": "fisica"}, "action": "view", "resource": "topic", "user": "Estudante 179", "user_id": 180, "user_email": "e179@amadeus.br", "datetime": "2017-03-08T02:45:31.583986Z"}, {"id": 1185, "component": "resources", "context": {"topic_slug": "now-invisble", "subject_id": 459, "category_slug": "fisica", "goals_slug": "future", "subject_slug": "acustica", "category_name": "F\u00cdSICA", "goals_id": 71, "timestamp_start": "1488941132", "topic_id": 32, "goals_name": "Future", "topic_name": "Now Invisble", "subject_name": "AC\u00daSTICA", "timestamp_end": "1488941138", "category_id": 22}, "action": "view", "resource": "goals", "user": "Estudante 179", "user_id": 180, "user_email": "e179@amadeus.br", "datetime": "2017-03-08T02:45:32.592430Z"}, {"id": 1186, "component": "resources", "context": {"topic_slug": "now-invisble", "subject_id": 459, "category_slug": "fisica", "goals_slug": "future", "subject_slug": "acustica", "category_name": "F\u00cdSICA", "goals_id": 71, "timestamp_start": "1488941132", "topic_id": 32, "goals_name": "Future", "topic_name": "Now Invisble", "subject_name": "AC\u00daSTICA", "category_id": 22}, "action": "submit", "resource": "goals", "user": "Estudante 179", "user_id": 180, "user_email": "e179@amadeus.br", "datetime": "2017-03-08T02:45:38.340224Z"}, {"id": 1187, "component": "resources", "context": {"topic_slug": "now-invisble", "subject_id": 459, "category_slug": "fisica", "goals_slug": "future", "subject_slug": "acustica", "category_name": "F\u00cdSICA", "goals_id": 71, "timestamp_start": "1488941138", "topic_id": 32, "goals_name": "Future", "topic_name": "Now Invisble", "subject_name": "AC\u00daSTICA", "category_id": 22}, "action": "view", "resource": "my_goals", "user": "Estudante 179", "user_id": 180, "user_email": "e179@amadeus.br", "datetime": "2017-03-08T02:45:38.526546Z"}, {"id": 1219, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 179", "user_id": 180, "user_email": "e179@amadeus.br", "datetime": "2017-03-11T00:37:10.275153Z"}], "password": "pbkdf2_sha256$30000$5gbyp9Al3C2n$rroJzhQWFLetSzLJto5kyVC4z2hycFSWhH8uq3lhazI=", "last_login": "2017-03-08T02:45:23.288024Z", "is_superuser": false, "email": "e179@amadeus.br", "username": "e", "last_name": "179", "social_name": "Estudante 179", "description": "<p>Estudante da Universidade Federal do Vale do S\u00e3o Francisco - <b>UNIVASF</b>.</p>", "image": "/uploads/users/e179.jpg", "date_created": "2017-01-01T03:00:00Z", "last_update": "2017-01-01T03:00:00Z", "show_email": 1, "is_staff": false, "is_active": true, "groups": [], "user_permissions": []}, {"id": 181, "log": [{"id": 759, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487819337", "subject_id": 459, "timestamp_start": "1487819274", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:07:54.790064Z"}, {"id": 762, "component": "pendencies", "context": {"notification_id": 1264, "notification": "Criar Teste 2"}, "action": "set_goal", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:09:05.305320Z"}, {"id": 205, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1485470536", "category_id": 22, "timestamp_start": "1485470531"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-26T22:42:11.752255Z"}, {"id": 204, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1485470531", "category_id": 22, "timestamp_start": "1485470530"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-26T22:42:10.443457Z"}, {"id": 206, "component": "topic", "context": {"topic_id": 28, "category_name": "F\u00cdSICA", "topic_slug": "topico", "subject_id": 459, "topic_name": "T\u00f3pico", "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "timestamp_end": "1485470536", "category_id": 22, "timestamp_start": "1485470533", "category_slug": "fisica"}, "action": "view", "resource": "topic", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-26T22:42:13.800455Z"}, {"id": 300, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "category_id": 22, "timestamp_start": "1485817823"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T23:10:23.718744Z"}, {"id": 207, "component": "resources", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "webpage_slug": "runaway", "subject_slug": "acustica", "topic_id": 28, "timestamp_start": "1485470536", "topic_slug": "topico", "topic_name": "T\u00f3pico", "subject_name": "AC\u00daSTICA", "timestamp_end": "1485470541", "webpage_id": 34, "category_id": 22, "webpage_name": "Runaway"}, "action": "view", "resource": "webpage", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-26T22:42:16.899890Z"}, {"id": 208, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "category_id": 22, "timestamp_start": "1485470541"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-26T22:42:21.748456Z"}, {"id": 761, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487819596", "subject_id": 459, "timestamp_start": "1487819340", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:09:00.105224Z"}, {"id": 210, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-27T00:00:27.896353Z"}, {"id": 209, "component": "topic", "context": {"topic_id": 28, "category_name": "F\u00cdSICA", "topic_slug": "topico", "subject_id": 459, "topic_name": "T\u00f3pico", "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "timestamp_end": "1485551249", "category_id": 22, "timestamp_start": "1485470542", "category_slug": "fisica"}, "action": "view", "resource": "topic", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-26T22:42:22.309161Z"}, {"id": 763, "component": "mural", "context": {"timestamp_end": "1487819618", "timestamp_start": "1487819597"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:13:17.210969Z"}, {"id": 242, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-28T00:14:10.442184Z"}, {"id": 235, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1485551258", "category_id": 22, "timestamp_start": "1485551257"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-27T21:07:37.363710Z"}, {"id": 236, "component": "user", "context": {}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-27T21:07:46.302234Z"}, {"id": 248, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-28T00:40:09.156424Z"}, {"id": 252, "component": "user", "context": {}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T17:03:06.179857Z"}, {"id": 254, "component": "subject", "context": {"search_for": "matem\u00e1tica"}, "action": "search", "resource": "subject/resources", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T17:32:54.742653Z"}, {"id": 255, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1485800449", "category_id": 22, "timestamp_start": "1485800431"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T18:20:31.082273Z"}, {"id": 256, "component": "user", "context": {}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T18:20:49.508637Z"}, {"id": 272, "component": "user", "context": {}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T18:30:48.022453Z"}, {"id": 296, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T19:51:02.361646Z"}, {"id": 297, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1485817067", "category_id": 22, "timestamp_start": "1485817029"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T22:57:09.534154Z"}, {"id": 298, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1485817823", "category_id": 22, "timestamp_start": "1485817816"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T23:10:16.573429Z"}, {"id": 302, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "category_id": 22, "timestamp_start": "1485817823"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T23:10:23.999732Z"}, {"id": 303, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "category_id": 22, "timestamp_start": "1485817824"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T23:10:24.167376Z"}, {"id": 324, "component": "category", "context": {"timestamp_start": "1485976208", "category_slug": "administracao", "category_name": "ADMINISTRA\u00c7\u00c3O", "category_id": 1, "timestamp_end": "1485976214"}, "action": "view", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-01T19:10:08.328805Z"}, {"id": 304, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "category_id": 22, "timestamp_start": "1485817824"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T23:10:24.321138Z"}, {"id": 313, "component": "topic", "context": {"topic_id": 28, "category_name": "F\u00cdSICA", "topic_slug": "topico", "subject_id": 459, "topic_name": "T\u00f3pico", "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "timestamp_end": "1485817863", "category_id": 22, "timestamp_start": "1485817861", "category_slug": "fisica"}, "action": "view", "resource": "topic", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T23:11:01.913755Z"}, {"id": 314, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T23:52:56.763660Z"}, {"id": 299, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1485817824", "category_id": 22, "timestamp_start": "1485817823"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T23:10:23.507849Z"}, {"id": 305, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "category_id": 22, "timestamp_start": "1485817824"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T23:10:24.948644Z"}, {"id": 306, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "category_id": 22, "timestamp_start": "1485817824"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T23:10:24.964254Z"}, {"id": 301, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1485817824", "category_id": 22, "timestamp_start": "1485817823"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T23:10:23.893312Z"}, {"id": 307, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "category_id": 22, "timestamp_start": "1485817824"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T23:10:24.982882Z"}, {"id": 308, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "category_id": 22, "timestamp_start": "1485817824"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T23:10:24.983647Z"}, {"id": 309, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1485817856", "category_id": 22, "timestamp_start": "1485817825"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T23:10:25.040109Z"}, {"id": 310, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "category_id": 22, "timestamp_start": "1485817856"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T23:10:56.623919Z"}, {"id": 315, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1485837050", "category_id": 22, "timestamp_start": "1485837013"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-31T04:30:13.979178Z"}, {"id": 311, "component": "topic", "context": {"topic_id": 31, "category_name": "F\u00cdSICA", "topic_slug": "invisible", "subject_id": 459, "topic_name": "Visible", "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "timestamp_end": "1485817860", "category_id": 22, "timestamp_start": "1485817858", "category_slug": "fisica"}, "action": "view", "resource": "topic", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T23:10:58.793794Z"}, {"id": 316, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-31T12:47:37.896380Z"}, {"id": 312, "component": "topic", "context": {"topic_id": 29, "category_name": "F\u00cdSICA", "topic_slug": "troia", "subject_id": 459, "topic_name": "troia", "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "timestamp_end": "1485817861", "category_id": 22, "timestamp_start": "1485817860", "category_slug": "fisica"}, "action": "view", "resource": "topic", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T23:11:00.819240Z"}, {"id": 317, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-31T18:37:38.618881Z"}, {"id": 318, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-31T19:12:32.773778Z"}, {"id": 319, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-31T23:28:13.691378Z"}, {"id": 320, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-01T14:34:07.639190Z"}, {"id": 323, "component": "category", "context": {"timestamp_start": "1485974786", "category_slug": "fisica", "category_name": "F\u00cdSICA", "category_id": 22, "timestamp_end": "1485974790"}, "action": "view", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-01T18:46:25.990585Z"}, {"id": 321, "component": "category", "context": {"timestamp_start": "1485974281", "category_slug": "agronomia", "category_name": "AGRONOMIA", "category_id": 2, "timestamp_end": "1485974735"}, "action": "view", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-01T18:38:01.194092Z"}, {"id": 322, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1485974772", "category_id": 22, "timestamp_start": "1485974769"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-01T18:46:09.361339Z"}, {"id": 325, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1485976246", "category_id": 22, "timestamp_start": "1485976245"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-01T19:10:45.062924Z"}, {"id": 326, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1485976264", "category_id": 22, "timestamp_start": "1485976246"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-01T19:10:46.849697Z"}, {"id": 327, "component": "topic", "context": {"topic_id": 31, "category_name": "F\u00cdSICA", "topic_slug": "invisible", "subject_id": 459, "topic_name": "Visible", "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "timestamp_end": "1485976261", "category_id": 22, "timestamp_start": "1485976260", "category_slug": "fisica"}, "action": "view", "resource": "topic", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-01T19:11:00.675879Z"}, {"id": 328, "component": "user", "context": {}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-01T19:11:04.309321Z"}, {"id": 767, "component": "mural", "context": {"post_id": "120"}, "action": "delete_post", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:18:20.846208Z"}, {"id": 356, "component": "user", "context": {}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-02T17:51:57.991297Z"}, {"id": 764, "component": "mural", "context": {"timestamp_end": "1487820251", "timestamp_start": "1487819865"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:17:45.551898Z"}, {"id": 768, "component": "mural", "context": {"timestamp_end": "1487820270", "timestamp_start": "1487820251"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:24:11.371756Z"}, {"id": 770, "component": "mural", "context": {"category_slug": "fisica", "category_name": "F\u00cdSICA", "post_id": "83", "category_id": 22}, "action": "create_comment", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:25:32.108185Z"}, {"id": 500, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-05T03:49:10.189731Z"}, {"id": 498, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-04T02:16:03.713455Z"}, {"id": 506, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-06T21:52:10.915119Z"}, {"id": 514, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-08T20:24:50.861429Z"}, {"id": 586, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-13T20:03:44.925986Z"}, {"id": 1943, "component": "chat", "context": {"timestamp_end": "1491527631", "timestamp_start": "1491527509"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:11:49.574701Z"}, {"id": 593, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-14T15:01:30.551792Z"}, {"id": 595, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-14T21:40:49.191265Z"}, {"id": 608, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-16T10:30:44.154434Z"}, {"id": 616, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-17T00:49:36.985050Z"}, {"id": 620, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-17T23:46:37.967352Z"}, {"id": 632, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-18T02:45:09.855062Z"}, {"id": 633, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-18T03:10:14.618203Z"}, {"id": 656, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-18T16:27:53.309528Z"}, {"id": 760, "component": "pendencies", "context": {"notification_id": 1264, "notification": "Criar Teste 2"}, "action": "set_goal", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:08:03.959137Z"}, {"id": 752, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T01:44:31.566063Z"}, {"id": 747, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487811503", "subject_id": 459, "timestamp_start": "1487811472", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T00:57:52.930523Z"}, {"id": 748, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487811515", "subject_id": 459, "timestamp_start": "1487811503", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T00:58:23.491201Z"}, {"id": 749, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487811640", "subject_id": 459, "timestamp_start": "1487811515", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T00:58:35.675991Z"}, {"id": 750, "component": "pendencies", "context": {"timestamp_start": "1487811640", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1487811667", "history_page": "2"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T01:00:40.332145Z"}, {"id": 751, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487811714", "subject_id": 459, "timestamp_start": "1487811667", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T01:01:07.531334Z"}, {"id": 755, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487819072", "subject_id": 459, "timestamp_start": "1487818941", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:02:21.881897Z"}, {"id": 754, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487818941", "subject_id": 459, "timestamp_start": "1487818935", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:02:15.907517Z"}, {"id": 756, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487819088", "subject_id": 459, "timestamp_start": "1487819079", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:04:39.304989Z"}, {"id": 757, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487819248", "subject_id": 459, "timestamp_start": "1487819083", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:04:43.266285Z"}, {"id": 758, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487819272", "subject_id": 459, "timestamp_start": "1487819248", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:07:28.517853Z"}, {"id": 765, "component": "mural", "context": {}, "action": "create_post", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:17:54.672547Z"}, {"id": 766, "component": "mural", "context": {"post_id": "120"}, "action": "edit_post", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:18:08.851857Z"}, {"id": 769, "component": "mural", "context": {"post_id": "119"}, "action": "create_comment", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:24:21.928140Z"}, {"id": 771, "component": "mural", "context": {"category_name": "F\u00cdSICA", "post_id": "118", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "category_id": 22}, "action": "create_comment", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:25:52.653247Z"}, {"id": 772, "component": "mural", "context": {"category_name": "F\u00cdSICA", "post_id": "91", "subject_id": 509, "category_slug": "fisica", "subject_name": "AERONOMIA", "subject_slug": "aeronomia", "category_id": 22}, "action": "create_comment", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:26:34.622097Z"}, {"id": 773, "component": "mural", "context": {"category_name": "F\u00cdSICA", "post_id": "91", "subject_id": 509, "category_slug": "fisica", "subject_name": "AERONOMIA", "subject_slug": "aeronomia", "category_id": 22}, "action": "create_comment", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:27:55.609252Z"}, {"id": 774, "component": "mural", "context": {"subject_name": "AERONOMIA", "post_id": "91", "subject_id": 509, "subject_slug": "aeronomia"}, "action": "create_comment", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:29:02.640123Z"}, {"id": 775, "component": "mural", "context": {"subject_name": "AERONOMIA", "post_id": "91", "subject_id": 509, "subject_slug": "aeronomia"}, "action": "create_comment", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:30:02.458851Z"}, {"id": 776, "component": "mural", "context": {"category_name": "F\u00cdSICA", "post_id": "57", "subject_id": 509, "category_slug": "fisica", "subject_name": "AERONOMIA", "subject_slug": "aeronomia", "category_id": 22}, "action": "create_comment", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:30:24.187150Z"}, {"id": 777, "component": "mural", "context": {"category_slug": "fisica", "category_name": "F\u00cdSICA", "post_id": "56", "category_id": 22}, "action": "create_comment", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:32:05.419796Z"}, {"id": 778, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "post_id": "117", "subject_id": 459, "subject_slug": "acustica"}, "action": "create_comment", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:32:29.703509Z"}, {"id": 779, "component": "mural", "context": {"category_slug": "fisica", "category_name": "F\u00cdSICA", "post_id": "56", "category_id": 22}, "action": "create_comment", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:32:51.016742Z"}, {"id": 780, "component": "mural", "context": {"resource_name": "Testando", "post_id": "104", "subject_id": 459, "resource_id": 47, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "resource_slug": "testando"}, "action": "create_comment", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:37:06.917608Z"}, {"id": 781, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "post_id": "117", "subject_id": 459, "subject_slug": "acustica"}, "action": "create_comment", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:37:25.110939Z"}, {"id": 782, "component": "mural", "context": {"resource_name": "Testando", "post_id": "104", "subject_id": 459, "resource_id": 47, "comment_id": "64", "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "resource_slug": "testando"}, "action": "edit_comment", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:38:55.588303Z"}, {"id": 783, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "post_id": "117", "subject_id": 459, "comment_id": "65", "subject_slug": "acustica"}, "action": "edit_comment", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:39:11.828612Z"}, {"id": 784, "component": "mural", "context": {"category_slug": "fisica", "category_name": "F\u00cdSICA", "post_id": "56", "category_id": 22, "comment_id": "62"}, "action": "edit_comment", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:39:37.546127Z"}, {"id": 786, "component": "mural", "context": {"post_id": "119", "comment_id": "51"}, "action": "edit_comment", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:39:58.143755Z"}, {"id": 785, "component": "mural", "context": {"timestamp_end": "1487821254", "timestamp_start": "1487821183"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:39:43.778697Z"}, {"id": 787, "component": "mural", "context": {"resource_name": "Testando", "post_id": "104", "subject_id": 459, "resource_id": 47, "comment_id": "64", "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "resource_slug": "testando"}, "action": "delete_comment", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:41:04.684362Z"}, {"id": 788, "component": "mural", "context": {"category_slug": "fisica", "category_name": "F\u00cdSICA", "post_id": "56", "category_id": 22, "comment_id": "62"}, "action": "delete_comment", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:41:19.841564Z"}, {"id": 789, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "post_id": "117", "subject_id": 459, "comment_id": "65", "subject_slug": "acustica"}, "action": "delete_comment", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:41:32.368296Z"}, {"id": 791, "component": "mural", "context": {"post_id": "119", "comment_id": "51"}, "action": "delete_comment", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:41:45.087772Z"}, {"id": 790, "component": "mural", "context": {"timestamp_end": "1487821570", "timestamp_start": "1487821299"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:41:39.638918Z"}, {"id": 792, "component": "mural", "context": {"category_slug": "fisica", "category_name": "F\u00cdSICA", "category_id": 22}, "action": "create_post", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:46:17.426384Z"}, {"id": 793, "component": "mural", "context": {"category_slug": "fisica", "category_name": "F\u00cdSICA", "post_id": 121, "category_id": 22}, "action": "edit_post", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:46:36.152350Z"}, {"id": 794, "component": "mural", "context": {"category_slug": "fisica", "category_name": "F\u00cdSICA", "post_id": 121, "category_id": 22}, "action": "delete_post", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:46:44.551370Z"}, {"id": 795, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "subject_id": 459, "subject_slug": "acustica"}, "action": "create_post", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:51:07.758060Z"}, {"id": 796, "component": "mural", "context": {"resource_name": "Found here", "subject_id": 459, "resource_id": 29, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "resource_slug": "found-here"}, "action": "create_post", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:51:20.229336Z"}, {"id": 797, "component": "mural", "context": {"resource_name": "Found here", "post_id": 123, "subject_id": 459, "resource_id": 29, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "resource_slug": "found-here"}, "action": "edit_post", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:51:39.066914Z"}, {"id": 798, "component": "mural", "context": {"resource_name": "Found here", "post_id": 122, "subject_id": 459, "resource_id": 29, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "resource_slug": "found-here"}, "action": "edit_post", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:51:50.112559Z"}, {"id": 799, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "post_id": 122, "subject_id": 459, "subject_slug": "acustica"}, "action": "delete_post", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:51:58.543414Z"}, {"id": 800, "component": "mural", "context": {"resource_name": "Found here", "post_id": 123, "subject_id": 459, "resource_id": 29, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "resource_slug": "found-here"}, "action": "delete_post", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:52:01.913353Z"}, {"id": 801, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487822069", "subject_id": 459, "timestamp_start": "1487822058", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:54:18.886887Z"}, {"id": 802, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1487822092", "category_id": 22, "timestamp_start": "1487822069"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:54:29.908068Z"}, {"id": 803, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1487822218", "category_id": 22, "timestamp_start": "1487822217"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:56:57.566068Z"}, {"id": 804, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1487822222", "category_id": 22, "timestamp_start": "1487822218"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:56:58.938426Z"}, {"id": 805, "component": "subject", "context": {"category_name": "GEOCI\u00caNCIAS", "subject_id": 509, "category_slug": "geociencias", "subject_name": "AERONOMIA", "subject_slug": "aeronomia", "timestamp_end": "1487822228", "category_id": 23, "timestamp_start": "1487822227"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:57:07.421128Z"}, {"id": 806, "component": "subject", "context": {"category_name": "GEOCI\u00caNCIAS", "subject_id": 509, "category_slug": "geociencias", "subject_name": "AERONOMIA", "subject_slug": "aeronomia", "timestamp_end": "1487822230", "category_id": 23, "timestamp_start": "1487822228"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:57:08.643965Z"}, {"id": 818, "component": "mural", "context": {"timestamp_end": "1487822925", "timestamp_start": "1487822922"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:08:42.820267Z"}, {"id": 820, "component": "mural", "context": {"subject_name": "AERONOMIA", "timestamp_end": "1487822950", "subject_id": 509, "timestamp_start": "1487822942", "subject_slug": "aeronomia"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:09:02.752121Z"}, {"id": 819, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487822942", "subject_id": 459, "timestamp_start": "1487822929", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:08:49.664237Z"}, {"id": 821, "component": "mural", "context": {"timestamp_start": "1487822964", "category_slug": "ecologia", "category_name": "ECONOMIA", "category_id": 12, "timestamp_end": "1487822972"}, "action": "view", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:09:24.119330Z"}, {"id": 822, "component": "mural", "context": {"timestamp_start": "1487822972", "category_slug": "fisica", "category_name": "F\u00cdSICA", "category_id": 22, "timestamp_end": "1487822978"}, "action": "view", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:09:32.720221Z"}, {"id": 824, "component": "mural", "context": {"timestamp_start": "1487823004", "category_slug": "fisica", "category_name": "F\u00cdSICA", "category_id": 22, "timestamp_end": "1487823011"}, "action": "view", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:10:04.914334Z"}, {"id": 823, "component": "mural", "context": {"timestamp_start": "1487823004", "category_slug": "fisica", "category_name": "F\u00cdSICA", "category_id": 22, "timestamp_end": "1487823023"}, "action": "view", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:10:04.537879Z"}, {"id": 826, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487823060", "subject_id": 459, "timestamp_start": "1487823025", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:10:25.399030Z"}, {"id": 844, "component": "user", "context": {}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:17:08.034061Z"}, {"id": 838, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487823262", "subject_id": 459, "timestamp_start": "1487823216", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:13:36.593832Z"}, {"id": 835, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487823262", "subject_id": 459, "timestamp_start": "1487823200", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:13:19.973986Z"}, {"id": 837, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487823262", "subject_id": 459, "timestamp_start": "1487823216", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:13:36.239900Z"}, {"id": 828, "component": "mural", "context": {"subject_name": "AERONOMIA", "timestamp_end": "1487823086", "subject_id": 509, "timestamp_start": "1487823068", "subject_slug": "aeronomia"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:11:08.658689Z"}, {"id": 825, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487823133", "subject_id": 459, "timestamp_start": "1487823025", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:10:25.024652Z"}, {"id": 827, "component": "mural", "context": {"subject_name": "AERONOMIA", "timestamp_end": "1487823133", "subject_id": 509, "timestamp_start": "1487823068", "subject_slug": "aeronomia"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:11:08.283495Z"}, {"id": 829, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487823133", "subject_id": 459, "timestamp_start": "1487823086", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:11:26.037229Z"}, {"id": 830, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487823133", "subject_id": 459, "timestamp_start": "1487823086", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:11:26.421082Z"}, {"id": 839, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487823274", "subject_id": 459, "timestamp_start": "1487823264", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:14:24.814253Z"}, {"id": 831, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487823152", "subject_id": 459, "timestamp_start": "1487823138", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:12:18.915670Z"}, {"id": 832, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487823152", "subject_id": 459, "timestamp_start": "1487823139", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:12:19.310937Z"}, {"id": 834, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487823184", "subject_id": 459, "timestamp_start": "1487823155", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:12:35.803614Z"}, {"id": 833, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487823198", "subject_id": 459, "timestamp_start": "1487823155", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:12:35.349965Z"}, {"id": 840, "component": "mural", "context": {"subject_name": "AERONOMIA", "timestamp_end": "1487823283", "subject_id": 509, "timestamp_start": "1487823279", "subject_slug": "aeronomia"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:14:39.617722Z"}, {"id": 836, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487823209", "subject_id": 459, "timestamp_start": "1487823200", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:13:20.363273Z"}, {"id": 841, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487823288", "subject_id": 459, "timestamp_start": "1487823283", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:14:43.420174Z"}, {"id": 842, "component": "mural", "context": {"timestamp_start": "1487823308", "category_slug": "ecologia", "category_name": "ECONOMIA", "category_id": 12, "timestamp_end": "1487823317"}, "action": "view", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:15:08.906391Z"}, {"id": 843, "component": "mural", "context": {"timestamp_start": "1487823317", "category_slug": "fisica", "category_name": "F\u00cdSICA", "category_id": 22, "timestamp_end": "1487823325"}, "action": "view", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:15:17.374624Z"}, {"id": 1057, "component": "mural", "context": {"timestamp_start": "1488237433"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-27T23:17:13.774687Z"}, {"id": 1100, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1488503911", "category_id": 22, "timestamp_start": "1488503910"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-03T01:18:30.621679Z"}, {"id": 1102, "component": "user", "context": {}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-03T01:18:40.974286Z"}, {"id": 1101, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1488503920", "category_id": 22, "timestamp_start": "1488503911"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-03T01:18:31.947009Z"}, {"id": 1107, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-03T01:47:20.608235Z"}, {"id": 1135, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1488843766", "category_id": 22, "timestamp_start": "1488843765"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-06T23:42:45.788392Z"}, {"id": 1143, "component": "resources", "context": {"topic_slug": "repositorio", "subject_id": 459, "category_slug": "fisica", "goals_slug": "snuff", "subject_slug": "acustica", "category_name": "F\u00cdSICA", "goals_id": 70, "timestamp_start": "1488844187", "topic_id": 30, "goals_name": "Snuff", "topic_name": "Reposit\u00f3rio", "subject_name": "AC\u00daSTICA", "category_id": 22}, "action": "view", "resource": "my_goals", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-06T23:49:47.208564Z"}, {"id": 1136, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1488843808", "category_id": 22, "timestamp_start": "1488843766"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-06T23:42:46.977064Z"}, {"id": 1141, "component": "resources", "context": {"topic_slug": "repositorio", "subject_id": 459, "category_slug": "fisica", "goals_slug": "snuff", "subject_slug": "acustica", "category_name": "F\u00cdSICA", "goals_id": 70, "timestamp_start": "1488843808", "topic_id": 30, "goals_name": "Snuff", "topic_name": "Reposit\u00f3rio", "subject_name": "AC\u00daSTICA", "timestamp_end": "1488843810", "category_id": 22}, "action": "view", "resource": "my_goals", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-06T23:43:28.284675Z"}, {"id": 1142, "component": "resources", "context": {"topic_slug": "repositorio", "subject_id": 459, "category_slug": "fisica", "goals_slug": "snuff", "subject_slug": "acustica", "category_name": "F\u00cdSICA", "goals_id": 70, "topic_id": 30, "goals_name": "Snuff", "topic_name": "Reposit\u00f3rio", "subject_name": "AC\u00daSTICA", "category_id": 22}, "action": "update", "resource": "my_goals", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-06T23:49:47.133749Z"}, {"id": 1144, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-07T00:10:48.186363Z"}, {"id": 1174, "component": "resources", "context": {"topic_slug": "now-invisble", "subject_id": 459, "category_slug": "fisica", "goals_slug": "future", "subject_slug": "acustica", "category_name": "F\u00cdSICA", "goals_id": 71, "timestamp_start": "1488936573", "topic_id": 32, "goals_name": "Future", "topic_name": "Now Invisble", "subject_name": "AC\u00daSTICA", "category_id": 22}, "action": "submit", "resource": "goals", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-08T01:29:39.285570Z"}, {"id": 1170, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1488936569", "category_id": 22, "timestamp_start": "1488936568"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-08T01:29:28.317125Z"}, {"id": 1171, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1488936573", "category_id": 22, "timestamp_start": "1488936569"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-08T01:29:29.784524Z"}, {"id": 1172, "component": "topic", "context": {"topic_id": 32, "category_name": "F\u00cdSICA", "topic_slug": "now-invisble", "subject_id": 459, "topic_name": "Now Invisble", "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "timestamp_end": "1488936573", "category_id": 22, "timestamp_start": "1488936571", "category_slug": "fisica"}, "action": "view", "resource": "topic", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-08T01:29:31.953040Z"}, {"id": 1173, "component": "resources", "context": {"topic_slug": "now-invisble", "subject_id": 459, "category_slug": "fisica", "goals_slug": "future", "subject_slug": "acustica", "category_name": "F\u00cdSICA", "goals_id": 71, "timestamp_start": "1488936573", "topic_id": 32, "goals_name": "Future", "topic_name": "Now Invisble", "subject_name": "AC\u00daSTICA", "timestamp_end": "1488936579", "category_id": 22}, "action": "view", "resource": "goals", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-08T01:29:33.676092Z"}, {"id": 1175, "component": "resources", "context": {"topic_slug": "now-invisble", "subject_id": 459, "category_slug": "fisica", "goals_slug": "future", "subject_slug": "acustica", "category_name": "F\u00cdSICA", "goals_id": 71, "timestamp_start": "1488936579", "topic_id": 32, "goals_name": "Future", "topic_name": "Now Invisble", "subject_name": "AC\u00daSTICA", "timestamp_end": "1488936619", "category_id": 22}, "action": "view", "resource": "my_goals", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-08T01:29:39.391830Z"}, {"id": 1176, "component": "resources", "context": {"topic_slug": "now-invisble", "subject_id": 459, "category_slug": "fisica", "goals_slug": "future", "subject_slug": "acustica", "category_name": "F\u00cdSICA", "goals_id": 71, "timestamp_start": "1488936619", "topic_id": 32, "goals_name": "Future", "topic_name": "Now Invisble", "subject_name": "AC\u00daSTICA", "category_id": 22}, "action": "view", "resource": "my_goals", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-08T01:30:19.150112Z"}, {"id": 1181, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-08T02:45:16.171950Z"}, {"id": 1222, "component": "user", "context": {}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-14T00:50:31.882062Z"}, {"id": 1221, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-11T01:03:34.669314Z"}, {"id": 1314, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-29T00:49:02.657364Z"}, {"id": 1316, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1490751661", "category_id": 22, "timestamp_start": "1490751658"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-29T01:40:58.604592Z"}, {"id": 1317, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "category_id": 22, "timestamp_start": "1490751663"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-29T01:41:03.689244Z"}, {"id": 1560, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-03T01:33:22.315075Z"}, {"id": 1561, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1491183816", "category_id": 22, "timestamp_start": "1491183815"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-03T01:43:35.720998Z"}, {"id": 1563, "component": "topic", "context": {"topic_id": 32, "category_name": "F\u00cdSICA", "topic_slug": "now-invisble", "subject_id": 459, "topic_name": "Now Invisble", "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "timestamp_end": "1491183825", "category_id": 22, "timestamp_start": "1491183823", "category_slug": "fisica"}, "action": "view", "resource": "topic", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-03T01:43:43.290815Z"}, {"id": 1562, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1491183885", "category_id": 22, "timestamp_start": "1491183817"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-03T01:43:37.063065Z"}, {"id": 1566, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1491183889", "category_id": 22, "timestamp_start": "1491183885"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-03T01:44:45.216039Z"}, {"id": 1674, "component": "chat", "context": {"user_email": "admin@amadeus.br", "user_id": 1, "user_name": "Administrador", "talk_id": 8}, "action": "view", "resource": "talk", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T00:55:42.781884Z"}, {"id": 1672, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T00:55:31.808049Z"}, {"id": 1677, "component": "chat", "context": {"subject_slug": "acustica", "user_email": "admin@amadeus.br", "subject_id": 459, "user_id": 1, "subject_name": "AC\u00daSTICA", "user_name": "Administrador", "talk_id": 8}, "action": "send", "resource": "message", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T00:56:06.899904Z"}, {"id": 1673, "component": "chat", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1491353995", "subject_id": 459, "timestamp_start": "1491353740", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T00:55:40.507639Z"}, {"id": 1680, "component": "chat", "context": {"user_email": "admin@amadeus.br", "user_id": 1, "user_name": "Administrador", "talk_id": 8}, "action": "view", "resource": "talk", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T00:59:58.055991Z"}, {"id": 1682, "component": "chat", "context": {"subject_slug": "acustica", "user_email": "admin@amadeus.br", "subject_id": 459, "user_id": 1, "subject_name": "AC\u00daSTICA", "user_name": "Administrador", "talk_id": 8}, "action": "send", "resource": "message", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:00:12.811175Z"}, {"id": 1679, "component": "chat", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1491354252", "subject_id": 459, "timestamp_start": "1491353995", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T00:59:55.874379Z"}, {"id": 1693, "component": "chat", "context": {"subject_name": "AC\u00daSTICA", "timestamp_start": "1491354252", "subject_id": 459, "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:04:12.888402Z"}, {"id": 1694, "component": "chat", "context": {"user_email": "admin@amadeus.br", "user_id": 1, "user_name": "Administrador", "talk_id": 8}, "action": "view", "resource": "talk", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:04:14.945824Z"}, {"id": 1696, "component": "chat", "context": {"subject_slug": "acustica", "user_email": "admin@amadeus.br", "subject_id": 459, "user_id": 1, "subject_name": "AC\u00daSTICA", "user_name": "Administrador", "talk_id": 8}, "action": "send", "resource": "message", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:04:25.213499Z"}, {"id": 1706, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:26:38.737881Z"}, {"id": 1708, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:30:21.138639Z"}, {"id": 1714, "component": "user", "context": {}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:31:01.523956Z"}, {"id": 1717, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:31:14.839898Z"}, {"id": 1718, "component": "user", "context": {}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:31:32.243590Z"}, {"id": 1724, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:31:44.849951Z"}, {"id": 1726, "component": "user", "context": {}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:33:11.529728Z"}, {"id": 1734, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:35:43.014849Z"}, {"id": 1735, "component": "user", "context": {}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:35:55.926115Z"}, {"id": 1739, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:37:35.890388Z"}, {"id": 1743, "component": "user", "context": {}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:38:33.250084Z"}, {"id": 1746, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:38:49.913400Z"}, {"id": 1754, "component": "user", "context": {}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:39:25.747552Z"}, {"id": 1759, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:39:58.020397Z"}, {"id": 1761, "component": "user", "context": {}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:40:12.797425Z"}, {"id": 1764, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:40:49.430312Z"}, {"id": 1794, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T02:07:03.400068Z"}, {"id": 1784, "component": "user", "context": {}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:42:20.280954Z"}, {"id": 1785, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:42:30.548117Z"}, {"id": 1796, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T02:10:35.496279Z"}, {"id": 1788, "component": "user", "context": {}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:43:23.405407Z"}, {"id": 1789, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:43:30.782736Z"}, {"id": 1790, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T02:03:32.318245Z"}, {"id": 1791, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T02:03:32.413256Z"}, {"id": 1792, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T02:06:49.315711Z"}, {"id": 1797, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T02:10:45.791602Z"}, {"id": 1815, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-06T00:00:25.725477Z"}, {"id": 1899, "component": "chat", "context": {"user_email": "admin@amadeus.br", "user_id": 1, "user_name": "Administrador", "talk_id": 8}, "action": "send", "resource": "message", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T00:57:15.554937Z"}, {"id": 1840, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1491510614", "category_id": 22, "timestamp_start": "1491510612"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-06T20:30:12.828480Z"}, {"id": 1839, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-06T20:30:08.661590Z"}, {"id": 1841, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "category_id": 22, "timestamp_start": "1491510614"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-06T20:30:14.063029Z"}, {"id": 1897, "component": "chat", "context": {"timestamp_end": "1491526695", "timestamp_start": "1491526589"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T00:56:29.945407Z"}, {"id": 1942, "component": "chat", "context": {"timestamp_end": "1491527509", "timestamp_start": "1491527509"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:11:49.253164Z"}, {"id": 1900, "component": "chat", "context": {"user_email": "admin@amadeus.br", "user_id": 1, "user_name": "Administrador", "talk_id": 8}, "action": "send", "resource": "message", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T00:57:23.165700Z"}, {"id": 1901, "component": "chat", "context": {"timestamp_end": "1491526739", "timestamp_start": "1491526695"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T00:58:15.786995Z"}, {"id": 1871, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-06T20:51:47.162180Z"}, {"id": 1891, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-06T21:15:48.378540Z"}, {"id": 1894, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-06T21:36:15.212908Z"}, {"id": 1896, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T00:56:11.860093Z"}, {"id": 1898, "component": "chat", "context": {"user_email": "admin@amadeus.br", "user_id": 1, "user_name": "Administrador", "talk_id": 8}, "action": "view", "resource": "talk", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T00:57:01.897417Z"}, {"id": 1902, "component": "chat", "context": {"user_email": "admin@amadeus.br", "user_id": 1, "user_name": "Administrador", "talk_id": 8}, "action": "view", "resource": "talk", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T00:58:18.465654Z"}, {"id": 1904, "component": "chat", "context": {"user_email": "admin@amadeus.br", "user_id": 1, "user_name": "Administrador", "talk_id": 8}, "action": "view", "resource": "talk", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T00:59:02.711508Z"}, {"id": 1915, "component": "chat", "context": {"user_email": "admin@amadeus.br", "user_id": 1, "user_name": "Administrador", "talk_id": 8}, "action": "send", "resource": "message", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:00:30.323138Z"}, {"id": 1918, "component": "chat", "context": {"user_email": "admin@amadeus.br", "user_id": 1, "user_name": "Administrador", "talk_id": 8}, "action": "send", "resource": "message", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:01:04.526598Z"}, {"id": 1903, "component": "chat", "context": {"timestamp_end": "1491526982", "timestamp_start": "1491526739"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T00:58:59.831863Z"}, {"id": 1929, "component": "chat", "context": {"timestamp_end": "1491526982", "timestamp_start": "1491526982"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:03:02.615804Z"}, {"id": 1930, "component": "chat", "context": {"timestamp_end": "1491526982", "timestamp_start": "1491526982"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:03:02.706737Z"}, {"id": 1932, "component": "chat", "context": {"user_email": "admin@amadeus.br", "user_id": 1, "user_name": "Administrador", "talk_id": 8}, "action": "view", "resource": "talk", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:03:05.385823Z"}, {"id": 1933, "component": "chat", "context": {"user_email": "admin@amadeus.br", "user_id": 1, "user_name": "Administrador", "talk_id": 8}, "action": "send", "resource": "message", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:03:12.641895Z"}, {"id": 1941, "component": "chat", "context": {"timestamp_start": "1491527509"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:11:49.098422Z"}, {"id": 1931, "component": "chat", "context": {"timestamp_end": "1491527509", "timestamp_start": "1491526982"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:03:02.927070Z"}, {"id": 1940, "component": "chat", "context": {"timestamp_end": "1491527509", "timestamp_start": "1491527508"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:11:48.975144Z"}, {"id": 1944, "component": "chat", "context": {"user_email": "admin@amadeus.br", "user_id": 1, "user_name": "Administrador", "talk_id": 8}, "action": "view", "resource": "talk", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:11:52.348335Z"}, {"id": 1946, "component": "chat", "context": {"user_email": "admin@amadeus.br", "user_id": 1, "user_name": "Administrador", "talk_id": 8}, "action": "send", "resource": "message", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:12:07.910661Z"}, {"id": 1967, "component": "chat", "context": {"user_email": "admin@amadeus.br", "user_id": 1, "user_name": "Administrador", "talk_id": 8}, "action": "view", "resource": "talk", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:14:39.219183Z"}, {"id": 1968, "component": "chat", "context": {"user_email": "admin@amadeus.br", "user_id": 1, "user_name": "Administrador", "talk_id": 8}, "action": "send", "resource": "message", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:14:50.239122Z"}, {"id": 1953, "component": "chat", "context": {"timestamp_start": "1491527631"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:13:51.731589Z"}, {"id": 1952, "component": "chat", "context": {"timestamp_end": "1491527631", "timestamp_start": "1491527631"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:13:51.609850Z"}, {"id": 1955, "component": "chat", "context": {"user_email": "admin@amadeus.br", "user_id": 1, "user_name": "Administrador", "talk_id": 8}, "action": "view", "resource": "talk", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:13:54.065399Z"}, {"id": 1956, "component": "chat", "context": {"user_email": "admin@amadeus.br", "user_id": 1, "user_name": "Administrador", "talk_id": 8}, "action": "send", "resource": "message", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:13:59.483762Z"}, {"id": 1957, "component": "chat", "context": {"timestamp_start": "1491527670"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:14:30.407929Z"}, {"id": 1958, "component": "chat", "context": {"timestamp_start": "1491527670"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:14:30.495772Z"}, {"id": 1954, "component": "chat", "context": {"timestamp_end": "1491527670", "timestamp_start": "1491527631"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:13:51.866635Z"}, {"id": 1959, "component": "chat", "context": {"timestamp_end": "1491527670", "timestamp_start": "1491527670"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:14:30.606353Z"}, {"id": 1960, "component": "chat", "context": {"timestamp_end": "1491527670", "timestamp_start": "1491527670"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:14:30.760560Z"}, {"id": 1961, "component": "chat", "context": {"timestamp_start": "1491527670"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:14:30.893797Z"}, {"id": 1971, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:36:10.846757Z"}, {"id": 2009, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T22:17:44.650595Z"}, {"id": 2010, "component": "chat", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1491603471", "subject_id": 459, "timestamp_start": "1491603469", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T22:17:49.021610Z"}, {"id": 2011, "component": "chat", "context": {"subject_name": "AC\u00daSTICA", "timestamp_start": "1491603471", "search_by": "", "subject_id": 459, "subject_slug": "acustica"}, "action": "view", "resource": "subject_participants", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T22:17:51.587148Z"}, {"id": 2012, "component": "chat", "context": {"user_email": "admin@amadeus.br", "user_id": 1, "user_name": "Administrador"}, "action": "view", "resource": "profile", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T22:17:53.520769Z"}, {"id": 2046, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T22:37:58.684059Z"}, {"id": 2148, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1491942929", "subject_id": 459, "timestamp_start": "1491942810", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T20:33:30.508338Z"}, {"id": 2141, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T20:29:50.158140Z"}, {"id": 2143, "component": "pendencies", "context": {"notification_id": 2839, "notification": "Visualizar Alive"}, "action": "set_goal", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T20:30:10.326303Z"}, {"id": 2144, "component": "pendencies", "context": {"notification_id": 2839, "notification": "Visualizar Alive"}, "action": "set_goal", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T20:30:29.252907Z"}, {"id": 2142, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1491942633", "subject_id": 459, "timestamp_start": "1491942597", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T20:29:57.251442Z"}, {"id": 2159, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1491944873", "subject_id": 459, "timestamp_start": "1491944688", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T21:04:48.914286Z"}, {"id": 2145, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1491942677", "subject_id": 459, "timestamp_start": "1491942633", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T20:30:33.297605Z"}, {"id": 2156, "component": "pendencies", "context": {"notification_id": 2839, "notification": "Visualizar Alive"}, "action": "set_goal", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T20:35:48.098332Z"}, {"id": 2146, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1491942691", "subject_id": 459, "timestamp_start": "1491942677", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T20:31:17.014560Z"}, {"id": 2155, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1491942953", "subject_id": 459, "timestamp_start": "1491942933", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T20:35:33.136966Z"}, {"id": 2147, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1491942810", "subject_id": 459, "timestamp_start": "1491942691", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T20:31:31.706590Z"}, {"id": 2158, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1491944688", "subject_id": 459, "timestamp_start": "1491944687", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T21:04:47.759404Z"}, {"id": 2149, "component": "pendencies", "context": {"notification_id": 2839, "notification": "Visualizar Alive"}, "action": "set_goal", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T20:33:43.077376Z"}, {"id": 2150, "component": "pendencies", "context": {"notification_id": 2839, "notification": "Visualizar Alive"}, "action": "set_goal", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T20:33:43.088045Z"}, {"id": 2151, "component": "pendencies", "context": {"notification_id": 2839, "notification": "Visualizar Alive"}, "action": "set_goal", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T20:33:43.151688Z"}, {"id": 2152, "component": "pendencies", "context": {"notification_id": 2839, "notification": "Visualizar Alive"}, "action": "set_goal", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T20:33:43.233088Z"}, {"id": 2153, "component": "pendencies", "context": {"notification_id": 2839, "notification": "Visualizar Alive"}, "action": "set_goal", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T20:33:43.310043Z"}, {"id": 2154, "component": "pendencies", "context": {"notification_id": 2839, "notification": "Visualizar Alive"}, "action": "set_goal", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T20:33:43.332206Z"}, {"id": 2157, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1491944684", "subject_id": 459, "timestamp_start": "1491942953", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T20:35:53.050266Z"}, {"id": 2160, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T21:07:52.577789Z"}, {"id": 2161, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1491944882", "subject_id": 459, "timestamp_start": "1491944881", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T21:08:01.246381Z"}, {"id": 2162, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1491944961", "subject_id": 459, "timestamp_start": "1491944882", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T21:08:02.640389Z"}, {"id": 2163, "component": "pendencies", "context": {"timestamp_start": "1491944966", "subject_id": 459, "view_page": 1, "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1491944968"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T21:09:26.304121Z"}, {"id": 2164, "component": "pendencies", "context": {"timestamp_start": "1491944968", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1491944974", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T21:09:28.662583Z"}, {"id": 2165, "component": "pendencies", "context": {"timestamp_start": "1491944974", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "11/04/2017", "timestamp_end": "1491945024", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T21:09:34.927707Z"}, {"id": 2176, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T21:41:42.290483Z"}, {"id": 2166, "component": "pendencies", "context": {"timestamp_start": "1491945024", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "11/04/2017", "timestamp_end": "1491945544", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T21:10:24.503694Z"}, {"id": 2167, "component": "pendencies", "context": {"timestamp_start": "1491945544", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "11-04-2017", "timestamp_end": "1491945556", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T21:19:04.772824Z"}, {"id": 2168, "component": "pendencies", "context": {"timestamp_start": "1491945557", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "11-31-2017", "timestamp_end": "1491945571", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T21:19:17.029781Z"}, {"id": 2169, "component": "pendencies", "context": {"timestamp_start": "1491945571", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "11/31/2017", "timestamp_end": "1491945577", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T21:19:31.833808Z"}, {"id": 2170, "component": "pendencies", "context": {"timestamp_start": "1491945578", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "hey", "timestamp_end": "1491945580", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T21:19:38.099706Z"}, {"id": 2171, "component": "pendencies", "context": {"timestamp_start": "1491945580", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1491945611", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T21:19:40.889903Z"}, {"id": 2172, "component": "pendencies", "context": {"timestamp_start": "1491945611", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "13/04/2017", "timestamp_end": "1491945804", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T21:20:11.893170Z"}, {"id": 2173, "component": "pendencies", "context": {"timestamp_start": "1491945804", "subject_id": 459, "view_page": 1, "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1491945813"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T21:23:24.762807Z"}, {"id": 2174, "component": "pendencies", "context": {"timestamp_start": "1491945813", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1491945829", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T21:23:33.432888Z"}, {"id": 2175, "component": "pendencies", "context": {"subject_id": 459, "timestamp_start": "1491945830", "subject_slug": "acustica", "view_page": 1, "subject_name": "AC\u00daSTICA"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T21:23:50.005128Z"}, {"id": 2179, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T22:01:55.058108Z"}, {"id": 2184, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T22:10:12.294248Z"}, {"id": 2185, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1491948957", "subject_id": 459, "timestamp_start": "1491948954", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T22:15:54.043169Z"}, {"id": 2186, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1491948962", "category_id": 22, "timestamp_start": "1491948957"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T22:15:57.853109Z"}, {"id": 2187, "component": "pendencies", "context": {"timestamp_start": "1491948962", "subject_id": 459, "view_page": 1, "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1491948983"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T22:16:02.106115Z"}, {"id": 2188, "component": "pendencies", "context": {"timestamp_start": "1491948984", "subject_id": 459, "view_page": 1, "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1491948991"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T22:16:24.139829Z"}, {"id": 2189, "component": "pendencies", "context": {"timestamp_start": "1491948991", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1491948994", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T22:16:31.732021Z"}, {"id": 2190, "component": "pendencies", "context": {"timestamp_start": "1491948994", "subject_id": 459, "view_page": 1, "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1491948996"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T22:16:34.736917Z"}, {"id": 2191, "component": "pendencies", "context": {"timestamp_start": "1491949038", "subject_id": 459, "view_page": 1, "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1491949173"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T22:17:18.291869Z"}, {"id": 2192, "component": "pendencies", "context": {"subject_id": 459, "timestamp_start": "1491949173", "subject_slug": "acustica", "view_page": 1, "subject_name": "AC\u00daSTICA"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T22:19:33.749609Z"}, {"id": 2193, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T22:39:40.053706Z"}, {"id": 2199, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:21:12.724246Z"}, {"id": 2200, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492125909", "subject_id": 459, "timestamp_start": "1492125906", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:25:06.780756Z"}, {"id": 2201, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492126007", "subject_id": 459, "timestamp_start": "1492125909", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:25:09.273239Z"}, {"id": 2212, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492126358", "subject_id": 459, "timestamp_start": "1492126357", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:32:37.557078Z"}, {"id": 2202, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492126011", "subject_id": 459, "timestamp_start": "1492126010", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:26:50.137306Z"}, {"id": 2223, "component": "pendencies", "context": {"timestamp_start": "1492126904", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1492126909", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:41:44.272424Z"}, {"id": 2203, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492126103", "subject_id": 459, "timestamp_start": "1492126011", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:26:51.234380Z"}, {"id": 2213, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492126732", "subject_id": 459, "timestamp_start": "1492126358", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:32:38.624614Z"}, {"id": 2204, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492126106", "subject_id": 459, "timestamp_start": "1492126105", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:28:25.440805Z"}, {"id": 2205, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492126227", "subject_id": 459, "timestamp_start": "1492126106", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:28:26.670663Z"}, {"id": 2219, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492126894", "subject_id": 459, "timestamp_start": "1492126799", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:39:59.389663Z"}, {"id": 2206, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492126231", "subject_id": 459, "timestamp_start": "1492126230", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:30:30.572946Z"}, {"id": 2207, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492126241", "subject_id": 459, "timestamp_start": "1492126231", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:30:31.791530Z"}, {"id": 2214, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492126736", "subject_id": 459, "timestamp_start": "1492126735", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:38:55.254223Z"}, {"id": 2208, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492126245", "subject_id": 459, "timestamp_start": "1492126244", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:30:44.238059Z"}, {"id": 2209, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492126259", "subject_id": 459, "timestamp_start": "1492126245", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:30:45.283407Z"}, {"id": 2215, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492126769", "subject_id": 459, "timestamp_start": "1492126736", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:38:56.550061Z"}, {"id": 2210, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492126264", "subject_id": 459, "timestamp_start": "1492126263", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:31:03.689993Z"}, {"id": 2211, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492126355", "subject_id": 459, "timestamp_start": "1492126264", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:31:04.890991Z"}, {"id": 2220, "component": "pendencies", "context": {"timestamp_start": "1492126897", "subject_id": 459, "view_page": 1, "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1492126898"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:41:37.180574Z"}, {"id": 2216, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492126773", "subject_id": 459, "timestamp_start": "1492126772", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:39:31.963616Z"}, {"id": 2221, "component": "pendencies", "context": {"timestamp_start": "1492126898", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1492126900", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:41:38.582164Z"}, {"id": 2217, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492126795", "subject_id": 459, "timestamp_start": "1492126773", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:39:33.010223Z"}, {"id": 2218, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492126799", "subject_id": 459, "timestamp_start": "1492126798", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:39:57.983037Z"}, {"id": 2222, "component": "pendencies", "context": {"timestamp_start": "1492126900", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1492126904", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:41:40.800195Z"}, {"id": 2224, "component": "pendencies", "context": {"timestamp_start": "1492126909", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1492126944", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:41:49.645436Z"}, {"id": 2225, "component": "pendencies", "context": {"timestamp_start": "1492126944", "subject_id": 459, "view_page": 1, "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1492127266"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:42:24.357067Z"}, {"id": 2232, "component": "pendencies", "context": {"timestamp_start": "1492127266", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1492127373", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:47:46.851877Z"}, {"id": 2233, "component": "pendencies", "context": {"timestamp_start": "1492127373", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1492127416", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:49:33.635556Z"}, {"id": 2240, "component": "pendencies", "context": {"timestamp_start": "1492127731", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1492127733", "history_page": "3"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:55:31.133416Z"}, {"id": 2235, "component": "pendencies", "context": {"timestamp_start": "1492127541", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:52:21.431470Z"}, {"id": 2234, "component": "pendencies", "context": {"timestamp_start": "1492127416", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1492127555", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:50:16.367796Z"}, {"id": 2236, "component": "pendencies", "context": {"timestamp_start": "1492127555", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1492127593", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:52:35.212062Z"}, {"id": 2237, "component": "pendencies", "context": {"timestamp_start": "1492127593", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1492127649", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:53:13.432324Z"}, {"id": 2238, "component": "pendencies", "context": {"timestamp_start": "1492127649", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1492127728", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:54:09.524902Z"}, {"id": 2239, "component": "pendencies", "context": {"timestamp_start": "1492127728", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1492127731", "history_page": "2"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:55:28.355818Z"}, {"id": 2241, "component": "pendencies", "context": {"timestamp_start": "1492127733", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1492127735", "history_page": "4"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:55:33.684922Z"}, {"id": 2242, "component": "pendencies", "context": {"timestamp_start": "1492127735", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1492127737", "history_page": "5"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:55:35.445654Z"}, {"id": 2243, "component": "pendencies", "context": {"timestamp_start": "1492127737", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1492127739", "history_page": "6"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:55:37.251554Z"}, {"id": 2244, "component": "pendencies", "context": {"timestamp_start": "1492127739", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1492127742", "history_page": "7"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:55:39.998168Z"}, {"id": 2245, "component": "pendencies", "context": {"timestamp_start": "1492127742", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1492127743", "history_page": "8"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:55:42.133961Z"}, {"id": 2246, "component": "pendencies", "context": {"timestamp_start": "1492127743", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1492127745", "history_page": "9"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:55:43.943443Z"}, {"id": 2247, "component": "pendencies", "context": {"timestamp_start": "1492127745", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1492127756", "history_page": "10"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:55:45.897845Z"}, {"id": 2248, "component": "pendencies", "context": {"timestamp_start": "1492127757", "subject_id": 459, "view_page": 1, "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1492127771"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:55:57.022979Z"}, {"id": 2249, "component": "resources", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "webpage_slug": "revenge", "subject_slug": "acustica", "topic_id": 30, "timestamp_start": "1492127771", "topic_slug": "repositorio", "topic_name": "Reposit\u00f3rio", "subject_name": "AC\u00daSTICA", "timestamp_end": "1492127776", "webpage_id": 1, "category_id": 22, "webpage_name": "Revenge"}, "action": "view", "resource": "webpage", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:56:11.291806Z"}, {"id": 2250, "component": "mural", "context": {"timestamp_start": "1492127776", "resource_name": "Revenge", "subject_id": 459, "resource_id": 1, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "resource_slug": "revenge", "timestamp_end": "1492127779"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:56:16.753307Z"}, {"id": 2251, "component": "resources", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "webpage_slug": "revenge", "subject_slug": "acustica", "topic_id": 30, "timestamp_start": "1492127779", "topic_slug": "repositorio", "topic_name": "Reposit\u00f3rio", "subject_name": "AC\u00daSTICA", "timestamp_end": "1492127780", "webpage_id": 1, "category_id": 22, "webpage_name": "Revenge"}, "action": "view", "resource": "webpage", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:56:19.499351Z"}, {"id": 2252, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1492127783", "category_id": 22, "timestamp_start": "1492127780"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:56:20.859941Z"}, {"id": 2253, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492127788", "subject_id": 459, "timestamp_start": "1492127785", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:56:25.169011Z"}, {"id": 2255, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-14T00:21:41.686250Z"}, {"id": 2259, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-15T00:51:14.061387Z"}, {"id": 2254, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492217474", "subject_id": 459, "timestamp_start": "1492127788", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:56:28.959612Z"}, {"id": 2260, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492217494", "subject_id": 459, "timestamp_start": "1492217480", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-15T00:51:19.995842Z"}, {"id": 2586, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-05-26T01:36:33.745524Z"}, {"id": 2262, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-15T01:16:47.696572Z"}, {"id": 2261, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492995562", "subject_id": 459, "timestamp_start": "1492217494", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-15T00:51:34.056885Z"}, {"id": 2372, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T00:59:21.981258Z"}, {"id": 2373, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492995610", "subject_id": 459, "timestamp_start": "1492995567", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T00:59:27.281209Z"}, {"id": 2382, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1493032945", "subject_id": 459, "timestamp_start": "1493032865", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:21:05.272760Z"}, {"id": 2375, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T01:20:18.161716Z"}, {"id": 2377, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:12:26.191980Z"}, {"id": 2374, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1493032346", "subject_id": 459, "timestamp_start": "1492995613", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T01:00:13.607041Z"}, {"id": 2380, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1493032682", "subject_id": 459, "timestamp_start": "1493032591", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:16:31.039008Z"}, {"id": 2378, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1493032468", "subject_id": 459, "timestamp_start": "1493032349", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:12:29.644103Z"}, {"id": 2379, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1493032588", "subject_id": 459, "timestamp_start": "1493032471", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:14:31.716757Z"}, {"id": 2381, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1493032862", "subject_id": 459, "timestamp_start": "1493032685", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:18:05.403084Z"}, {"id": 2385, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1493032969", "subject_id": 459, "timestamp_start": "1493032948", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:22:28.461096Z"}, {"id": 2383, "component": "pendencies", "context": {}, "action": "set_goal", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:21:16.252767Z"}, {"id": 2384, "component": "pendencies", "context": {"notification_id": 3237, "notification": "Visualizar System"}, "action": "set_goal", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:21:19.653812Z"}, {"id": 2387, "component": "pendencies", "context": {"notification_id": 3237, "notification": "Visualizar System"}, "action": "set_goal", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:22:56.726714Z"}, {"id": 2386, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1493033066", "subject_id": 459, "timestamp_start": "1493032972", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:22:52.192138Z"}, {"id": 2388, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1493033080", "subject_id": 459, "timestamp_start": "1493033069", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:24:29.447632Z"}, {"id": 2389, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1493033136", "subject_id": 459, "timestamp_start": "1493033082", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:24:42.549281Z"}, {"id": 2401, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1493033725", "subject_id": 459, "timestamp_start": "1493033723", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:35:23.153863Z"}, {"id": 2391, "component": "pendencies", "context": {"notification_id": 3237, "notification": "Visualizar System"}, "action": "set_goal", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:25:49.616646Z"}, {"id": 2390, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1493033184", "subject_id": 459, "timestamp_start": "1493033138", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:25:38.898596Z"}, {"id": 2402, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T12:10:29.965789Z"}, {"id": 2392, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1493033678", "subject_id": 459, "timestamp_start": "1493033187", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:26:27.067783Z"}, {"id": 2393, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1493033683", "subject_id": 459, "timestamp_start": "1493033680", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:34:40.778746Z"}, {"id": 2394, "component": "resources", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "webpage_slug": "angels-calling", "subject_slug": "acustica", "topic_id": 30, "timestamp_start": "1493033683", "topic_slug": "repositorio", "topic_name": "Reposit\u00f3rio", "subject_name": "AC\u00daSTICA", "timestamp_end": "1493033692", "webpage_id": 68, "category_id": 22, "webpage_name": "Angels calling"}, "action": "view", "resource": "webpage", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:34:43.787750Z"}, {"id": 2395, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1493033692", "subject_id": 459, "timestamp_start": "1493033688", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:34:48.345307Z"}, {"id": 2396, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1493033705", "category_id": 22, "timestamp_start": "1493033692"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:34:52.339304Z"}, {"id": 2397, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1493033705", "subject_id": 459, "timestamp_start": "1493033700", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:34:59.986089Z"}, {"id": 2398, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1493033713", "category_id": 22, "timestamp_start": "1493033705"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:35:05.066338Z"}, {"id": 2399, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1493033713", "subject_id": 459, "timestamp_start": "1493033711", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:35:11.051070Z"}, {"id": 2400, "component": "category", "context": {"timestamp_start": "1493033716", "category_slug": "fisica", "category_name": "F\u00cdSICA", "category_id": 22, "timestamp_end": "1493033725"}, "action": "view", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:35:16.652183Z"}, {"id": 2557, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-05-23T21:08:11.603340Z"}, {"id": 2558, "component": "mural", "context": {"timestamp_end": "1495573702", "timestamp_start": "1495573699"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-05-23T21:08:19.229099Z"}, {"id": 2560, "component": "mural", "context": {"category_slug": "fisica", "category_name": "F\u00cdSICA", "category_id": 22}, "action": "create_post", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-05-23T21:08:39.168190Z"}, {"id": 2559, "component": "mural", "context": {"timestamp_start": "1495573709", "category_slug": "fisica", "category_name": "F\u00cdSICA", "category_id": 22, "timestamp_end": "1495574216"}, "action": "view", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-05-23T21:08:29.012379Z"}, {"id": 2562, "component": "mural", "context": {"category_slug": "artes", "category_name": "ARTES", "category_id": 6}, "action": "create_post", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-05-23T21:17:11.351727Z"}, {"id": 2561, "component": "mural", "context": {"timestamp_start": "1495574219", "category_slug": "artes", "category_name": "ARTES", "category_id": 6, "timestamp_end": "1495574237"}, "action": "view", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-05-23T21:16:59.492679Z"}, {"id": 2564, "component": "mural", "context": {"category_slug": "fisica", "category_name": "F\u00cdSICA", "category_id": 22}, "action": "create_post", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-05-23T21:17:30.479031Z"}, {"id": 2565, "component": "mural", "context": {"category_slug": "fisica", "category_name": "F\u00cdSICA", "post_id": "128", "category_id": 22}, "action": "create_comment", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-05-23T21:30:13.435109Z"}, {"id": 2563, "component": "mural", "context": {"timestamp_start": "1495574237", "category_slug": "fisica", "category_name": "F\u00cdSICA", "category_id": 22, "timestamp_end": "1495575021"}, "action": "view", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-05-23T21:17:17.902158Z"}, {"id": 2567, "component": "mural", "context": {"category_slug": "ecologia", "category_name": "ECONOMIA", "post_id": "62", "category_id": 12}, "action": "create_comment", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-05-23T21:30:30.236424Z"}, {"id": 2566, "component": "mural", "context": {"timestamp_start": "1495575021", "category_slug": "ecologia", "category_name": "ECONOMIA", "category_id": 12, "timestamp_end": "1495575095"}, "action": "view", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-05-23T21:30:21.372430Z"}, {"id": 2577, "component": "mural", "context": {"resource_name": "Revenge", "post_id": "124", "subject_id": 459, "resource_id": 1, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "resource_slug": "revenge"}, "action": "create_comment", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-05-23T21:37:43.750379Z"}, {"id": 2576, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1495575478", "subject_id": 459, "timestamp_start": "1495575454", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-05-23T21:37:34.193592Z"}, {"id": 2575, "component": "mural", "context": {"subject_name": "CRIA\u00c7\u00c3O DE ANIMAIS", "subject_id": 790, "subject_slug": "criacao-de-animais"}, "action": "create_post", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-05-23T21:37:23.764808Z"}, {"id": 2574, "component": "mural", "context": {"subject_name": "CRIA\u00c7\u00c3O DE ANIMAIS", "timestamp_end": "1495575453", "subject_id": 790, "timestamp_start": "1495575434", "subject_slug": "criacao-de-animais"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-05-23T21:37:14.769228Z"}, {"id": 2587, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1495762614", "subject_id": 459, "timestamp_start": "1495762601", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-05-26T01:36:41.713465Z"}, {"id": 2588, "component": "user", "context": {}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-05-26T01:36:54.476891Z"}, {"id": 2636, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-05-26T02:27:25.484603Z"}], "password": "pbkdf2_sha256$30000$5gbyp9Al3C2n$rroJzhQWFLetSzLJto5kyVC4z2hycFSWhH8uq3lhazI=", "last_login": "2017-05-26T01:36:33.649932Z", "is_superuser": false, "email": "e180@amadeus.br", "username": "e", "last_name": "180", "social_name": "Estudante 180", "description": "<p>Estudante da Universidade Federal do Vale do S\u00e3o Francisco - <b>UNIVASF</b>.</p>", "image": "/uploads/users/hqdefault.jpg", "date_created": "2017-01-01T03:00:00Z", "last_update": "2017-02-06T18:58:16.633761Z", "show_email": 1, "is_staff": false, "is_active": true, "groups": [], "user_permissions": []}], "_my_subclass": "webpage", "name": "Doug", "slug": "doug", "brief_description": "<p>Today</p>", "show_window": true, "all_students": false, "visible": false, "order": 1, "create_date": "2017-01-23T17:36:14.900287Z", "last_update": "2017-01-24T17:33:39.433016Z", "content": "Freaky man"}, {"id": 20, "topic": {"id": 32, "name": "Now Invisble", "slug": "now-invisble", "description": "<p>TIme to</p>", "repository": false, "visible": true, "order": 2, "create_date": "2017-01-17T18:44:24.976186Z", "last_update": "2017-03-08T01:28:52.845818Z"}, "tags": [{"id": 69, "name": "noine"}, {"id": 70, "name": "nine"}], "pendencies_resource": [], "groups": [], "students": [], "_my_subclass": "webpage", "name": "Myself", "slug": "myself", "brief_description": "<p>Is up to me</p>", "show_window": false, "all_students": true, "visible": false, "order": 2, "create_date": "2017-01-23T22:59:42.592301Z", "last_update": "2017-01-24T17:34:20.147284Z", "content": "<title>Sold my soul</title><h5>I brought this all <em>upon myself<br>Dont stop me now!!</em></h5>"}, {"id": 42, "topic": {"id": 32, "name": "Now Invisble", "slug": "now-invisble", "description": "<p>TIme to</p>", "repository": false, "visible": true, "order": 2, "create_date": "2017-01-17T18:44:24.976186Z", "last_update": "2017-03-08T01:28:52.845818Z"}, "tags": [{"id": 95, "name": "history"}], "pendencies_resource": [], "groups": [], "students": [{"id": 178, "log": [], "password": "pbkdf2_sha256$30000$5gbyp9Al3C2n$rroJzhQWFLetSzLJto5kyVC4z2hycFSWhH8uq3lhazI=", "last_login": "2017-01-23T22:49:33.870448Z", "is_superuser": false, "email": "e177@amadeus.br", "username": "e", "last_name": "177", "social_name": "Estudante 177", "description": "<p>Estudante da Universidade Federal do Vale do S\u00e3o Francisco - <b>UNIVASF</b>.</p>", "image": "/uploads/users/760fc8ed80eeedde8633f8fa5e50ef0a_VzyKGEh.jpg", "date_created": "2017-01-01T03:00:00Z", "last_update": "2017-01-18T22:55:04.744047Z", "show_email": 1, "is_staff": false, "is_active": true, "groups": [], "user_permissions": []}], "_my_subclass": "webpage", "name": "History goes", "slug": "history-goes", "brief_description": "<p>How</p>", "show_window": false, "all_students": false, "visible": false, "order": 4, "create_date": "2017-01-24T21:57:13.600718Z", "last_update": "2017-01-24T21:57:13.812438Z", "content": "<p>ON</p>"}], [], [{"id": 41, "file_content": "files/formulariobolsista.doc.docx", "topic": {"id": 32, "name": "Now Invisble", "slug": "now-invisble", "description": "<p>TIme to</p>", "repository": false, "visible": true, "order": 2, "create_date": "2017-01-17T18:44:24.976186Z", "last_update": "2017-03-08T01:28:52.845818Z"}, "tags": [{"id": 93, "name": "last"}, {"id": 94, "name": "mistake"}], "pendencies_resource": [{"id": 19, "action": "view", "begin_date": "2017-01-26T22:54:00Z", "end_date": "2017-02-10T22:54:00Z", "limit_date": null}], "groups": [], "students": [], "_my_subclass": "filelink", "name": "Secret", "slug": "secret", "brief_description": "<p>Do we create a modern myth?</p>", "show_window": true, "all_students": true, "visible": false, "order": 3, "create_date": "2017-01-24T21:55:44.193797Z", "last_update": "2017-01-24T21:55:44.330406Z"}, {"id": 46, "file_content": "files/jutificativa_voto.pdf", "topic": {"id": 32, "name": "Now Invisble", "slug": "now-invisble", "description": "<p>TIme to</p>", "repository": false, "visible": true, "order": 2, "create_date": "2017-01-17T18:44:24.976186Z", "last_update": "2017-03-08T01:28:52.845818Z"}, "tags": [{"id": 100, "name": "just"}, {"id": 101, "name": "game"}], "pendencies_resource": [], "groups": [], "students": [{"id": 181, "log": [{"id": 759, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487819337", "subject_id": 459, "timestamp_start": "1487819274", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:07:54.790064Z"}, {"id": 762, "component": "pendencies", "context": {"notification_id": 1264, "notification": "Criar Teste 2"}, "action": "set_goal", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:09:05.305320Z"}, {"id": 205, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1485470536", "category_id": 22, "timestamp_start": "1485470531"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-26T22:42:11.752255Z"}, {"id": 204, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1485470531", "category_id": 22, "timestamp_start": "1485470530"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-26T22:42:10.443457Z"}, {"id": 206, "component": "topic", "context": {"topic_id": 28, "category_name": "F\u00cdSICA", "topic_slug": "topico", "subject_id": 459, "topic_name": "T\u00f3pico", "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "timestamp_end": "1485470536", "category_id": 22, "timestamp_start": "1485470533", "category_slug": "fisica"}, "action": "view", "resource": "topic", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-26T22:42:13.800455Z"}, {"id": 300, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "category_id": 22, "timestamp_start": "1485817823"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T23:10:23.718744Z"}, {"id": 207, "component": "resources", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "webpage_slug": "runaway", "subject_slug": "acustica", "topic_id": 28, "timestamp_start": "1485470536", "topic_slug": "topico", "topic_name": "T\u00f3pico", "subject_name": "AC\u00daSTICA", "timestamp_end": "1485470541", "webpage_id": 34, "category_id": 22, "webpage_name": "Runaway"}, "action": "view", "resource": "webpage", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-26T22:42:16.899890Z"}, {"id": 208, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "category_id": 22, "timestamp_start": "1485470541"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-26T22:42:21.748456Z"}, {"id": 761, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487819596", "subject_id": 459, "timestamp_start": "1487819340", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:09:00.105224Z"}, {"id": 210, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-27T00:00:27.896353Z"}, {"id": 209, "component": "topic", "context": {"topic_id": 28, "category_name": "F\u00cdSICA", "topic_slug": "topico", "subject_id": 459, "topic_name": "T\u00f3pico", "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "timestamp_end": "1485551249", "category_id": 22, "timestamp_start": "1485470542", "category_slug": "fisica"}, "action": "view", "resource": "topic", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-26T22:42:22.309161Z"}, {"id": 763, "component": "mural", "context": {"timestamp_end": "1487819618", "timestamp_start": "1487819597"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:13:17.210969Z"}, {"id": 242, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-28T00:14:10.442184Z"}, {"id": 235, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1485551258", "category_id": 22, "timestamp_start": "1485551257"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-27T21:07:37.363710Z"}, {"id": 236, "component": "user", "context": {}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-27T21:07:46.302234Z"}, {"id": 248, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-28T00:40:09.156424Z"}, {"id": 252, "component": "user", "context": {}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T17:03:06.179857Z"}, {"id": 254, "component": "subject", "context": {"search_for": "matem\u00e1tica"}, "action": "search", "resource": "subject/resources", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T17:32:54.742653Z"}, {"id": 255, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1485800449", "category_id": 22, "timestamp_start": "1485800431"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T18:20:31.082273Z"}, {"id": 256, "component": "user", "context": {}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T18:20:49.508637Z"}, {"id": 272, "component": "user", "context": {}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T18:30:48.022453Z"}, {"id": 296, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T19:51:02.361646Z"}, {"id": 297, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1485817067", "category_id": 22, "timestamp_start": "1485817029"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T22:57:09.534154Z"}, {"id": 298, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1485817823", "category_id": 22, "timestamp_start": "1485817816"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T23:10:16.573429Z"}, {"id": 302, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "category_id": 22, "timestamp_start": "1485817823"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T23:10:23.999732Z"}, {"id": 303, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "category_id": 22, "timestamp_start": "1485817824"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T23:10:24.167376Z"}, {"id": 324, "component": "category", "context": {"timestamp_start": "1485976208", "category_slug": "administracao", "category_name": "ADMINISTRA\u00c7\u00c3O", "category_id": 1, "timestamp_end": "1485976214"}, "action": "view", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-01T19:10:08.328805Z"}, {"id": 304, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "category_id": 22, "timestamp_start": "1485817824"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T23:10:24.321138Z"}, {"id": 313, "component": "topic", "context": {"topic_id": 28, "category_name": "F\u00cdSICA", "topic_slug": "topico", "subject_id": 459, "topic_name": "T\u00f3pico", "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "timestamp_end": "1485817863", "category_id": 22, "timestamp_start": "1485817861", "category_slug": "fisica"}, "action": "view", "resource": "topic", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T23:11:01.913755Z"}, {"id": 314, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T23:52:56.763660Z"}, {"id": 299, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1485817824", "category_id": 22, "timestamp_start": "1485817823"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T23:10:23.507849Z"}, {"id": 305, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "category_id": 22, "timestamp_start": "1485817824"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T23:10:24.948644Z"}, {"id": 306, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "category_id": 22, "timestamp_start": "1485817824"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T23:10:24.964254Z"}, {"id": 301, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1485817824", "category_id": 22, "timestamp_start": "1485817823"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T23:10:23.893312Z"}, {"id": 307, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "category_id": 22, "timestamp_start": "1485817824"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T23:10:24.982882Z"}, {"id": 308, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "category_id": 22, "timestamp_start": "1485817824"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T23:10:24.983647Z"}, {"id": 309, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1485817856", "category_id": 22, "timestamp_start": "1485817825"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T23:10:25.040109Z"}, {"id": 310, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "category_id": 22, "timestamp_start": "1485817856"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T23:10:56.623919Z"}, {"id": 315, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1485837050", "category_id": 22, "timestamp_start": "1485837013"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-31T04:30:13.979178Z"}, {"id": 311, "component": "topic", "context": {"topic_id": 31, "category_name": "F\u00cdSICA", "topic_slug": "invisible", "subject_id": 459, "topic_name": "Visible", "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "timestamp_end": "1485817860", "category_id": 22, "timestamp_start": "1485817858", "category_slug": "fisica"}, "action": "view", "resource": "topic", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T23:10:58.793794Z"}, {"id": 316, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-31T12:47:37.896380Z"}, {"id": 312, "component": "topic", "context": {"topic_id": 29, "category_name": "F\u00cdSICA", "topic_slug": "troia", "subject_id": 459, "topic_name": "troia", "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "timestamp_end": "1485817861", "category_id": 22, "timestamp_start": "1485817860", "category_slug": "fisica"}, "action": "view", "resource": "topic", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-30T23:11:00.819240Z"}, {"id": 317, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-31T18:37:38.618881Z"}, {"id": 318, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-31T19:12:32.773778Z"}, {"id": 319, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-01-31T23:28:13.691378Z"}, {"id": 320, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-01T14:34:07.639190Z"}, {"id": 323, "component": "category", "context": {"timestamp_start": "1485974786", "category_slug": "fisica", "category_name": "F\u00cdSICA", "category_id": 22, "timestamp_end": "1485974790"}, "action": "view", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-01T18:46:25.990585Z"}, {"id": 321, "component": "category", "context": {"timestamp_start": "1485974281", "category_slug": "agronomia", "category_name": "AGRONOMIA", "category_id": 2, "timestamp_end": "1485974735"}, "action": "view", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-01T18:38:01.194092Z"}, {"id": 322, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1485974772", "category_id": 22, "timestamp_start": "1485974769"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-01T18:46:09.361339Z"}, {"id": 325, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1485976246", "category_id": 22, "timestamp_start": "1485976245"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-01T19:10:45.062924Z"}, {"id": 326, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1485976264", "category_id": 22, "timestamp_start": "1485976246"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-01T19:10:46.849697Z"}, {"id": 327, "component": "topic", "context": {"topic_id": 31, "category_name": "F\u00cdSICA", "topic_slug": "invisible", "subject_id": 459, "topic_name": "Visible", "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "timestamp_end": "1485976261", "category_id": 22, "timestamp_start": "1485976260", "category_slug": "fisica"}, "action": "view", "resource": "topic", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-01T19:11:00.675879Z"}, {"id": 328, "component": "user", "context": {}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-01T19:11:04.309321Z"}, {"id": 767, "component": "mural", "context": {"post_id": "120"}, "action": "delete_post", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:18:20.846208Z"}, {"id": 356, "component": "user", "context": {}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-02T17:51:57.991297Z"}, {"id": 764, "component": "mural", "context": {"timestamp_end": "1487820251", "timestamp_start": "1487819865"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:17:45.551898Z"}, {"id": 768, "component": "mural", "context": {"timestamp_end": "1487820270", "timestamp_start": "1487820251"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:24:11.371756Z"}, {"id": 770, "component": "mural", "context": {"category_slug": "fisica", "category_name": "F\u00cdSICA", "post_id": "83", "category_id": 22}, "action": "create_comment", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:25:32.108185Z"}, {"id": 500, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-05T03:49:10.189731Z"}, {"id": 498, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-04T02:16:03.713455Z"}, {"id": 506, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-06T21:52:10.915119Z"}, {"id": 514, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-08T20:24:50.861429Z"}, {"id": 586, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-13T20:03:44.925986Z"}, {"id": 1943, "component": "chat", "context": {"timestamp_end": "1491527631", "timestamp_start": "1491527509"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:11:49.574701Z"}, {"id": 593, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-14T15:01:30.551792Z"}, {"id": 595, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-14T21:40:49.191265Z"}, {"id": 608, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-16T10:30:44.154434Z"}, {"id": 616, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-17T00:49:36.985050Z"}, {"id": 620, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-17T23:46:37.967352Z"}, {"id": 632, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-18T02:45:09.855062Z"}, {"id": 633, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-18T03:10:14.618203Z"}, {"id": 656, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-18T16:27:53.309528Z"}, {"id": 760, "component": "pendencies", "context": {"notification_id": 1264, "notification": "Criar Teste 2"}, "action": "set_goal", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:08:03.959137Z"}, {"id": 752, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T01:44:31.566063Z"}, {"id": 747, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487811503", "subject_id": 459, "timestamp_start": "1487811472", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T00:57:52.930523Z"}, {"id": 748, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487811515", "subject_id": 459, "timestamp_start": "1487811503", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T00:58:23.491201Z"}, {"id": 749, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487811640", "subject_id": 459, "timestamp_start": "1487811515", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T00:58:35.675991Z"}, {"id": 750, "component": "pendencies", "context": {"timestamp_start": "1487811640", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1487811667", "history_page": "2"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T01:00:40.332145Z"}, {"id": 751, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487811714", "subject_id": 459, "timestamp_start": "1487811667", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T01:01:07.531334Z"}, {"id": 755, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487819072", "subject_id": 459, "timestamp_start": "1487818941", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:02:21.881897Z"}, {"id": 754, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487818941", "subject_id": 459, "timestamp_start": "1487818935", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:02:15.907517Z"}, {"id": 756, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487819088", "subject_id": 459, "timestamp_start": "1487819079", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:04:39.304989Z"}, {"id": 757, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487819248", "subject_id": 459, "timestamp_start": "1487819083", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:04:43.266285Z"}, {"id": 758, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487819272", "subject_id": 459, "timestamp_start": "1487819248", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:07:28.517853Z"}, {"id": 765, "component": "mural", "context": {}, "action": "create_post", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:17:54.672547Z"}, {"id": 766, "component": "mural", "context": {"post_id": "120"}, "action": "edit_post", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:18:08.851857Z"}, {"id": 769, "component": "mural", "context": {"post_id": "119"}, "action": "create_comment", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:24:21.928140Z"}, {"id": 771, "component": "mural", "context": {"category_name": "F\u00cdSICA", "post_id": "118", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "category_id": 22}, "action": "create_comment", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:25:52.653247Z"}, {"id": 772, "component": "mural", "context": {"category_name": "F\u00cdSICA", "post_id": "91", "subject_id": 509, "category_slug": "fisica", "subject_name": "AERONOMIA", "subject_slug": "aeronomia", "category_id": 22}, "action": "create_comment", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:26:34.622097Z"}, {"id": 773, "component": "mural", "context": {"category_name": "F\u00cdSICA", "post_id": "91", "subject_id": 509, "category_slug": "fisica", "subject_name": "AERONOMIA", "subject_slug": "aeronomia", "category_id": 22}, "action": "create_comment", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:27:55.609252Z"}, {"id": 774, "component": "mural", "context": {"subject_name": "AERONOMIA", "post_id": "91", "subject_id": 509, "subject_slug": "aeronomia"}, "action": "create_comment", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:29:02.640123Z"}, {"id": 775, "component": "mural", "context": {"subject_name": "AERONOMIA", "post_id": "91", "subject_id": 509, "subject_slug": "aeronomia"}, "action": "create_comment", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:30:02.458851Z"}, {"id": 776, "component": "mural", "context": {"category_name": "F\u00cdSICA", "post_id": "57", "subject_id": 509, "category_slug": "fisica", "subject_name": "AERONOMIA", "subject_slug": "aeronomia", "category_id": 22}, "action": "create_comment", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:30:24.187150Z"}, {"id": 777, "component": "mural", "context": {"category_slug": "fisica", "category_name": "F\u00cdSICA", "post_id": "56", "category_id": 22}, "action": "create_comment", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:32:05.419796Z"}, {"id": 778, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "post_id": "117", "subject_id": 459, "subject_slug": "acustica"}, "action": "create_comment", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:32:29.703509Z"}, {"id": 779, "component": "mural", "context": {"category_slug": "fisica", "category_name": "F\u00cdSICA", "post_id": "56", "category_id": 22}, "action": "create_comment", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:32:51.016742Z"}, {"id": 780, "component": "mural", "context": {"resource_name": "Testando", "post_id": "104", "subject_id": 459, "resource_id": 47, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "resource_slug": "testando"}, "action": "create_comment", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:37:06.917608Z"}, {"id": 781, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "post_id": "117", "subject_id": 459, "subject_slug": "acustica"}, "action": "create_comment", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:37:25.110939Z"}, {"id": 782, "component": "mural", "context": {"resource_name": "Testando", "post_id": "104", "subject_id": 459, "resource_id": 47, "comment_id": "64", "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "resource_slug": "testando"}, "action": "edit_comment", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:38:55.588303Z"}, {"id": 783, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "post_id": "117", "subject_id": 459, "comment_id": "65", "subject_slug": "acustica"}, "action": "edit_comment", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:39:11.828612Z"}, {"id": 784, "component": "mural", "context": {"category_slug": "fisica", "category_name": "F\u00cdSICA", "post_id": "56", "category_id": 22, "comment_id": "62"}, "action": "edit_comment", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:39:37.546127Z"}, {"id": 786, "component": "mural", "context": {"post_id": "119", "comment_id": "51"}, "action": "edit_comment", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:39:58.143755Z"}, {"id": 785, "component": "mural", "context": {"timestamp_end": "1487821254", "timestamp_start": "1487821183"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:39:43.778697Z"}, {"id": 787, "component": "mural", "context": {"resource_name": "Testando", "post_id": "104", "subject_id": 459, "resource_id": 47, "comment_id": "64", "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "resource_slug": "testando"}, "action": "delete_comment", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:41:04.684362Z"}, {"id": 788, "component": "mural", "context": {"category_slug": "fisica", "category_name": "F\u00cdSICA", "post_id": "56", "category_id": 22, "comment_id": "62"}, "action": "delete_comment", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:41:19.841564Z"}, {"id": 789, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "post_id": "117", "subject_id": 459, "comment_id": "65", "subject_slug": "acustica"}, "action": "delete_comment", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:41:32.368296Z"}, {"id": 791, "component": "mural", "context": {"post_id": "119", "comment_id": "51"}, "action": "delete_comment", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:41:45.087772Z"}, {"id": 790, "component": "mural", "context": {"timestamp_end": "1487821570", "timestamp_start": "1487821299"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:41:39.638918Z"}, {"id": 792, "component": "mural", "context": {"category_slug": "fisica", "category_name": "F\u00cdSICA", "category_id": 22}, "action": "create_post", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:46:17.426384Z"}, {"id": 793, "component": "mural", "context": {"category_slug": "fisica", "category_name": "F\u00cdSICA", "post_id": 121, "category_id": 22}, "action": "edit_post", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:46:36.152350Z"}, {"id": 794, "component": "mural", "context": {"category_slug": "fisica", "category_name": "F\u00cdSICA", "post_id": 121, "category_id": 22}, "action": "delete_post", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:46:44.551370Z"}, {"id": 795, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "subject_id": 459, "subject_slug": "acustica"}, "action": "create_post", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:51:07.758060Z"}, {"id": 796, "component": "mural", "context": {"resource_name": "Found here", "subject_id": 459, "resource_id": 29, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "resource_slug": "found-here"}, "action": "create_post", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:51:20.229336Z"}, {"id": 797, "component": "mural", "context": {"resource_name": "Found here", "post_id": 123, "subject_id": 459, "resource_id": 29, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "resource_slug": "found-here"}, "action": "edit_post", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:51:39.066914Z"}, {"id": 798, "component": "mural", "context": {"resource_name": "Found here", "post_id": 122, "subject_id": 459, "resource_id": 29, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "resource_slug": "found-here"}, "action": "edit_post", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:51:50.112559Z"}, {"id": 799, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "post_id": 122, "subject_id": 459, "subject_slug": "acustica"}, "action": "delete_post", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:51:58.543414Z"}, {"id": 800, "component": "mural", "context": {"resource_name": "Found here", "post_id": 123, "subject_id": 459, "resource_id": 29, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "resource_slug": "found-here"}, "action": "delete_post", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:52:01.913353Z"}, {"id": 801, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487822069", "subject_id": 459, "timestamp_start": "1487822058", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:54:18.886887Z"}, {"id": 802, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1487822092", "category_id": 22, "timestamp_start": "1487822069"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:54:29.908068Z"}, {"id": 803, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1487822218", "category_id": 22, "timestamp_start": "1487822217"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:56:57.566068Z"}, {"id": 804, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1487822222", "category_id": 22, "timestamp_start": "1487822218"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:56:58.938426Z"}, {"id": 805, "component": "subject", "context": {"category_name": "GEOCI\u00caNCIAS", "subject_id": 509, "category_slug": "geociencias", "subject_name": "AERONOMIA", "subject_slug": "aeronomia", "timestamp_end": "1487822228", "category_id": 23, "timestamp_start": "1487822227"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:57:07.421128Z"}, {"id": 806, "component": "subject", "context": {"category_name": "GEOCI\u00caNCIAS", "subject_id": 509, "category_slug": "geociencias", "subject_name": "AERONOMIA", "subject_slug": "aeronomia", "timestamp_end": "1487822230", "category_id": 23, "timestamp_start": "1487822228"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T03:57:08.643965Z"}, {"id": 818, "component": "mural", "context": {"timestamp_end": "1487822925", "timestamp_start": "1487822922"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:08:42.820267Z"}, {"id": 820, "component": "mural", "context": {"subject_name": "AERONOMIA", "timestamp_end": "1487822950", "subject_id": 509, "timestamp_start": "1487822942", "subject_slug": "aeronomia"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:09:02.752121Z"}, {"id": 819, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487822942", "subject_id": 459, "timestamp_start": "1487822929", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:08:49.664237Z"}, {"id": 821, "component": "mural", "context": {"timestamp_start": "1487822964", "category_slug": "ecologia", "category_name": "ECONOMIA", "category_id": 12, "timestamp_end": "1487822972"}, "action": "view", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:09:24.119330Z"}, {"id": 822, "component": "mural", "context": {"timestamp_start": "1487822972", "category_slug": "fisica", "category_name": "F\u00cdSICA", "category_id": 22, "timestamp_end": "1487822978"}, "action": "view", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:09:32.720221Z"}, {"id": 824, "component": "mural", "context": {"timestamp_start": "1487823004", "category_slug": "fisica", "category_name": "F\u00cdSICA", "category_id": 22, "timestamp_end": "1487823011"}, "action": "view", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:10:04.914334Z"}, {"id": 823, "component": "mural", "context": {"timestamp_start": "1487823004", "category_slug": "fisica", "category_name": "F\u00cdSICA", "category_id": 22, "timestamp_end": "1487823023"}, "action": "view", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:10:04.537879Z"}, {"id": 826, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487823060", "subject_id": 459, "timestamp_start": "1487823025", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:10:25.399030Z"}, {"id": 844, "component": "user", "context": {}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:17:08.034061Z"}, {"id": 838, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487823262", "subject_id": 459, "timestamp_start": "1487823216", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:13:36.593832Z"}, {"id": 835, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487823262", "subject_id": 459, "timestamp_start": "1487823200", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:13:19.973986Z"}, {"id": 837, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487823262", "subject_id": 459, "timestamp_start": "1487823216", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:13:36.239900Z"}, {"id": 828, "component": "mural", "context": {"subject_name": "AERONOMIA", "timestamp_end": "1487823086", "subject_id": 509, "timestamp_start": "1487823068", "subject_slug": "aeronomia"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:11:08.658689Z"}, {"id": 825, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487823133", "subject_id": 459, "timestamp_start": "1487823025", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:10:25.024652Z"}, {"id": 827, "component": "mural", "context": {"subject_name": "AERONOMIA", "timestamp_end": "1487823133", "subject_id": 509, "timestamp_start": "1487823068", "subject_slug": "aeronomia"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:11:08.283495Z"}, {"id": 829, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487823133", "subject_id": 459, "timestamp_start": "1487823086", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:11:26.037229Z"}, {"id": 830, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487823133", "subject_id": 459, "timestamp_start": "1487823086", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:11:26.421082Z"}, {"id": 839, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487823274", "subject_id": 459, "timestamp_start": "1487823264", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:14:24.814253Z"}, {"id": 831, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487823152", "subject_id": 459, "timestamp_start": "1487823138", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:12:18.915670Z"}, {"id": 832, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487823152", "subject_id": 459, "timestamp_start": "1487823139", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:12:19.310937Z"}, {"id": 834, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487823184", "subject_id": 459, "timestamp_start": "1487823155", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:12:35.803614Z"}, {"id": 833, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487823198", "subject_id": 459, "timestamp_start": "1487823155", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:12:35.349965Z"}, {"id": 840, "component": "mural", "context": {"subject_name": "AERONOMIA", "timestamp_end": "1487823283", "subject_id": 509, "timestamp_start": "1487823279", "subject_slug": "aeronomia"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:14:39.617722Z"}, {"id": 836, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487823209", "subject_id": 459, "timestamp_start": "1487823200", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:13:20.363273Z"}, {"id": 841, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1487823288", "subject_id": 459, "timestamp_start": "1487823283", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:14:43.420174Z"}, {"id": 842, "component": "mural", "context": {"timestamp_start": "1487823308", "category_slug": "ecologia", "category_name": "ECONOMIA", "category_id": 12, "timestamp_end": "1487823317"}, "action": "view", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:15:08.906391Z"}, {"id": 843, "component": "mural", "context": {"timestamp_start": "1487823317", "category_slug": "fisica", "category_name": "F\u00cdSICA", "category_id": 22, "timestamp_end": "1487823325"}, "action": "view", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-23T04:15:17.374624Z"}, {"id": 1057, "component": "mural", "context": {"timestamp_start": "1488237433"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-02-27T23:17:13.774687Z"}, {"id": 1100, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1488503911", "category_id": 22, "timestamp_start": "1488503910"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-03T01:18:30.621679Z"}, {"id": 1102, "component": "user", "context": {}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-03T01:18:40.974286Z"}, {"id": 1101, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1488503920", "category_id": 22, "timestamp_start": "1488503911"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-03T01:18:31.947009Z"}, {"id": 1107, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-03T01:47:20.608235Z"}, {"id": 1135, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1488843766", "category_id": 22, "timestamp_start": "1488843765"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-06T23:42:45.788392Z"}, {"id": 1143, "component": "resources", "context": {"topic_slug": "repositorio", "subject_id": 459, "category_slug": "fisica", "goals_slug": "snuff", "subject_slug": "acustica", "category_name": "F\u00cdSICA", "goals_id": 70, "timestamp_start": "1488844187", "topic_id": 30, "goals_name": "Snuff", "topic_name": "Reposit\u00f3rio", "subject_name": "AC\u00daSTICA", "category_id": 22}, "action": "view", "resource": "my_goals", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-06T23:49:47.208564Z"}, {"id": 1136, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1488843808", "category_id": 22, "timestamp_start": "1488843766"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-06T23:42:46.977064Z"}, {"id": 1141, "component": "resources", "context": {"topic_slug": "repositorio", "subject_id": 459, "category_slug": "fisica", "goals_slug": "snuff", "subject_slug": "acustica", "category_name": "F\u00cdSICA", "goals_id": 70, "timestamp_start": "1488843808", "topic_id": 30, "goals_name": "Snuff", "topic_name": "Reposit\u00f3rio", "subject_name": "AC\u00daSTICA", "timestamp_end": "1488843810", "category_id": 22}, "action": "view", "resource": "my_goals", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-06T23:43:28.284675Z"}, {"id": 1142, "component": "resources", "context": {"topic_slug": "repositorio", "subject_id": 459, "category_slug": "fisica", "goals_slug": "snuff", "subject_slug": "acustica", "category_name": "F\u00cdSICA", "goals_id": 70, "topic_id": 30, "goals_name": "Snuff", "topic_name": "Reposit\u00f3rio", "subject_name": "AC\u00daSTICA", "category_id": 22}, "action": "update", "resource": "my_goals", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-06T23:49:47.133749Z"}, {"id": 1144, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-07T00:10:48.186363Z"}, {"id": 1174, "component": "resources", "context": {"topic_slug": "now-invisble", "subject_id": 459, "category_slug": "fisica", "goals_slug": "future", "subject_slug": "acustica", "category_name": "F\u00cdSICA", "goals_id": 71, "timestamp_start": "1488936573", "topic_id": 32, "goals_name": "Future", "topic_name": "Now Invisble", "subject_name": "AC\u00daSTICA", "category_id": 22}, "action": "submit", "resource": "goals", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-08T01:29:39.285570Z"}, {"id": 1170, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1488936569", "category_id": 22, "timestamp_start": "1488936568"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-08T01:29:28.317125Z"}, {"id": 1171, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1488936573", "category_id": 22, "timestamp_start": "1488936569"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-08T01:29:29.784524Z"}, {"id": 1172, "component": "topic", "context": {"topic_id": 32, "category_name": "F\u00cdSICA", "topic_slug": "now-invisble", "subject_id": 459, "topic_name": "Now Invisble", "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "timestamp_end": "1488936573", "category_id": 22, "timestamp_start": "1488936571", "category_slug": "fisica"}, "action": "view", "resource": "topic", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-08T01:29:31.953040Z"}, {"id": 1173, "component": "resources", "context": {"topic_slug": "now-invisble", "subject_id": 459, "category_slug": "fisica", "goals_slug": "future", "subject_slug": "acustica", "category_name": "F\u00cdSICA", "goals_id": 71, "timestamp_start": "1488936573", "topic_id": 32, "goals_name": "Future", "topic_name": "Now Invisble", "subject_name": "AC\u00daSTICA", "timestamp_end": "1488936579", "category_id": 22}, "action": "view", "resource": "goals", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-08T01:29:33.676092Z"}, {"id": 1175, "component": "resources", "context": {"topic_slug": "now-invisble", "subject_id": 459, "category_slug": "fisica", "goals_slug": "future", "subject_slug": "acustica", "category_name": "F\u00cdSICA", "goals_id": 71, "timestamp_start": "1488936579", "topic_id": 32, "goals_name": "Future", "topic_name": "Now Invisble", "subject_name": "AC\u00daSTICA", "timestamp_end": "1488936619", "category_id": 22}, "action": "view", "resource": "my_goals", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-08T01:29:39.391830Z"}, {"id": 1176, "component": "resources", "context": {"topic_slug": "now-invisble", "subject_id": 459, "category_slug": "fisica", "goals_slug": "future", "subject_slug": "acustica", "category_name": "F\u00cdSICA", "goals_id": 71, "timestamp_start": "1488936619", "topic_id": 32, "goals_name": "Future", "topic_name": "Now Invisble", "subject_name": "AC\u00daSTICA", "category_id": 22}, "action": "view", "resource": "my_goals", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-08T01:30:19.150112Z"}, {"id": 1181, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-08T02:45:16.171950Z"}, {"id": 1222, "component": "user", "context": {}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-14T00:50:31.882062Z"}, {"id": 1221, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-11T01:03:34.669314Z"}, {"id": 1314, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-29T00:49:02.657364Z"}, {"id": 1316, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1490751661", "category_id": 22, "timestamp_start": "1490751658"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-29T01:40:58.604592Z"}, {"id": 1317, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "category_id": 22, "timestamp_start": "1490751663"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-03-29T01:41:03.689244Z"}, {"id": 1560, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-03T01:33:22.315075Z"}, {"id": 1561, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1491183816", "category_id": 22, "timestamp_start": "1491183815"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-03T01:43:35.720998Z"}, {"id": 1563, "component": "topic", "context": {"topic_id": 32, "category_name": "F\u00cdSICA", "topic_slug": "now-invisble", "subject_id": 459, "topic_name": "Now Invisble", "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "timestamp_end": "1491183825", "category_id": 22, "timestamp_start": "1491183823", "category_slug": "fisica"}, "action": "view", "resource": "topic", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-03T01:43:43.290815Z"}, {"id": 1562, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1491183885", "category_id": 22, "timestamp_start": "1491183817"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-03T01:43:37.063065Z"}, {"id": 1566, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1491183889", "category_id": 22, "timestamp_start": "1491183885"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-03T01:44:45.216039Z"}, {"id": 1674, "component": "chat", "context": {"user_email": "admin@amadeus.br", "user_id": 1, "user_name": "Administrador", "talk_id": 8}, "action": "view", "resource": "talk", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T00:55:42.781884Z"}, {"id": 1672, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T00:55:31.808049Z"}, {"id": 1677, "component": "chat", "context": {"subject_slug": "acustica", "user_email": "admin@amadeus.br", "subject_id": 459, "user_id": 1, "subject_name": "AC\u00daSTICA", "user_name": "Administrador", "talk_id": 8}, "action": "send", "resource": "message", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T00:56:06.899904Z"}, {"id": 1673, "component": "chat", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1491353995", "subject_id": 459, "timestamp_start": "1491353740", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T00:55:40.507639Z"}, {"id": 1680, "component": "chat", "context": {"user_email": "admin@amadeus.br", "user_id": 1, "user_name": "Administrador", "talk_id": 8}, "action": "view", "resource": "talk", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T00:59:58.055991Z"}, {"id": 1682, "component": "chat", "context": {"subject_slug": "acustica", "user_email": "admin@amadeus.br", "subject_id": 459, "user_id": 1, "subject_name": "AC\u00daSTICA", "user_name": "Administrador", "talk_id": 8}, "action": "send", "resource": "message", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:00:12.811175Z"}, {"id": 1679, "component": "chat", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1491354252", "subject_id": 459, "timestamp_start": "1491353995", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T00:59:55.874379Z"}, {"id": 1693, "component": "chat", "context": {"subject_name": "AC\u00daSTICA", "timestamp_start": "1491354252", "subject_id": 459, "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:04:12.888402Z"}, {"id": 1694, "component": "chat", "context": {"user_email": "admin@amadeus.br", "user_id": 1, "user_name": "Administrador", "talk_id": 8}, "action": "view", "resource": "talk", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:04:14.945824Z"}, {"id": 1696, "component": "chat", "context": {"subject_slug": "acustica", "user_email": "admin@amadeus.br", "subject_id": 459, "user_id": 1, "subject_name": "AC\u00daSTICA", "user_name": "Administrador", "talk_id": 8}, "action": "send", "resource": "message", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:04:25.213499Z"}, {"id": 1706, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:26:38.737881Z"}, {"id": 1708, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:30:21.138639Z"}, {"id": 1714, "component": "user", "context": {}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:31:01.523956Z"}, {"id": 1717, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:31:14.839898Z"}, {"id": 1718, "component": "user", "context": {}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:31:32.243590Z"}, {"id": 1724, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:31:44.849951Z"}, {"id": 1726, "component": "user", "context": {}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:33:11.529728Z"}, {"id": 1734, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:35:43.014849Z"}, {"id": 1735, "component": "user", "context": {}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:35:55.926115Z"}, {"id": 1739, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:37:35.890388Z"}, {"id": 1743, "component": "user", "context": {}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:38:33.250084Z"}, {"id": 1746, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:38:49.913400Z"}, {"id": 1754, "component": "user", "context": {}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:39:25.747552Z"}, {"id": 1759, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:39:58.020397Z"}, {"id": 1761, "component": "user", "context": {}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:40:12.797425Z"}, {"id": 1764, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:40:49.430312Z"}, {"id": 1794, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T02:07:03.400068Z"}, {"id": 1784, "component": "user", "context": {}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:42:20.280954Z"}, {"id": 1785, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:42:30.548117Z"}, {"id": 1796, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T02:10:35.496279Z"}, {"id": 1788, "component": "user", "context": {}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:43:23.405407Z"}, {"id": 1789, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T01:43:30.782736Z"}, {"id": 1790, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T02:03:32.318245Z"}, {"id": 1791, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T02:03:32.413256Z"}, {"id": 1792, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T02:06:49.315711Z"}, {"id": 1797, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-05T02:10:45.791602Z"}, {"id": 1815, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-06T00:00:25.725477Z"}, {"id": 1899, "component": "chat", "context": {"user_email": "admin@amadeus.br", "user_id": 1, "user_name": "Administrador", "talk_id": 8}, "action": "send", "resource": "message", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T00:57:15.554937Z"}, {"id": 1840, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1491510614", "category_id": 22, "timestamp_start": "1491510612"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-06T20:30:12.828480Z"}, {"id": 1839, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-06T20:30:08.661590Z"}, {"id": 1841, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "category_id": 22, "timestamp_start": "1491510614"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-06T20:30:14.063029Z"}, {"id": 1897, "component": "chat", "context": {"timestamp_end": "1491526695", "timestamp_start": "1491526589"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T00:56:29.945407Z"}, {"id": 1942, "component": "chat", "context": {"timestamp_end": "1491527509", "timestamp_start": "1491527509"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:11:49.253164Z"}, {"id": 1900, "component": "chat", "context": {"user_email": "admin@amadeus.br", "user_id": 1, "user_name": "Administrador", "talk_id": 8}, "action": "send", "resource": "message", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T00:57:23.165700Z"}, {"id": 1901, "component": "chat", "context": {"timestamp_end": "1491526739", "timestamp_start": "1491526695"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T00:58:15.786995Z"}, {"id": 1871, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-06T20:51:47.162180Z"}, {"id": 1891, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-06T21:15:48.378540Z"}, {"id": 1894, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-06T21:36:15.212908Z"}, {"id": 1896, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T00:56:11.860093Z"}, {"id": 1898, "component": "chat", "context": {"user_email": "admin@amadeus.br", "user_id": 1, "user_name": "Administrador", "talk_id": 8}, "action": "view", "resource": "talk", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T00:57:01.897417Z"}, {"id": 1902, "component": "chat", "context": {"user_email": "admin@amadeus.br", "user_id": 1, "user_name": "Administrador", "talk_id": 8}, "action": "view", "resource": "talk", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T00:58:18.465654Z"}, {"id": 1904, "component": "chat", "context": {"user_email": "admin@amadeus.br", "user_id": 1, "user_name": "Administrador", "talk_id": 8}, "action": "view", "resource": "talk", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T00:59:02.711508Z"}, {"id": 1915, "component": "chat", "context": {"user_email": "admin@amadeus.br", "user_id": 1, "user_name": "Administrador", "talk_id": 8}, "action": "send", "resource": "message", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:00:30.323138Z"}, {"id": 1918, "component": "chat", "context": {"user_email": "admin@amadeus.br", "user_id": 1, "user_name": "Administrador", "talk_id": 8}, "action": "send", "resource": "message", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:01:04.526598Z"}, {"id": 1903, "component": "chat", "context": {"timestamp_end": "1491526982", "timestamp_start": "1491526739"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T00:58:59.831863Z"}, {"id": 1929, "component": "chat", "context": {"timestamp_end": "1491526982", "timestamp_start": "1491526982"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:03:02.615804Z"}, {"id": 1930, "component": "chat", "context": {"timestamp_end": "1491526982", "timestamp_start": "1491526982"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:03:02.706737Z"}, {"id": 1932, "component": "chat", "context": {"user_email": "admin@amadeus.br", "user_id": 1, "user_name": "Administrador", "talk_id": 8}, "action": "view", "resource": "talk", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:03:05.385823Z"}, {"id": 1933, "component": "chat", "context": {"user_email": "admin@amadeus.br", "user_id": 1, "user_name": "Administrador", "talk_id": 8}, "action": "send", "resource": "message", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:03:12.641895Z"}, {"id": 1941, "component": "chat", "context": {"timestamp_start": "1491527509"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:11:49.098422Z"}, {"id": 1931, "component": "chat", "context": {"timestamp_end": "1491527509", "timestamp_start": "1491526982"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:03:02.927070Z"}, {"id": 1940, "component": "chat", "context": {"timestamp_end": "1491527509", "timestamp_start": "1491527508"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:11:48.975144Z"}, {"id": 1944, "component": "chat", "context": {"user_email": "admin@amadeus.br", "user_id": 1, "user_name": "Administrador", "talk_id": 8}, "action": "view", "resource": "talk", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:11:52.348335Z"}, {"id": 1946, "component": "chat", "context": {"user_email": "admin@amadeus.br", "user_id": 1, "user_name": "Administrador", "talk_id": 8}, "action": "send", "resource": "message", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:12:07.910661Z"}, {"id": 1967, "component": "chat", "context": {"user_email": "admin@amadeus.br", "user_id": 1, "user_name": "Administrador", "talk_id": 8}, "action": "view", "resource": "talk", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:14:39.219183Z"}, {"id": 1968, "component": "chat", "context": {"user_email": "admin@amadeus.br", "user_id": 1, "user_name": "Administrador", "talk_id": 8}, "action": "send", "resource": "message", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:14:50.239122Z"}, {"id": 1953, "component": "chat", "context": {"timestamp_start": "1491527631"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:13:51.731589Z"}, {"id": 1952, "component": "chat", "context": {"timestamp_end": "1491527631", "timestamp_start": "1491527631"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:13:51.609850Z"}, {"id": 1955, "component": "chat", "context": {"user_email": "admin@amadeus.br", "user_id": 1, "user_name": "Administrador", "talk_id": 8}, "action": "view", "resource": "talk", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:13:54.065399Z"}, {"id": 1956, "component": "chat", "context": {"user_email": "admin@amadeus.br", "user_id": 1, "user_name": "Administrador", "talk_id": 8}, "action": "send", "resource": "message", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:13:59.483762Z"}, {"id": 1957, "component": "chat", "context": {"timestamp_start": "1491527670"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:14:30.407929Z"}, {"id": 1958, "component": "chat", "context": {"timestamp_start": "1491527670"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:14:30.495772Z"}, {"id": 1954, "component": "chat", "context": {"timestamp_end": "1491527670", "timestamp_start": "1491527631"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:13:51.866635Z"}, {"id": 1959, "component": "chat", "context": {"timestamp_end": "1491527670", "timestamp_start": "1491527670"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:14:30.606353Z"}, {"id": 1960, "component": "chat", "context": {"timestamp_end": "1491527670", "timestamp_start": "1491527670"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:14:30.760560Z"}, {"id": 1961, "component": "chat", "context": {"timestamp_start": "1491527670"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:14:30.893797Z"}, {"id": 1971, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T01:36:10.846757Z"}, {"id": 2009, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T22:17:44.650595Z"}, {"id": 2010, "component": "chat", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1491603471", "subject_id": 459, "timestamp_start": "1491603469", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T22:17:49.021610Z"}, {"id": 2011, "component": "chat", "context": {"subject_name": "AC\u00daSTICA", "timestamp_start": "1491603471", "search_by": "", "subject_id": 459, "subject_slug": "acustica"}, "action": "view", "resource": "subject_participants", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T22:17:51.587148Z"}, {"id": 2012, "component": "chat", "context": {"user_email": "admin@amadeus.br", "user_id": 1, "user_name": "Administrador"}, "action": "view", "resource": "profile", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T22:17:53.520769Z"}, {"id": 2046, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-07T22:37:58.684059Z"}, {"id": 2148, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1491942929", "subject_id": 459, "timestamp_start": "1491942810", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T20:33:30.508338Z"}, {"id": 2141, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T20:29:50.158140Z"}, {"id": 2143, "component": "pendencies", "context": {"notification_id": 2839, "notification": "Visualizar Alive"}, "action": "set_goal", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T20:30:10.326303Z"}, {"id": 2144, "component": "pendencies", "context": {"notification_id": 2839, "notification": "Visualizar Alive"}, "action": "set_goal", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T20:30:29.252907Z"}, {"id": 2142, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1491942633", "subject_id": 459, "timestamp_start": "1491942597", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T20:29:57.251442Z"}, {"id": 2159, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1491944873", "subject_id": 459, "timestamp_start": "1491944688", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T21:04:48.914286Z"}, {"id": 2145, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1491942677", "subject_id": 459, "timestamp_start": "1491942633", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T20:30:33.297605Z"}, {"id": 2156, "component": "pendencies", "context": {"notification_id": 2839, "notification": "Visualizar Alive"}, "action": "set_goal", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T20:35:48.098332Z"}, {"id": 2146, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1491942691", "subject_id": 459, "timestamp_start": "1491942677", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T20:31:17.014560Z"}, {"id": 2155, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1491942953", "subject_id": 459, "timestamp_start": "1491942933", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T20:35:33.136966Z"}, {"id": 2147, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1491942810", "subject_id": 459, "timestamp_start": "1491942691", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T20:31:31.706590Z"}, {"id": 2158, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1491944688", "subject_id": 459, "timestamp_start": "1491944687", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T21:04:47.759404Z"}, {"id": 2149, "component": "pendencies", "context": {"notification_id": 2839, "notification": "Visualizar Alive"}, "action": "set_goal", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T20:33:43.077376Z"}, {"id": 2150, "component": "pendencies", "context": {"notification_id": 2839, "notification": "Visualizar Alive"}, "action": "set_goal", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T20:33:43.088045Z"}, {"id": 2151, "component": "pendencies", "context": {"notification_id": 2839, "notification": "Visualizar Alive"}, "action": "set_goal", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T20:33:43.151688Z"}, {"id": 2152, "component": "pendencies", "context": {"notification_id": 2839, "notification": "Visualizar Alive"}, "action": "set_goal", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T20:33:43.233088Z"}, {"id": 2153, "component": "pendencies", "context": {"notification_id": 2839, "notification": "Visualizar Alive"}, "action": "set_goal", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T20:33:43.310043Z"}, {"id": 2154, "component": "pendencies", "context": {"notification_id": 2839, "notification": "Visualizar Alive"}, "action": "set_goal", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T20:33:43.332206Z"}, {"id": 2157, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1491944684", "subject_id": 459, "timestamp_start": "1491942953", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T20:35:53.050266Z"}, {"id": 2160, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T21:07:52.577789Z"}, {"id": 2161, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1491944882", "subject_id": 459, "timestamp_start": "1491944881", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T21:08:01.246381Z"}, {"id": 2162, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1491944961", "subject_id": 459, "timestamp_start": "1491944882", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T21:08:02.640389Z"}, {"id": 2163, "component": "pendencies", "context": {"timestamp_start": "1491944966", "subject_id": 459, "view_page": 1, "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1491944968"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T21:09:26.304121Z"}, {"id": 2164, "component": "pendencies", "context": {"timestamp_start": "1491944968", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1491944974", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T21:09:28.662583Z"}, {"id": 2165, "component": "pendencies", "context": {"timestamp_start": "1491944974", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "11/04/2017", "timestamp_end": "1491945024", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T21:09:34.927707Z"}, {"id": 2176, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T21:41:42.290483Z"}, {"id": 2166, "component": "pendencies", "context": {"timestamp_start": "1491945024", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "11/04/2017", "timestamp_end": "1491945544", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T21:10:24.503694Z"}, {"id": 2167, "component": "pendencies", "context": {"timestamp_start": "1491945544", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "11-04-2017", "timestamp_end": "1491945556", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T21:19:04.772824Z"}, {"id": 2168, "component": "pendencies", "context": {"timestamp_start": "1491945557", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "11-31-2017", "timestamp_end": "1491945571", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T21:19:17.029781Z"}, {"id": 2169, "component": "pendencies", "context": {"timestamp_start": "1491945571", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "11/31/2017", "timestamp_end": "1491945577", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T21:19:31.833808Z"}, {"id": 2170, "component": "pendencies", "context": {"timestamp_start": "1491945578", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "hey", "timestamp_end": "1491945580", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T21:19:38.099706Z"}, {"id": 2171, "component": "pendencies", "context": {"timestamp_start": "1491945580", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1491945611", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T21:19:40.889903Z"}, {"id": 2172, "component": "pendencies", "context": {"timestamp_start": "1491945611", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "13/04/2017", "timestamp_end": "1491945804", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T21:20:11.893170Z"}, {"id": 2173, "component": "pendencies", "context": {"timestamp_start": "1491945804", "subject_id": 459, "view_page": 1, "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1491945813"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T21:23:24.762807Z"}, {"id": 2174, "component": "pendencies", "context": {"timestamp_start": "1491945813", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1491945829", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T21:23:33.432888Z"}, {"id": 2175, "component": "pendencies", "context": {"subject_id": 459, "timestamp_start": "1491945830", "subject_slug": "acustica", "view_page": 1, "subject_name": "AC\u00daSTICA"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T21:23:50.005128Z"}, {"id": 2179, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T22:01:55.058108Z"}, {"id": 2184, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T22:10:12.294248Z"}, {"id": 2185, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1491948957", "subject_id": 459, "timestamp_start": "1491948954", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T22:15:54.043169Z"}, {"id": 2186, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1491948962", "category_id": 22, "timestamp_start": "1491948957"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T22:15:57.853109Z"}, {"id": 2187, "component": "pendencies", "context": {"timestamp_start": "1491948962", "subject_id": 459, "view_page": 1, "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1491948983"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T22:16:02.106115Z"}, {"id": 2188, "component": "pendencies", "context": {"timestamp_start": "1491948984", "subject_id": 459, "view_page": 1, "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1491948991"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T22:16:24.139829Z"}, {"id": 2189, "component": "pendencies", "context": {"timestamp_start": "1491948991", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1491948994", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T22:16:31.732021Z"}, {"id": 2190, "component": "pendencies", "context": {"timestamp_start": "1491948994", "subject_id": 459, "view_page": 1, "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1491948996"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T22:16:34.736917Z"}, {"id": 2191, "component": "pendencies", "context": {"timestamp_start": "1491949038", "subject_id": 459, "view_page": 1, "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1491949173"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T22:17:18.291869Z"}, {"id": 2192, "component": "pendencies", "context": {"subject_id": 459, "timestamp_start": "1491949173", "subject_slug": "acustica", "view_page": 1, "subject_name": "AC\u00daSTICA"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T22:19:33.749609Z"}, {"id": 2193, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-11T22:39:40.053706Z"}, {"id": 2199, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:21:12.724246Z"}, {"id": 2200, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492125909", "subject_id": 459, "timestamp_start": "1492125906", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:25:06.780756Z"}, {"id": 2201, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492126007", "subject_id": 459, "timestamp_start": "1492125909", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:25:09.273239Z"}, {"id": 2212, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492126358", "subject_id": 459, "timestamp_start": "1492126357", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:32:37.557078Z"}, {"id": 2202, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492126011", "subject_id": 459, "timestamp_start": "1492126010", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:26:50.137306Z"}, {"id": 2223, "component": "pendencies", "context": {"timestamp_start": "1492126904", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1492126909", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:41:44.272424Z"}, {"id": 2203, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492126103", "subject_id": 459, "timestamp_start": "1492126011", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:26:51.234380Z"}, {"id": 2213, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492126732", "subject_id": 459, "timestamp_start": "1492126358", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:32:38.624614Z"}, {"id": 2204, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492126106", "subject_id": 459, "timestamp_start": "1492126105", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:28:25.440805Z"}, {"id": 2205, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492126227", "subject_id": 459, "timestamp_start": "1492126106", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:28:26.670663Z"}, {"id": 2219, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492126894", "subject_id": 459, "timestamp_start": "1492126799", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:39:59.389663Z"}, {"id": 2206, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492126231", "subject_id": 459, "timestamp_start": "1492126230", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:30:30.572946Z"}, {"id": 2207, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492126241", "subject_id": 459, "timestamp_start": "1492126231", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:30:31.791530Z"}, {"id": 2214, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492126736", "subject_id": 459, "timestamp_start": "1492126735", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:38:55.254223Z"}, {"id": 2208, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492126245", "subject_id": 459, "timestamp_start": "1492126244", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:30:44.238059Z"}, {"id": 2209, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492126259", "subject_id": 459, "timestamp_start": "1492126245", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:30:45.283407Z"}, {"id": 2215, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492126769", "subject_id": 459, "timestamp_start": "1492126736", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:38:56.550061Z"}, {"id": 2210, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492126264", "subject_id": 459, "timestamp_start": "1492126263", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:31:03.689993Z"}, {"id": 2211, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492126355", "subject_id": 459, "timestamp_start": "1492126264", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:31:04.890991Z"}, {"id": 2220, "component": "pendencies", "context": {"timestamp_start": "1492126897", "subject_id": 459, "view_page": 1, "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1492126898"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:41:37.180574Z"}, {"id": 2216, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492126773", "subject_id": 459, "timestamp_start": "1492126772", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:39:31.963616Z"}, {"id": 2221, "component": "pendencies", "context": {"timestamp_start": "1492126898", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1492126900", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:41:38.582164Z"}, {"id": 2217, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492126795", "subject_id": 459, "timestamp_start": "1492126773", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:39:33.010223Z"}, {"id": 2218, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492126799", "subject_id": 459, "timestamp_start": "1492126798", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:39:57.983037Z"}, {"id": 2222, "component": "pendencies", "context": {"timestamp_start": "1492126900", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1492126904", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:41:40.800195Z"}, {"id": 2224, "component": "pendencies", "context": {"timestamp_start": "1492126909", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1492126944", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:41:49.645436Z"}, {"id": 2225, "component": "pendencies", "context": {"timestamp_start": "1492126944", "subject_id": 459, "view_page": 1, "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1492127266"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:42:24.357067Z"}, {"id": 2232, "component": "pendencies", "context": {"timestamp_start": "1492127266", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1492127373", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:47:46.851877Z"}, {"id": 2233, "component": "pendencies", "context": {"timestamp_start": "1492127373", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1492127416", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:49:33.635556Z"}, {"id": 2240, "component": "pendencies", "context": {"timestamp_start": "1492127731", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1492127733", "history_page": "3"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:55:31.133416Z"}, {"id": 2235, "component": "pendencies", "context": {"timestamp_start": "1492127541", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:52:21.431470Z"}, {"id": 2234, "component": "pendencies", "context": {"timestamp_start": "1492127416", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1492127555", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:50:16.367796Z"}, {"id": 2236, "component": "pendencies", "context": {"timestamp_start": "1492127555", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1492127593", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:52:35.212062Z"}, {"id": 2237, "component": "pendencies", "context": {"timestamp_start": "1492127593", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1492127649", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:53:13.432324Z"}, {"id": 2238, "component": "pendencies", "context": {"timestamp_start": "1492127649", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1492127728", "history_page": 1}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:54:09.524902Z"}, {"id": 2239, "component": "pendencies", "context": {"timestamp_start": "1492127728", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1492127731", "history_page": "2"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:55:28.355818Z"}, {"id": 2241, "component": "pendencies", "context": {"timestamp_start": "1492127733", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1492127735", "history_page": "4"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:55:33.684922Z"}, {"id": 2242, "component": "pendencies", "context": {"timestamp_start": "1492127735", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1492127737", "history_page": "5"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:55:35.445654Z"}, {"id": 2243, "component": "pendencies", "context": {"timestamp_start": "1492127737", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1492127739", "history_page": "6"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:55:37.251554Z"}, {"id": 2244, "component": "pendencies", "context": {"timestamp_start": "1492127739", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1492127742", "history_page": "7"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:55:39.998168Z"}, {"id": 2245, "component": "pendencies", "context": {"timestamp_start": "1492127742", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1492127743", "history_page": "8"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:55:42.133961Z"}, {"id": 2246, "component": "pendencies", "context": {"timestamp_start": "1492127743", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1492127745", "history_page": "9"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:55:43.943443Z"}, {"id": 2247, "component": "pendencies", "context": {"timestamp_start": "1492127745", "subject_id": 459, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "searched": "", "timestamp_end": "1492127756", "history_page": "10"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:55:45.897845Z"}, {"id": 2248, "component": "pendencies", "context": {"timestamp_start": "1492127757", "subject_id": 459, "view_page": 1, "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1492127771"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:55:57.022979Z"}, {"id": 2249, "component": "resources", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "webpage_slug": "revenge", "subject_slug": "acustica", "topic_id": 30, "timestamp_start": "1492127771", "topic_slug": "repositorio", "topic_name": "Reposit\u00f3rio", "subject_name": "AC\u00daSTICA", "timestamp_end": "1492127776", "webpage_id": 1, "category_id": 22, "webpage_name": "Revenge"}, "action": "view", "resource": "webpage", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:56:11.291806Z"}, {"id": 2250, "component": "mural", "context": {"timestamp_start": "1492127776", "resource_name": "Revenge", "subject_id": 459, "resource_id": 1, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "resource_slug": "revenge", "timestamp_end": "1492127779"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:56:16.753307Z"}, {"id": 2251, "component": "resources", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "webpage_slug": "revenge", "subject_slug": "acustica", "topic_id": 30, "timestamp_start": "1492127779", "topic_slug": "repositorio", "topic_name": "Reposit\u00f3rio", "subject_name": "AC\u00daSTICA", "timestamp_end": "1492127780", "webpage_id": 1, "category_id": 22, "webpage_name": "Revenge"}, "action": "view", "resource": "webpage", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:56:19.499351Z"}, {"id": 2252, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1492127783", "category_id": 22, "timestamp_start": "1492127780"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:56:20.859941Z"}, {"id": 2253, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492127788", "subject_id": 459, "timestamp_start": "1492127785", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:56:25.169011Z"}, {"id": 2255, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-14T00:21:41.686250Z"}, {"id": 2259, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-15T00:51:14.061387Z"}, {"id": 2254, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492217474", "subject_id": 459, "timestamp_start": "1492127788", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-13T23:56:28.959612Z"}, {"id": 2260, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492217494", "subject_id": 459, "timestamp_start": "1492217480", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-15T00:51:19.995842Z"}, {"id": 2586, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-05-26T01:36:33.745524Z"}, {"id": 2262, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-15T01:16:47.696572Z"}, {"id": 2261, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492995562", "subject_id": 459, "timestamp_start": "1492217494", "subject_slug": "acustica"}, "action": "view_history", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-15T00:51:34.056885Z"}, {"id": 2372, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T00:59:21.981258Z"}, {"id": 2373, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1492995610", "subject_id": 459, "timestamp_start": "1492995567", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T00:59:27.281209Z"}, {"id": 2382, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1493032945", "subject_id": 459, "timestamp_start": "1493032865", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:21:05.272760Z"}, {"id": 2375, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T01:20:18.161716Z"}, {"id": 2377, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:12:26.191980Z"}, {"id": 2374, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1493032346", "subject_id": 459, "timestamp_start": "1492995613", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T01:00:13.607041Z"}, {"id": 2380, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1493032682", "subject_id": 459, "timestamp_start": "1493032591", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:16:31.039008Z"}, {"id": 2378, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1493032468", "subject_id": 459, "timestamp_start": "1493032349", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:12:29.644103Z"}, {"id": 2379, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1493032588", "subject_id": 459, "timestamp_start": "1493032471", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:14:31.716757Z"}, {"id": 2381, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1493032862", "subject_id": 459, "timestamp_start": "1493032685", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:18:05.403084Z"}, {"id": 2385, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1493032969", "subject_id": 459, "timestamp_start": "1493032948", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:22:28.461096Z"}, {"id": 2383, "component": "pendencies", "context": {}, "action": "set_goal", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:21:16.252767Z"}, {"id": 2384, "component": "pendencies", "context": {"notification_id": 3237, "notification": "Visualizar System"}, "action": "set_goal", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:21:19.653812Z"}, {"id": 2387, "component": "pendencies", "context": {"notification_id": 3237, "notification": "Visualizar System"}, "action": "set_goal", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:22:56.726714Z"}, {"id": 2386, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1493033066", "subject_id": 459, "timestamp_start": "1493032972", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:22:52.192138Z"}, {"id": 2388, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1493033080", "subject_id": 459, "timestamp_start": "1493033069", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:24:29.447632Z"}, {"id": 2389, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1493033136", "subject_id": 459, "timestamp_start": "1493033082", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:24:42.549281Z"}, {"id": 2401, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1493033725", "subject_id": 459, "timestamp_start": "1493033723", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:35:23.153863Z"}, {"id": 2391, "component": "pendencies", "context": {"notification_id": 3237, "notification": "Visualizar System"}, "action": "set_goal", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:25:49.616646Z"}, {"id": 2390, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1493033184", "subject_id": 459, "timestamp_start": "1493033138", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:25:38.898596Z"}, {"id": 2402, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T12:10:29.965789Z"}, {"id": 2392, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1493033678", "subject_id": 459, "timestamp_start": "1493033187", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:26:27.067783Z"}, {"id": 2393, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1493033683", "subject_id": 459, "timestamp_start": "1493033680", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:34:40.778746Z"}, {"id": 2394, "component": "resources", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "webpage_slug": "angels-calling", "subject_slug": "acustica", "topic_id": 30, "timestamp_start": "1493033683", "topic_slug": "repositorio", "topic_name": "Reposit\u00f3rio", "subject_name": "AC\u00daSTICA", "timestamp_end": "1493033692", "webpage_id": 68, "category_id": 22, "webpage_name": "Angels calling"}, "action": "view", "resource": "webpage", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:34:43.787750Z"}, {"id": 2395, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1493033692", "subject_id": 459, "timestamp_start": "1493033688", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:34:48.345307Z"}, {"id": 2396, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1493033705", "category_id": 22, "timestamp_start": "1493033692"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:34:52.339304Z"}, {"id": 2397, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1493033705", "subject_id": 459, "timestamp_start": "1493033700", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:34:59.986089Z"}, {"id": 2398, "component": "subject", "context": {"category_name": "F\u00cdSICA", "subject_id": 459, "category_slug": "fisica", "subject_name": "AC\u00daSTICA", "subject_slug": "acustica", "timestamp_end": "1493033713", "category_id": 22, "timestamp_start": "1493033705"}, "action": "access", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:35:05.066338Z"}, {"id": 2399, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1493033713", "subject_id": 459, "timestamp_start": "1493033711", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:35:11.051070Z"}, {"id": 2400, "component": "category", "context": {"timestamp_start": "1493033716", "category_slug": "fisica", "category_name": "F\u00cdSICA", "category_id": 22, "timestamp_end": "1493033725"}, "action": "view", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-04-24T11:35:16.652183Z"}, {"id": 2557, "component": "user", "context": {}, "action": "access", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-05-23T21:08:11.603340Z"}, {"id": 2558, "component": "mural", "context": {"timestamp_end": "1495573702", "timestamp_start": "1495573699"}, "action": "view", "resource": "general", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-05-23T21:08:19.229099Z"}, {"id": 2560, "component": "mural", "context": {"category_slug": "fisica", "category_name": "F\u00cdSICA", "category_id": 22}, "action": "create_post", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-05-23T21:08:39.168190Z"}, {"id": 2559, "component": "mural", "context": {"timestamp_start": "1495573709", "category_slug": "fisica", "category_name": "F\u00cdSICA", "category_id": 22, "timestamp_end": "1495574216"}, "action": "view", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-05-23T21:08:29.012379Z"}, {"id": 2562, "component": "mural", "context": {"category_slug": "artes", "category_name": "ARTES", "category_id": 6}, "action": "create_post", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-05-23T21:17:11.351727Z"}, {"id": 2561, "component": "mural", "context": {"timestamp_start": "1495574219", "category_slug": "artes", "category_name": "ARTES", "category_id": 6, "timestamp_end": "1495574237"}, "action": "view", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-05-23T21:16:59.492679Z"}, {"id": 2564, "component": "mural", "context": {"category_slug": "fisica", "category_name": "F\u00cdSICA", "category_id": 22}, "action": "create_post", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-05-23T21:17:30.479031Z"}, {"id": 2565, "component": "mural", "context": {"category_slug": "fisica", "category_name": "F\u00cdSICA", "post_id": "128", "category_id": 22}, "action": "create_comment", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-05-23T21:30:13.435109Z"}, {"id": 2563, "component": "mural", "context": {"timestamp_start": "1495574237", "category_slug": "fisica", "category_name": "F\u00cdSICA", "category_id": 22, "timestamp_end": "1495575021"}, "action": "view", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-05-23T21:17:17.902158Z"}, {"id": 2567, "component": "mural", "context": {"category_slug": "ecologia", "category_name": "ECONOMIA", "post_id": "62", "category_id": 12}, "action": "create_comment", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-05-23T21:30:30.236424Z"}, {"id": 2566, "component": "mural", "context": {"timestamp_start": "1495575021", "category_slug": "ecologia", "category_name": "ECONOMIA", "category_id": 12, "timestamp_end": "1495575095"}, "action": "view", "resource": "category", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-05-23T21:30:21.372430Z"}, {"id": 2577, "component": "mural", "context": {"resource_name": "Revenge", "post_id": "124", "subject_id": 459, "resource_id": 1, "subject_slug": "acustica", "subject_name": "AC\u00daSTICA", "resource_slug": "revenge"}, "action": "create_comment", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-05-23T21:37:43.750379Z"}, {"id": 2576, "component": "mural", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1495575478", "subject_id": 459, "timestamp_start": "1495575454", "subject_slug": "acustica"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-05-23T21:37:34.193592Z"}, {"id": 2575, "component": "mural", "context": {"subject_name": "CRIA\u00c7\u00c3O DE ANIMAIS", "subject_id": 790, "subject_slug": "criacao-de-animais"}, "action": "create_post", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-05-23T21:37:23.764808Z"}, {"id": 2574, "component": "mural", "context": {"subject_name": "CRIA\u00c7\u00c3O DE ANIMAIS", "timestamp_end": "1495575453", "subject_id": 790, "timestamp_start": "1495575434", "subject_slug": "criacao-de-animais"}, "action": "view", "resource": "subject", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-05-23T21:37:14.769228Z"}, {"id": 2587, "component": "pendencies", "context": {"subject_name": "AC\u00daSTICA", "timestamp_end": "1495762614", "subject_id": 459, "timestamp_start": "1495762601", "subject_slug": "acustica"}, "action": "view", "resource": "pendencies", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-05-26T01:36:41.713465Z"}, {"id": 2588, "component": "user", "context": {}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-05-26T01:36:54.476891Z"}, {"id": 2636, "component": "user", "context": {"condition": "session_expire"}, "action": "logout", "resource": "system", "user": "Estudante 180", "user_id": 181, "user_email": "e180@amadeus.br", "datetime": "2017-05-26T02:27:25.484603Z"}], "password": "pbkdf2_sha256$30000$5gbyp9Al3C2n$rroJzhQWFLetSzLJto5kyVC4z2hycFSWhH8uq3lhazI=", "last_login": "2017-05-26T01:36:33.649932Z", "is_superuser": false, "email": "e180@amadeus.br", "username": "e", "last_name": "180", "social_name": "Estudante 180", "description": "<p>Estudante da Universidade Federal do Vale do S\u00e3o Francisco - <b>UNIVASF</b>.</p>", "image": "/uploads/users/hqdefault.jpg", "date_created": "2017-01-01T03:00:00Z", "last_update": "2017-02-06T18:58:16.633761Z", "show_email": 1, "is_staff": false, "is_active": true, "groups": [], "user_permissions": []}], "_my_subclass": "filelink", "name": "Personal", "slug": "personal", "brief_description": "<p>Pray All I can do</p><p>Taskani</p>", "show_window": false, "all_students": false, "visible": false, "order": 6, "create_date": "2017-01-25T02:21:38.618190Z", "last_update": "2017-01-25T02:24:26.061727Z"}], [], [], [{"id": 71, "topic": {"id": 32, "name": "Now Invisble", "slug": "now-invisble", "description": "<p>TIme to</p>", "repository": false, "visible": true, "order": 2, "create_date": "2017-01-17T18:44:24.976186Z", "last_update": "2017-03-08T01:28:52.845818Z"}, "tags": [{"id": 123, "name": "wastelands"}, {"id": 124, "name": "disapear"}], "item_goal": [{"id": 6, "description": "Wastelands", "ref_value": 50, "order": 1}, {"id": 7, "description": "Arms with no weapons", "ref_value": 55, "order": 2}], "pendencies_resource": [{"id": 34, "action": "submit", "begin_date": "2017-03-07T20:10:00Z", "end_date": "2017-03-08T20:10:00Z", "limit_date": "2017-03-10T19:10:00Z"}], "groups": [], "students": [], "_my_subclass": "goals", "name": "Future", "slug": "future", "brief_description": "", "show_window": false, "all_students": true, "visible": true, "order": 6, "create_date": "2017-03-06T20:11:11.156470Z", "last_update": "2017-03-08T01:29:03.155215Z", "presentation": "<p>Stands away</p>", "limit_submission_date": "2017-03-11T20:10:00Z"}]] | ||
2 | \ No newline at end of file | 1 | \ No newline at end of file |
2 | +[[{"id": 244, "topic": {"id": 32, "name": "Now Invisble", "slug": "now-invisble", "description": "<p>TIme to</p>", "repository": false, "visible": true, "order": 2, "create_date": "2017-01-17T18:44:24.976186Z", "last_update": "2017-03-08T01:28:52.845818Z"}, "tags": [{"id": 132, "name": "for"}], "pendencies_resource": [], "indicators": "bulletin/indicators/modelo_indicadores_relevantes_1.xls", "file_content": "bulletin/goals/future_a2WWa1X.xls", "_my_subclass": "bulletin", "name": "Left to lose", "slug": "left-to-lose", "brief_description": "<p>New</p>", "show_window": true, "all_students": true, "visible": true, "order": 7, "create_date": "2017-08-05T15:06:49.032110Z", "last_update": "2017-09-02T18:25:26.429883Z", "content": "<p>Lost </p>"}], [{"id": 6, "topic": {"id": 32, "name": "Now Invisble", "slug": "now-invisble", "description": "<p>TIme to</p>", "repository": false, "visible": true, "order": 2, "create_date": "2017-01-17T18:44:24.976186Z", "last_update": "2017-03-08T01:28:52.845818Z"}, "tags": [{"id": 48, "name": "anything"}, {"id": 49, "name": "lsoe"}], "pendencies_resource": [], "_my_subclass": "webpage", "name": "Doug", "slug": "doug", "brief_description": "<p>Today</p>", "show_window": true, "all_students": false, "visible": false, "order": 1, "create_date": "2017-01-23T17:36:14.900287Z", "last_update": "2017-01-24T17:33:39.433016Z", "content": "Freaky man"}, {"id": 20, "topic": {"id": 32, "name": "Now Invisble", "slug": "now-invisble", "description": "<p>TIme to</p>", "repository": false, "visible": true, "order": 2, "create_date": "2017-01-17T18:44:24.976186Z", "last_update": "2017-03-08T01:28:52.845818Z"}, "tags": [{"id": 69, "name": "noine"}, {"id": 70, "name": "nine"}], "pendencies_resource": [], "_my_subclass": "webpage", "name": "Myself", "slug": "myself", "brief_description": "<p>Is up to me</p>", "show_window": false, "all_students": true, "visible": false, "order": 2, "create_date": "2017-01-23T22:59:42.592301Z", "last_update": "2017-01-24T17:34:20.147284Z", "content": "<title>Sold my soul</title><h5>I brought this all <em>upon myself<br>Dont stop me now!!</em></h5>"}, {"id": 42, "topic": {"id": 32, "name": "Now Invisble", "slug": "now-invisble", "description": "<p>TIme to</p>", "repository": false, "visible": true, "order": 2, "create_date": "2017-01-17T18:44:24.976186Z", "last_update": "2017-03-08T01:28:52.845818Z"}, "tags": [{"id": 95, "name": "history"}], "pendencies_resource": [], "_my_subclass": "webpage", "name": "History goes", "slug": "history-goes", "brief_description": "<p>How</p>", "show_window": false, "all_students": false, "visible": false, "order": 4, "create_date": "2017-01-24T21:57:13.600718Z", "last_update": "2017-01-24T21:57:13.812438Z", "content": "<p>ON</p>"}, {"id": 246, "topic": {"id": 32, "name": "Now Invisble", "slug": "now-invisble", "description": "<p>TIme to</p>", "repository": false, "visible": true, "order": 2, "create_date": "2017-01-17T18:44:24.976186Z", "last_update": "2017-03-08T01:28:52.845818Z"}, "tags": [{"id": 133, "name": "peace"}], "pendencies_resource": [], "_my_subclass": "webpage", "name": "Mama", "slug": "mama", "brief_description": "", "show_window": true, "all_students": false, "visible": true, "order": 8, "create_date": "2017-08-28T23:29:41.911603Z", "last_update": "2017-08-28T23:29:42.174255Z", "content": "<p>find out where you've been</p>"}], [{"id": 41, "topic": {"id": 32, "name": "Now Invisble", "slug": "now-invisble", "description": "<p>TIme to</p>", "repository": false, "visible": true, "order": 2, "create_date": "2017-01-17T18:44:24.976186Z", "last_update": "2017-03-08T01:28:52.845818Z"}, "tags": [{"id": 93, "name": "last"}, {"id": 94, "name": "mistake"}], "pendencies_resource": [{"id": 19, "action": "view", "begin_date": "2017-01-26T22:54:00Z", "end_date": "2017-02-10T22:54:00Z", "limit_date": null}], "file_content": "files/formulariobolsista.doc.docx", "_my_subclass": "filelink", "name": "Secret", "slug": "secret", "brief_description": "<p>Do we create a modern myth?</p>", "show_window": true, "all_students": true, "visible": false, "order": 3, "create_date": "2017-01-24T21:55:44.193797Z", "last_update": "2017-01-24T21:55:44.330406Z"}, {"id": 46, "topic": {"id": 32, "name": "Now Invisble", "slug": "now-invisble", "description": "<p>TIme to</p>", "repository": false, "visible": true, "order": 2, "create_date": "2017-01-17T18:44:24.976186Z", "last_update": "2017-03-08T01:28:52.845818Z"}, "tags": [{"id": 100, "name": "just"}, {"id": 101, "name": "game"}], "pendencies_resource": [], "file_content": "files/jutificativa_voto.pdf", "_my_subclass": "filelink", "name": "Personal", "slug": "personal", "brief_description": "<p>Pray All I can do</p><p>Taskani</p>", "show_window": false, "all_students": false, "visible": false, "order": 6, "create_date": "2017-01-25T02:21:38.618190Z", "last_update": "2017-01-25T02:24:26.061727Z"}, {"id": 247, "topic": {"id": 32, "name": "Now Invisble", "slug": "now-invisble", "description": "<p>TIme to</p>", "repository": false, "visible": true, "order": 2, "create_date": "2017-01-17T18:44:24.976186Z", "last_update": "2017-03-08T01:28:52.845818Z"}, "tags": [{"id": 130, "name": ""}], "pendencies_resource": [], "file_content": "files/formulariobolsista.docx", "_my_subclass": "filelink", "name": "Starships", "slug": "starships", "brief_description": "", "show_window": false, "all_students": false, "visible": true, "order": 9, "create_date": "2017-09-01T03:15:21.199226Z", "last_update": "2017-09-01T03:15:22.217754Z"}], [{"id": 71, "topic": {"id": 32, "name": "Now Invisble", "slug": "now-invisble", "description": "<p>TIme to</p>", "repository": false, "visible": true, "order": 2, "create_date": "2017-01-17T18:44:24.976186Z", "last_update": "2017-03-08T01:28:52.845818Z"}, "tags": [{"id": 123, "name": "wastelands"}, {"id": 124, "name": "disapear"}], "item_goal": [{"id": 6, "description": "Wastelands", "ref_value": 50, "order": 1}, {"id": 7, "description": "Arms with no weapons", "ref_value": 55, "order": 2}], "pendencies_resource": [{"id": 34, "action": "submit", "begin_date": "2017-03-07T20:10:00Z", "end_date": "2017-03-08T20:10:00Z", "limit_date": "2017-03-10T19:10:00Z"}], "_my_subclass": "goals", "name": "Future", "slug": "future", "brief_description": "", "show_window": false, "all_students": true, "visible": true, "order": 6, "create_date": "2017-03-06T20:11:11.156470Z", "last_update": "2017-08-04T14:30:58.202411Z", "presentation": "<p>Stands away</p>", "limit_submission_date": "2017-08-04T00:10:00Z"}]] | ||
3 | \ No newline at end of file | 3 | \ No newline at end of file |
bulletin/forms.py
@@ -39,6 +39,8 @@ class BulletinForm(forms.ModelForm): | @@ -39,6 +39,8 @@ class BulletinForm(forms.ModelForm): | ||
39 | widgets = { | 39 | widgets = { |
40 | 'content': forms.Textarea, | 40 | 'content': forms.Textarea, |
41 | 'brief_description': forms.Textarea, | 41 | 'brief_description': forms.Textarea, |
42 | + 'file_content': ResubmitFileWidget(attrs={'accept':'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel,application/vnd.oasis.opendocument.spreadsheet,text/csv'}), | ||
43 | + 'indicators': ResubmitFileWidget(attrs={'accept':'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel,application/vnd.oasis.opendocument.spreadsheet,text/csv'}), | ||
42 | } | 44 | } |
43 | 45 | ||
44 | def clean_name(self): | 46 | def clean_name(self): |
bulletin/locale/pt_BR/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
8 | msgstr "" | 8 | msgstr "" |
9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
11 | -"POT-Creation-Date: 2017-08-30 22:41-0300\n" | 11 | +"POT-Creation-Date: 2017-09-07 22:29-0300\n" |
12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
14 | "Language-Team: LANGUAGE <LL@li.org>\n" | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" |
@@ -30,23 +30,25 @@ msgstr "Nome do boletim" | @@ -30,23 +30,25 @@ msgstr "Nome do boletim" | ||
30 | msgid "Bulletin content" | 30 | msgid "Bulletin content" |
31 | msgstr "Apresentação do boletim" | 31 | msgstr "Apresentação do boletim" |
32 | 32 | ||
33 | -#: bulletin/forms.py:56 | 33 | +#: bulletin/forms.py:58 |
34 | msgid "This subject already has a bulletin with this name" | 34 | msgid "This subject already has a bulletin with this name" |
35 | msgstr "Este assunto já possui um boletim com este nome" | 35 | msgstr "Este assunto já possui um boletim com este nome" |
36 | 36 | ||
37 | -#: bulletin/forms.py:69 bulletin/forms.py:86 | 37 | +#: bulletin/forms.py:71 bulletin/forms.py:88 |
38 | +#: bulletin/templates/bulletin/_form.html:98 | ||
39 | +#: bulletin/templates/bulletin/_form.html:151 | ||
38 | msgid "The file is too large. It should have less than 1MB." | 40 | msgid "The file is too large. It should have less than 1MB." |
39 | msgstr "O arquivo é muito grande. Ele deve ter menos que 1MB." | 41 | msgstr "O arquivo é muito grande. Ele deve ter menos que 1MB." |
40 | 42 | ||
41 | -#: bulletin/forms.py:74 bulletin/forms.py:91 bulletin/forms.py:137 | 43 | +#: bulletin/forms.py:76 bulletin/forms.py:93 bulletin/forms.py:139 |
42 | msgid "This field is required." | 44 | msgid "This field is required." |
43 | msgstr "Este campo é obrigatório." | 45 | msgstr "Este campo é obrigatório." |
44 | 46 | ||
45 | -#: bulletin/forms.py:129 | 47 | +#: bulletin/forms.py:131 |
46 | msgid "Message" | 48 | msgid "Message" |
47 | msgstr "Mensagem" | 49 | msgstr "Mensagem" |
48 | 50 | ||
49 | -#: bulletin/forms.py:149 | 51 | +#: bulletin/forms.py:151 |
50 | msgid "The image is too large. It should have less than 5MB." | 52 | msgid "The image is too large. It should have less than 5MB." |
51 | msgstr "A imagem é muito grande. Ela deve ter menos que 5MB." | 53 | msgstr "A imagem é muito grande. Ela deve ter menos que 5MB." |
52 | 54 | ||
@@ -70,7 +72,7 @@ msgstr "Metas" | @@ -70,7 +72,7 @@ msgstr "Metas" | ||
70 | msgid "Relevant Indicators" | 72 | msgid "Relevant Indicators" |
71 | msgstr "Indicadores Relevantes" | 73 | msgstr "Indicadores Relevantes" |
72 | 74 | ||
73 | -#: bulletin/models.py:25 bulletin/views.py:883 | 75 | +#: bulletin/models.py:25 bulletin/views.py:934 |
74 | msgid "Bulletin" | 76 | msgid "Bulletin" |
75 | msgstr "Boletim" | 77 | msgstr "Boletim" |
76 | 78 | ||
@@ -87,7 +89,7 @@ msgid "Click to download a xls file with the data of the goals" | @@ -87,7 +89,7 @@ msgid "Click to download a xls file with the data of the goals" | ||
87 | msgstr "Clique para baixar um arquivo xls com os dados das metas" | 89 | msgstr "Clique para baixar um arquivo xls com os dados das metas" |
88 | 90 | ||
89 | #: bulletin/templates/bulletin/_form.html:55 | 91 | #: bulletin/templates/bulletin/_form.html:55 |
90 | -#: bulletin/templates/bulletin/_form.html:96 | 92 | +#: bulletin/templates/bulletin/_form.html:109 |
91 | msgid "Choose your file..." | 93 | msgid "Choose your file..." |
92 | msgstr "Escolha seu arquivo..." | 94 | msgstr "Escolha seu arquivo..." |
93 | 95 | ||
@@ -96,35 +98,40 @@ msgid "Click or drop the .xls file with the goals data" | @@ -96,35 +98,40 @@ msgid "Click or drop the .xls file with the goals data" | ||
96 | msgstr "Selecione ou solte o arquivo .xls com os dados das metas" | 98 | msgstr "Selecione ou solte o arquivo .xls com os dados das metas" |
97 | 99 | ||
98 | #: bulletin/templates/bulletin/_form.html:71 | 100 | #: bulletin/templates/bulletin/_form.html:71 |
99 | -#: bulletin/templates/bulletin/_form.html:112 | 101 | +#: bulletin/templates/bulletin/_form.html:125 |
100 | msgid "The file could not exceed 1MB." | 102 | msgid "The file could not exceed 1MB." |
101 | msgstr "O arquivo não pode exceder 1MB." | 103 | msgstr "O arquivo não pode exceder 1MB." |
102 | 104 | ||
103 | -#: bulletin/templates/bulletin/_form.html:110 | 105 | +#: bulletin/templates/bulletin/_form.html:99 |
106 | +#: bulletin/templates/bulletin/_form.html:152 | ||
107 | +msgid "File not supported." | ||
108 | +msgstr "" | ||
109 | + | ||
110 | +#: bulletin/templates/bulletin/_form.html:123 | ||
104 | msgid "Click or drop the .xls file with the indicators data" | 111 | msgid "Click or drop the .xls file with the indicators data" |
105 | msgstr "Selecione ou solte o arquivo .xls com a informação dos indicadores" | 112 | msgstr "Selecione ou solte o arquivo .xls com a informação dos indicadores" |
106 | 113 | ||
107 | -#: bulletin/templates/bulletin/_form.html:132 | 114 | +#: bulletin/templates/bulletin/_form.html:156 |
108 | msgid "Common resources settings" | 115 | msgid "Common resources settings" |
109 | msgstr "Configurações comuns dos recursos" | 116 | msgstr "Configurações comuns dos recursos" |
110 | 117 | ||
111 | -#: bulletin/templates/bulletin/_form.html:182 | 118 | +#: bulletin/templates/bulletin/_form.html:206 |
112 | msgid "Pendencies Notifications" | 119 | msgid "Pendencies Notifications" |
113 | msgstr "Notificação de pendências" | 120 | msgstr "Notificação de pendências" |
114 | 121 | ||
115 | -#: bulletin/templates/bulletin/_form.html:198 | 122 | +#: bulletin/templates/bulletin/_form.html:222 |
116 | msgid "Action not performed by the user" | 123 | msgid "Action not performed by the user" |
117 | msgstr "Ação não realizada pelo usuário" | 124 | msgstr "Ação não realizada pelo usuário" |
118 | 125 | ||
119 | -#: bulletin/templates/bulletin/_form.html:224 | 126 | +#: bulletin/templates/bulletin/_form.html:248 |
120 | msgid "Wished period" | 127 | msgid "Wished period" |
121 | msgstr "Período desejado" | 128 | msgstr "Período desejado" |
122 | 129 | ||
123 | -#: bulletin/templates/bulletin/_form.html:335 | 130 | +#: bulletin/templates/bulletin/_form.html:359 |
124 | msgid "Save" | 131 | msgid "Save" |
125 | msgstr "Salvar" | 132 | msgstr "Salvar" |
126 | 133 | ||
127 | -#: bulletin/templates/bulletin/create.html:20 bulletin/views.py:454 | 134 | +#: bulletin/templates/bulletin/create.html:20 bulletin/views.py:503 |
128 | msgid "Create Bulletin" | 135 | msgid "Create Bulletin" |
129 | msgstr "Criar boletim" | 136 | msgstr "Criar boletim" |
130 | 137 | ||
@@ -189,14 +196,14 @@ msgid "The picture could not exceed 5MB." | @@ -189,14 +196,14 @@ msgid "The picture could not exceed 5MB." | ||
189 | msgstr "A imagem não pode exceder 5MB." | 196 | msgstr "A imagem não pode exceder 5MB." |
190 | 197 | ||
191 | #: bulletin/templates/bulletin/send_message.html:62 | 198 | #: bulletin/templates/bulletin/send_message.html:62 |
192 | -#: bulletin/templates/bulletin/view.html:223 | ||
193 | -#: bulletin/templates/bulletin/window_view.html:234 | 199 | +#: bulletin/templates/bulletin/view.html:235 |
200 | +#: bulletin/templates/bulletin/window_view.html:257 | ||
194 | msgid "Close" | 201 | msgid "Close" |
195 | msgstr "Fechar" | 202 | msgstr "Fechar" |
196 | 203 | ||
197 | #: bulletin/templates/bulletin/send_message.html:63 | 204 | #: bulletin/templates/bulletin/send_message.html:63 |
198 | -#: bulletin/templates/bulletin/view.html:224 | ||
199 | -#: bulletin/templates/bulletin/window_view.html:235 | 205 | +#: bulletin/templates/bulletin/view.html:236 |
206 | +#: bulletin/templates/bulletin/window_view.html:258 | ||
200 | msgid "Send" | 207 | msgid "Send" |
201 | msgstr "Enviar" | 208 | msgstr "Enviar" |
202 | 209 | ||
@@ -204,50 +211,55 @@ msgstr "Enviar" | @@ -204,50 +211,55 @@ msgstr "Enviar" | ||
204 | msgid "Edit: " | 211 | msgid "Edit: " |
205 | msgstr "Editar: " | 212 | msgstr "Editar: " |
206 | 213 | ||
207 | -#: bulletin/templates/bulletin/view.html:203 | ||
208 | -#: bulletin/templates/bulletin/window_view.html:214 | 214 | +#: bulletin/templates/bulletin/view.html:215 |
215 | +#: bulletin/templates/bulletin/window_view.html:237 | ||
209 | msgid "There are obstructions to your activities?" | 216 | msgid "There are obstructions to your activities?" |
210 | msgstr "Existem impedimentos para as suas atividades?" | 217 | msgstr "Existem impedimentos para as suas atividades?" |
211 | 218 | ||
212 | -#: bulletin/templates/bulletin/view.html:204 | ||
213 | -#: bulletin/templates/bulletin/window_view.html:215 | 219 | +#: bulletin/templates/bulletin/view.html:216 |
220 | +#: bulletin/templates/bulletin/window_view.html:238 | ||
214 | msgid "Click here" | 221 | msgid "Click here" |
215 | msgstr "Clique aqui" | 222 | msgstr "Clique aqui" |
216 | 223 | ||
217 | -#: bulletin/templates/bulletin/view.html:204 | ||
218 | -#: bulletin/templates/bulletin/window_view.html:215 | 224 | +#: bulletin/templates/bulletin/view.html:216 |
225 | +#: bulletin/templates/bulletin/window_view.html:238 | ||
219 | msgid "to communicate the difficulties that may decrease your performance." | 226 | msgid "to communicate the difficulties that may decrease your performance." |
220 | msgstr "para informar as dificuldades que podem prejudicar seu desempenho." | 227 | msgstr "para informar as dificuldades que podem prejudicar seu desempenho." |
221 | 228 | ||
222 | -#: bulletin/templates/bulletin/view.html:219 | ||
223 | -#: bulletin/templates/bulletin/window_view.html:230 | 229 | +#: bulletin/templates/bulletin/view.html:231 |
230 | +#: bulletin/templates/bulletin/window_view.html:253 | ||
224 | msgid "Type here the dificulties that may harm your performance" | 231 | msgid "Type here the dificulties that may harm your performance" |
225 | msgstr "Escreva aqui as dificuldades que podem diminuir sua performance" | 232 | msgstr "Escreva aqui as dificuldades que podem diminuir sua performance" |
226 | 233 | ||
227 | -#: bulletin/utils.py:50 bulletin/views.py:950 | 234 | +#: bulletin/utils.py:47 bulletin/views.py:1021 |
228 | #, python-format | 235 | #, python-format |
229 | msgid "Last message in %s" | 236 | msgid "Last message in %s" |
230 | msgstr "Última mensagem em %s" | 237 | msgstr "Última mensagem em %s" |
231 | 238 | ||
232 | -#: bulletin/views.py:84 bulletin/views.py:227 | 239 | +#: bulletin/views.py:87 |
233 | #, python-format | 240 | #, python-format |
234 | -msgid "#Dificulty(ies) found in %s" | 241 | +msgid "#Difficulty(ies) found in %s" |
235 | msgstr "#Dificuldade(s) encontrada(s) em %s" | 242 | msgstr "#Dificuldade(s) encontrada(s) em %s" |
236 | 243 | ||
237 | -#: bulletin/views.py:88 bulletin/views.py:231 | 244 | +#: bulletin/views.py:113 bulletin/views.py:280 |
238 | msgid "Difficulties sent to the subject professor(s)" | 245 | msgid "Difficulties sent to the subject professor(s)" |
239 | msgstr "Dificuldades enviadas para o(s) professor(es) do assunto" | 246 | msgstr "Dificuldades enviadas para o(s) professor(es) do assunto" |
240 | 247 | ||
241 | -#: bulletin/views.py:91 bulletin/views.py:234 | 248 | +#: bulletin/views.py:117 bulletin/views.py:283 |
242 | msgid "You should inform some difficulty" | 249 | msgid "You should inform some difficulty" |
243 | msgstr "Você deve informar alguma dificuldade" | 250 | msgstr "Você deve informar alguma dificuldade" |
244 | 251 | ||
245 | -#: bulletin/views.py:351 | 252 | +#: bulletin/views.py:254 |
253 | +#, python-format | ||
254 | +msgid "#Dificulty(ies) found in %s" | ||
255 | +msgstr "#Dificuldade(s) encontrada(s) em %s" | ||
256 | + | ||
257 | +#: bulletin/views.py:400 | ||
246 | #, python-format | 258 | #, python-format |
247 | msgid "The topic %s has no goals, so you can't create a Bulletin." | 259 | msgid "The topic %s has no goals, so you can't create a Bulletin." |
248 | msgstr "O tópico %s não possui metas, então você não pode criar um Boletim." | 260 | msgstr "O tópico %s não possui metas, então você não pode criar um Boletim." |
249 | 261 | ||
250 | -#: bulletin/views.py:358 | 262 | +#: bulletin/views.py:407 |
251 | #, python-format | 263 | #, python-format |
252 | msgid "" | 264 | msgid "" |
253 | "The deadline to submit the goals of the topic %s has not yet closed, so you " | 265 | "The deadline to submit the goals of the topic %s has not yet closed, so you " |
@@ -256,17 +268,17 @@ msgstr "" | @@ -256,17 +268,17 @@ msgstr "" | ||
256 | "O prazo para submeter as metas do tópico %s ainda não foi fechado, então " | 268 | "O prazo para submeter as metas do tópico %s ainda não foi fechado, então " |
257 | "você não pode criar um Boletim." | 269 | "você não pode criar um Boletim." |
258 | 270 | ||
259 | -#: bulletin/views.py:363 | 271 | +#: bulletin/views.py:412 |
260 | #, python-format | 272 | #, python-format |
261 | msgid "The topic %s already has a Bulletin, so you can't create another." | 273 | msgid "The topic %s already has a Bulletin, so you can't create another." |
262 | msgstr "O tópico %s já possui um Boletim, então você não pode criar outro." | 274 | msgstr "O tópico %s já possui um Boletim, então você não pode criar outro." |
263 | 275 | ||
264 | -#: bulletin/views.py:381 bulletin/views.py:394 bulletin/views.py:663 | ||
265 | -#: bulletin/views.py:665 bulletin/views.py:681 bulletin/views.py:683 | 276 | +#: bulletin/views.py:430 bulletin/views.py:443 bulletin/views.py:713 |
277 | +#: bulletin/views.py:715 bulletin/views.py:731 bulletin/views.py:733 | ||
266 | msgid "Visualize" | 278 | msgid "Visualize" |
267 | msgstr "Visualizar" | 279 | msgstr "Visualizar" |
268 | 280 | ||
269 | -#: bulletin/views.py:474 | 281 | +#: bulletin/views.py:524 |
270 | #, python-format | 282 | #, python-format |
271 | msgid "" | 283 | msgid "" |
272 | "The Bulletin \"%s\" was added to the Topic \"%s\" of the virtual environment " | 284 | "The Bulletin \"%s\" was added to the Topic \"%s\" of the virtual environment " |
@@ -275,58 +287,58 @@ msgstr "" | @@ -275,58 +287,58 @@ msgstr "" | ||
275 | "O Boletim \"%s\" foi adicionado ao Tópio \"%s\" do ambiente virtual \"%s\" " | 287 | "O Boletim \"%s\" foi adicionado ao Tópio \"%s\" do ambiente virtual \"%s\" " |
276 | "com sucesso!" | 288 | "com sucesso!" |
277 | 289 | ||
278 | -#: bulletin/views.py:727 | 290 | +#: bulletin/views.py:777 |
279 | msgid "Update Bulletin" | 291 | msgid "Update Bulletin" |
280 | msgstr "Atualizar boletim" | 292 | msgstr "Atualizar boletim" |
281 | 293 | ||
282 | -#: bulletin/views.py:745 | 294 | +#: bulletin/views.py:796 |
283 | #, python-format | 295 | #, python-format |
284 | msgid "The Bulletin \"%s\" was updated successfully!" | 296 | msgid "The Bulletin \"%s\" was updated successfully!" |
285 | msgstr "O Boletim \"%s\" foi atualizado com sucesso!" | 297 | msgstr "O Boletim \"%s\" foi atualizado com sucesso!" |
286 | 298 | ||
287 | -#: bulletin/views.py:781 | 299 | +#: bulletin/views.py:832 |
288 | #, python-format | 300 | #, python-format |
289 | msgid "" | 301 | msgid "" |
290 | "The bulletin \"%s\" was removed successfully from virtual environment \"%s\"!" | 302 | "The bulletin \"%s\" was removed successfully from virtual environment \"%s\"!" |
291 | msgstr "O boletim \"%s\" foi removido com sucesso do ambiente virtual \"%s\"! " | 303 | msgstr "O boletim \"%s\" foi removido com sucesso do ambiente virtual \"%s\"! " |
292 | 304 | ||
293 | -#: bulletin/views.py:840 | 305 | +#: bulletin/views.py:891 |
294 | msgid "Bulletin Reports" | 306 | msgid "Bulletin Reports" |
295 | msgstr "Relatórios do Boletim" | 307 | msgstr "Relatórios do Boletim" |
296 | 308 | ||
297 | -#: bulletin/views.py:859 | 309 | +#: bulletin/views.py:910 |
298 | msgid "Realized" | 310 | msgid "Realized" |
299 | msgstr "Realizada" | 311 | msgstr "Realizada" |
300 | 312 | ||
301 | -#: bulletin/views.py:859 | 313 | +#: bulletin/views.py:910 |
302 | msgid "Unrealized" | 314 | msgid "Unrealized" |
303 | msgstr "Não realizada" | 315 | msgstr "Não realizada" |
304 | 316 | ||
305 | -#: bulletin/views.py:859 | 317 | +#: bulletin/views.py:910 |
306 | msgid "Historic" | 318 | msgid "Historic" |
307 | msgstr "Histórico" | 319 | msgstr "Histórico" |
308 | 320 | ||
309 | -#: bulletin/views.py:874 bulletin/views.py:882 | 321 | +#: bulletin/views.py:925 bulletin/views.py:933 |
310 | msgid "View" | 322 | msgid "View" |
311 | msgstr "Visualizar" | 323 | msgstr "Visualizar" |
312 | 324 | ||
313 | -#: bulletin/views.py:888 | 325 | +#: bulletin/views.py:939 |
314 | msgid "Actions about resource" | 326 | msgid "Actions about resource" |
315 | msgstr "Ações sobre o recurso" | 327 | msgstr "Ações sobre o recurso" |
316 | 328 | ||
317 | -#: bulletin/views.py:889 | 329 | +#: bulletin/views.py:940 |
318 | msgid "Quantity" | 330 | msgid "Quantity" |
319 | msgstr "Quantidade" | 331 | msgstr "Quantidade" |
320 | 332 | ||
321 | -#: bulletin/views.py:938 | 333 | +#: bulletin/views.py:1009 |
322 | msgid "[Photo]" | 334 | msgid "[Photo]" |
323 | msgstr "[Foto]" | 335 | msgstr "[Foto]" |
324 | 336 | ||
325 | -#: bulletin/views.py:959 | 337 | +#: bulletin/views.py:1030 |
326 | msgid "The message was successfull sent!" | 338 | msgid "The message was successfull sent!" |
327 | msgstr "A mensagem foi enviada com sucesso!" | 339 | msgstr "A mensagem foi enviada com sucesso!" |
328 | 340 | ||
329 | -#: bulletin/views.py:961 | 341 | +#: bulletin/views.py:1032 |
330 | msgid "No user selected!" | 342 | msgid "No user selected!" |
331 | msgstr "Nenhum usuário selecionado!" | 343 | msgstr "Nenhum usuário selecionado!" |
332 | 344 |
bulletin/models.py
@@ -6,12 +6,12 @@ from django.core.urlresolvers import reverse_lazy | @@ -6,12 +6,12 @@ from django.core.urlresolvers import reverse_lazy | ||
6 | 6 | ||
7 | from topics.models import Resource | 7 | from topics.models import Resource |
8 | 8 | ||
9 | -def validate_file_extension(value): | ||
10 | - valid_formats = [ | ||
11 | - 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', | ||
12 | - 'application/vnd.ms-excel','application/vnd.oasis.opendocument.spreadsheet','text/csv' | ||
13 | - ] | 9 | +valid_formats = [ |
10 | + 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', | ||
11 | + 'application/vnd.ms-excel','application/vnd.oasis.opendocument.spreadsheet','text/csv' | ||
12 | +] | ||
14 | 13 | ||
14 | +def validate_file_extension(value): | ||
15 | if hasattr(value.file, 'content_type'): | 15 | if hasattr(value.file, 'content_type'): |
16 | if not value.file.content_type in valid_formats: | 16 | if not value.file.content_type in valid_formats: |
17 | raise ValidationError(_('Please select a valid file. The uploaded file must have one of the following extensions: .csv, .xlx, .xls and .xlsx')) | 17 | raise ValidationError(_('Please select a valid file. The uploaded file must have one of the following extensions: .csv, .xlx, .xls and .xlsx')) |
@@ -0,0 +1,369 @@ | @@ -0,0 +1,369 @@ | ||
1 | +import os | ||
2 | +import zipfile | ||
3 | +import time | ||
4 | +from django.conf import settings | ||
5 | +from django.core.files import File | ||
6 | +from rest_framework import serializers | ||
7 | +from django.shortcuts import get_object_or_404 | ||
8 | + | ||
9 | +from subjects.serializers import TagSerializer | ||
10 | +from topics.serializers import TopicSerializer | ||
11 | +from pendencies.serializers import PendenciesSerializer | ||
12 | +from students_group.serializers import StudentsGroupSerializer | ||
13 | +from users.serializers import UserBackupSerializer | ||
14 | + | ||
15 | +from subjects.models import Tag, Subject | ||
16 | +from topics.models import Topic, Resource | ||
17 | +from pendencies.models import Pendencies | ||
18 | +from students_group.models import StudentsGroup | ||
19 | +from log.models import Log | ||
20 | +from users.models import User | ||
21 | + | ||
22 | +from .models import Bulletin | ||
23 | + | ||
24 | +class SimpleBulletinSerializer(serializers.ModelSerializer): | ||
25 | + topic = TopicSerializer('get_subject') | ||
26 | + tags = TagSerializer(many = True) | ||
27 | + pendencies_resource = PendenciesSerializer(many = True) | ||
28 | + indicators = serializers.CharField(required = False, allow_blank = True, max_length = 255) | ||
29 | + file_content = serializers.CharField(required = False, allow_blank = True, max_length = 255) | ||
30 | + | ||
31 | + def get_subject(self, obj): | ||
32 | + subject = self.context.get("subject", None) | ||
33 | + | ||
34 | + return subject | ||
35 | + | ||
36 | + def validate(self, data): | ||
37 | + files = self.context.get('files', None) | ||
38 | + | ||
39 | + if files: | ||
40 | + if data["file_content"] in files.namelist(): | ||
41 | + file_path = os.path.join(settings.MEDIA_ROOT, data["file_content"]) | ||
42 | + | ||
43 | + if os.path.isfile(file_path): | ||
44 | + dst_path = os.path.join(settings.MEDIA_ROOT, "tmp") | ||
45 | + | ||
46 | + path = files.extract(data["file_content"], dst_path) | ||
47 | + | ||
48 | + new_name = "goal_" + str(time.time()) + os.path.splitext(data["file_content"])[1] | ||
49 | + | ||
50 | + new_path = os.path.join("bulletin", os.path.join("goals", new_name)) | ||
51 | + | ||
52 | + os.rename(os.path.join(dst_path, path), os.path.join(settings.MEDIA_ROOT, new_path)) | ||
53 | + | ||
54 | + data["file_content"] = new_path | ||
55 | + else: | ||
56 | + path = files.extract(data["file_content"], settings.MEDIA_ROOT) | ||
57 | + else: | ||
58 | + data["file_content"] = None | ||
59 | + | ||
60 | + if data["indicators"] in files.namelist(): | ||
61 | + file_path = os.path.join(settings.MEDIA_ROOT, data["indicators"]) | ||
62 | + | ||
63 | + if os.path.isfile(file_path): | ||
64 | + dst_path = os.path.join(settings.MEDIA_ROOT, "tmp") | ||
65 | + | ||
66 | + path = files.extract(data["indicators"], dst_path) | ||
67 | + | ||
68 | + new_name = "ind_" + str(time.time()) + os.path.splitext(data["indicators"])[1] | ||
69 | + | ||
70 | + new_path = os.path.join("bulletin", os.path.join("indicators", new_name)) | ||
71 | + | ||
72 | + os.rename(os.path.join(dst_path, path), os.path.join(settings.MEDIA_ROOT, new_path)) | ||
73 | + | ||
74 | + data["indicators"] = new_path | ||
75 | + else: | ||
76 | + path = files.extract(data["indicators"], settings.MEDIA_ROOT) | ||
77 | + else: | ||
78 | + data["indicators"] = None | ||
79 | + else: | ||
80 | + data["file_content"] = None | ||
81 | + data["indicators"] = None | ||
82 | + | ||
83 | + return data | ||
84 | + | ||
85 | + class Meta: | ||
86 | + model = Bulletin | ||
87 | + extra_kwargs = { | ||
88 | + "tags": { | ||
89 | + "validators": [], | ||
90 | + }, | ||
91 | + } | ||
92 | + exclude = ('students', 'groups',) | ||
93 | + validators = [] | ||
94 | + | ||
95 | + def create(self, data): | ||
96 | + topic = data['topic'] | ||
97 | + | ||
98 | + bulletin = None | ||
99 | + | ||
100 | + if not topic["id"] is None: | ||
101 | + if "subject" in topic: | ||
102 | + r_exits = Resource.objects.filter(topic__subject = topic["subject"], name__unaccent__iexact = data["name"]) | ||
103 | + else: | ||
104 | + r_exits = Resource.objects.filter(topic__subject__id = topic["subject_id"], name__unaccent__iexact = data["name"]) | ||
105 | + | ||
106 | + if not r_exits.exists(): | ||
107 | + if topic['id'] == "": | ||
108 | + topic_exist = Topic.objects.filter(subject = topic['subject'], name__unaccent__iexact = topic["name"]) | ||
109 | + | ||
110 | + if topic_exist.exists(): | ||
111 | + topic = topic_exist[0] | ||
112 | + else: | ||
113 | + topic = Topic.objects.create(name = topic['name'], subject = topic['subject'], repository = topic['repository'], visible = topic['visible'], order = topic['order'], description = topic['description']) | ||
114 | + | ||
115 | + data["topic"] = topic | ||
116 | + else: | ||
117 | + data["topic"] = get_object_or_404(Topic, id = topic["id"]) | ||
118 | + | ||
119 | + bulletin_data = data | ||
120 | + | ||
121 | + pendencies = bulletin_data["pendencies_resource"] | ||
122 | + del bulletin_data["pendencies_resource"] | ||
123 | + | ||
124 | + bulletin = Bulletin() | ||
125 | + bulletin.name = bulletin_data["name"] | ||
126 | + bulletin.brief_description = bulletin_data["brief_description"] | ||
127 | + bulletin.show_window = bulletin_data["show_window"] | ||
128 | + bulletin.all_students = bulletin_data["all_students"] | ||
129 | + bulletin.visible = bulletin_data["visible"] | ||
130 | + bulletin.order = bulletin_data["order"] | ||
131 | + bulletin.topic = bulletin_data["topic"] | ||
132 | + bulletin.content = bulletin_data["content"] | ||
133 | + bulletin.file_content = bulletin_data["file_content"] | ||
134 | + bulletin.indicators = bulletin_data["indicators"] | ||
135 | + | ||
136 | + bulletin.save() | ||
137 | + | ||
138 | + tags = data["tags"] | ||
139 | + | ||
140 | + for tag in tags: | ||
141 | + if not tag["name"] == "": | ||
142 | + if tag["id"] == "": | ||
143 | + tag = Tag.objects.create(name = tag["name"]) | ||
144 | + else: | ||
145 | + tag = get_object_or_404(Tag, id = tag["id"]) | ||
146 | + | ||
147 | + bulletin.tags.add(tag) | ||
148 | + | ||
149 | + resource = get_object_or_404(Resource, id = bulletin.id) | ||
150 | + | ||
151 | + for pend in pendencies: | ||
152 | + Pendencies.objects.create(resource = resource, **pend) | ||
153 | + | ||
154 | + return bulletin | ||
155 | + | ||
156 | + def update(self, instance, data): | ||
157 | + return instance | ||
158 | + | ||
159 | +class CompleteBulletinSerializer(serializers.ModelSerializer): | ||
160 | + topic = TopicSerializer('get_subject') | ||
161 | + tags = TagSerializer(many = True) | ||
162 | + pendencies_resource = PendenciesSerializer(many = True) | ||
163 | + groups = StudentsGroupSerializer('get_files', many = True) | ||
164 | + students = UserBackupSerializer('get_files', many = True) | ||
165 | + indicators = serializers.CharField(required = False, allow_blank = True, max_length = 255) | ||
166 | + file_content = serializers.CharField(required = False, allow_blank = True, max_length = 255) | ||
167 | + | ||
168 | + def get_subject(self, obj): | ||
169 | + subject = self.context.get("subject", None) | ||
170 | + | ||
171 | + return subject | ||
172 | + | ||
173 | + def get_files(self, obj): | ||
174 | + files = self.context.get("files", None) | ||
175 | + | ||
176 | + return files | ||
177 | + | ||
178 | + def validate(self, data): | ||
179 | + files = self.context.get('files', None) | ||
180 | + | ||
181 | + if files: | ||
182 | + if data["file_content"] in files.namelist(): | ||
183 | + file_path = os.path.join(settings.MEDIA_ROOT, data["file_content"]) | ||
184 | + | ||
185 | + if os.path.isfile(file_path): | ||
186 | + dst_path = os.path.join(settings.MEDIA_ROOT, "tmp") | ||
187 | + | ||
188 | + path = files.extract(data["file_content"], dst_path) | ||
189 | + | ||
190 | + new_name = "goal_" + str(time.time()) + os.path.splitext(data["file_content"])[1] | ||
191 | + | ||
192 | + new_path = os.path.join("bulletin", os.path.join("goals", new_name)) | ||
193 | + | ||
194 | + os.rename(os.path.join(dst_path, path), os.path.join(settings.MEDIA_ROOT, new_path)) | ||
195 | + | ||
196 | + data["file_content"] = new_path | ||
197 | + else: | ||
198 | + path = files.extract(data["file_content"], settings.MEDIA_ROOT) | ||
199 | + else: | ||
200 | + data["file_content"] = None | ||
201 | + | ||
202 | + if data["indicators"] in files.namelist(): | ||
203 | + file_path = os.path.join(settings.MEDIA_ROOT, data["indicators"]) | ||
204 | + | ||
205 | + if os.path.isfile(file_path): | ||
206 | + dst_path = os.path.join(settings.MEDIA_ROOT, "tmp") | ||
207 | + | ||
208 | + path = files.extract(data["indicators"], dst_path) | ||
209 | + | ||
210 | + new_name = "ind_" + str(time.time()) + os.path.splitext(data["indicators"])[1] | ||
211 | + | ||
212 | + new_path = os.path.join("bulletin", os.path.join("indicators", new_name)) | ||
213 | + | ||
214 | + os.rename(os.path.join(dst_path, path), os.path.join(settings.MEDIA_ROOT, new_path)) | ||
215 | + | ||
216 | + data["indicators"] = new_path | ||
217 | + else: | ||
218 | + path = files.extract(data["indicators"], settings.MEDIA_ROOT) | ||
219 | + else: | ||
220 | + data["indicators"] = None | ||
221 | + else: | ||
222 | + data["file_content"] = None | ||
223 | + data["indicators"] = None | ||
224 | + | ||
225 | + return data | ||
226 | + | ||
227 | + class Meta: | ||
228 | + model = Bulletin | ||
229 | + extra_kwargs = { | ||
230 | + "tags": { | ||
231 | + "validators": [], | ||
232 | + }, | ||
233 | + } | ||
234 | + fields = '__all__' | ||
235 | + validators = [] | ||
236 | + | ||
237 | + def create(self, data): | ||
238 | + topic = data['topic'] | ||
239 | + | ||
240 | + bulletin = None | ||
241 | + | ||
242 | + if not topic["id"] is None: | ||
243 | + if "subject" in topic: | ||
244 | + r_exits = Resource.objects.filter(topic__subject = topic["subject"], name__unaccent__iexact = data["name"]) | ||
245 | + else: | ||
246 | + r_exits = Resource.objects.filter(topic__subject__id = topic["subject_id"], name__unaccent__iexact = data["name"]) | ||
247 | + | ||
248 | + if not r_exits.exists(): | ||
249 | + if topic['id'] == "": | ||
250 | + topic_exist = Topic.objects.filter(subject = topic['subject'], name__unaccent__iexact = topic["name"]) | ||
251 | + | ||
252 | + if topic_exist.exists(): | ||
253 | + topic = topic_exist[0] | ||
254 | + else: | ||
255 | + topic = Topic.objects.create(name = topic['name'], subject = topic['subject'], repository = topic['repository'], visible = topic['visible'], order = topic['order'], description = topic['description']) | ||
256 | + | ||
257 | + data["topic"] = topic | ||
258 | + else: | ||
259 | + data["topic"] = get_object_or_404(Topic, id = topic["id"]) | ||
260 | + | ||
261 | + bulletin_data = data | ||
262 | + | ||
263 | + pendencies = bulletin_data["pendencies_resource"] | ||
264 | + del bulletin_data["pendencies_resource"] | ||
265 | + | ||
266 | + bulletin = Bulletin() | ||
267 | + bulletin.name = bulletin_data["name"] | ||
268 | + bulletin.brief_description = bulletin_data["brief_description"] | ||
269 | + bulletin.show_window = bulletin_data["show_window"] | ||
270 | + bulletin.all_students = bulletin_data["all_students"] | ||
271 | + bulletin.visible = bulletin_data["visible"] | ||
272 | + bulletin.order = bulletin_data["order"] | ||
273 | + bulletin.topic = bulletin_data["topic"] | ||
274 | + bulletin.content = bulletin_data["content"] | ||
275 | + bulletin.file_content = bulletin_data["file_content"] | ||
276 | + bulletin.indicators = bulletin_data["indicators"] | ||
277 | + | ||
278 | + bulletin.save() | ||
279 | + | ||
280 | + tags = data["tags"] | ||
281 | + | ||
282 | + for tag in tags: | ||
283 | + if not tag["name"] == "": | ||
284 | + if tag["id"] == "": | ||
285 | + tag = Tag.objects.create(name = tag["name"]) | ||
286 | + else: | ||
287 | + tag = get_object_or_404(Tag, id = tag["id"]) | ||
288 | + | ||
289 | + bulletin.tags.add(tag) | ||
290 | + | ||
291 | + resource = get_object_or_404(Resource, id = bulletin.id) | ||
292 | + | ||
293 | + students = data["students"] | ||
294 | + subject = get_object_or_404(Subject, slug = self.context.get("subject", None)) | ||
295 | + | ||
296 | + for student_data in students: | ||
297 | + logs = student_data["get_items"] | ||
298 | + | ||
299 | + if student_data["id"] == "": | ||
300 | + u_exist = User.objects.filter(email = student_data["email"]) | ||
301 | + | ||
302 | + if not u_exist.exists(): | ||
303 | + student = u_exist[0] | ||
304 | + | ||
305 | + for log in logs: | ||
306 | + log["user_id"] = student.id | ||
307 | + | ||
308 | + l_exists = Log.objects.filter(user_id = log["user_id"], user = log["user"], user_email = log["user_email"], action = log["action"], resource = log["resource"], component = log["component"], context = log["context"]) | ||
309 | + | ||
310 | + if not l_exists.exists(): | ||
311 | + Log.objects.create(**log) | ||
312 | + else: | ||
313 | + student = User() | ||
314 | + student.email = student_data["email"] | ||
315 | + student.username = student_data["username"] | ||
316 | + student.last_name = student_data["last_name"] | ||
317 | + student.social_name = student_data["social_name"] | ||
318 | + student.show_email = student_data["show_email"] | ||
319 | + student.is_staff = student_data["is_staff"] | ||
320 | + student.is_active = student_data["is_active"] | ||
321 | + student.image = student_data["image"] | ||
322 | + | ||
323 | + student.save() | ||
324 | + | ||
325 | + for log in logs: | ||
326 | + log["user_id"] = student.id | ||
327 | + | ||
328 | + Log.objects.create(**log) | ||
329 | + else: | ||
330 | + student = get_object_or_404(User, id = student_data["id"]) | ||
331 | + | ||
332 | + for log in logs: | ||
333 | + l_exists = Log.objects.filter(user_id = log["user_id"], user = log["user"], user_email = log["user_email"], action = log["action"], resource = log["resource"], component = log["component"], context = log["context"]) | ||
334 | + | ||
335 | + if not l_exists.exists(): | ||
336 | + Log.objects.create(**log) | ||
337 | + | ||
338 | + bulletin.students.add(student) | ||
339 | + subject.students.add(student) | ||
340 | + | ||
341 | + groups = data["groups"] | ||
342 | + | ||
343 | + for group_data in groups: | ||
344 | + g_exists = StudentsGroup.objects.filter(subject = subject, slug = group_data["slug"]) | ||
345 | + | ||
346 | + if g_exists.exists(): | ||
347 | + group = g_exists[0] | ||
348 | + else: | ||
349 | + group = StudentsGroup() | ||
350 | + group.name = group_data["name"] | ||
351 | + group.description = group_data["description"] | ||
352 | + group.subject = subject | ||
353 | + | ||
354 | + group.save() | ||
355 | + | ||
356 | + for participant in group_data["participants"]: | ||
357 | + p_user = get_object_or_404(User, email = participant["email"]) | ||
358 | + | ||
359 | + group.participants.add(p_user) | ||
360 | + | ||
361 | + bulletin.groups.add(group) | ||
362 | + | ||
363 | + for pend in pendencies: | ||
364 | + Pendencies.objects.create(resource = resource, **pend) | ||
365 | + | ||
366 | + return bulletin | ||
367 | + | ||
368 | + def update(self, instance, data): | ||
369 | + return instance | ||
0 | \ No newline at end of file | 370 | \ No newline at end of file |
No preview for this file type
No preview for this file type
bulletin/static/css/estilo.css
@@ -2,7 +2,7 @@ body,html{ | @@ -2,7 +2,7 @@ body,html{ | ||
2 | margin: 0; | 2 | margin: 0; |
3 | padding: 0; | 3 | padding: 0; |
4 | font-family: "Roboto", sans-serif; | 4 | font-family: "Roboto", sans-serif; |
5 | - font-size: 0.95em; | 5 | + /*font-size: 0.95em;*/ |
6 | } | 6 | } |
7 | 7 | ||
8 | .axis path, | 8 | .axis path, |
@@ -25,11 +25,24 @@ body,html{ | @@ -25,11 +25,24 @@ body,html{ | ||
25 | display: none; | 25 | display: none; |
26 | min-width: 20px; | 26 | min-width: 20px; |
27 | height: 105px; | 27 | height: 105px; |
28 | - background: none repeat scroll 0 0 #000; | ||
29 | - border: 2px solid #ccc; | ||
30 | - border-radius:10px; | 28 | + background: none repeat scroll 0 0 #525252; |
29 | + border: 2px solid #f5f5f5; | ||
30 | + border-radius:5px; | ||
31 | padding: 10px; | 31 | padding: 10px; |
32 | text-align: center; | 32 | text-align: center; |
33 | color: #fff; | 33 | color: #fff; |
34 | - opacity: 0.8; | 34 | + opacity: 0.95; |
35 | + font-size: 14px; | ||
36 | +} | ||
37 | + | ||
38 | +.grey-tooltip + .tooltip > .tooltip-inner { | ||
39 | + background-color: #666666; | ||
40 | + border: 2px solid #f5f5f5; | ||
41 | + border-radius:5px; | ||
42 | + opacity: 0.95; | ||
43 | + color:#f9f9f9; | ||
44 | + padding: 10px; | ||
45 | + font-size: 14px; | ||
46 | + margin-top: -9px; | ||
47 | + min-width: 190px; | ||
35 | } | 48 | } |
bulletin/templates/bulletin/_form.html
1 | {% load static i18n %} | 1 | {% load static i18n %} |
2 | {% load widget_tweaks %} | 2 | {% load widget_tweaks %} |
3 | 3 | ||
4 | -<form method="post" action="" enctype="multipart/form-data"> | 4 | +<form id="bulletin" method="post" action="" enctype="multipart/form-data"> |
5 | {% csrf_token %} | 5 | {% csrf_token %} |
6 | 6 | ||
7 | {% render_field form.control_subject %} | 7 | {% render_field form.control_subject %} |
@@ -48,8 +48,8 @@ | @@ -48,8 +48,8 @@ | ||
48 | 48 | ||
49 | <label for="{{ form.file_content.auto_id }}">{{ form.file_content.label }} <span>*</span></label> | 49 | <label for="{{ form.file_content.auto_id }}">{{ form.file_content.label }} <span>*</span></label> |
50 | <a href="{% url 'bulletin:download_file' file=goal_file %}"> {% trans "Click to download a xls file with the data of the goals" %}</a> | 50 | <a href="{% url 'bulletin:download_file' file=goal_file %}"> {% trans "Click to download a xls file with the data of the goals" %}</a> |
51 | - <div class="form-group{% if form.has_error %} has-error {% endif %} is-fileinput"> | ||
52 | - {% render_field form.file_content class='file-selector' %} | 51 | + <div class="form-group{% if form.has_error %} has-error {% endif %} is-fileinput" data-file_id="{{ form.file_content.auto_id }}"> |
52 | + {% render_field form.file_content class='file-selector' data-max_size="1" data-mimetypes=mimeTypes %} | ||
53 | 53 | ||
54 | <div class="input-group common-file-input"> | 54 | <div class="input-group common-file-input"> |
55 | <input type="text" readonly="" class="form-control" placeholder="{% trans 'Choose your file...' %}"> | 55 | <input type="text" readonly="" class="form-control" placeholder="{% trans 'Choose your file...' %}"> |
@@ -74,23 +74,36 @@ | @@ -74,23 +74,36 @@ | ||
74 | 74 | ||
75 | <span id="helpBlock" class="help-block">{{ form.file_content.help_text }}</span> | 75 | <span id="helpBlock" class="help-block">{{ form.file_content.help_text }}</span> |
76 | 76 | ||
77 | - {% if form.file_content.errors %} | ||
78 | - <div class="alert alert-danger alert-dismissible" role="alert"> | ||
79 | - <button type="button" class="close" data-dismiss="alert" aria-label="Close"> | ||
80 | - <span aria-hidden="true">×</span> | ||
81 | - </button> | ||
82 | - <ul> | ||
83 | - {% for error in form.file_content.errors %} | ||
84 | - <li>{{ error }}</li> | ||
85 | - {% endfor %} | ||
86 | - </ul> | ||
87 | - </div> | ||
88 | - {% endif %} | 77 | + |
78 | + </div> | ||
79 | + | ||
80 | + {% if form.file_content.errors %} | ||
81 | + <div class="alert alert-danger alert-dismissible" role="alert"> | ||
82 | + <button type="button" class="close" data-dismiss="alert" aria-label="Close"> | ||
83 | + <span aria-hidden="true">×</span> | ||
84 | + </button> | ||
85 | + <ul> | ||
86 | + {% for error in form.file_content.errors %} | ||
87 | + <li>{{ error }}</li> | ||
88 | + {% endfor %} | ||
89 | + </ul> | ||
90 | + </div> | ||
91 | + {% endif %} | ||
92 | + | ||
93 | + <div class="col-lg-12 col-md-12 col-sm-12 alert alert-danger alert-dismissible {{ form.file_content.auto_id }}-file-errors" style="display:none" role="alert"> | ||
94 | + <button type="button" class="close" data-dismiss="alert" aria-label="Close"> | ||
95 | + <span aria-hidden="true">×</span> | ||
96 | + </button> | ||
97 | + <ul> | ||
98 | + <li class="size" style="display:none">{% trans "The file is too large. It should have less than 1MB." %}</li> | ||
99 | + <li class="format" style="display:none">{% trans 'File not supported.' %}</li> | ||
100 | + </ul> | ||
89 | </div> | 101 | </div> |
102 | + <br clear="all" /> | ||
90 | 103 | ||
91 | - <div class="form-group{% if form.has_error %} has-error {% endif %} is-fileinput"> | 104 | + <div class="form-group{% if form.has_error %} has-error {% endif %} is-fileinput" data-file_id="{{ form.indicators.auto_id }}"> |
92 | <label for="{{ form.indicators.auto_id }}">{{ form.indicators.label }} <span>*</span></label> | 105 | <label for="{{ form.indicators.auto_id }}">{{ form.indicators.label }} <span>*</span></label> |
93 | - {% render_field form.indicators class='file-selector' %} | 106 | + {% render_field form.indicators class='file-selector' data-max_size="1" data-mimetypes=mimeTypes %} |
94 | 107 | ||
95 | <div class="input-group common-file-input"> | 108 | <div class="input-group common-file-input"> |
96 | <input type="text" readonly="" class="form-control" placeholder="{% trans 'Choose your file...' %}"> | 109 | <input type="text" readonly="" class="form-control" placeholder="{% trans 'Choose your file...' %}"> |
@@ -115,18 +128,29 @@ | @@ -115,18 +128,29 @@ | ||
115 | 128 | ||
116 | <span id="helpBlock" class="help-block">{{ form.indicators.help_text }}</span> | 129 | <span id="helpBlock" class="help-block">{{ form.indicators.help_text }}</span> |
117 | 130 | ||
118 | - {% if form.indicators.errors %} | ||
119 | - <div class="alert alert-danger alert-dismissible" role="alert"> | ||
120 | - <button type="button" class="close" data-dismiss="alert" aria-label="Close"> | ||
121 | - <span aria-hidden="true">×</span> | ||
122 | - </button> | ||
123 | - <ul> | ||
124 | - {% for error in form.indicators.errors %} | ||
125 | - <li>{{ error }}</li> | ||
126 | - {% endfor %} | ||
127 | - </ul> | ||
128 | - </div> | ||
129 | - {% endif %} | 131 | + </div> |
132 | + | ||
133 | + {% if form.indicators.errors %} | ||
134 | + <div class="alert alert-danger alert-dismissible" role="alert"> | ||
135 | + <button type="button" class="close" data-dismiss="alert" aria-label="Close"> | ||
136 | + <span aria-hidden="true">×</span> | ||
137 | + </button> | ||
138 | + <ul> | ||
139 | + {% for error in form.indicators.errors %} | ||
140 | + <li>{{ error }}</li> | ||
141 | + {% endfor %} | ||
142 | + </ul> | ||
143 | + </div> | ||
144 | + {% endif %} | ||
145 | + | ||
146 | + <div class="col-lg-12 col-md-12 col-sm-12 alert alert-danger alert-dismissible {{ form.indicators.auto_id }}-file-errors" style="display:none" role="alert"> | ||
147 | + <button type="button" class="close" data-dismiss="alert" aria-label="Close"> | ||
148 | + <span aria-hidden="true">×</span> | ||
149 | + </button> | ||
150 | + <ul> | ||
151 | + <li class="size" style="display:none">{% trans "The file is too large. It should have less than 1MB." %}</li> | ||
152 | + <li class="format" style="display:none">{% trans 'File not supported.' %}</li> | ||
153 | + </ul> | ||
130 | </div> | 154 | </div> |
131 | 155 | ||
132 | <legend>{% trans 'Common resources settings' %}</legend> | 156 | <legend>{% trans 'Common resources settings' %}</legend> |
bulletin/templates/bulletin/view.html
@@ -9,7 +9,7 @@ | @@ -9,7 +9,7 @@ | ||
9 | {% endblock%} | 9 | {% endblock%} |
10 | 10 | ||
11 | {% block style %} | 11 | {% block style %} |
12 | -<link rel="stylesheet" href="{% static 'css/estilo.css' %}"> | 12 | + <link rel="stylesheet" href="{% static 'css/estilo.css' %}"> |
13 | {% endblock %} | 13 | {% endblock %} |
14 | 14 | ||
15 | {% block breadcrumbs %} | 15 | {% block breadcrumbs %} |
@@ -104,32 +104,44 @@ | @@ -104,32 +104,44 @@ | ||
104 | 104 | ||
105 | 105 | ||
106 | <!-- Cor amarela --> | 106 | <!-- Cor amarela --> |
107 | - {% if meta.alcancada < meta.desejada and meta.alcancada > meta.estabelecida %} | ||
108 | - <th style="text-align:center;background-color:#f8b800 ; text-shadow: 1px 1px 10px #000; color:#fff; font-weight: normal;">{{ meta.alcancada }}%</th> | 107 | + {% if meta.alcancada < meta.desejada and meta.alcancada > meta.estabelecida or meta.alcancada < meta.desejada and meta.alcancada == meta.estabelecida %} |
108 | + <th style="text-align:center;background-color:#f8b800 ; text-shadow: 1px 1px 2px #000; color:#fff; font-weight: normal;" | ||
109 | + data-toggle="tooltip" data-html="true" data-placement="bottom" | ||
110 | + title="<b>Meta atingida!</b><br><br>Atenção! O seu resultado foi inferior ao recomendado pelo professor." class="grey-tooltip"> | ||
111 | + {{ meta.alcancada }}%</th> | ||
109 | {% endif %} | 112 | {% endif %} |
110 | 113 | ||
111 | - {% if meta.alcancada > meta.desejada and meta.alcancada < meta.estabelecida %} | ||
112 | - <th style="text-align:center;background-color:#f8b800 ; text-shadow: 1px 1px 10px #000; color:#fff; font-weight: normal;">{{ meta.alcancada }}%</th> | ||
113 | - | 114 | + {% if meta.alcancada > meta.desejada and meta.alcancada < meta.estabelecida or meta.alcancada == meta.desejada and meta.alcancada < meta.estabelecida %} |
115 | + <th style="text-align:center;background-color:#f8b800 ; text-shadow: 1px 1px 2px #000; color:#fff; font-weight: normal;" | ||
116 | + data-toggle="tooltip" data-html="true" data-placement="bottom" | ||
117 | + title="<b>Meta atingida!</b><br><br>Atenção! O seu resultado foi inferior a sua meta inicial." class="grey-tooltip"> | ||
118 | + {{ meta.alcancada }}%</th> | ||
114 | {% endif %} | 119 | {% endif %} |
120 | + | ||
115 | <!-- Cor amarela --> | 121 | <!-- Cor amarela --> |
116 | 122 | ||
117 | <!-- Cor verde --> | 123 | <!-- Cor verde --> |
118 | - {% if meta.alcancada > meta.desejada and meta.alcancada > meta.estabelecida or meta.alcancada == 100 %} | ||
119 | - <th style="text-align:center;background-color:#00d337; text-shadow: 1px 1px 10px #000; color:#fff; font-weight: normal;">{{ meta.alcancada }}%</th> | 124 | + {% if meta.alcancada > meta.desejada and meta.alcancada > meta.estabelecida or meta.alcancada == meta.desejada and meta.alcancada > meta.estabelecida or meta.alcancada > meta.desejada and meta.alcancada == meta.estabelecida or meta.alcancada == 100 or meta.alcancada == meta.desejada and meta.alcancada == meta.estabelecida %} |
125 | + <th style="text-align:center;background-color:#00d337; text-shadow: 1px 1px 2px #000; color:#fff; font-weight: normal;" | ||
126 | + data-toggle="tooltip" data-html="true" data-placement="bottom" | ||
127 | + title="<b>Meta atingida!</b>" class="grey-tooltip"> | ||
128 | + {{ meta.alcancada }}%</th> | ||
120 | {% endif %} | 129 | {% endif %} |
130 | + | ||
121 | <!-- Cor verde --> | 131 | <!-- Cor verde --> |
122 | 132 | ||
123 | <!-- Cor vermelha --> | 133 | <!-- Cor vermelha --> |
124 | {% if meta.alcancada < meta.desejada and meta.alcancada < meta.estabelecida %} | 134 | {% if meta.alcancada < meta.desejada and meta.alcancada < meta.estabelecida %} |
125 | - <th style="text-align:center;background-color:#ff0000; text-shadow: 1px 1px 10px #000; color:#fff; font-weight: normal;">{{ meta.alcancada }}%</th> | 135 | + <th style="text-align:center;background-color:#ff0000; text-shadow: 1px 1px 2px #000; color:#fff; font-weight: normal;" |
136 | + data-toggle="tooltip" data-html="true" data-placement="bottom" | ||
137 | + title="<b>Meta não atingida!</b><br><br>Resultado inferior </br>a sua meta e ao recomendado pelo professor." class="grey-tooltip"> | ||
138 | + {{ meta.alcancada }}%</th> | ||
126 | 139 | ||
127 | {% endif %} | 140 | {% endif %} |
128 | <!-- Cor vermelha --> | 141 | <!-- Cor vermelha --> |
129 | 142 | ||
130 | 143 | ||
131 | </tr> | 144 | </tr> |
132 | - | ||
133 | {% endfor %} | 145 | {% endfor %} |
134 | 146 | ||
135 | 147 | ||
@@ -236,6 +248,17 @@ | @@ -236,6 +248,17 @@ | ||
236 | 248 | ||
237 | 249 | ||
238 | <script type="text/javascript"> | 250 | <script type="text/javascript"> |
251 | + $('#bulletin-difficulties-modal').on('shown.bs.modal', function (e) { | ||
252 | + $.ajax({ | ||
253 | + url: "{% url 'bulletin:difficulties_log' bulletin.slug %}", | ||
254 | + dataType: 'json', | ||
255 | + success: function (data) { | ||
256 | + }, | ||
257 | + error: function (data) { | ||
258 | + console.log(data); | ||
259 | + } | ||
260 | + }); | ||
261 | + }); | ||
239 | // Variável obtidas a partir do número de metas atendidas | 262 | // Variável obtidas a partir do número de metas atendidas |
240 | var percent = "{{ percent }}"; | 263 | var percent = "{{ percent }}"; |
241 | 264 |
bulletin/templates/bulletin/window_view.html
@@ -47,7 +47,7 @@ | @@ -47,7 +47,7 @@ | ||
47 | <script type="text/javascript" src="{% static 'js/jscookie.js' %}"></script> | 47 | <script type="text/javascript" src="{% static 'js/jscookie.js' %}"></script> |
48 | <script type="text/javascript" src="{% static 'js/jPages.js' %}"></script> | 48 | <script type="text/javascript" src="{% static 'js/jPages.js' %}"></script> |
49 | <script type="text/javascript" src="{% static 'js/d3.v3.min.js' %}"></script> | 49 | <script type="text/javascript" src="{% static 'js/d3.v3.min.js' %}"></script> |
50 | - <script type="text/javascript" src="{% static 'subjects/js/modal_subject.js' %}"></script> | 50 | + <script type="text/javascript" src="{% static 'subjects/js/modal_subject.js' %}"></script> |
51 | 51 | ||
52 | <!-- Font awesome --> | 52 | <!-- Font awesome --> |
53 | <link rel="stylesheet" type="text/css" href="{% static 'font-awesome-4.6.3/css/font-awesome.min.css' %}"> | 53 | <link rel="stylesheet" type="text/css" href="{% static 'font-awesome-4.6.3/css/font-awesome.min.css' %}"> |
@@ -55,15 +55,26 @@ | @@ -55,15 +55,26 @@ | ||
55 | <!-- Custom styles --> | 55 | <!-- Custom styles --> |
56 | <link rel="stylesheet" type="text/css" href="{% static 'css/base/amadeus_responsive.css' %}"> | 56 | <link rel="stylesheet" type="text/css" href="{% static 'css/base/amadeus_responsive.css' %}"> |
57 | <link rel="stylesheet" type="text/css" href="{% static 'css/base/amadeus.css' %}"> | 57 | <link rel="stylesheet" type="text/css" href="{% static 'css/base/amadeus.css' %}"> |
58 | + <link rel="stylesheet" href="{% static 'css/estilo.css' %}"> | ||
58 | 59 | ||
59 | {% with 'css/themes/'|add:theme.css_style|add:'.css' as theme_selected %} | 60 | {% with 'css/themes/'|add:theme.css_style|add:'.css' as theme_selected %} |
60 | <link rel="stylesheet" type="text/css" href="{% static theme_selected %}"> | 61 | <link rel="stylesheet" type="text/css" href="{% static theme_selected %}"> |
61 | {% endwith %} | 62 | {% endwith %} |
62 | 63 | ||
63 | 64 | ||
64 | - <link rel="stylesheet" href="{% static 'css/estilo.css' %}"> | 65 | + |
65 | </head> | 66 | </head> |
66 | <body style="background: #FFF"> | 67 | <body style="background: #FFF"> |
68 | + {% if messages %} | ||
69 | + {% for message in messages %} | ||
70 | + <div class="alert alert-{{ message.tags }} alert-dismissible" role="alert"> | ||
71 | + <button type="button" class="close" data-dismiss="alert" aria-label="Close"> | ||
72 | + <span aria-hidden="true">×</span> | ||
73 | + </button> | ||
74 | + <p>{{ message }}</p> | ||
75 | + </div> | ||
76 | + {% endfor %} | ||
77 | + {% endif %} | ||
67 | 78 | ||
68 | {% subject_permissions request.user bulletin.topic.subject as has_subject_permissions %} | 79 | {% subject_permissions request.user bulletin.topic.subject as has_subject_permissions %} |
69 | <div class="container-fluid" style="padding-top: 20px;"> | 80 | <div class="container-fluid" style="padding-top: 20px;"> |
@@ -115,28 +126,41 @@ | @@ -115,28 +126,41 @@ | ||
115 | 126 | ||
116 | 127 | ||
117 | <!-- Cor amarela --> | 128 | <!-- Cor amarela --> |
118 | - {% if meta.alcancada < meta.desejada and meta.alcancada > meta.estabelecida %} | ||
119 | - <th style="text-align:center;background-color:#f8b800 ; text-shadow: 1px 1px 10px #000; color:#fff; font-weight: normal;">{{ meta.alcancada }}%</th> | ||
120 | - {% endif %} | 129 | + {% if meta.alcancada < meta.desejada and meta.alcancada > meta.estabelecida or meta.alcancada < meta.desejada and meta.alcancada == meta.estabelecida %} |
130 | + <th style="text-align:center;background-color:#f8b800 ; text-shadow: 1px 1px 2px #000; color:#fff; font-weight: normal;" | ||
131 | + data-toggle="tooltip" data-html="true" data-placement="bottom" | ||
132 | + title="<b>Meta atingida!</b><br><br>Atenção! O seu resultado foi inferior ao recomendado pelo professor." class="grey-tooltip"> | ||
133 | + {{ meta.alcancada }}%</th> | ||
134 | + {% endif %} | ||
121 | 135 | ||
122 | - {% if meta.alcancada > meta.desejada and meta.alcancada < meta.estabelecida %} | ||
123 | - <th style="text-align:center;background-color:#f8b800 ; text-shadow: 1px 1px 10px #000; color:#fff; font-weight: normal;">{{ meta.alcancada }}%</th> | 136 | + {% if meta.alcancada > meta.desejada and meta.alcancada < meta.estabelecida or meta.alcancada == meta.desejada and meta.alcancada < meta.estabelecida %} |
137 | + <th style="text-align:center;background-color:#f8b800 ; text-shadow: 1px 1px 2px #000; color:#fff; font-weight: normal;" | ||
138 | + data-toggle="tooltip" data-html="true" data-placement="bottom" | ||
139 | + title="<b>Meta atingida!</b><br><br>Atenção! O seu resultado foi inferior a sua meta inicial." class="grey-tooltip"> | ||
140 | + {{ meta.alcancada }}%</th> | ||
141 | + {% endif %} | ||
124 | 142 | ||
125 | - {% endif %} | ||
126 | - <!-- Cor amarela --> | 143 | + <!-- Cor amarela --> |
127 | 144 | ||
128 | <!-- Cor verde --> | 145 | <!-- Cor verde --> |
129 | - {% if meta.alcancada > meta.desejada and meta.alcancada > meta.estabelecida or meta.alcancada == 100 %} | ||
130 | - <th style="text-align:center;background-color:#00d337; text-shadow: 1px 1px 10px #000; color:#fff; font-weight: normal;">{{ meta.alcancada }}%</th> | 146 | + {% if meta.alcancada > meta.desejada and meta.alcancada > meta.estabelecida or meta.alcancada == meta.desejada and meta.alcancada > meta.estabelecida or meta.alcancada > meta.desejada and meta.alcancada == meta.estabelecida or meta.alcancada == 100 or meta.alcancada == meta.desejada and meta.alcancada == meta.estabelecida %} |
147 | + <th style="text-align:center;background-color:#00d337; text-shadow: 1px 1px 2px #000; color:#fff; font-weight: normal;" | ||
148 | + data-toggle="tooltip" data-html="true" data-placement="bottom" | ||
149 | + title="<b>Meta atingida!</b>" class="grey-tooltip"> | ||
150 | + {{ meta.alcancada }}%</th> | ||
131 | {% endif %} | 151 | {% endif %} |
152 | + | ||
132 | <!-- Cor verde --> | 153 | <!-- Cor verde --> |
133 | 154 | ||
134 | - <!-- Cor vermelha --> | ||
135 | - {% if meta.alcancada < meta.desejada and meta.alcancada < meta.estabelecida %} | ||
136 | - <th style="text-align:center;background-color:#ff0000; text-shadow: 1px 1px 10px #000; color:#fff; font-weight: normal;">{{ meta.alcancada }}%</th> | 155 | + <!-- Cor vermelha --> |
156 | + {% if meta.alcancada < meta.desejada and meta.alcancada < meta.estabelecida %} | ||
157 | + <th style="text-align:center;background-color:#ff0000; text-shadow: 1px 1px 2px #000; color:#fff; font-weight: normal;" | ||
158 | + data-toggle="tooltip" data-html="true" data-placement="bottom" | ||
159 | + title="<b>Meta não atingida!</b><br><br>Resultado inferior </br>a sua meta e ao recomendado pelo professor." class="grey-tooltip"> | ||
160 | + {{ meta.alcancada }}%</th> | ||
137 | 161 | ||
138 | - {% endif %} | ||
139 | - <!-- Cor vermelha --> | 162 | + {% endif %} |
163 | + <!-- Cor vermelha --> | ||
140 | 164 | ||
141 | 165 | ||
142 | </tr> | 166 | </tr> |
@@ -204,40 +228,40 @@ | @@ -204,40 +228,40 @@ | ||
204 | </div> | 228 | </div> |
205 | 229 | ||
206 | {% if not has_subject_permissions %} | 230 | {% if not has_subject_permissions %} |
207 | - <div class="form-group" style="background-color:#fff; box-shadow: 1px 1px 25px #c0beaf; margin-top: 15px;"> | 231 | + <div class="form-group" style="background-color:#fff; box-shadow: 1px 1px 25px #c0beaf; margin-top: 15px;"> |
208 | <div class="row"> | 232 | <div class="row"> |
209 | - <div class="col-md-1" align="left" style="padding-left: 25px; padding-top: 10px;"> | ||
210 | - <img src="{% static 'img/warning.png' %}" height="80" width="95"/> | ||
211 | - </div> | ||
212 | - <div class="col-md-11"> | ||
213 | - <div class="row"> | 233 | + <div class="col-md-1" align="left" style="padding-left: 25px; padding-top: 10px;"> |
234 | + <img src="{% static 'img/warning.png' %}" height="80" width="95"/> | ||
235 | + </div> | ||
236 | + <div class="col-md-11"> | ||
237 | + <div class="row"> | ||
214 | <div align="left" style="padding-left: 25px; font-size:22px; color: #878787; padding-top: 15px;padding-bottom: 20px;">{% trans 'There are obstructions to your activities?' %}</div> | 238 | <div align="left" style="padding-left: 25px; font-size:22px; color: #878787; padding-top: 15px;padding-bottom: 20px;">{% trans 'There are obstructions to your activities?' %}</div> |
215 | <div align="left" style="padding-left: 25px; padding-right:35px; font-size:16px;"><p><a data-toggle="modal" data-target="#bulletin-difficulties-modal" href=""><b>{% trans 'Click here' %}</b></a> {% trans 'to communicate the difficulties that may decrease your performance.' %}</p></div> | 239 | <div align="left" style="padding-left: 25px; padding-right:35px; font-size:16px;"><p><a data-toggle="modal" data-target="#bulletin-difficulties-modal" href=""><b>{% trans 'Click here' %}</b></a> {% trans 'to communicate the difficulties that may decrease your performance.' %}</p></div> |
240 | + </div> | ||
216 | </div> | 241 | </div> |
217 | </div> | 242 | </div> |
218 | </div> | 243 | </div> |
219 | - </div> | ||
220 | - </br> | ||
221 | - <div class="modal fade" tabindex="-1" role="dialog" id="bulletin-difficulties-modal"> | ||
222 | - <div class="modal-dialog" role="document"> | ||
223 | - <div class="modal-content"> | 244 | + </br> |
245 | + <div class="modal fade" tabindex="-1" role="dialog" id="bulletin-difficulties-modal"> | ||
246 | + <div class="modal-dialog" role="document"> | ||
247 | + <div class="modal-content"> | ||
224 | <div class="modal-header"> | 248 | <div class="modal-header"> |
225 | - <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> | 249 | + <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> |
226 | </div> | 250 | </div> |
227 | <div class="modal-body"> | 251 | <div class="modal-body"> |
228 | - <form id="bulletin-difficulties" action="" method="POST" enctype="multipart/form-data"> | ||
229 | - {% csrf_token %} | ||
230 | - <textarea class="form-control" id="dificulties" name="difficulties" placeholder="{% trans 'Type here the dificulties that may harm your performance' %}"></textarea> | ||
231 | - </form> | 252 | + <form id="bulletin-difficulties" action="" method="POST" enctype="multipart/form-data"> |
253 | + {% csrf_token %} | ||
254 | + <textarea class="form-control" id="dificulties" name="difficulties" placeholder="{% trans 'Type here the dificulties that may harm your performance' %}"></textarea> | ||
255 | + </form> | ||
232 | </div> | 256 | </div> |
233 | <div class="modal-footer"> | 257 | <div class="modal-footer"> |
234 | - <button type="button" class="btn btn-default btn-raised" data-dismiss="modal">{% trans "Close" %}</button> | ||
235 | - <button type="submit" class="btn btn-success btn-raised erase-button" form="bulletin-difficulties">{% trans "Send" %}</button> | 258 | + <button type="button" class="btn btn-default btn-raised" data-dismiss="modal">{% trans "Close" %}</button> |
259 | + <button type="submit" class="btn btn-success btn-raised erase-button" form="bulletin-difficulties">{% trans "Send" %}</button> | ||
236 | </div> | 260 | </div> |
261 | + </div> | ||
237 | </div> | 262 | </div> |
238 | - </div> | ||
239 | - </div> | ||
240 | - {% endif %} | 263 | + </div> |
264 | + {% endif %} | ||
241 | 265 | ||
242 | {% include 'session_security/all.html' %} | 266 | {% include 'session_security/all.html' %} |
243 | <script type="text/javascript"> | 267 | <script type="text/javascript"> |
@@ -245,6 +269,22 @@ | @@ -245,6 +269,22 @@ | ||
245 | </script> | 269 | </script> |
246 | 270 | ||
247 | <script type="text/javascript"> | 271 | <script type="text/javascript"> |
272 | + $('[data-toggle="tooltip"]').tooltip({ | ||
273 | + trigger: 'hover' | ||
274 | + }); | ||
275 | + | ||
276 | + $('#bulletin-difficulties-modal').on('shown.bs.modal', function (e) { | ||
277 | + $.ajax({ | ||
278 | + url: "{% url 'bulletin:difficulties_log' bulletin.slug %}", | ||
279 | + dataType: 'json', | ||
280 | + success: function (data) { | ||
281 | + }, | ||
282 | + error: function (data) { | ||
283 | + console.log(data); | ||
284 | + } | ||
285 | + }); | ||
286 | + }); | ||
287 | + | ||
248 | // Variável obtidas a partir do número de metas atendidas | 288 | // Variável obtidas a partir do número de metas atendidas |
249 | var percent = "{{ percent }}"; | 289 | var percent = "{{ percent }}"; |
250 | 290 |
bulletin/urls.py
@@ -12,4 +12,5 @@ urlpatterns = [ | @@ -12,4 +12,5 @@ urlpatterns = [ | ||
12 | url(r'^chart/(?P<slug>[\w_-]+)/$', views.StatisticsView.as_view(), name = 'get_chart'), | 12 | url(r'^chart/(?P<slug>[\w_-]+)/$', views.StatisticsView.as_view(), name = 'get_chart'), |
13 | url(r'^send-message/(?P<slug>[\w_-]+)/$', views.SendMessage.as_view(), name = 'send_message'), | 13 | url(r'^send-message/(?P<slug>[\w_-]+)/$', views.SendMessage.as_view(), name = 'send_message'), |
14 | url(r'^download_file/(?P<file>[\w_-]+)/$', views.download_excel, name = 'download_file'), | 14 | url(r'^download_file/(?P<file>[\w_-]+)/$', views.download_excel, name = 'download_file'), |
15 | + url(r'^difficulties_log/(?P<slug>[\w_-]+)/$', views.bulletin_diff_view_log, name = 'difficulties_log') | ||
15 | ] | 16 | ] |
bulletin/utils.py
@@ -11,14 +11,11 @@ from django.utils.translation import ugettext_lazy as _ | @@ -11,14 +11,11 @@ from django.utils.translation import ugettext_lazy as _ | ||
11 | 11 | ||
12 | from channels import Group | 12 | from channels import Group |
13 | 13 | ||
14 | +from api.utils import sendChatPushNotification | ||
14 | 15 | ||
15 | from chat.models import Conversation, TalkMessages, ChatVisualizations | 16 | from chat.models import Conversation, TalkMessages, ChatVisualizations |
16 | from users.models import User | 17 | from users.models import User |
17 | 18 | ||
18 | - | ||
19 | - | ||
20 | - | ||
21 | - | ||
22 | def brodcast_dificulties(request, message, subject): | 19 | def brodcast_dificulties(request, message, subject): |
23 | msg = TalkMessages() | 20 | msg = TalkMessages() |
24 | msg.text = message | 21 | msg.text = message |
@@ -54,4 +51,6 @@ def brodcast_dificulties(request, message, subject): | @@ -54,4 +51,6 @@ def brodcast_dificulties(request, message, subject): | ||
54 | 51 | ||
55 | Group("user-%s" % p.id).send({'text': notification}) | 52 | Group("user-%s" % p.id).send({'text': notification}) |
56 | 53 | ||
54 | + sendChatPushNotification(p, msg) | ||
55 | + | ||
57 | ChatVisualizations.objects.create(viewed = False, message = msg, user = p) | 56 | ChatVisualizations.objects.create(viewed = False, message = msg, user = p) |
bulletin/views.py
@@ -27,9 +27,11 @@ from django.utils import timezone | @@ -27,9 +27,11 @@ from django.utils import timezone | ||
27 | from pendencies.forms import PendenciesForm | 27 | from pendencies.forms import PendenciesForm |
28 | 28 | ||
29 | from .forms import BulletinForm | 29 | from .forms import BulletinForm |
30 | -from .models import Bulletin | 30 | +from .models import Bulletin, valid_formats |
31 | 31 | ||
32 | from log.models import Log | 32 | from log.models import Log |
33 | +from log.decorators import log_decorator | ||
34 | + | ||
33 | from chat.models import Conversation, TalkMessages, ChatVisualizations | 35 | from chat.models import Conversation, TalkMessages, ChatVisualizations |
34 | from users.models import User | 36 | from users.models import User |
35 | from subjects.models import Subject | 37 | from subjects.models import Subject |
@@ -81,11 +83,35 @@ class NewWindowView(LoginRequiredMixin, LogMixin, generic.DetailView): | @@ -81,11 +83,35 @@ class NewWindowView(LoginRequiredMixin, LogMixin, generic.DetailView): | ||
81 | self.student = user | 83 | self.student = user |
82 | else: | 84 | else: |
83 | if not difficulties is None and not difficulties == "": | 85 | if not difficulties is None and not difficulties == "": |
84 | - message = _("#Dificulty(ies) found in %s")%(str(bulletin)) + ":<p>" + difficulties + "</p>" | 86 | + print(difficulties) |
87 | + message = _("#Difficulty(ies) found in %s")%(str(bulletin)) + ":<p>" + difficulties + "</p>" | ||
85 | 88 | ||
86 | brodcast_dificulties(self.request, message, bulletin.topic.subject) | 89 | brodcast_dificulties(self.request, message, bulletin.topic.subject) |
87 | 90 | ||
91 | + self.log_context = {} | ||
92 | + self.log_context['category_id'] = bulletin.topic.subject.category.id | ||
93 | + self.log_context['category_name'] = bulletin.topic.subject.category.name | ||
94 | + self.log_context['category_slug'] = bulletin.topic.subject.category.slug | ||
95 | + self.log_context['subject_id'] = bulletin.topic.subject.id | ||
96 | + self.log_context['subject_name'] = bulletin.topic.subject.name | ||
97 | + self.log_context['subject_slug'] = bulletin.topic.subject.slug | ||
98 | + self.log_context['topic_id'] = bulletin.topic.id | ||
99 | + self.log_context['topic_name'] = bulletin.topic.name | ||
100 | + self.log_context['topic_slug'] = bulletin.topic.slug | ||
101 | + self.log_context['bulletin_id'] = bulletin.id | ||
102 | + self.log_context['bulletin_name'] = bulletin.name | ||
103 | + self.log_context['bulletin_slug'] = bulletin.slug | ||
104 | + | ||
105 | + self.log_action = "send_difficulties" | ||
106 | + | ||
107 | + super(NewWindowView, self).createLog(self.request.user, self.log_component, self.log_action, | ||
108 | + self.log_resource, self.log_context) | ||
109 | + | ||
110 | + self.log_action = "view" | ||
111 | + self.log_context = {} | ||
112 | + | ||
88 | messages.success(self.request, message = _("Difficulties sent to the subject professor(s)")) | 113 | messages.success(self.request, message = _("Difficulties sent to the subject professor(s)")) |
114 | + | ||
89 | return self.render_to_response(context = self.get_context_data()) | 115 | return self.render_to_response(context = self.get_context_data()) |
90 | else: | 116 | else: |
91 | messages.error(self.request, message = _("You should inform some difficulty")) | 117 | messages.error(self.request, message = _("You should inform some difficulty")) |
@@ -184,8 +210,9 @@ class NewWindowView(LoginRequiredMixin, LogMixin, generic.DetailView): | @@ -184,8 +210,9 @@ class NewWindowView(LoginRequiredMixin, LogMixin, generic.DetailView): | ||
184 | context['titulos'] = titulos | 210 | context['titulos'] = titulos |
185 | context['student'] = self.request.POST.get('selected_student', students.first().email) | 211 | context['student'] = self.request.POST.get('selected_student', students.first().email) |
186 | context['students'] = students | 212 | context['students'] = students |
187 | - | 213 | + |
188 | return context | 214 | return context |
215 | + | ||
189 | class InsideView(LoginRequiredMixin, LogMixin, generic.DetailView): | 216 | class InsideView(LoginRequiredMixin, LogMixin, generic.DetailView): |
190 | log_component = 'resources' | 217 | log_component = 'resources' |
191 | log_action = 'view' | 218 | log_action = 'view' |
@@ -228,6 +255,28 @@ class InsideView(LoginRequiredMixin, LogMixin, generic.DetailView): | @@ -228,6 +255,28 @@ class InsideView(LoginRequiredMixin, LogMixin, generic.DetailView): | ||
228 | 255 | ||
229 | brodcast_dificulties(self.request, message, bulletin.topic.subject) | 256 | brodcast_dificulties(self.request, message, bulletin.topic.subject) |
230 | 257 | ||
258 | + self.log_context = {} | ||
259 | + self.log_context['category_id'] = bulletin.topic.subject.category.id | ||
260 | + self.log_context['category_name'] = bulletin.topic.subject.category.name | ||
261 | + self.log_context['category_slug'] = bulletin.topic.subject.category.slug | ||
262 | + self.log_context['subject_id'] = bulletin.topic.subject.id | ||
263 | + self.log_context['subject_name'] = bulletin.topic.subject.name | ||
264 | + self.log_context['subject_slug'] = bulletin.topic.subject.slug | ||
265 | + self.log_context['topic_id'] = bulletin.topic.id | ||
266 | + self.log_context['topic_name'] = bulletin.topic.name | ||
267 | + self.log_context['topic_slug'] = bulletin.topic.slug | ||
268 | + self.log_context['bulletin_id'] = bulletin.id | ||
269 | + self.log_context['bulletin_name'] = bulletin.name | ||
270 | + self.log_context['bulletin_slug'] = bulletin.slug | ||
271 | + | ||
272 | + self.log_action = "send_difficulties" | ||
273 | + | ||
274 | + super(InsideView, self).createLog(self.request.user, self.log_component, self.log_action, | ||
275 | + self.log_resource, self.log_context) | ||
276 | + | ||
277 | + self.log_action = "view" | ||
278 | + self.log_context = {} | ||
279 | + | ||
231 | messages.success(self.request, message = _("Difficulties sent to the subject professor(s)")) | 280 | messages.success(self.request, message = _("Difficulties sent to the subject professor(s)")) |
232 | return self.render_to_response(context = self.get_context_data()) | 281 | return self.render_to_response(context = self.get_context_data()) |
233 | else: | 282 | else: |
@@ -466,6 +515,7 @@ class CreateView(LoginRequiredMixin, LogMixin, generic.edit.CreateView): | @@ -466,6 +515,7 @@ class CreateView(LoginRequiredMixin, LogMixin, generic.edit.CreateView): | ||
466 | alunos = sorted(list(meta_geral.topic.subject.students.all()), key = lambda e: e.id) | 515 | alunos = sorted(list(meta_geral.topic.subject.students.all()), key = lambda e: e.id) |
467 | create_excel_file(alunos, itens_da_meta,meta_geral) | 516 | create_excel_file(alunos, itens_da_meta,meta_geral) |
468 | context['goal_file'] = str(meta_geral.slug) | 517 | context['goal_file'] = str(meta_geral.slug) |
518 | + context['mimeTypes'] = valid_formats | ||
469 | 519 | ||
470 | 520 | ||
471 | return context | 521 | return context |
@@ -738,6 +788,7 @@ class UpdateView(LoginRequiredMixin, LogMixin, generic.UpdateView): | @@ -738,6 +788,7 @@ class UpdateView(LoginRequiredMixin, LogMixin, generic.UpdateView): | ||
738 | alunos = sorted(list(meta_geral.topic.subject.students.all()), key = lambda e: e.id) | 788 | alunos = sorted(list(meta_geral.topic.subject.students.all()), key = lambda e: e.id) |
739 | create_excel_file(alunos, itens_da_meta,meta_geral) | 789 | create_excel_file(alunos, itens_da_meta,meta_geral) |
740 | context['goal_file'] = str(meta_geral.slug) | 790 | context['goal_file'] = str(meta_geral.slug) |
791 | + context['mimeTypes'] = valid_formats | ||
741 | 792 | ||
742 | return context | 793 | return context |
743 | 794 | ||
@@ -893,7 +944,27 @@ class StatisticsView(LoginRequiredMixin, LogMixin, generic.DetailView): | @@ -893,7 +944,27 @@ class StatisticsView(LoginRequiredMixin, LogMixin, generic.DetailView): | ||
893 | context["history_table"] = history | 944 | context["history_table"] = history |
894 | return context | 945 | return context |
895 | 946 | ||
947 | +@log_decorator('resources', 'access_difficulties_modal', 'bulletin') | ||
948 | +def bulletin_diff_view_log(request, slug): | ||
949 | + bulletin = get_object_or_404(Bulletin, slug = slug) | ||
896 | 950 | ||
951 | + log_context = {} | ||
952 | + log_context['category_id'] = bulletin.topic.subject.category.id | ||
953 | + log_context['category_name'] = bulletin.topic.subject.category.name | ||
954 | + log_context['category_slug'] = bulletin.topic.subject.category.slug | ||
955 | + log_context['subject_id'] = bulletin.topic.subject.id | ||
956 | + log_context['subject_name'] = bulletin.topic.subject.name | ||
957 | + log_context['subject_slug'] = bulletin.topic.subject.slug | ||
958 | + log_context['topic_id'] = bulletin.topic.id | ||
959 | + log_context['topic_name'] = bulletin.topic.name | ||
960 | + log_context['topic_slug'] = bulletin.topic.slug | ||
961 | + log_context['bulletin_id'] = bulletin.id | ||
962 | + log_context['bulletin_name'] = bulletin.name | ||
963 | + log_context['bulletin_slug'] = bulletin.slug | ||
964 | + | ||
965 | + request.log_context = log_context | ||
966 | + | ||
967 | + return JsonResponse({'message': 'ok'}) | ||
897 | 968 | ||
898 | from django.http import HttpResponse #used to send HTTP 404 error to ajax | 969 | from django.http import HttpResponse #used to send HTTP 404 error to ajax |
899 | 970 |
categories/locale/pt_BR/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
8 | msgstr "" | 8 | msgstr "" |
9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
11 | -"POT-Creation-Date: 2017-08-30 22:41-0300\n" | 11 | +"POT-Creation-Date: 2017-09-07 22:29-0300\n" |
12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
14 | "Language-Team: LANGUAGE <LL@li.org>\n" | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" |
chat/locale/pt_BR/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
8 | msgstr "" | 8 | msgstr "" |
9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
11 | -"POT-Creation-Date: 2017-08-30 22:41-0300\n" | 11 | +"POT-Creation-Date: 2017-09-07 22:29-0300\n" |
12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
14 | "Language-Team: LANGUAGE <LL@li.org>\n" | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" |
@@ -250,11 +250,11 @@ msgstr "Inativo" | @@ -250,11 +250,11 @@ msgstr "Inativo" | ||
250 | msgid "Offline" | 250 | msgid "Offline" |
251 | msgstr "Offline" | 251 | msgstr "Offline" |
252 | 252 | ||
253 | -#: chat/templatetags/chat_tags.py:63 chat/views.py:429 | 253 | +#: chat/templatetags/chat_tags.py:63 chat/views.py:426 |
254 | msgid "Unfavorite" | 254 | msgid "Unfavorite" |
255 | msgstr "Desfavoritar" | 255 | msgstr "Desfavoritar" |
256 | 256 | ||
257 | -#: chat/templatetags/chat_tags.py:65 chat/views.py:433 | 257 | +#: chat/templatetags/chat_tags.py:65 chat/views.py:430 |
258 | msgid "Favorite" | 258 | msgid "Favorite" |
259 | msgstr "Favoritar" | 259 | msgstr "Favoritar" |
260 | 260 |
chat/models.py
@@ -11,9 +11,9 @@ from datetime import timezone | @@ -11,9 +11,9 @@ from datetime import timezone | ||
11 | from subjects.models import Subject | 11 | from subjects.models import Subject |
12 | from users.models import User | 12 | from users.models import User |
13 | 13 | ||
14 | +valid_formats = ['image/jpeg','image/x-citrix-jpeg','image/png','image/x-citrix-png','image/x-png','image/gif'] | ||
15 | + | ||
14 | def validate_img_extension(value): | 16 | def validate_img_extension(value): |
15 | - valid_formats = ['image/jpeg','image/x-citrix-jpeg','image/png','image/x-citrix-png','image/x-png','image/gif'] | ||
16 | - | ||
17 | if hasattr(value.file, 'content_type'): | 17 | if hasattr(value.file, 'content_type'): |
18 | if not value.file.content_type in valid_formats: | 18 | if not value.file.content_type in valid_formats: |
19 | raise ValidationError(_('Select a valid file. The file must posses one of this extensions: .jpg, .png, .gif')) | 19 | raise ValidationError(_('Select a valid file. The file must posses one of this extensions: .jpg, .png, .gif')) |
chat/views.py
@@ -24,12 +24,12 @@ from log.models import Log | @@ -24,12 +24,12 @@ from log.models import Log | ||
24 | from log.mixins import LogMixin | 24 | from log.mixins import LogMixin |
25 | import time | 25 | import time |
26 | 26 | ||
27 | -from fcm_django.models import FCMDevice | ||
28 | - | ||
29 | from categories.models import Category | 27 | from categories.models import Category |
30 | from subjects.models import Subject | 28 | from subjects.models import Subject |
31 | from users.models import User | 29 | from users.models import User |
32 | 30 | ||
31 | +from api.utils import sendChatPushNotification | ||
32 | + | ||
33 | from .models import Conversation, TalkMessages, ChatVisualizations, ChatFavorites | 33 | from .models import Conversation, TalkMessages, ChatVisualizations, ChatFavorites |
34 | from .forms import ChatMessageForm | 34 | from .forms import ChatMessageForm |
35 | 35 | ||
@@ -371,10 +371,7 @@ class SendMessage(LoginRequiredMixin, LogMixin, generic.edit.CreateView): | @@ -371,10 +371,7 @@ class SendMessage(LoginRequiredMixin, LogMixin, generic.edit.CreateView): | ||
371 | 371 | ||
372 | Group("user-%s" % user.id).send({'text': notification}) | 372 | Group("user-%s" % user.id).send({'text': notification}) |
373 | 373 | ||
374 | - device = FCMDevice.objects.filter(user = user).first() | ||
375 | - | ||
376 | - if not device is None: | ||
377 | - device.send_message(title = "Message", body = self.object.text) | 374 | + sendChatPushNotification(user, self.object) |
378 | 375 | ||
379 | ChatVisualizations.objects.create(viewed = False, message = self.object, user = user) | 376 | ChatVisualizations.objects.create(viewed = False, message = self.object, user = user) |
380 | 377 |
dashboards/locale/pt_BR/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
8 | msgstr "" | 8 | msgstr "" |
9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
11 | -"POT-Creation-Date: 2017-08-30 22:41-0300\n" | 11 | +"POT-Creation-Date: 2017-09-07 22:29-0300\n" |
12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
14 | "Language-Team: LANGUAGE <LL@li.org>\n" | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" |
file_link/forms.py
@@ -2,14 +2,18 @@ | @@ -2,14 +2,18 @@ | ||
2 | from django import forms | 2 | from django import forms |
3 | from django.utils.translation import ugettext_lazy as _ | 3 | from django.utils.translation import ugettext_lazy as _ |
4 | from django.utils.html import strip_tags | 4 | from django.utils.html import strip_tags |
5 | +from resubmit.widgets import ResubmitFileWidget | ||
5 | 6 | ||
6 | from subjects.models import Tag | 7 | from subjects.models import Tag |
8 | +from subjects.forms import ParticipantsMultipleChoiceField | ||
7 | 9 | ||
8 | from .models import FileLink | 10 | from .models import FileLink |
9 | 11 | ||
10 | class FileLinkForm(forms.ModelForm): | 12 | class FileLinkForm(forms.ModelForm): |
11 | subject = None | 13 | subject = None |
12 | MAX_UPLOAD_SIZE = 10*1024*1024 | 14 | MAX_UPLOAD_SIZE = 10*1024*1024 |
15 | + | ||
16 | + students = ParticipantsMultipleChoiceField(queryset = None, required = False) | ||
13 | 17 | ||
14 | def __init__(self, *args, **kwargs): | 18 | def __init__(self, *args, **kwargs): |
15 | super(FileLinkForm, self).__init__(*args, **kwargs) | 19 | super(FileLinkForm, self).__init__(*args, **kwargs) |
@@ -35,6 +39,7 @@ class FileLinkForm(forms.ModelForm): | @@ -35,6 +39,7 @@ class FileLinkForm(forms.ModelForm): | ||
35 | 'brief_description': forms.Textarea, | 39 | 'brief_description': forms.Textarea, |
36 | 'students': forms.SelectMultiple, | 40 | 'students': forms.SelectMultiple, |
37 | 'groups': forms.SelectMultiple, | 41 | 'groups': forms.SelectMultiple, |
42 | + 'file_content': ResubmitFileWidget(attrs={'accept':'image/jpeg,image/x-citrix-jpeg,image/png,image/x-citrix-png,image/x-png,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.openxmlformats-officedocument.presentationml.slideshow,application/vnd.openxmlformats-officedocument.presentationml.presentation,application/vnd.ms-excel,text/html,application/msword,application/vnd.oasis.opendocument.presentation,application/vnd.oasis.opendocument.spreadsheet,application/vnd.oasis.opendocument.text,application/pdf,application/vnd.ms-powerpoint'}), | ||
38 | } | 43 | } |
39 | 44 | ||
40 | def clean_name(self): | 45 | def clean_name(self): |
file_link/locale/pt_BR/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
8 | msgstr "" | 8 | msgstr "" |
9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
11 | -"POT-Creation-Date: 2017-08-30 22:41-0300\n" | 11 | +"POT-Creation-Date: 2017-09-07 22:29-0300\n" |
12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
14 | "Language-Team: LANGUAGE <LL@li.org>\n" | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" |
@@ -18,27 +18,27 @@ msgstr "" | @@ -18,27 +18,27 @@ msgstr "" | ||
18 | "Content-Transfer-Encoding: 8bit\n" | 18 | "Content-Transfer-Encoding: 8bit\n" |
19 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" | 19 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" |
20 | 20 | ||
21 | -#: file_link/forms.py:26 | 21 | +#: file_link/forms.py:30 |
22 | msgid "Tags" | 22 | msgid "Tags" |
23 | msgstr "Tags" | 23 | msgstr "Tags" |
24 | 24 | ||
25 | -#: file_link/forms.py:32 | 25 | +#: file_link/forms.py:36 |
26 | msgid "File name" | 26 | msgid "File name" |
27 | msgstr "Nome do arquivo" | 27 | msgstr "Nome do arquivo" |
28 | 28 | ||
29 | -#: file_link/forms.py:52 | 29 | +#: file_link/forms.py:57 |
30 | msgid "This subject already has a file link with this name" | 30 | msgid "This subject already has a file link with this name" |
31 | msgstr "Esse assunto já possui um Link para Arquivo com esse nome" | 31 | msgstr "Esse assunto já possui um Link para Arquivo com esse nome" |
32 | 32 | ||
33 | -#: file_link/forms.py:64 | 33 | +#: file_link/forms.py:69 file_link/templates/file_links/_form.html:75 |
34 | msgid "The file is too large. It should have less than 10MB." | 34 | msgid "The file is too large. It should have less than 10MB." |
35 | msgstr "Esse arquivo é muito grande. Ele deve conter menos de 10MB." | 35 | msgstr "Esse arquivo é muito grande. Ele deve conter menos de 10MB." |
36 | 36 | ||
37 | -#: file_link/forms.py:69 | 37 | +#: file_link/forms.py:74 |
38 | msgid "This field is required." | 38 | msgid "This field is required." |
39 | msgstr "Esse campo é obrigatório." | 39 | msgstr "Esse campo é obrigatório." |
40 | 40 | ||
41 | -#: file_link/models.py:23 | 41 | +#: file_link/models.py:24 |
42 | msgid "" | 42 | msgid "" |
43 | "Please select a valid file. The uploaded file must have one of the following " | 43 | "Please select a valid file. The uploaded file must have one of the following " |
44 | "extensions: .doc, .docx, .html, .jpg, .odp, .ods, .odt, .pdf, .png, .ppt, ." | 44 | "extensions: .doc, .docx, .html, .jpg, .odp, .ods, .odt, .pdf, .png, .ppt, ." |
@@ -48,19 +48,19 @@ msgstr "" | @@ -48,19 +48,19 @@ msgstr "" | ||
48 | "das seguintes extensões: .doc, .docx, .html, .jpg, .odp, .ods, .odt, .pdf, ." | 48 | "das seguintes extensões: .doc, .docx, .html, .jpg, .odp, .ods, .odt, .pdf, ." |
49 | "png, .ppt, .pptx, .xlx e .xlsx" | 49 | "png, .ppt, .pptx, .xlx e .xlsx" |
50 | 50 | ||
51 | -#: file_link/models.py:26 | 51 | +#: file_link/models.py:27 |
52 | msgid "File" | 52 | msgid "File" |
53 | msgstr "Arquivo" | 53 | msgstr "Arquivo" |
54 | 54 | ||
55 | -#: file_link/models.py:29 | 55 | +#: file_link/models.py:30 |
56 | msgid "File Link" | 56 | msgid "File Link" |
57 | msgstr "Link para Arquivo" | 57 | msgstr "Link para Arquivo" |
58 | 58 | ||
59 | -#: file_link/models.py:30 | 59 | +#: file_link/models.py:31 |
60 | msgid "File Links" | 60 | msgid "File Links" |
61 | msgstr "Links para Arquivo" | 61 | msgstr "Links para Arquivo" |
62 | 62 | ||
63 | -#: file_link/models.py:49 | 63 | +#: file_link/models.py:50 |
64 | msgid "Are you sure you want delete the file link" | 64 | msgid "Are you sure you want delete the file link" |
65 | msgstr "Você tem certeza que deseja remover o Link para Arquivo" | 65 | msgstr "Você tem certeza que deseja remover o Link para Arquivo" |
66 | 66 | ||
@@ -76,31 +76,35 @@ msgstr "Clique ou solte o arquivo aqui" | @@ -76,31 +76,35 @@ msgstr "Clique ou solte o arquivo aqui" | ||
76 | msgid "The file could not exceed 10MB." | 76 | msgid "The file could not exceed 10MB." |
77 | msgstr "O arquivo não pode exceder 10MB." | 77 | msgstr "O arquivo não pode exceder 10MB." |
78 | 78 | ||
79 | -#: file_link/templates/file_links/_form.html:69 | 79 | +#: file_link/templates/file_links/_form.html:76 |
80 | +msgid "File not supported." | ||
81 | +msgstr "Arquivo não suportado." | ||
82 | + | ||
83 | +#: file_link/templates/file_links/_form.html:80 | ||
80 | msgid "Common resources settings" | 84 | msgid "Common resources settings" |
81 | msgstr "Configurações comuns à todos os recursos" | 85 | msgstr "Configurações comuns à todos os recursos" |
82 | 86 | ||
83 | -#: file_link/templates/file_links/_form.html:118 | 87 | +#: file_link/templates/file_links/_form.html:129 |
84 | msgid "Pendencies Notifications" | 88 | msgid "Pendencies Notifications" |
85 | msgstr "Notificações de Pendências" | 89 | msgstr "Notificações de Pendências" |
86 | 90 | ||
87 | -#: file_link/templates/file_links/_form.html:134 | 91 | +#: file_link/templates/file_links/_form.html:145 |
88 | msgid "Action not performed by the user" | 92 | msgid "Action not performed by the user" |
89 | msgstr "Ação não realizada pelo usuário" | 93 | msgstr "Ação não realizada pelo usuário" |
90 | 94 | ||
91 | -#: file_link/templates/file_links/_form.html:160 | 95 | +#: file_link/templates/file_links/_form.html:171 |
92 | msgid "Wished period" | 96 | msgid "Wished period" |
93 | msgstr "Período desejado" | 97 | msgstr "Período desejado" |
94 | 98 | ||
95 | -#: file_link/templates/file_links/_form.html:256 | 99 | +#: file_link/templates/file_links/_form.html:267 |
96 | msgid "Attribute students to file link" | 100 | msgid "Attribute students to file link" |
97 | msgstr "Atribuir estudantes ao Link para Arquivo" | 101 | msgstr "Atribuir estudantes ao Link para Arquivo" |
98 | 102 | ||
99 | -#: file_link/templates/file_links/_form.html:276 | 103 | +#: file_link/templates/file_links/_form.html:287 |
100 | msgid "Attribute groups to file link" | 104 | msgid "Attribute groups to file link" |
101 | msgstr "Atribuir grupos de estudo ao Link para Arquivo" | 105 | msgstr "Atribuir grupos de estudo ao Link para Arquivo" |
102 | 106 | ||
103 | -#: file_link/templates/file_links/_form.html:322 | 107 | +#: file_link/templates/file_links/_form.html:333 |
104 | msgid "Save" | 108 | msgid "Save" |
105 | msgstr "Salvar" | 109 | msgstr "Salvar" |
106 | 110 | ||
@@ -180,12 +184,12 @@ msgstr "Enviar" | @@ -180,12 +184,12 @@ msgstr "Enviar" | ||
180 | msgid "Edit: " | 184 | msgid "Edit: " |
181 | msgstr "Editar: " | 185 | msgstr "Editar: " |
182 | 186 | ||
183 | -#: file_link/views.py:121 file_link/views.py:134 file_link/views.py:244 | ||
184 | -#: file_link/views.py:246 file_link/views.py:262 file_link/views.py:264 | 187 | +#: file_link/views.py:121 file_link/views.py:134 file_link/views.py:245 |
188 | +#: file_link/views.py:247 file_link/views.py:263 file_link/views.py:265 | ||
185 | msgid "Visualize" | 189 | msgid "Visualize" |
186 | msgstr "Visualizar" | 190 | msgstr "Visualizar" |
187 | 191 | ||
188 | -#: file_link/views.py:205 | 192 | +#: file_link/views.py:206 |
189 | #, python-format | 193 | #, python-format |
190 | msgid "" | 194 | msgid "" |
191 | "The File Link \"%s\" was added to the Topic \"%s\" of the virtual " | 195 | "The File Link \"%s\" was added to the Topic \"%s\" of the virtual " |
@@ -194,16 +198,16 @@ msgstr "" | @@ -194,16 +198,16 @@ msgstr "" | ||
194 | "O Link para Arquivo \"%s\" foi adicionado ao tópico \"%s\" do ambiente " | 198 | "O Link para Arquivo \"%s\" foi adicionado ao tópico \"%s\" do ambiente " |
195 | "virtual \"%s\" com sucesso!" | 199 | "virtual \"%s\" com sucesso!" |
196 | 200 | ||
197 | -#: file_link/views.py:308 | 201 | +#: file_link/views.py:309 |
198 | msgid "Update File Link" | 202 | msgid "Update File Link" |
199 | msgstr "Atualizar Link para Arquivo" | 203 | msgstr "Atualizar Link para Arquivo" |
200 | 204 | ||
201 | -#: file_link/views.py:319 | 205 | +#: file_link/views.py:321 |
202 | #, python-format | 206 | #, python-format |
203 | msgid "The File Link \"%s\" was updated successfully!" | 207 | msgid "The File Link \"%s\" was updated successfully!" |
204 | msgstr "O Link para Arquivo \"%s\" foi atualizado com sucesso!" | 208 | msgstr "O Link para Arquivo \"%s\" foi atualizado com sucesso!" |
205 | 209 | ||
206 | -#: file_link/views.py:346 | 210 | +#: file_link/views.py:348 |
207 | #, python-format | 211 | #, python-format |
208 | msgid "" | 212 | msgid "" |
209 | "The File Link \"%s\" was removed successfully from virtual environment \"%s" | 213 | "The File Link \"%s\" was removed successfully from virtual environment \"%s" |
@@ -212,57 +216,54 @@ msgstr "" | @@ -212,57 +216,54 @@ msgstr "" | ||
212 | "O Link para Arquivo \"%s\" foi removido do ambiente virtual \"%s\" com " | 216 | "O Link para Arquivo \"%s\" foi removido do ambiente virtual \"%s\" com " |
213 | "sucesso!" | 217 | "sucesso!" |
214 | 218 | ||
215 | -#: file_link/views.py:405 | 219 | +#: file_link/views.py:407 |
216 | msgid "File Link Reports" | 220 | msgid "File Link Reports" |
217 | msgstr "Relatŕios de Link para Arquivo" | 221 | msgstr "Relatŕios de Link para Arquivo" |
218 | 222 | ||
219 | -#: file_link/views.py:424 | 223 | +#: file_link/views.py:426 |
220 | msgid "Realized" | 224 | msgid "Realized" |
221 | msgstr "Realizada" | 225 | msgstr "Realizada" |
222 | 226 | ||
223 | -#: file_link/views.py:424 | 227 | +#: file_link/views.py:426 |
224 | msgid "Unrealized" | 228 | msgid "Unrealized" |
225 | msgstr "Não Realizada" | 229 | msgstr "Não Realizada" |
226 | 230 | ||
227 | -#: file_link/views.py:424 | 231 | +#: file_link/views.py:426 |
228 | msgid "Historic" | 232 | msgid "Historic" |
229 | msgstr "Histórico" | 233 | msgstr "Histórico" |
230 | 234 | ||
231 | -#: file_link/views.py:439 file_link/views.py:447 | 235 | +#: file_link/views.py:441 file_link/views.py:449 |
232 | msgid "View" | 236 | msgid "View" |
233 | msgstr "Visualizar" | 237 | msgstr "Visualizar" |
234 | 238 | ||
235 | -#: file_link/views.py:448 | 239 | +#: file_link/views.py:450 |
236 | msgid "File link" | 240 | msgid "File link" |
237 | msgstr "Link para Arquivo" | 241 | msgstr "Link para Arquivo" |
238 | 242 | ||
239 | -#: file_link/views.py:453 | 243 | +#: file_link/views.py:455 |
240 | msgid "Actions about resource" | 244 | msgid "Actions about resource" |
241 | msgstr "Ações sobre o recurso" | 245 | msgstr "Ações sobre o recurso" |
242 | 246 | ||
243 | -#: file_link/views.py:454 | 247 | +#: file_link/views.py:456 |
244 | msgid "Quantity" | 248 | msgid "Quantity" |
245 | msgstr "Quantidade" | 249 | msgstr "Quantidade" |
246 | 250 | ||
247 | -#: file_link/views.py:501 | 251 | +#: file_link/views.py:503 |
248 | msgid "[Photo]" | 252 | msgid "[Photo]" |
249 | msgstr "[Imagem]" | 253 | msgstr "[Imagem]" |
250 | 254 | ||
251 | -#: file_link/views.py:513 | 255 | +#: file_link/views.py:515 |
252 | #, python-format | 256 | #, python-format |
253 | msgid "Last message in %s" | 257 | msgid "Last message in %s" |
254 | msgstr "Última mensagem em %s" | 258 | msgstr "Última mensagem em %s" |
255 | 259 | ||
256 | -#: file_link/views.py:522 | 260 | +#: file_link/views.py:524 |
257 | msgid "The message was successfull sent!" | 261 | msgid "The message was successfull sent!" |
258 | msgstr "A mensagem foi enviada com sucesso!" | 262 | msgstr "A mensagem foi enviada com sucesso!" |
259 | 263 | ||
260 | -#: file_link/views.py:524 | 264 | +#: file_link/views.py:526 |
261 | msgid "No user selected!" | 265 | msgid "No user selected!" |
262 | msgstr "Nenhum usuário selecionado!" | 266 | msgstr "Nenhum usuário selecionado!" |
263 | 267 | ||
264 | -#~ msgid "File not supported." | ||
265 | -#~ msgstr "Arquivo não suportado." | ||
266 | - | ||
267 | #~ msgid "Delete" | 268 | #~ msgid "Delete" |
268 | #~ msgstr "Remover" | 269 | #~ msgstr "Remover" |
file_link/serializers.py
@@ -44,7 +44,7 @@ class SimpleFileLinkSerializer(serializers.ModelSerializer): | @@ -44,7 +44,7 @@ class SimpleFileLinkSerializer(serializers.ModelSerializer): | ||
44 | 44 | ||
45 | path = files.extract(data["file_content"], dst_path) | 45 | path = files.extract(data["file_content"], dst_path) |
46 | 46 | ||
47 | - new_name = "files/file_" + str(time.time()) + os.path.splitext(data["file_content"])[1] | 47 | + new_name = os.path.join("files","file_" + str(time.time()) + os.path.splitext(data["file_content"])[1]) |
48 | 48 | ||
49 | os.rename(os.path.join(dst_path, path), os.path.join(settings.MEDIA_ROOT, new_name)) | 49 | os.rename(os.path.join(dst_path, path), os.path.join(settings.MEDIA_ROOT, new_name)) |
50 | 50 | ||
@@ -87,7 +87,7 @@ class SimpleFileLinkSerializer(serializers.ModelSerializer): | @@ -87,7 +87,7 @@ class SimpleFileLinkSerializer(serializers.ModelSerializer): | ||
87 | if topic_exist.exists(): | 87 | if topic_exist.exists(): |
88 | topic = topic_exist[0] | 88 | topic = topic_exist[0] |
89 | else: | 89 | else: |
90 | - topic = Topic.objects.create(name = topic['name'], subject = topic['subject'], repository = topic['repository'], visible = topic['visible'], order = topic['order']) | 90 | + topic = Topic.objects.create(name = topic['name'], subject = topic['subject'], repository = topic['repository'], visible = topic['visible'], order = topic['order'], description = topic['description']) |
91 | 91 | ||
92 | data["topic"] = topic | 92 | data["topic"] = topic |
93 | else: | 93 | else: |
@@ -161,7 +161,7 @@ class CompleteFileLinkSerializer(serializers.ModelSerializer): | @@ -161,7 +161,7 @@ class CompleteFileLinkSerializer(serializers.ModelSerializer): | ||
161 | 161 | ||
162 | path = files.extract(data["file_content"], dst_path) | 162 | path = files.extract(data["file_content"], dst_path) |
163 | 163 | ||
164 | - new_name = "files/file_" + str(time.time()) + os.path.splitext(data["file_content"])[1] | 164 | + new_name = os.path.join("files","file_" + str(time.time()) + os.path.splitext(data["file_content"])[1]) |
165 | 165 | ||
166 | os.rename(os.path.join(dst_path, path), os.path.join(settings.MEDIA_ROOT, new_name)) | 166 | os.rename(os.path.join(dst_path, path), os.path.join(settings.MEDIA_ROOT, new_name)) |
167 | 167 | ||
@@ -197,7 +197,7 @@ class CompleteFileLinkSerializer(serializers.ModelSerializer): | @@ -197,7 +197,7 @@ class CompleteFileLinkSerializer(serializers.ModelSerializer): | ||
197 | if topic_exist.exists(): | 197 | if topic_exist.exists(): |
198 | topic = topic_exist[0] | 198 | topic = topic_exist[0] |
199 | else: | 199 | else: |
200 | - topic = Topic.objects.create(name = topic['name'], subject = topic['subject'], repository = topic['repository'], visible = topic['visible'], order = topic['order']) | 200 | + topic = Topic.objects.create(name = topic['name'], subject = topic['subject'], repository = topic['repository'], visible = topic['visible'], order = topic['order'], description = topic['description']) |
201 | 201 | ||
202 | data["topic"] = topic | 202 | data["topic"] = topic |
203 | else: | 203 | else: |
file_link/templates/file_links/_form.html
@@ -234,7 +234,7 @@ | @@ -234,7 +234,7 @@ | ||
234 | <div class="col-md-12"> | 234 | <div class="col-md-12"> |
235 | <a data-parent="#professors_accordion" data-toggle="collapse" href="#students"> | 235 | <a data-parent="#professors_accordion" data-toggle="collapse" href="#students"> |
236 | <h4 class="panel-title"> | 236 | <h4 class="panel-title"> |
237 | - <button class="btn btn-default btn-xs text-center cat-selector"><i class="fa fa-angle-right fa-2x" aria-hidden="true"></i></button><label for="{{ form.students.auto_id }}">{{ form.students.label }}</label> | 237 | + <button class="btn btn-default btn-xs text-center cat-selector"><i class="fa fa-angle-right fa-2x" aria-hidden="true"></i></button><label for="{{ form.students.auto_id }}">{% trans 'Students' %}</label> |
238 | </h4> | 238 | </h4> |
239 | </a> | 239 | </a> |
240 | </div> | 240 | </div> |
goals/locale/pt_BR/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
8 | msgstr "" | 8 | msgstr "" |
9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
11 | -"POT-Creation-Date: 2017-08-30 22:41-0300\n" | 11 | +"POT-Creation-Date: 2017-09-07 22:29-0300\n" |
12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
14 | "Language-Team: LANGUAGE <LL@li.org>\n" | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" |
@@ -403,7 +403,7 @@ msgstr "Submeteu" | @@ -403,7 +403,7 @@ msgstr "Submeteu" | ||
403 | msgid "%s Instance" | 403 | msgid "%s Instance" |
404 | msgstr "Instância de %s" | 404 | msgstr "Instância de %s" |
405 | 405 | ||
406 | -#: goals/utils.py:59 goals/views.py:1224 | 406 | +#: goals/utils.py:61 goals/views.py:1224 |
407 | #, python-format | 407 | #, python-format |
408 | msgid "Last message in %s" | 408 | msgid "Last message in %s" |
409 | msgstr "Última mensagem em %s" | 409 | msgstr "Última mensagem em %s" |
goals/serializers.py
@@ -63,7 +63,7 @@ class SimpleGoalSerializer(serializers.ModelSerializer): | @@ -63,7 +63,7 @@ class SimpleGoalSerializer(serializers.ModelSerializer): | ||
63 | if topic_exist.exists(): | 63 | if topic_exist.exists(): |
64 | topic = topic_exist[0] | 64 | topic = topic_exist[0] |
65 | else: | 65 | else: |
66 | - topic = Topic.objects.create(name = topic['name'], subject = topic['subject'], repository = topic['repository'], visible = topic['visible'], order = topic['order']) | 66 | + topic = Topic.objects.create(name = topic['name'], subject = topic['subject'], repository = topic['repository'], visible = topic['visible'], order = topic['order'], description = topic['description']) |
67 | 67 | ||
68 | data["topic"] = topic | 68 | data["topic"] = topic |
69 | else: | 69 | else: |
@@ -154,7 +154,7 @@ class CompleteGoalSerializer(serializers.ModelSerializer): | @@ -154,7 +154,7 @@ class CompleteGoalSerializer(serializers.ModelSerializer): | ||
154 | if topic_exist.exists(): | 154 | if topic_exist.exists(): |
155 | topic = topic_exist[0] | 155 | topic = topic_exist[0] |
156 | else: | 156 | else: |
157 | - topic = Topic.objects.create(name = topic['name'], subject = topic['subject'], repository = topic['repository'], visible = topic['visible'], order = topic['order']) | 157 | + topic = Topic.objects.create(name = topic['name'], subject = topic['subject'], repository = topic['repository'], visible = topic['visible'], order = topic['order'], description = topic['description']) |
158 | 158 | ||
159 | data["topic"] = topic | 159 | data["topic"] = topic |
160 | else: | 160 | else: |
goals/utils.py
@@ -10,6 +10,8 @@ from django.utils.translation import ugettext_lazy as _ | @@ -10,6 +10,8 @@ from django.utils.translation import ugettext_lazy as _ | ||
10 | 10 | ||
11 | from channels import Group | 11 | from channels import Group |
12 | 12 | ||
13 | +from api.utils import sendChatPushNotification | ||
14 | + | ||
13 | from chat.models import Conversation, TalkMessages, ChatVisualizations | 15 | from chat.models import Conversation, TalkMessages, ChatVisualizations |
14 | from users.models import User | 16 | from users.models import User |
15 | 17 | ||
@@ -63,5 +65,7 @@ def brodcast_dificulties(request, message, subject): | @@ -63,5 +65,7 @@ def brodcast_dificulties(request, message, subject): | ||
63 | 65 | ||
64 | Group("user-%s" % p.id).send({'text': notification}) | 66 | Group("user-%s" % p.id).send({'text': notification}) |
65 | 67 | ||
68 | + sendChatPushNotification(p, msg) | ||
69 | + | ||
66 | ChatVisualizations.objects.create(viewed = False, message = msg, user = p) | 70 | ChatVisualizations.objects.create(viewed = False, message = msg, user = p) |
67 | 71 |
links/forms.py
@@ -3,7 +3,9 @@ from django import forms | @@ -3,7 +3,9 @@ from django import forms | ||
3 | from django.utils.translation import ugettext_lazy as _ | 3 | from django.utils.translation import ugettext_lazy as _ |
4 | from django.utils.html import strip_tags | 4 | from django.utils.html import strip_tags |
5 | from django.core.exceptions import ValidationError | 5 | from django.core.exceptions import ValidationError |
6 | + | ||
6 | from subjects.models import Tag | 7 | from subjects.models import Tag |
8 | +from subjects.forms import ParticipantsMultipleChoiceField | ||
7 | 9 | ||
8 | from pendencies.forms import PendenciesForm | 10 | from pendencies.forms import PendenciesForm |
9 | from .models import Link | 11 | from .models import Link |
@@ -11,6 +13,8 @@ from .models import Link | @@ -11,6 +13,8 @@ from .models import Link | ||
11 | class LinkForm(forms.ModelForm): | 13 | class LinkForm(forms.ModelForm): |
12 | subject = None | 14 | subject = None |
13 | MAX_UPLOAD_SIZE = 10*1024*1024 | 15 | MAX_UPLOAD_SIZE = 10*1024*1024 |
16 | + | ||
17 | + students = ParticipantsMultipleChoiceField(queryset = None, required = False) | ||
14 | 18 | ||
15 | def __init__(self, *args, **kwargs): | 19 | def __init__(self, *args, **kwargs): |
16 | super(LinkForm, self).__init__(*args, **kwargs) | 20 | super(LinkForm, self).__init__(*args, **kwargs) |
links/locale/pt_BR/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
8 | msgstr "" | 8 | msgstr "" |
9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
11 | -"POT-Creation-Date: 2017-08-30 22:41-0300\n" | 11 | +"POT-Creation-Date: 2017-09-07 22:29-0300\n" |
12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
14 | "Language-Team: LANGUAGE <LL@li.org>\n" | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" |
@@ -18,27 +18,27 @@ msgstr "" | @@ -18,27 +18,27 @@ msgstr "" | ||
18 | "Content-Transfer-Encoding: 8bit\n" | 18 | "Content-Transfer-Encoding: 8bit\n" |
19 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" | 19 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" |
20 | 20 | ||
21 | -#: links/forms.py:27 | 21 | +#: links/forms.py:31 |
22 | msgid "Tags" | 22 | msgid "Tags" |
23 | msgstr "Tags" | 23 | msgstr "Tags" |
24 | 24 | ||
25 | -#: links/forms.py:28 | 25 | +#: links/forms.py:32 |
26 | msgid "Website URL" | 26 | msgid "Website URL" |
27 | msgstr "URL do site:" | 27 | msgstr "URL do site:" |
28 | 28 | ||
29 | -#: links/forms.py:34 | 29 | +#: links/forms.py:38 |
30 | msgid "Link name" | 30 | msgid "Link name" |
31 | msgstr "Nome do Link" | 31 | msgstr "Nome do Link" |
32 | 32 | ||
33 | -#: links/forms.py:35 | 33 | +#: links/forms.py:39 |
34 | msgid "End View" | 34 | msgid "End View" |
35 | msgstr "" | 35 | msgstr "" |
36 | 36 | ||
37 | -#: links/forms.py:36 | 37 | +#: links/forms.py:40 |
38 | msgid "End View Date" | 38 | msgid "End View Date" |
39 | msgstr "Data final para visualizar" | 39 | msgstr "Data final para visualizar" |
40 | 40 | ||
41 | -#: links/forms.py:64 | 41 | +#: links/forms.py:68 |
42 | msgid "There is already a link with this name on this subject" | 42 | msgid "There is already a link with this name on this subject" |
43 | msgstr "Ja existe um link com este nome neste Assunto" | 43 | msgstr "Ja existe um link com este nome neste Assunto" |
44 | 44 |
links/serializers.py
@@ -51,7 +51,7 @@ class SimpleLinkSerializer(serializers.ModelSerializer): | @@ -51,7 +51,7 @@ class SimpleLinkSerializer(serializers.ModelSerializer): | ||
51 | if topic_exist.exists(): | 51 | if topic_exist.exists(): |
52 | topic = topic_exist[0] | 52 | topic = topic_exist[0] |
53 | else: | 53 | else: |
54 | - topic = Topic.objects.create(name = topic['name'], subject = topic['subject'], repository = topic['repository'], visible = topic['visible'], order = topic['order']) | 54 | + topic = Topic.objects.create(name = topic['name'], subject = topic['subject'], repository = topic['repository'], visible = topic['visible'], order = topic['order'], description = topic['description']) |
55 | 55 | ||
56 | data["topic"] = topic | 56 | data["topic"] = topic |
57 | else: | 57 | else: |
@@ -134,7 +134,7 @@ class CompleteLinkSerializer(serializers.ModelSerializer): | @@ -134,7 +134,7 @@ class CompleteLinkSerializer(serializers.ModelSerializer): | ||
134 | if topic_exist.exists(): | 134 | if topic_exist.exists(): |
135 | topic = topic_exist[0] | 135 | topic = topic_exist[0] |
136 | else: | 136 | else: |
137 | - topic = Topic.objects.create(name = topic['name'], subject = topic['subject'], repository = topic['repository'], visible = topic['visible'], order = topic['order']) | 137 | + topic = Topic.objects.create(name = topic['name'], subject = topic['subject'], repository = topic['repository'], visible = topic['visible'], order = topic['order'], description = topic['description']) |
138 | 138 | ||
139 | data["topic"] = topic | 139 | data["topic"] = topic |
140 | else: | 140 | else: |
links/templates/links/_form.html
@@ -219,7 +219,7 @@ | @@ -219,7 +219,7 @@ | ||
219 | <div class="col-md-12"> | 219 | <div class="col-md-12"> |
220 | <a data-parent="#professors_accordion" data-toggle="collapse" href="#students"> | 220 | <a data-parent="#professors_accordion" data-toggle="collapse" href="#students"> |
221 | <h4 class="panel-title"> | 221 | <h4 class="panel-title"> |
222 | - <button class="btn btn-default btn-xs text-center cat-selector"><i class="fa fa-angle-right fa-2x" aria-hidden="true"></i></button><label for="{{ form.students.auto_id }}">{{ form.students.label }}</label> | 222 | + <button class="btn btn-default btn-xs text-center cat-selector"><i class="fa fa-angle-right fa-2x" aria-hidden="true"></i></button><label for="{{ form.students.auto_id }}">{% trans 'Students' %}</label> |
223 | </h4> | 223 | </h4> |
224 | </a> | 224 | </a> |
225 | </div> | 225 | </div> |
log/locale/pt_BR/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
8 | msgstr "" | 8 | msgstr "" |
9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
11 | -"POT-Creation-Date: 2017-08-30 22:41-0300\n" | 11 | +"POT-Creation-Date: 2017-09-07 22:29-0300\n" |
12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
14 | "Language-Team: LANGUAGE <LL@li.org>\n" | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" |
mailsender/locale/pt_BR/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
8 | msgstr "" | 8 | msgstr "" |
9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
11 | -"POT-Creation-Date: 2017-08-30 22:41-0300\n" | 11 | +"POT-Creation-Date: 2017-09-07 22:29-0300\n" |
12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
14 | "Language-Team: LANGUAGE <LL@li.org>\n" | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" |
mural/locale/pt_BR/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
8 | msgstr "" | 8 | msgstr "" |
9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
11 | -"POT-Creation-Date: 2017-08-30 22:41-0300\n" | 11 | +"POT-Creation-Date: 2017-09-07 22:29-0300\n" |
12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
14 | "Language-Team: LANGUAGE <LL@li.org>\n" | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" |
@@ -32,7 +32,8 @@ msgstr "Pedir ajuda" | @@ -32,7 +32,8 @@ msgstr "Pedir ajuda" | ||
32 | msgid "This field is required." | 32 | msgid "This field is required." |
33 | msgstr "Esse campo é obrigatório." | 33 | msgstr "Esse campo é obrigatório." |
34 | 34 | ||
35 | -#: mural/forms.py:38 mural/forms.py:123 | 35 | +#: mural/forms.py:38 mural/forms.py:123 mural/templates/mural/_form.html:103 |
36 | +#: mural/templates/mural/_form_comment.html:68 | ||
36 | msgid "The image is too large. It should have less than 5MB." | 37 | msgid "The image is too large. It should have less than 5MB." |
37 | msgstr "A imagem é muito grande. Ela deve possuir 5MB ou menos." | 38 | msgstr "A imagem é muito grande. Ela deve possuir 5MB ou menos." |
38 | 39 | ||
@@ -40,7 +41,8 @@ msgstr "A imagem é muito grande. Ela deve possuir 5MB ou menos." | @@ -40,7 +41,8 @@ msgstr "A imagem é muito grande. Ela deve possuir 5MB ou menos." | ||
40 | msgid "Choose an especific resource" | 41 | msgid "Choose an especific resource" |
41 | msgstr "Escolha um recurso específico" | 42 | msgstr "Escolha um recurso específico" |
42 | 43 | ||
43 | -#: mural/models.py:18 | 44 | +#: mural/models.py:18 mural/templates/mural/_form.html:104 |
45 | +#: mural/templates/mural/_form_comment.html:69 | ||
44 | msgid "File not supported." | 46 | msgid "File not supported." |
45 | msgstr "Arquivo não suportado." | 47 | msgstr "Arquivo não suportado." |
46 | 48 | ||
@@ -97,7 +99,7 @@ msgid "Resource" | @@ -97,7 +99,7 @@ msgid "Resource" | ||
97 | msgstr "Recurso" | 99 | msgstr "Recurso" |
98 | 100 | ||
99 | #: mural/models.py:105 mural/models.py:119 | 101 | #: mural/models.py:105 mural/models.py:119 |
100 | -#: mural/templates/mural/_form_comment.html:66 | 102 | +#: mural/templates/mural/_form_comment.html:76 |
101 | msgid "Comment" | 103 | msgid "Comment" |
102 | msgstr "Comentar" | 104 | msgstr "Comentar" |
103 | 105 | ||
@@ -119,14 +121,14 @@ msgstr "Clique ou solte a imagem aqui" | @@ -119,14 +121,14 @@ msgstr "Clique ou solte a imagem aqui" | ||
119 | msgid "The picture could not exceed 5MB." | 121 | msgid "The picture could not exceed 5MB." |
120 | msgstr "A imagem não pode exceder 5MB." | 122 | msgstr "A imagem não pode exceder 5MB." |
121 | 123 | ||
122 | -#: mural/templates/mural/_form.html:100 | 124 | +#: mural/templates/mural/_form.html:111 |
123 | msgctxt "button" | 125 | msgctxt "button" |
124 | msgid "Post" | 126 | msgid "Post" |
125 | msgstr "Postar" | 127 | msgstr "Postar" |
126 | 128 | ||
127 | -#: mural/templates/mural/_form.html:101 | ||
128 | -#: mural/templates/mural/_form_comment.html:67 | ||
129 | -#: mural/templates/mural/_form_comment.html:85 | 129 | +#: mural/templates/mural/_form.html:112 |
130 | +#: mural/templates/mural/_form_comment.html:77 | ||
131 | +#: mural/templates/mural/_form_comment.html:95 | ||
130 | msgid "Cancel" | 132 | msgid "Cancel" |
131 | msgstr "Cancelar" | 133 | msgstr "Cancelar" |
132 | 134 | ||
@@ -134,15 +136,15 @@ msgstr "Cancelar" | @@ -134,15 +136,15 @@ msgstr "Cancelar" | ||
134 | msgid "Choose your photo..." | 136 | msgid "Choose your photo..." |
135 | msgstr "Escolha sua foto..." | 137 | msgstr "Escolha sua foto..." |
136 | 138 | ||
137 | -#: mural/templates/mural/_form_comment.html:78 | 139 | +#: mural/templates/mural/_form_comment.html:88 |
138 | msgid "Insert here the name of the user you wish to mark in this comment" | 140 | msgid "Insert here the name of the user you wish to mark in this comment" |
139 | msgstr "Insira aqui o nome do usuário que você quer marcar nesse comentário" | 141 | msgstr "Insira aqui o nome do usuário que você quer marcar nesse comentário" |
140 | 142 | ||
141 | -#: mural/templates/mural/_form_comment.html:84 | 143 | +#: mural/templates/mural/_form_comment.html:94 |
142 | msgid "Mark" | 144 | msgid "Mark" |
143 | msgstr "Marcar" | 145 | msgstr "Marcar" |
144 | 146 | ||
145 | -#: mural/templates/mural/_form_comment.html:100 | 147 | +#: mural/templates/mural/_form_comment.html:110 |
146 | msgid "Mark User" | 148 | msgid "Mark User" |
147 | msgstr "Marcar Usuário" | 149 | msgstr "Marcar Usuário" |
148 | 150 |
mural/models.py
@@ -10,9 +10,9 @@ from subjects.models import Subject | @@ -10,9 +10,9 @@ from subjects.models import Subject | ||
10 | from topics.models import KnowsChild, Resource | 10 | from topics.models import KnowsChild, Resource |
11 | from users.models import User | 11 | from users.models import User |
12 | 12 | ||
13 | -def validate_img_extension(value): | ||
14 | - valid_formats = ['image/jpeg','image/x-citrix-jpeg','image/png','image/x-citrix-png','image/x-png'] | 13 | +valid_formats = ['image/jpeg','image/x-citrix-jpeg','image/png','image/x-citrix-png','image/x-png','image/gif'] |
15 | 14 | ||
15 | +def validate_img_extension(value): | ||
16 | if hasattr(value.file, 'content_type'): | 16 | if hasattr(value.file, 'content_type'): |
17 | if not value.file.content_type in valid_formats: | 17 | if not value.file.content_type in valid_formats: |
18 | raise ValidationError(_('File not supported.')) | 18 | raise ValidationError(_('File not supported.')) |
mural/templates/mural/_form.html
@@ -80,24 +80,35 @@ | @@ -80,24 +80,35 @@ | ||
80 | 80 | ||
81 | <span id="helpBlock" class="help-block">{{ form.image.help_text }}</span> | 81 | <span id="helpBlock" class="help-block">{{ form.image.help_text }}</span> |
82 | 82 | ||
83 | - {% if form.image.errors %} | ||
84 | - <div class="alert alert-danger alert-dismissible" role="alert"> | ||
85 | - <button type="button" class="close" data-dismiss="alert" aria-label="Close"> | ||
86 | - <span aria-hidden="true">×</span> | ||
87 | - </button> | ||
88 | - <ul> | ||
89 | - {% for error in form.image.errors %} | ||
90 | - <li>{{ error }}</li> | ||
91 | - {% endfor %} | ||
92 | - </ul> | ||
93 | - </div> | ||
94 | - {% endif %} | 83 | + </div> |
84 | + | ||
85 | + {% if form.image.errors %} | ||
86 | + <div class="alert alert-danger alert-dismissible" role="alert"> | ||
87 | + <button type="button" class="close" data-dismiss="alert" aria-label="Close"> | ||
88 | + <span aria-hidden="true">×</span> | ||
89 | + </button> | ||
90 | + <ul> | ||
91 | + {% for error in form.image.errors %} | ||
92 | + <li>{{ error }}</li> | ||
93 | + {% endfor %} | ||
94 | + </ul> | ||
95 | + </div> | ||
96 | + {% endif %} | ||
97 | + | ||
98 | + <div class="alert alert-danger alert-dismissible client-file-errors" style="display:none" role="alert"> | ||
99 | + <button type="button" class="close" data-dismiss="alert" aria-label="Close"> | ||
100 | + <span aria-hidden="true">×</span> | ||
101 | + </button> | ||
102 | + <ul> | ||
103 | + <li class="size" style="display:none">{% trans "The image is too large. It should have less than 5MB." %}</li> | ||
104 | + <li class="format" style="display:none">{% trans 'File not supported.' %}</li> | ||
105 | + </ul> | ||
95 | </div> | 106 | </div> |
96 | </form> | 107 | </form> |
97 | </div> | 108 | </div> |
98 | <div class="modal-footer"> | 109 | <div class="modal-footer"> |
99 | <div class="col-md-12"> | 110 | <div class="col-md-12"> |
100 | - <button type="submit" id="button" form="post-form" class="btn btn-success btn-raised post-button pull-left">{% trans "Post" context "button"%}</button> | 111 | + <button type="submit" id="button" form="post-form" class="btn btn-success btn-raised post-button pull-left">{% trans "Post" context "button" %}</button> |
101 | <button type="button" class="btn btn-raised btn-default pull-right" data-dismiss="modal">{% trans "Cancel" %}</button> | 112 | <button type="button" class="btn btn-raised btn-default pull-right" data-dismiss="modal">{% trans "Cancel" %}</button> |
102 | </div> | 113 | </div> |
103 | </div> | 114 | </div> |
@@ -147,10 +158,33 @@ | @@ -147,10 +158,33 @@ | ||
147 | // file selection | 158 | // file selection |
148 | function FileSelectHandler(e) { | 159 | function FileSelectHandler(e) { |
149 | var files = e.target.files || e.dataTransfer.files, | 160 | var files = e.target.files || e.dataTransfer.files, |
150 | - parent = $(e.target.offsetParent); | 161 | + parent = $(e.target.offsetParent), |
162 | + max_size = 5*1024*1024; | ||
163 | + | ||
164 | + $(".client-file-errors").hide(); | ||
165 | + $(".size").hide(); | ||
166 | + $(".format").hide(); | ||
167 | + $("#button").prop('disable', false); | ||
168 | + $("#button").prop('disabled', false); | ||
151 | 169 | ||
152 | // process all File objects | 170 | // process all File objects |
153 | for (var i = 0, f; f = files[i]; i++) { | 171 | for (var i = 0, f; f = files[i]; i++) { |
172 | + if (f.size > max_size) { | ||
173 | + $("#button").prop('disable', true); | ||
174 | + $("#button").prop('disabled', true); | ||
175 | + | ||
176 | + $(".client-file-errors").show(); | ||
177 | + $(".size").show(); | ||
178 | + } | ||
179 | + | ||
180 | + if (!f.type.match(/^image\//)) { | ||
181 | + $("#button").prop('disable', true); | ||
182 | + $("#button").prop('disabled', true); | ||
183 | + | ||
184 | + $(".client-file-errors").show(); | ||
185 | + $(".format").show(); | ||
186 | + } | ||
187 | + | ||
154 | parent.find('.filedrag').html(f.name); | 188 | parent.find('.filedrag').html(f.name); |
155 | } | 189 | } |
156 | } | 190 | } |
mural/templates/mural/_form_comment.html
@@ -45,19 +45,29 @@ | @@ -45,19 +45,29 @@ | ||
45 | </div> | 45 | </div> |
46 | 46 | ||
47 | <span id="helpBlock" class="help-block">{{ form.image.help_text }}</span> | 47 | <span id="helpBlock" class="help-block">{{ form.image.help_text }}</span> |
48 | + </div> | ||
48 | 49 | ||
49 | - {% if form.image.errors %} | ||
50 | - <div class="alert alert-danger alert-dismissible" role="alert"> | ||
51 | - <button type="button" class="close" data-dismiss="alert" aria-label="Close"> | ||
52 | - <span aria-hidden="true">×</span> | ||
53 | - </button> | ||
54 | - <ul> | ||
55 | - {% for error in form.image.errors %} | ||
56 | - <li>{{ error }}</li> | ||
57 | - {% endfor %} | ||
58 | - </ul> | ||
59 | - </div> | ||
60 | - {% endif %} | 50 | + {% if form.image.errors %} |
51 | + <div class="alert alert-danger alert-dismissible" role="alert"> | ||
52 | + <button type="button" class="close" data-dismiss="alert" aria-label="Close"> | ||
53 | + <span aria-hidden="true">×</span> | ||
54 | + </button> | ||
55 | + <ul> | ||
56 | + {% for error in form.image.errors %} | ||
57 | + <li>{{ error }}</li> | ||
58 | + {% endfor %} | ||
59 | + </ul> | ||
60 | + </div> | ||
61 | + {% endif %} | ||
62 | + | ||
63 | + <div class="alert alert-danger alert-dismissible client-file-errors" style="display:none" role="alert"> | ||
64 | + <button type="button" class="close" data-dismiss="alert" aria-label="Close"> | ||
65 | + <span aria-hidden="true">×</span> | ||
66 | + </button> | ||
67 | + <ul> | ||
68 | + <li class="size" style="display:none">{% trans "The image is too large. It should have less than 5MB." %}</li> | ||
69 | + <li class="format" style="display:none">{% trans 'File not supported.' %}</li> | ||
70 | + </ul> | ||
61 | </div> | 71 | </div> |
62 | </form> | 72 | </form> |
63 | </div> | 73 | </div> |
@@ -99,6 +109,8 @@ | @@ -99,6 +109,8 @@ | ||
99 | contents: '<i class="fa fa-user"/>', | 109 | contents: '<i class="fa fa-user"/>', |
100 | tooltip: '{% trans "Mark User" %}', | 110 | tooltip: '{% trans "Mark User" %}', |
101 | click: function () { | 111 | click: function () { |
112 | + context.invoke('saveRange'); | ||
113 | + | ||
102 | var modal_content = $("#add-user-modal").html(); | 114 | var modal_content = $("#add-user-modal").html(); |
103 | var modal = document.createElement('div'); | 115 | var modal = document.createElement('div'); |
104 | $(modal).addClass('modal'); | 116 | $(modal).addClass('modal'); |
@@ -119,12 +131,9 @@ | @@ -119,12 +131,9 @@ | ||
119 | $(node).addClass('marked_user'); | 131 | $(node).addClass('marked_user'); |
120 | $(node).html(value); | 132 | $(node).html(value); |
121 | 133 | ||
122 | - var code = context.invoke('code'); | ||
123 | - | ||
124 | - var new_code = $(code).append(node).append(" "); | ||
125 | - | ||
126 | - context.invoke('code', new_code); | ||
127 | - | 134 | + context.invoke('restoreRange'); |
135 | + context.invoke('pasteHTML', node); | ||
136 | + | ||
128 | $(modal).modal('hide'); | 137 | $(modal).modal('hide'); |
129 | }); | 138 | }); |
130 | } | 139 | } |
@@ -225,10 +234,33 @@ | @@ -225,10 +234,33 @@ | ||
225 | // file selection | 234 | // file selection |
226 | function FileSelectHandler(e) { | 235 | function FileSelectHandler(e) { |
227 | var files = e.target.files || e.dataTransfer.files, | 236 | var files = e.target.files || e.dataTransfer.files, |
228 | - parent = $(e.target.offsetParent); | 237 | + parent = $(e.target.offsetParent), |
238 | + max_size = 5*1024*1024; | ||
239 | + | ||
240 | + $(".client-file-errors").hide(); | ||
241 | + $(".size").hide(); | ||
242 | + $(".format").hide(); | ||
243 | + $("#button").prop('disable', false); | ||
244 | + $("#button").prop('disabled', false); | ||
229 | 245 | ||
230 | // process all File objects | 246 | // process all File objects |
231 | for (var i = 0, f; f = files[i]; i++) { | 247 | for (var i = 0, f; f = files[i]; i++) { |
248 | + if (f.size > max_size) { | ||
249 | + $("#button").prop('disable', true); | ||
250 | + $("#button").prop('disabled', true); | ||
251 | + | ||
252 | + $(".client-file-errors").show(); | ||
253 | + $(".size").show(); | ||
254 | + } | ||
255 | + | ||
256 | + if (!f.type.match(/^image\//)) { | ||
257 | + $("#button").prop('disable', true); | ||
258 | + $("#button").prop('disabled', true); | ||
259 | + | ||
260 | + $(".client-file-errors").show(); | ||
261 | + $(".format").show(); | ||
262 | + } | ||
263 | + | ||
232 | parent.find('.filedrag').html(f.name); | 264 | parent.find('.filedrag').html(f.name); |
233 | } | 265 | } |
234 | } | 266 | } |
news/forms.py
@@ -31,7 +31,7 @@ class NewsForm(forms.ModelForm): | @@ -31,7 +31,7 @@ class NewsForm(forms.ModelForm): | ||
31 | image = Image.open(self.instance.image) | 31 | image = Image.open(self.instance.image) |
32 | if not x is None: | 32 | if not x is None: |
33 | cropped_image = image.crop((x, y, w+x, h+y)) | 33 | cropped_image = image.crop((x, y, w+x, h+y)) |
34 | - resized_image = cropped_image.resize((1200, 250), Image.ANTIALIAS) | 34 | + resized_image = cropped_image.resize((1200, 400), Image.ANTIALIAS) |
35 | 35 | ||
36 | folder_path = join(settings.MEDIA_ROOT, 'news') | 36 | folder_path = join(settings.MEDIA_ROOT, 'news') |
37 | #check if the folder already exists | 37 | #check if the folder already exists |
news/locale/pt_BR/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
8 | msgstr "" | 8 | msgstr "" |
9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
11 | -"POT-Creation-Date: 2017-08-30 22:41-0300\n" | 11 | +"POT-Creation-Date: 2017-09-07 22:29-0300\n" |
12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
14 | "Language-Team: LANGUAGE <LL@li.org>\n" | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" |
@@ -22,7 +22,7 @@ msgstr "" | @@ -22,7 +22,7 @@ msgstr "" | ||
22 | msgid "This field is required" | 22 | msgid "This field is required" |
23 | msgstr "Este campo é obrigatório." | 23 | msgstr "Este campo é obrigatório." |
24 | 24 | ||
25 | -#: news/forms.py:74 | 25 | +#: news/forms.py:74 news/templates/news/_form.html:72 |
26 | msgid "The image is too large. It should have less than 5MB." | 26 | msgid "The image is too large. It should have less than 5MB." |
27 | msgstr "A imagem é muito grande. Ela deve ter menos que 5MB." | 27 | msgstr "A imagem é muito grande. Ela deve ter menos que 5MB." |
28 | 28 | ||
@@ -30,7 +30,7 @@ msgstr "A imagem é muito grande. Ela deve ter menos que 5MB." | @@ -30,7 +30,7 @@ msgstr "A imagem é muito grande. Ela deve ter menos que 5MB." | ||
30 | msgid "This field is required." | 30 | msgid "This field is required." |
31 | msgstr "Este campo é obrigatório." | 31 | msgstr "Este campo é obrigatório." |
32 | 32 | ||
33 | -#: news/models.py:15 | 33 | +#: news/models.py:15 news/templates/news/_form.html:73 |
34 | msgid "File not supported." | 34 | msgid "File not supported." |
35 | msgstr "Arquivo não suportado" | 35 | msgstr "Arquivo não suportado" |
36 | 36 | ||
@@ -58,19 +58,27 @@ msgstr "Data de criação" | @@ -58,19 +58,27 @@ msgstr "Data de criação" | ||
58 | msgid "Creator" | 58 | msgid "Creator" |
59 | msgstr "Autor" | 59 | msgstr "Autor" |
60 | 60 | ||
61 | -#: news/models.py:25 news/models.py:26 news/templates/news/list.html:11 | 61 | +#: news/models.py:26 news/models.py:27 news/templates/news/list.html:11 |
62 | msgid "News" | 62 | msgid "News" |
63 | msgstr "Notícia" | 63 | msgstr "Notícia" |
64 | 64 | ||
65 | -#: news/templates/news/_form.html:12 | 65 | +#: news/templates/news/_form.html:14 |
66 | msgid "Choose your photo..." | 66 | msgid "Choose your photo..." |
67 | msgstr "Escolha a foto" | 67 | msgstr "Escolha a foto" |
68 | 68 | ||
69 | -#: news/templates/news/_form.html:55 | 69 | +#: news/templates/news/_form.html:28 |
70 | +msgid "Click or drop the file here" | ||
71 | +msgstr "Clique ou solte o arquivo aqui." | ||
72 | + | ||
73 | +#: news/templates/news/_form.html:30 | ||
74 | +msgid "The photo could not exceed 5MB." | ||
75 | +msgstr "A imagem não pode exceder 5MB." | ||
76 | + | ||
77 | +#: news/templates/news/_form.html:81 | ||
70 | msgid "Save" | 78 | msgid "Save" |
71 | msgstr "Salvar" | 79 | msgstr "Salvar" |
72 | 80 | ||
73 | -#: news/templates/news/_form.html:58 | 81 | +#: news/templates/news/_form.html:84 |
74 | msgid "Cancel" | 82 | msgid "Cancel" |
75 | msgstr "Cancelar" | 83 | msgstr "Cancelar" |
76 | 84 | ||
@@ -104,7 +112,7 @@ msgid "Search by title, author or date" | @@ -104,7 +112,7 @@ msgid "Search by title, author or date" | ||
104 | msgstr "Pesquisar por título, autor ou data" | 112 | msgstr "Pesquisar por título, autor ou data" |
105 | 113 | ||
106 | #: news/templates/news/list.html:52 news/templates/news/search.html:45 | 114 | #: news/templates/news/list.html:52 news/templates/news/search.html:45 |
107 | -#: news/views.py:109 | 115 | +#: news/views.py:103 |
108 | msgid "Create News" | 116 | msgid "Create News" |
109 | msgstr "Criar notícia" | 117 | msgstr "Criar notícia" |
110 | 118 | ||
@@ -120,11 +128,11 @@ msgstr "Nenhuma notícia encontrada" | @@ -120,11 +128,11 @@ msgstr "Nenhuma notícia encontrada" | ||
120 | msgid "Search News" | 128 | msgid "Search News" |
121 | msgstr "Pesquisar Notícia" | 129 | msgstr "Pesquisar Notícia" |
122 | 130 | ||
123 | -#: news/templates/news/update.html:7 news/views.py:137 | 131 | +#: news/templates/news/update.html:7 news/views.py:147 |
124 | msgid "Update News" | 132 | msgid "Update News" |
125 | msgstr "Atualizar Notícia" | 133 | msgstr "Atualizar Notícia" |
126 | 134 | ||
127 | -#: news/templates/news/view.html:32 | 135 | +#: news/templates/news/view.html:35 |
128 | msgid "Print News" | 136 | msgid "Print News" |
129 | msgstr "Imprimir Notícia" | 137 | msgstr "Imprimir Notícia" |
130 | 138 | ||
@@ -132,7 +140,7 @@ msgstr "Imprimir Notícia" | @@ -132,7 +140,7 @@ msgstr "Imprimir Notícia" | ||
132 | msgid "Visualize News" | 140 | msgid "Visualize News" |
133 | msgstr "Visualizar Notícia" | 141 | msgstr "Visualizar Notícia" |
134 | 142 | ||
135 | -#: news/views.py:103 news/views.py:131 | 143 | +#: news/views.py:109 news/views.py:153 |
136 | msgid "News successfully created!" | 144 | msgid "News successfully created!" |
137 | msgstr "Notícia criada com sucesso" | 145 | msgstr "Notícia criada com sucesso" |
138 | 146 | ||
@@ -144,12 +152,3 @@ msgstr "Notícia \"%s\" removida com sucesso" | @@ -144,12 +152,3 @@ msgstr "Notícia \"%s\" removida com sucesso" | ||
144 | #: news/views.py:228 | 152 | #: news/views.py:228 |
145 | msgid "Delete News" | 153 | msgid "Delete News" |
146 | msgstr "Apagar Notícia" | 154 | msgstr "Apagar Notícia" |
147 | - | ||
148 | -#~ msgid "Create news" | ||
149 | -#~ msgstr "Criar notícia" | ||
150 | - | ||
151 | -#~ msgid "There is already a news with this name" | ||
152 | -#~ msgstr "Já existe uma notícia com esse nome" | ||
153 | - | ||
154 | -#~ msgid "Name" | ||
155 | -#~ msgstr "Nome" |
news/models.py
@@ -7,9 +7,9 @@ from django.utils.translation import ugettext_lazy as _ | @@ -7,9 +7,9 @@ from django.utils.translation import ugettext_lazy as _ | ||
7 | from django.core.exceptions import ValidationError | 7 | from django.core.exceptions import ValidationError |
8 | from users.models import User | 8 | from users.models import User |
9 | 9 | ||
10 | -def validate_img_extension(value): | ||
11 | - valid_formats = ['image/jpeg','image/x-citrix-jpeg','image/png','image/x-citrix-png','image/x-png'] | 10 | +valid_formats = ['image/jpeg','image/x-citrix-jpeg','image/png','image/x-citrix-png','image/x-png'] |
12 | 11 | ||
12 | +def validate_img_extension(value): | ||
13 | if hasattr(value.file, 'content_type'): | 13 | if hasattr(value.file, 'content_type'): |
14 | if not value.file.content_type in valid_formats: | 14 | if not value.file.content_type in valid_formats: |
15 | raise ValidationError(_('File not supported.')) | 15 | raise ValidationError(_('File not supported.')) |
@@ -21,6 +21,7 @@ class News(models.Model): | @@ -21,6 +21,7 @@ class News(models.Model): | ||
21 | content = models.TextField(_('News Content'), blank = True) | 21 | content = models.TextField(_('News Content'), blank = True) |
22 | create_date = models.DateTimeField(_('Create Date'), auto_now_add = True) | 22 | create_date = models.DateTimeField(_('Create Date'), auto_now_add = True) |
23 | creator = models.ForeignKey(User, verbose_name = _('Creator'), related_name = "news_creator_user", null = True) | 23 | creator = models.ForeignKey(User, verbose_name = _('Creator'), related_name = "news_creator_user", null = True) |
24 | + | ||
24 | class Meta: | 25 | class Meta: |
25 | verbose_name = _('News') | 26 | verbose_name = _('News') |
26 | verbose_name_plural = _('News') | 27 | verbose_name_plural = _('News') |
news/templates/news/_form.html
1 | {% load static i18n %} | 1 | {% load static i18n %} |
2 | {% load widget_tweaks %} | 2 | {% load widget_tweaks %} |
3 | 3 | ||
4 | -<form method="post" action="" enctype="multipart/form-data"> | 4 | +<form id="news-form" method="post" action="" enctype="multipart/form-data"> |
5 | {% csrf_token %} | 5 | {% csrf_token %} |
6 | {% for field in form %} | 6 | {% for field in form %} |
7 | <div class="form-group{% if form.has_error %} has-error {% endif %} is-fileinput col-lg-12 col-md-12 col-sm-12"> | 7 | <div class="form-group{% if form.has_error %} has-error {% endif %} is-fileinput col-lg-12 col-md-12 col-sm-12"> |
8 | {% if field.auto_id == 'id_image' %} | 8 | {% if field.auto_id == 'id_image' %} |
9 | - <label for="{{ field.auto_id }}">{{ field.label }} <span>*</span></label> | ||
10 | - {% render_field field class='form-control' %} | ||
11 | - <div class="input-group"> | ||
12 | - <input type="text" readonly="" class="form-control" id="pic_holder" placeholder="{% trans 'Choose your photo...' %}"> | ||
13 | - <span class="input-group-btn input-group-sm"> | ||
14 | - <button type="button" class="btn btn-fab btn-fab-mini"> | ||
15 | - <i class="material-icons">image</i> | ||
16 | - </button> | ||
17 | - </span> | ||
18 | - </div> | 9 | + <label for="{{ field.auto_id }}">{{ field.label }} <span>*</span></label> |
10 | + | ||
11 | + {% render_field field class='file-selector' data-mimetypes=mimeTypes %} | ||
12 | + | ||
13 | + <div class="input-group common-file-input"> | ||
14 | + <input type="text" readonly="" class="form-control" placeholder="{% trans 'Choose your photo...' %}"> | ||
15 | + <span class="input-group-btn input-group-sm"> | ||
16 | + <button type="button" class="btn btn-fab btn-fab-mini"> | ||
17 | + <i class="material-icons">attach_file</i> | ||
18 | + </button> | ||
19 | + </span> | ||
20 | + </div> | ||
21 | + | ||
22 | + <div class="filedrag"> | ||
23 | + {% if news.image %} | ||
24 | + <i class="fa fa-file-archive-o"></i> <br /> | ||
25 | + | ||
26 | + <small>{{ news.image.path }}</small> | ||
27 | + {% else %} | ||
28 | + {% trans 'Click or drop the file here' %}<br /> | ||
29 | + | ||
30 | + <small>{% trans 'The photo could not exceed 5MB.' %}</small> | ||
31 | + {% endif %} | ||
32 | + </div> | ||
19 | 33 | ||
20 | 34 | ||
21 | {% elif field.auto_id == 'id_content' %} | 35 | {% elif field.auto_id == 'id_content' %} |
@@ -35,19 +49,31 @@ | @@ -35,19 +49,31 @@ | ||
35 | 49 | ||
36 | {% endif %} | 50 | {% endif %} |
37 | <span id="helpBlock" class="help-block">{{ field.help_text }}</span> | 51 | <span id="helpBlock" class="help-block">{{ field.help_text }}</span> |
38 | - {% if field.errors %} | ||
39 | - <div class="alert alert-danger alert-dismissible" role="alert"> | ||
40 | - <button type="button" class="close" data-dismiss="alert" aria-label="Close"> | ||
41 | - <span aria-hidden="true">×</span> | ||
42 | - </button> | ||
43 | - <ul> | ||
44 | - {% for error in field.errors %} | ||
45 | - <li>{{ error }}</li> | ||
46 | - {% endfor %} | ||
47 | - </ul> | ||
48 | - </div> | ||
49 | - {% endif %} | ||
50 | </div> | 52 | </div> |
53 | + {% if field.errors %} | ||
54 | + <div class="col-lg-12 col-md-12 col-sm-12 alert alert-danger alert-dismissible" role="alert"> | ||
55 | + <button type="button" class="close" data-dismiss="alert" aria-label="Close"> | ||
56 | + <span aria-hidden="true">×</span> | ||
57 | + </button> | ||
58 | + <ul> | ||
59 | + {% for error in field.errors %} | ||
60 | + <li>{{ error }}</li> | ||
61 | + {% endfor %} | ||
62 | + </ul> | ||
63 | + </div> | ||
64 | + {% endif %} | ||
65 | + | ||
66 | + {% if field.auto_id == 'id_image' %} | ||
67 | + <div class="col-lg-12 col-md-12 col-sm-12 alert alert-danger alert-dismissible client-file-errors" style="display:none" role="alert"> | ||
68 | + <button type="button" class="close" data-dismiss="alert" aria-label="Close"> | ||
69 | + <span aria-hidden="true">×</span> | ||
70 | + </button> | ||
71 | + <ul> | ||
72 | + <li class="size" style="display:none">{% trans "The image is too large. It should have less than 5MB." %}</li> | ||
73 | + <li class="format" style="display:none">{% trans 'File not supported.' %}</li> | ||
74 | + </ul> | ||
75 | + </div> | ||
76 | + {% endif %} | ||
51 | {% endfor %} | 77 | {% endfor %} |
52 | <div class="row"> | 78 | <div class="row"> |
53 | <div class="col-lg-12 col-md-12 col-sm-12"> | 79 | <div class="col-lg-12 col-md-12 col-sm-12"> |
@@ -62,5 +88,42 @@ | @@ -62,5 +88,42 @@ | ||
62 | 88 | ||
63 | </form> | 89 | </form> |
64 | <script src="{% static 'js/crop_news.js' %}"></script> <!-- Js for cropper--> | 90 | <script src="{% static 'js/crop_news.js' %}"></script> <!-- Js for cropper--> |
91 | +<script type="text/javascript"> | ||
92 | +// check if browser supports drag n drop | ||
93 | +// call initialization file | ||
94 | +if (window.File && window.FileList && window.FileReader) { | ||
95 | + Init(); | ||
96 | +} | ||
97 | + | ||
98 | +// initialize | ||
99 | +function Init() { | ||
100 | + var small = $(".file-selector"), | ||
101 | + filedrag = $(".filedrag"), | ||
102 | + common = $(".common-file-input"); | ||
103 | + | ||
104 | + // file select | ||
105 | + small.on("change", FileSelectHandler); | ||
106 | + | ||
107 | + // is XHR2 available? | ||
108 | + var xhr = new XMLHttpRequest(); | ||
109 | + if (xhr.upload) { | ||
110 | + // file drop | ||
111 | + filedrag.on("drop", FileSelectHandler); | ||
112 | + filedrag.attr('style', 'display:block'); | ||
113 | + common.attr('style', 'display:none'); | ||
114 | + } | ||
115 | +} | ||
116 | + | ||
117 | +// file selection | ||
118 | +function FileSelectHandler(e) { | ||
119 | + var files = e.target.files || e.dataTransfer.files, | ||
120 | + parent = $(e.target.offsetParent); | ||
121 | + // process all File objects | ||
122 | + for (var i = 0, f; f = files[i]; i++) { | ||
123 | + parent.find('.filedrag').html(f.name); | ||
124 | + } | ||
125 | +} | ||
126 | +</script> | ||
127 | + | ||
65 | 128 | ||
66 | {% include 'users/modal_crop.html' %} | 129 | {% include 'users/modal_crop.html' %} |
news/templates/news/view.html
@@ -29,9 +29,16 @@ | @@ -29,9 +29,16 @@ | ||
29 | <div class="row-fluid panel panel-default" > | 29 | <div class="row-fluid panel panel-default" > |
30 | <div class="panel-body" id="printArea"> | 30 | <div class="panel-body" id="printArea"> |
31 | <div class="col-md-12" style="display:inline-block"> | 31 | <div class="col-md-12" style="display:inline-block"> |
32 | - <h2><b>{{new.title}}</b></h2> <button style="text-transform:none; text-decoration: underline;" type="button" class="pull-right btn btn-default btn-sm" id="printButton" name="button">{% trans "Print News" %} <i class="fa fa-print" aria-hidden="true"></i></button><br> | 32 | + <h2><b>{{new.title}}</b></h2> |
33 | + </div> | ||
34 | + <div class="col-md-12" style="margin-top: -30px;"> | ||
35 | + <button style="text-transform:none; text-decoration: underline;" type="button" class="pull-right btn btn-default btn-sm" id="printButton" name="button">{% trans "Print News" %} | ||
36 | + <i class="fa fa-print" aria-hidden="true"></i></button><br> | ||
33 | <p>{{new.creator}}, em {{new.create_date}}</p> | 37 | <p>{{new.creator}}, em {{new.create_date}}</p> |
34 | </div> | 38 | </div> |
39 | + <div class="col-md-12" style="margin-top: 20px; margin-bottom: 20px;"> | ||
40 | + <span><img src="{% if new.image %}{{ new.image.url }}{% endif %}" width="100%"></span> | ||
41 | + </div> | ||
35 | <div class="col-md-12"> | 42 | <div class="col-md-12"> |
36 | <br> | 43 | <br> |
37 | {% autoescape off %} | 44 | {% autoescape off %} |
news/views.py
@@ -8,7 +8,7 @@ from django.contrib import messages | @@ -8,7 +8,7 @@ from django.contrib import messages | ||
8 | from django.utils.translation import ugettext_lazy as _ | 8 | from django.utils.translation import ugettext_lazy as _ |
9 | from django.db.models import Q, Count | 9 | from django.db.models import Q, Count |
10 | 10 | ||
11 | -from .models import News | 11 | +from .models import News, valid_formats |
12 | from .forms import NewsForm | 12 | from .forms import NewsForm |
13 | 13 | ||
14 | class VisualizeNews(LoginRequiredMixin,LogMixin,generic.ListView): | 14 | class VisualizeNews(LoginRequiredMixin,LogMixin,generic.ListView): |
@@ -96,19 +96,19 @@ class CreateNewsView(LoginRequiredMixin,LogMixin,generic.edit.CreateView): | @@ -96,19 +96,19 @@ class CreateNewsView(LoginRequiredMixin,LogMixin,generic.edit.CreateView): | ||
96 | 96 | ||
97 | super(CreateNewsView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context) | 97 | super(CreateNewsView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context) |
98 | 98 | ||
99 | - | ||
100 | return super(CreateNewsView, self).form_valid(form) | 99 | return super(CreateNewsView, self).form_valid(form) |
101 | 100 | ||
102 | - def get_success_url(self): | ||
103 | - messages.success(self.request, _('News successfully created!')) | ||
104 | - | ||
105 | - return reverse_lazy('news:view', kwargs = {'slug': self.object.slug} ) | ||
106 | - | ||
107 | def get_context_data (self, **kwargs): | 101 | def get_context_data (self, **kwargs): |
108 | context = super(CreateNewsView, self).get_context_data(**kwargs) | 102 | context = super(CreateNewsView, self).get_context_data(**kwargs) |
109 | context['title'] = _("Create News") | 103 | context['title'] = _("Create News") |
104 | + context['mimeTypes'] = valid_formats | ||
110 | 105 | ||
111 | return context | 106 | return context |
107 | + | ||
108 | + def get_success_url(self): | ||
109 | + messages.success(self.request, _('News successfully created!')) | ||
110 | + | ||
111 | + return reverse_lazy('news:view', kwargs = {'slug': self.object.slug} ) | ||
112 | 112 | ||
113 | class UpdateNewsView(LoginRequiredMixin,LogMixin,generic.UpdateView): | 113 | class UpdateNewsView(LoginRequiredMixin,LogMixin,generic.UpdateView): |
114 | log_action = "update" | 114 | log_action = "update" |
@@ -127,17 +127,6 @@ class UpdateNewsView(LoginRequiredMixin,LogMixin,generic.UpdateView): | @@ -127,17 +127,6 @@ class UpdateNewsView(LoginRequiredMixin,LogMixin,generic.UpdateView): | ||
127 | return redirect(reverse_lazy('subjects:home')) | 127 | return redirect(reverse_lazy('subjects:home')) |
128 | return super(UpdateNewsView, self).dispatch(request, *args, **kwargs) | 128 | return super(UpdateNewsView, self).dispatch(request, *args, **kwargs) |
129 | 129 | ||
130 | - def get_success_url(self): | ||
131 | - messages.success(self.request, _('News successfully created!')) | ||
132 | - | ||
133 | - return reverse_lazy('news:view', kwargs = {'slug': self.object.slug} ) | ||
134 | - | ||
135 | - def get_context_data (self, **kwargs): | ||
136 | - context = super(UpdateNewsView, self).get_context_data(**kwargs) | ||
137 | - context['title'] = _("Update News") | ||
138 | - | ||
139 | - return context | ||
140 | - | ||
141 | def form_valid(self, form): | 130 | def form_valid(self, form): |
142 | self.object = form.save(commit = False) | 131 | self.object = form.save(commit = False) |
143 | creator = self.request.user | 132 | creator = self.request.user |
@@ -151,8 +140,19 @@ class UpdateNewsView(LoginRequiredMixin,LogMixin,generic.UpdateView): | @@ -151,8 +140,19 @@ class UpdateNewsView(LoginRequiredMixin,LogMixin,generic.UpdateView): | ||
151 | 140 | ||
152 | super(UpdateNewsView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context) | 141 | super(UpdateNewsView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context) |
153 | 142 | ||
154 | - | ||
155 | return super(UpdateNewsView, self).form_valid(form) | 143 | return super(UpdateNewsView, self).form_valid(form) |
144 | + | ||
145 | + def get_context_data (self, **kwargs): | ||
146 | + context = super(UpdateNewsView, self).get_context_data(**kwargs) | ||
147 | + context['title'] = _("Update News") | ||
148 | + context['mimeTypes'] = valid_formats | ||
149 | + | ||
150 | + return context | ||
151 | + | ||
152 | + def get_success_url(self): | ||
153 | + messages.success(self.request, _('News successfully created!')) | ||
154 | + | ||
155 | + return reverse_lazy('news:view', kwargs = {'slug': self.object.slug} ) | ||
156 | 156 | ||
157 | class SearchNewsView(LoginRequiredMixin, LogMixin, generic.ListView): | 157 | class SearchNewsView(LoginRequiredMixin, LogMixin, generic.ListView): |
158 | login_url = reverse_lazy("users:login") | 158 | login_url = reverse_lazy("users:login") |
notifications/locale/pt_BR/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
8 | msgstr "" | 8 | msgstr "" |
9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
11 | -"POT-Creation-Date: 2017-08-30 22:41-0300\n" | 11 | +"POT-Creation-Date: 2017-09-07 22:29-0300\n" |
12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
14 | "Language-Team: LANGUAGE <LL@li.org>\n" | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" |
pdf_file/forms.py
@@ -3,6 +3,7 @@ from django.utils.translation import ugettext_lazy as _ | @@ -3,6 +3,7 @@ from django.utils.translation import ugettext_lazy as _ | ||
3 | from django.utils.html import strip_tags | 3 | from django.utils.html import strip_tags |
4 | 4 | ||
5 | from subjects.models import Tag | 5 | from subjects.models import Tag |
6 | +from subjects.forms import ParticipantsMultipleChoiceField | ||
6 | from resubmit.widgets import ResubmitFileWidget | 7 | from resubmit.widgets import ResubmitFileWidget |
7 | 8 | ||
8 | from .models import PDFFile | 9 | from .models import PDFFile |
@@ -11,6 +12,8 @@ class PDFFileForm(forms.ModelForm): | @@ -11,6 +12,8 @@ class PDFFileForm(forms.ModelForm): | ||
11 | subject = None | 12 | subject = None |
12 | MAX_UPLOAD_SIZE = 10*1024*1024 | 13 | MAX_UPLOAD_SIZE = 10*1024*1024 |
13 | 14 | ||
15 | + students = ParticipantsMultipleChoiceField(queryset = None, required = False) | ||
16 | + | ||
14 | def __init__(self, *args, **kwargs): | 17 | def __init__(self, *args, **kwargs): |
15 | super(PDFFileForm, self).__init__(*args, **kwargs) | 18 | super(PDFFileForm, self).__init__(*args, **kwargs) |
16 | self.subject = kwargs.get('initial').get('subject', None) | 19 | self.subject = kwargs.get('initial').get('subject', None) |
pdf_file/locale/pt_BR/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
8 | msgstr "" | 8 | msgstr "" |
9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
11 | -"POT-Creation-Date: 2017-08-30 22:41-0300\n" | 11 | +"POT-Creation-Date: 2017-09-07 22:29-0300\n" |
12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
14 | "Language-Team: LANGUAGE <LL@li.org>\n" | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" |
@@ -18,23 +18,23 @@ msgstr "" | @@ -18,23 +18,23 @@ msgstr "" | ||
18 | "Content-Transfer-Encoding: 8bit\n" | 18 | "Content-Transfer-Encoding: 8bit\n" |
19 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" | 19 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" |
20 | 20 | ||
21 | -#: pdf_file/forms.py:25 | 21 | +#: pdf_file/forms.py:28 |
22 | msgid "Tags" | 22 | msgid "Tags" |
23 | msgstr "Tags" | 23 | msgstr "Tags" |
24 | 24 | ||
25 | -#: pdf_file/forms.py:30 | 25 | +#: pdf_file/forms.py:33 |
26 | msgid "File name" | 26 | msgid "File name" |
27 | msgstr "Nome do arquivo" | 27 | msgstr "Nome do arquivo" |
28 | 28 | ||
29 | -#: pdf_file/forms.py:51 | 29 | +#: pdf_file/forms.py:54 |
30 | msgid "This subject already has a pdf file with this name" | 30 | msgid "This subject already has a pdf file with this name" |
31 | msgstr "Este assunto já possui um arquivo PDF com este nome" | 31 | msgstr "Este assunto já possui um arquivo PDF com este nome" |
32 | 32 | ||
33 | -#: pdf_file/forms.py:63 | 33 | +#: pdf_file/forms.py:66 pdf_file/templates/pdf_file/_form.html:75 |
34 | msgid "The file is too large. It should have less than 10MB." | 34 | msgid "The file is too large. It should have less than 10MB." |
35 | msgstr "O arquivo é muito grande. Deve ser menor do que 10MB" | 35 | msgstr "O arquivo é muito grande. Deve ser menor do que 10MB" |
36 | 36 | ||
37 | -#: pdf_file/forms.py:68 | 37 | +#: pdf_file/forms.py:71 |
38 | msgid "This field is required." | 38 | msgid "This field is required." |
39 | msgstr "Este campo é requerido." | 39 | msgstr "Este campo é requerido." |
40 | 40 | ||
@@ -50,43 +50,49 @@ msgstr "Arquivo" | @@ -50,43 +50,49 @@ msgstr "Arquivo" | ||
50 | msgid "Are you sure you want delete the PDF File" | 50 | msgid "Are you sure you want delete the PDF File" |
51 | msgstr "Tem certeza que deseja deletar este arquivo PDF?" | 51 | msgstr "Tem certeza que deseja deletar este arquivo PDF?" |
52 | 52 | ||
53 | -#: pdf_file/templates/pdf_file/_form.html:32 | 53 | +#: pdf_file/templates/pdf_file/_form.html:33 |
54 | msgid "Choose your file..." | 54 | msgid "Choose your file..." |
55 | msgstr "Escolha seu arquivo..." | 55 | msgstr "Escolha seu arquivo..." |
56 | 56 | ||
57 | -#: pdf_file/templates/pdf_file/_form.html:46 | 57 | +#: pdf_file/templates/pdf_file/_form.html:47 |
58 | msgid "Click or drop the file here" | 58 | msgid "Click or drop the file here" |
59 | msgstr "Clique ou arraste o arquivo aqui." | 59 | msgstr "Clique ou arraste o arquivo aqui." |
60 | 60 | ||
61 | -#: pdf_file/templates/pdf_file/_form.html:48 | 61 | +#: pdf_file/templates/pdf_file/_form.html:49 |
62 | msgid "The file could not exceed 10MB." | 62 | msgid "The file could not exceed 10MB." |
63 | msgstr "O arquivo não pode exceder 10MB." | 63 | msgstr "O arquivo não pode exceder 10MB." |
64 | 64 | ||
65 | -#: pdf_file/templates/pdf_file/_form.html:68 | 65 | +#: pdf_file/templates/pdf_file/_form.html:76 |
66 | +#, fuzzy | ||
67 | +#| msgid "File not supported, use PDF format instead." | ||
68 | +msgid "File not supported." | ||
69 | +msgstr "Este formato não é suportado, use PDF." | ||
70 | + | ||
71 | +#: pdf_file/templates/pdf_file/_form.html:80 | ||
66 | msgid "Common resources settings" | 72 | msgid "Common resources settings" |
67 | msgstr "Configurações comuns à todos os recursos" | 73 | msgstr "Configurações comuns à todos os recursos" |
68 | 74 | ||
69 | -#: pdf_file/templates/pdf_file/_form.html:119 | 75 | +#: pdf_file/templates/pdf_file/_form.html:131 |
70 | msgid "Pendencies Notifications" | 76 | msgid "Pendencies Notifications" |
71 | msgstr "Notificações pendentes" | 77 | msgstr "Notificações pendentes" |
72 | 78 | ||
73 | -#: pdf_file/templates/pdf_file/_form.html:135 | 79 | +#: pdf_file/templates/pdf_file/_form.html:147 |
74 | msgid "Action not performed by the user" | 80 | msgid "Action not performed by the user" |
75 | msgstr "Ação não permitida pelo usuário" | 81 | msgstr "Ação não permitida pelo usuário" |
76 | 82 | ||
77 | -#: pdf_file/templates/pdf_file/_form.html:161 | 83 | +#: pdf_file/templates/pdf_file/_form.html:173 |
78 | msgid "Wished period" | 84 | msgid "Wished period" |
79 | msgstr "Período desejado" | 85 | msgstr "Período desejado" |
80 | 86 | ||
81 | -#: pdf_file/templates/pdf_file/_form.html:257 | 87 | +#: pdf_file/templates/pdf_file/_form.html:269 |
82 | msgid "Attribute students to file link" | 88 | msgid "Attribute students to file link" |
83 | msgstr "" | 89 | msgstr "" |
84 | 90 | ||
85 | -#: pdf_file/templates/pdf_file/_form.html:277 | 91 | +#: pdf_file/templates/pdf_file/_form.html:289 |
86 | msgid "Attribute groups to file link" | 92 | msgid "Attribute groups to file link" |
87 | msgstr "" | 93 | msgstr "" |
88 | 94 | ||
89 | -#: pdf_file/templates/pdf_file/_form.html:346 | 95 | +#: pdf_file/templates/pdf_file/_form.html:358 |
90 | msgid "Save" | 96 | msgid "Save" |
91 | msgstr "Salvar" | 97 | msgstr "Salvar" |
92 | 98 | ||
@@ -170,8 +176,8 @@ msgstr "Editar: " | @@ -170,8 +176,8 @@ msgstr "Editar: " | ||
170 | msgid "PDF could not be displayed" | 176 | msgid "PDF could not be displayed" |
171 | msgstr "PDF não pode ser mostrado" | 177 | msgstr "PDF não pode ser mostrado" |
172 | 178 | ||
173 | -#: pdf_file/views.py:127 pdf_file/views.py:140 pdf_file/views.py:251 | ||
174 | -#: pdf_file/views.py:253 pdf_file/views.py:269 pdf_file/views.py:271 | 179 | +#: pdf_file/views.py:127 pdf_file/views.py:140 pdf_file/views.py:252 |
180 | +#: pdf_file/views.py:254 pdf_file/views.py:270 pdf_file/views.py:272 | ||
175 | msgid "Visualize" | 181 | msgid "Visualize" |
176 | msgstr "Visualizar" | 182 | msgstr "Visualizar" |
177 | 183 | ||
@@ -179,7 +185,7 @@ msgstr "Visualizar" | @@ -179,7 +185,7 @@ msgstr "Visualizar" | ||
179 | msgid "Create PDF File" | 185 | msgid "Create PDF File" |
180 | msgstr "Criar o arquivo PDF" | 186 | msgstr "Criar o arquivo PDF" |
181 | 187 | ||
182 | -#: pdf_file/views.py:211 | 188 | +#: pdf_file/views.py:212 |
183 | #, python-format | 189 | #, python-format |
184 | msgid "" | 190 | msgid "" |
185 | "The PDF File \"%s\" was added to the Topic \"%s\" of the virtual environment " | 191 | "The PDF File \"%s\" was added to the Topic \"%s\" of the virtual environment " |
@@ -188,67 +194,67 @@ msgstr "" | @@ -188,67 +194,67 @@ msgstr "" | ||
188 | "O arquivo PDF \"%s\" foi adicionado ao topico \"%s\" do ambiente virtual " | 194 | "O arquivo PDF \"%s\" foi adicionado ao topico \"%s\" do ambiente virtual " |
189 | "\"%s\" com sucesso!" | 195 | "\"%s\" com sucesso!" |
190 | 196 | ||
191 | -#: pdf_file/views.py:315 | 197 | +#: pdf_file/views.py:316 |
192 | msgid "Update PDF File" | 198 | msgid "Update PDF File" |
193 | msgstr "Atualize arquivo PDF" | 199 | msgstr "Atualize arquivo PDF" |
194 | 200 | ||
195 | -#: pdf_file/views.py:326 | 201 | +#: pdf_file/views.py:328 |
196 | #, python-format | 202 | #, python-format |
197 | msgid "The PDF File \"%s\" was updated successfully!" | 203 | msgid "The PDF File \"%s\" was updated successfully!" |
198 | msgstr "O arquivo PDF \"%s\" foi atualizado com sucesso!" | 204 | msgstr "O arquivo PDF \"%s\" foi atualizado com sucesso!" |
199 | 205 | ||
200 | -#: pdf_file/views.py:353 | 206 | +#: pdf_file/views.py:355 |
201 | #, python-format | 207 | #, python-format |
202 | msgid "" | 208 | msgid "" |
203 | "The PDF File \"%s\" was removed successfully from virtual environment \"%s\"!" | 209 | "The PDF File \"%s\" was removed successfully from virtual environment \"%s\"!" |
204 | msgstr "" | 210 | msgstr "" |
205 | "O arquivo PDF \"%s\" foi removido com sucesso do ambiente virtual \"%s\" " | 211 | "O arquivo PDF \"%s\" foi removido com sucesso do ambiente virtual \"%s\" " |
206 | 212 | ||
207 | -#: pdf_file/views.py:411 | 213 | +#: pdf_file/views.py:413 |
208 | msgid "PDF File Reports" | 214 | msgid "PDF File Reports" |
209 | msgstr "Relatórios do arquivo de PDF" | 215 | msgstr "Relatórios do arquivo de PDF" |
210 | 216 | ||
211 | -#: pdf_file/views.py:431 | 217 | +#: pdf_file/views.py:433 |
212 | msgid "Realized" | 218 | msgid "Realized" |
213 | msgstr "Realizada" | 219 | msgstr "Realizada" |
214 | 220 | ||
215 | -#: pdf_file/views.py:431 | 221 | +#: pdf_file/views.py:433 |
216 | msgid "Unrealized" | 222 | msgid "Unrealized" |
217 | msgstr "Não Realizada" | 223 | msgstr "Não Realizada" |
218 | 224 | ||
219 | -#: pdf_file/views.py:431 | 225 | +#: pdf_file/views.py:433 |
220 | msgid "Historic" | 226 | msgid "Historic" |
221 | msgstr "Histórico" | 227 | msgstr "Histórico" |
222 | 228 | ||
223 | -#: pdf_file/views.py:447 pdf_file/views.py:455 | 229 | +#: pdf_file/views.py:449 pdf_file/views.py:457 |
224 | msgid "View" | 230 | msgid "View" |
225 | msgstr "Visualizar" | 231 | msgstr "Visualizar" |
226 | 232 | ||
227 | -#: pdf_file/views.py:456 | 233 | +#: pdf_file/views.py:458 |
228 | msgid "PDF File" | 234 | msgid "PDF File" |
229 | msgstr "Criar o arquivo PDF" | 235 | msgstr "Criar o arquivo PDF" |
230 | 236 | ||
231 | -#: pdf_file/views.py:461 | 237 | +#: pdf_file/views.py:463 |
232 | msgid "Actions about resource" | 238 | msgid "Actions about resource" |
233 | msgstr "Ações sobre o recurso" | 239 | msgstr "Ações sobre o recurso" |
234 | 240 | ||
235 | -#: pdf_file/views.py:462 | 241 | +#: pdf_file/views.py:464 |
236 | msgid "Quantity" | 242 | msgid "Quantity" |
237 | msgstr "Quantidade" | 243 | msgstr "Quantidade" |
238 | 244 | ||
239 | -#: pdf_file/views.py:509 | 245 | +#: pdf_file/views.py:511 |
240 | msgid "[Photo]" | 246 | msgid "[Photo]" |
241 | msgstr "[Imagem]" | 247 | msgstr "[Imagem]" |
242 | 248 | ||
243 | -#: pdf_file/views.py:521 | 249 | +#: pdf_file/views.py:523 |
244 | #, python-format | 250 | #, python-format |
245 | msgid "Last message in %s" | 251 | msgid "Last message in %s" |
246 | msgstr "Última mensagem em %s" | 252 | msgstr "Última mensagem em %s" |
247 | 253 | ||
248 | -#: pdf_file/views.py:530 | 254 | +#: pdf_file/views.py:532 |
249 | msgid "The message was successfull sent!" | 255 | msgid "The message was successfull sent!" |
250 | msgstr "A mensagem foi enviada com sucesso!" | 256 | msgstr "A mensagem foi enviada com sucesso!" |
251 | 257 | ||
252 | -#: pdf_file/views.py:532 | 258 | +#: pdf_file/views.py:534 |
253 | msgid "No user selected!" | 259 | msgid "No user selected!" |
254 | msgstr "Nenhum usuário selecionado!" | 260 | msgstr "Nenhum usuário selecionado!" |
pdf_file/serializers.py
@@ -44,7 +44,7 @@ class SimplePDFFileSerializer(serializers.ModelSerializer): | @@ -44,7 +44,7 @@ class SimplePDFFileSerializer(serializers.ModelSerializer): | ||
44 | 44 | ||
45 | path = files.extract(data["file"], dst_path) | 45 | path = files.extract(data["file"], dst_path) |
46 | 46 | ||
47 | - new_name = "files/file_" + str(time.time()) + os.path.splitext(data["file"])[1] | 47 | + new_name = os.path.join("files","file_" + str(time.time()) + os.path.splitext(data["file"])[1]) |
48 | 48 | ||
49 | os.rename(os.path.join(dst_path, path), os.path.join(settings.MEDIA_ROOT, new_name)) | 49 | os.rename(os.path.join(dst_path, path), os.path.join(settings.MEDIA_ROOT, new_name)) |
50 | 50 | ||
@@ -80,7 +80,7 @@ class SimplePDFFileSerializer(serializers.ModelSerializer): | @@ -80,7 +80,7 @@ class SimplePDFFileSerializer(serializers.ModelSerializer): | ||
80 | if topic_exist.exists(): | 80 | if topic_exist.exists(): |
81 | topic = topic_exist[0] | 81 | topic = topic_exist[0] |
82 | else: | 82 | else: |
83 | - topic = Topic.objects.create(name = topic['name'], subject = topic['subject'], repository = topic['repository'], visible = topic['visible'], order = topic['order']) | 83 | + topic = Topic.objects.create(name = topic['name'], subject = topic['subject'], repository = topic['repository'], visible = topic['visible'], order = topic['order'], description = topic['description']) |
84 | 84 | ||
85 | data["topic"] = topic | 85 | data["topic"] = topic |
86 | else: | 86 | else: |
@@ -154,7 +154,7 @@ class CompletePDFFileSerializer(serializers.ModelSerializer): | @@ -154,7 +154,7 @@ class CompletePDFFileSerializer(serializers.ModelSerializer): | ||
154 | 154 | ||
155 | path = files.extract(data["file"], dst_path) | 155 | path = files.extract(data["file"], dst_path) |
156 | 156 | ||
157 | - new_name = "files/file_" + str(time.time()) + os.path.splitext(data["file"])[1] | 157 | + new_name = os.path.join("files","file_" + str(time.time()) + os.path.splitext(data["file"])[1]) |
158 | 158 | ||
159 | os.rename(os.path.join(dst_path, path), os.path.join(settings.MEDIA_ROOT, new_name)) | 159 | os.rename(os.path.join(dst_path, path), os.path.join(settings.MEDIA_ROOT, new_name)) |
160 | 160 | ||
@@ -191,7 +191,7 @@ class CompletePDFFileSerializer(serializers.ModelSerializer): | @@ -191,7 +191,7 @@ class CompletePDFFileSerializer(serializers.ModelSerializer): | ||
191 | if topic_exist.exists(): | 191 | if topic_exist.exists(): |
192 | topic = topic_exist[0] | 192 | topic = topic_exist[0] |
193 | else: | 193 | else: |
194 | - topic = Topic.objects.create(name = topic['name'], subject = topic['subject'], repository = topic['repository'], visible = topic['visible'], order = topic['order']) | 194 | + topic = Topic.objects.create(name = topic['name'], subject = topic['subject'], repository = topic['repository'], visible = topic['visible'], order = topic['order'], description = topic['description']) |
195 | 195 | ||
196 | data["topic"] = topic | 196 | data["topic"] = topic |
197 | else: | 197 | else: |
pdf_file/templates/pdf_file/_form.html
@@ -236,7 +236,7 @@ | @@ -236,7 +236,7 @@ | ||
236 | <div class="col-md-12"> | 236 | <div class="col-md-12"> |
237 | <a data-parent="#professors_accordion" data-toggle="collapse" href="#students"> | 237 | <a data-parent="#professors_accordion" data-toggle="collapse" href="#students"> |
238 | <h4 class="panel-title"> | 238 | <h4 class="panel-title"> |
239 | - <button class="btn btn-default btn-xs text-center cat-selector"><i class="fa fa-angle-right fa-2x" aria-hidden="true"></i></button><label for="{{ form.students.auto_id }}">{{ form.students.label }}</label> | 239 | + <button class="btn btn-default btn-xs text-center cat-selector"><i class="fa fa-angle-right fa-2x" aria-hidden="true"></i></button><label for="{{ form.students.auto_id }}">{% trans 'Students' %}</label> |
240 | </h4> | 240 | </h4> |
241 | </a> | 241 | </a> |
242 | </div> | 242 | </div> |
pendencies/locale/pt_BR/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
8 | msgstr "" | 8 | msgstr "" |
9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
11 | -"POT-Creation-Date: 2017-08-30 22:41-0300\n" | 11 | +"POT-Creation-Date: 2017-09-07 22:29-0300\n" |
12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
14 | "Language-Team: LANGUAGE <LL@li.org>\n" | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" |
reports/locale/pt_BR/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
8 | msgstr "" | 8 | msgstr "" |
9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
11 | -"POT-Creation-Date: 2017-08-30 22:41-0300\n" | 11 | +"POT-Creation-Date: 2017-09-07 22:29-0300\n" |
12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
14 | "Language-Team: LANGUAGE <LL@li.org>\n" | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" |
security/locale/pt_BR/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
8 | msgstr "" | 8 | msgstr "" |
9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
11 | -"POT-Creation-Date: 2017-08-30 22:41-0300\n" | 11 | +"POT-Creation-Date: 2017-09-07 22:29-0300\n" |
12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
14 | "Language-Team: LANGUAGE <LL@li.org>\n" | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" |
students_group/forms.py
@@ -3,11 +3,13 @@ from django import forms | @@ -3,11 +3,13 @@ from django import forms | ||
3 | from django.utils.translation import ugettext_lazy as _ | 3 | from django.utils.translation import ugettext_lazy as _ |
4 | 4 | ||
5 | from subjects.models import Subject | 5 | from subjects.models import Subject |
6 | +from subjects.forms import ParticipantsMultipleChoiceField | ||
6 | 7 | ||
7 | from .models import StudentsGroup | 8 | from .models import StudentsGroup |
8 | 9 | ||
9 | class StudentsGroupForm(forms.ModelForm): | 10 | class StudentsGroupForm(forms.ModelForm): |
10 | subject = None | 11 | subject = None |
12 | + participants = ParticipantsMultipleChoiceField(queryset = None, required = False) | ||
11 | 13 | ||
12 | def __init__(self, *args, **kwargs): | 14 | def __init__(self, *args, **kwargs): |
13 | super(StudentsGroupForm, self).__init__(*args, **kwargs) | 15 | super(StudentsGroupForm, self).__init__(*args, **kwargs) |
students_group/locale/pt_BR/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
8 | msgstr "" | 8 | msgstr "" |
9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
11 | -"POT-Creation-Date: 2017-08-30 22:41-0300\n" | 11 | +"POT-Creation-Date: 2017-09-07 22:29-0300\n" |
12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
14 | "Language-Team: LANGUAGE <LL@li.org>\n" | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" |
@@ -18,7 +18,7 @@ msgstr "" | @@ -18,7 +18,7 @@ msgstr "" | ||
18 | "Content-Transfer-Encoding: 8bit\n" | 18 | "Content-Transfer-Encoding: 8bit\n" |
19 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" | 19 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" |
20 | 20 | ||
21 | -#: students_group/forms.py:31 | 21 | +#: students_group/forms.py:33 |
22 | msgid "This subject already has a group with this name" | 22 | msgid "This subject already has a group with this name" |
23 | msgstr "Esse assunto já possui um grupo com esse nome" | 23 | msgstr "Esse assunto já possui um grupo com esse nome" |
24 | 24 |
students_group/templates/groups/_form.html
@@ -11,7 +11,7 @@ | @@ -11,7 +11,7 @@ | ||
11 | <div class="col-md-12"> | 11 | <div class="col-md-12"> |
12 | <a data-parent="#professors_accordion" data-toggle="collapse" href="#group_participants"> | 12 | <a data-parent="#professors_accordion" data-toggle="collapse" href="#group_participants"> |
13 | <h4 class="panel-title"> | 13 | <h4 class="panel-title"> |
14 | - <button class="btn btn-default btn-xs text-center cat-selector"><i class="fa fa-angle-right fa-2x" aria-hidden="true"></i></button><label for="{{ field.auto_id }}">{{ field.label }}</label> | 14 | + <button class="btn btn-default btn-xs text-center cat-selector"><i class="fa fa-angle-right fa-2x" aria-hidden="true"></i></button><label for="{{ field.auto_id }}">{% trans 'Participants' %}</label> |
15 | </h4> | 15 | </h4> |
16 | </a> | 16 | </a> |
17 | </div> | 17 | </div> |
subjects/forms.py
1 | from django import forms | 1 | from django import forms |
2 | from django.utils.translation import ugettext_lazy as _ | 2 | from django.utils.translation import ugettext_lazy as _ |
3 | import datetime | 3 | import datetime |
4 | + | ||
5 | +from users.models import User | ||
6 | + | ||
4 | from .models import Subject, Tag | 7 | from .models import Subject, Tag |
5 | 8 | ||
9 | + | ||
10 | +class ParticipantsMultipleChoiceField(forms.ModelMultipleChoiceField): | ||
11 | + def label_from_instance(self, obj): | ||
12 | + label = str(obj) + " - (" + obj.email + ")" | ||
13 | + | ||
14 | + return label | ||
15 | + | ||
6 | class CreateSubjectForm(forms.ModelForm): | 16 | class CreateSubjectForm(forms.ModelForm): |
7 | category_id = None | 17 | category_id = None |
8 | 18 | ||
19 | + students = ParticipantsMultipleChoiceField(queryset = User.objects.all(), required = False) | ||
20 | + professor = ParticipantsMultipleChoiceField(queryset = User.objects.all(), required = False) | ||
21 | + | ||
9 | def __init__(self, *args, **kwargs): | 22 | def __init__(self, *args, **kwargs): |
10 | super(CreateSubjectForm, self).__init__(*args, **kwargs) | 23 | super(CreateSubjectForm, self).__init__(*args, **kwargs) |
11 | 24 | ||
@@ -118,6 +131,9 @@ class CreateSubjectForm(forms.ModelForm): | @@ -118,6 +131,9 @@ class CreateSubjectForm(forms.ModelForm): | ||
118 | return end_date | 131 | return end_date |
119 | 132 | ||
120 | class UpdateSubjectForm(forms.ModelForm): | 133 | class UpdateSubjectForm(forms.ModelForm): |
134 | + students = ParticipantsMultipleChoiceField(queryset = User.objects.all(), required = False) | ||
135 | + professor = ParticipantsMultipleChoiceField(queryset = User.objects.all(), required = False) | ||
136 | + | ||
121 | def __init__(self, *args, **kwargs): | 137 | def __init__(self, *args, **kwargs): |
122 | super(UpdateSubjectForm, self).__init__(*args, **kwargs) | 138 | super(UpdateSubjectForm, self).__init__(*args, **kwargs) |
123 | 139 |
subjects/locale/pt_BR/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
8 | msgstr "" | 8 | msgstr "" |
9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
11 | -"POT-Creation-Date: 2017-08-30 22:41-0300\n" | 11 | +"POT-Creation-Date: 2017-09-07 22:29-0300\n" |
12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
14 | "Language-Team: LANGUAGE <LL@li.org>\n" | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" |
@@ -18,27 +18,27 @@ msgstr "" | @@ -18,27 +18,27 @@ msgstr "" | ||
18 | "Content-Transfer-Encoding: 8bit\n" | 18 | "Content-Transfer-Encoding: 8bit\n" |
19 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" | 19 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" |
20 | 20 | ||
21 | -#: subjects/forms.py:14 subjects/forms.py:117 | 21 | +#: subjects/forms.py:37 subjects/forms.py:144 |
22 | msgid "Tags" | 22 | msgid "Tags" |
23 | msgstr "Tags" | 23 | msgstr "Tags" |
24 | 24 | ||
25 | -#: subjects/forms.py:67 subjects/forms.py:170 | 25 | +#: subjects/forms.py:91 subjects/forms.py:199 |
26 | msgid "There is another subject with this name, try another one." | 26 | msgid "There is another subject with this name, try another one." |
27 | msgstr "Já existe um assunto com esse nome, tente outro." | 27 | msgstr "Já existe um assunto com esse nome, tente outro." |
28 | 28 | ||
29 | -#: subjects/forms.py:76 | 29 | +#: subjects/forms.py:100 |
30 | msgid "This date must be today or after" | 30 | msgid "This date must be today or after" |
31 | msgstr "Essa data deve ser hoje ou depois disso" | 31 | msgstr "Essa data deve ser hoje ou depois disso" |
32 | 32 | ||
33 | -#: subjects/forms.py:86 subjects/forms.py:189 | 33 | +#: subjects/forms.py:110 subjects/forms.py:217 |
34 | msgid "This date must be equal subscribe begin or after" | 34 | msgid "This date must be equal subscribe begin or after" |
35 | msgstr "Essa data deve ser igual ou depois de começarem as incrições" | 35 | msgstr "Essa data deve ser igual ou depois de começarem as incrições" |
36 | 36 | ||
37 | -#: subjects/forms.py:96 subjects/forms.py:199 | 37 | +#: subjects/forms.py:120 subjects/forms.py:227 |
38 | msgid "This date must be after subscribe end" | 38 | msgid "This date must be after subscribe end" |
39 | msgstr "Essa data deve ser depois do fim das inscrições" | 39 | msgstr "Essa data deve ser depois do fim das inscrições" |
40 | 40 | ||
41 | -#: subjects/forms.py:105 subjects/forms.py:208 | 41 | +#: subjects/forms.py:129 subjects/forms.py:236 |
42 | msgid "This date must be equal init date or after" | 42 | msgid "This date must be equal init date or after" |
43 | msgstr "Essa data deve ser igual ou depois da data de início" | 43 | msgstr "Essa data deve ser igual ou depois da data de início" |
44 | 44 | ||
@@ -189,7 +189,7 @@ msgid "DELETE" | @@ -189,7 +189,7 @@ msgid "DELETE" | ||
189 | msgstr "Deletar" | 189 | msgstr "Deletar" |
190 | 190 | ||
191 | #: subjects/templates/subjects/home.html:67 | 191 | #: subjects/templates/subjects/home.html:67 |
192 | -#: subjects/templates/subjects/initial.html:77 subjects/views.py:212 | 192 | +#: subjects/templates/subjects/initial.html:77 subjects/views.py:214 |
193 | msgid "My Subjects" | 193 | msgid "My Subjects" |
194 | msgstr "Meus assuntos" | 194 | msgstr "Meus assuntos" |
195 | 195 | ||
@@ -242,12 +242,12 @@ msgid " Any subjects or Resources were not found on the search for " | @@ -242,12 +242,12 @@ msgid " Any subjects or Resources were not found on the search for " | ||
242 | msgstr " Nenhum assunto ou recursos foram encontrados na busca por " | 242 | msgstr " Nenhum assunto ou recursos foram encontrados na busca por " |
243 | 243 | ||
244 | #: subjects/templates/subjects/list_search.html:48 | 244 | #: subjects/templates/subjects/list_search.html:48 |
245 | -#: subjects/templates/subjects/list_search.html:51 subjects/views.py:677 | 245 | +#: subjects/templates/subjects/list_search.html:51 subjects/views.py:676 |
246 | msgid "Subjects" | 246 | msgid "Subjects" |
247 | msgstr "Assuntos" | 247 | msgstr "Assuntos" |
248 | 248 | ||
249 | #: subjects/templates/subjects/list_search.html:49 | 249 | #: subjects/templates/subjects/list_search.html:49 |
250 | -#: subjects/templates/subjects/list_search.html:52 subjects/views.py:684 | 250 | +#: subjects/templates/subjects/list_search.html:52 subjects/views.py:683 |
251 | msgid "Resources" | 251 | msgid "Resources" |
252 | msgstr "Recursos" | 252 | msgstr "Recursos" |
253 | 253 | ||
@@ -362,52 +362,52 @@ msgstr "Ver Perfil" | @@ -362,52 +362,52 @@ msgstr "Ver Perfil" | ||
362 | msgid "Send Message" | 362 | msgid "Send Message" |
363 | msgstr "Enviar Mensagem" | 363 | msgstr "Enviar Mensagem" |
364 | 364 | ||
365 | -#: subjects/views.py:85 | 365 | +#: subjects/views.py:87 |
366 | msgid "Home" | 366 | msgid "Home" |
367 | msgstr "Início" | 367 | msgstr "Início" |
368 | 368 | ||
369 | -#: subjects/views.py:184 | 369 | +#: subjects/views.py:186 |
370 | msgid "Page is not 'last', nor can it be converted to an int." | 370 | msgid "Page is not 'last', nor can it be converted to an int." |
371 | msgstr "" | 371 | msgstr "" |
372 | "Página não é a 'última', e também não pode ser convertido para um inteiro" | 372 | "Página não é a 'última', e também não pode ser convertido para um inteiro" |
373 | 373 | ||
374 | -#: subjects/views.py:190 | 374 | +#: subjects/views.py:192 |
375 | #, python-format | 375 | #, python-format |
376 | msgid "Invalid page (%(page_number)s): %(message)s" | 376 | msgid "Invalid page (%(page_number)s): %(message)s" |
377 | msgstr "Página inválida (%(page_number)s): %(message)s" | 377 | msgstr "Página inválida (%(page_number)s): %(message)s" |
378 | 378 | ||
379 | -#: subjects/views.py:219 | 379 | +#: subjects/views.py:221 |
380 | msgid "All Subjects" | 380 | msgid "All Subjects" |
381 | msgstr "Todos os assuntos" | 381 | msgstr "Todos os assuntos" |
382 | 382 | ||
383 | -#: subjects/views.py:315 | 383 | +#: subjects/views.py:317 |
384 | msgid "Create Subject" | 384 | msgid "Create Subject" |
385 | msgstr "Criar Assunto" | 385 | msgstr "Criar Assunto" |
386 | 386 | ||
387 | -#: subjects/views.py:327 | 387 | +#: subjects/views.py:329 |
388 | msgid "Replicate Subject" | 388 | msgid "Replicate Subject" |
389 | msgstr "Replicar Assunto" | 389 | msgstr "Replicar Assunto" |
390 | 390 | ||
391 | -#: subjects/views.py:369 | 391 | +#: subjects/views.py:371 |
392 | #, python-format | 392 | #, python-format |
393 | msgid "The Subject \"%s\" was registered on \"%s\" Category successfully!" | 393 | msgid "The Subject \"%s\" was registered on \"%s\" Category successfully!" |
394 | msgstr "Assunto \"%s\" foi registrado na categoria \"%s\" com sucesso!" | 394 | msgstr "Assunto \"%s\" foi registrado na categoria \"%s\" com sucesso!" |
395 | 395 | ||
396 | -#: subjects/views.py:404 | 396 | +#: subjects/views.py:406 |
397 | msgid "Update Subject" | 397 | msgid "Update Subject" |
398 | msgstr "Atualizar Assunto" | 398 | msgstr "Atualizar Assunto" |
399 | 399 | ||
400 | -#: subjects/views.py:428 | 400 | +#: subjects/views.py:430 |
401 | #, python-format | 401 | #, python-format |
402 | msgid "The Subject \"%s\" was updated on \"%s\" Category successfully!" | 402 | msgid "The Subject \"%s\" was updated on \"%s\" Category successfully!" |
403 | msgstr "Assunto \"%s\" foi atualizado na categoria \"%s\" com sucesso!" | 403 | msgstr "Assunto \"%s\" foi atualizado na categoria \"%s\" com sucesso!" |
404 | 404 | ||
405 | -#: subjects/views.py:469 subjects/views.py:513 | 405 | +#: subjects/views.py:471 subjects/views.py:515 |
406 | #, python-format | 406 | #, python-format |
407 | msgid "Subject \"%s\" removed successfully!" | 407 | msgid "Subject \"%s\" removed successfully!" |
408 | msgstr "Assunto \"%s\" removido com sucesso!" | 408 | msgstr "Assunto \"%s\" removido com sucesso!" |
409 | 409 | ||
410 | -#: subjects/views.py:477 subjects/views.py:481 | 410 | +#: subjects/views.py:479 subjects/views.py:483 |
411 | msgid "" | 411 | msgid "" |
412 | "Subject can't be removed. The subject still possess students and learning " | 412 | "Subject can't be removed. The subject still possess students and learning " |
413 | "objects associated" | 413 | "objects associated" |
@@ -415,24 +415,24 @@ msgstr "" | @@ -415,24 +415,24 @@ msgstr "" | ||
415 | "Assunto não pode ser removido. Ele ainda possui alunos e objetos de " | 415 | "Assunto não pode ser removido. Ele ainda possui alunos e objetos de " |
416 | "aprendizado associados" | 416 | "aprendizado associados" |
417 | 417 | ||
418 | -#: subjects/views.py:603 | 418 | +#: subjects/views.py:602 |
419 | msgid "Subscription date is due!" | 419 | msgid "Subscription date is due!" |
420 | msgstr "O período de inscrição está encerrado!" | 420 | msgstr "O período de inscrição está encerrado!" |
421 | 421 | ||
422 | -#: subjects/views.py:616 | 422 | +#: subjects/views.py:615 |
423 | msgid "Subscription was successfull!" | 423 | msgid "Subscription was successfull!" |
424 | msgstr "Inscrição feita com sucesso!" | 424 | msgstr "Inscrição feita com sucesso!" |
425 | 425 | ||
426 | -#: subjects/views.py:749 | 426 | +#: subjects/views.py:748 |
427 | #, python-format | 427 | #, python-format |
428 | msgid "%s - Backup" | 428 | msgid "%s - Backup" |
429 | msgstr "%s - Backup" | 429 | msgstr "%s - Backup" |
430 | 430 | ||
431 | -#: subjects/views.py:885 | 431 | +#: subjects/views.py:907 |
432 | #, python-format | 432 | #, python-format |
433 | msgid "%s - Restore" | 433 | msgid "%s - Restore" |
434 | msgstr "%s - Restaurar" | 434 | msgstr "%s - Restaurar" |
435 | 435 | ||
436 | -#: subjects/views.py:951 | 436 | +#: subjects/views.py:981 |
437 | msgid "Backup restored successfully!" | 437 | msgid "Backup restored successfully!" |
438 | msgstr "Backup restaurado com sucesso!" | 438 | msgstr "Backup restaurado com sucesso!" |
subjects/serializers.py
@@ -27,4 +27,4 @@ class SubjectSerializer(serializers.ModelSerializer): | @@ -27,4 +27,4 @@ class SubjectSerializer(serializers.ModelSerializer): | ||
27 | 27 | ||
28 | class Meta: | 28 | class Meta: |
29 | model = Subject | 29 | model = Subject |
30 | - fields = ["name", "slug", "visible"] | ||
31 | \ No newline at end of file | 30 | \ No newline at end of file |
31 | + fields = ["name", "slug", "visible", "description_brief", "description"] | ||
32 | \ No newline at end of file | 32 | \ No newline at end of file |
subjects/templates/subjects/_form.html
@@ -11,7 +11,7 @@ | @@ -11,7 +11,7 @@ | ||
11 | <div class="col-md-12"> | 11 | <div class="col-md-12"> |
12 | <a data-parent="#coordinators_accordion" data-toggle="collapse" href="#students"> | 12 | <a data-parent="#coordinators_accordion" data-toggle="collapse" href="#students"> |
13 | <h4 class="panel-title"> | 13 | <h4 class="panel-title"> |
14 | - <button class="btn btn-default btn-xs text-center cat-selector"><i class="fa fa-angle-right fa-2x" aria-hidden="true"></i></button><label for="{{ field.auto_id }}">{{ field.label }}</label> | 14 | + <button class="btn btn-default btn-xs text-center cat-selector"><i class="fa fa-angle-right fa-2x" aria-hidden="true"></i></button><label for="{{ field.auto_id }}">{% trans 'Students' %}</label> |
15 | </h4> | 15 | </h4> |
16 | </a> | 16 | </a> |
17 | </div> | 17 | </div> |
@@ -31,7 +31,7 @@ | @@ -31,7 +31,7 @@ | ||
31 | <div class="col-md-12"> | 31 | <div class="col-md-12"> |
32 | <a data-parent="#professors_accordion" data-toggle="collapse" href="#professors"> | 32 | <a data-parent="#professors_accordion" data-toggle="collapse" href="#professors"> |
33 | <h4 class="panel-title"> | 33 | <h4 class="panel-title"> |
34 | - <button class="btn btn-default btn-xs text-center cat-selector"><i class="fa fa-angle-right fa-2x" aria-hidden="true"></i></button><label for="{{ field.auto_id }}">{{ field.label }}</label> | 34 | + <button class="btn btn-default btn-xs text-center cat-selector"><i class="fa fa-angle-right fa-2x" aria-hidden="true"></i></button><label for="{{ field.auto_id }}">{% trans 'Professor' %}</label> |
35 | </h4> | 35 | </h4> |
36 | </a> | 36 | </a> |
37 | </div> | 37 | </div> |
subjects/templates/subjects/restore.html
@@ -72,10 +72,10 @@ | @@ -72,10 +72,10 @@ | ||
72 | {% csrf_token %} | 72 | {% csrf_token %} |
73 | 73 | ||
74 | <div class="form-group is-fileinput"> | 74 | <div class="form-group is-fileinput"> |
75 | - <input type="file" id="zip_file" name="zip_file" class="form-control" accept=".zip" /> | 75 | + <input type="file" id="zip_file" name="zip_file" class="form-control" accept=".zip" data-mimetypes="['application/zip', 'application/octet-stream']" required /> |
76 | 76 | ||
77 | <div class="input-group common-file-input"> | 77 | <div class="input-group common-file-input"> |
78 | - <input type="text" readonly="" class="form-control" placeholder="{% trans 'Choose your file...' %}"> | 78 | + <input type="text" readonly="" class="form-control" placeholder="{% trans 'Choose your file...' %}" required> |
79 | <span class="input-group-btn input-group-sm"> | 79 | <span class="input-group-btn input-group-sm"> |
80 | <button type="button" class="btn btn-fab btn-fab-mini"> | 80 | <button type="button" class="btn btn-fab btn-fab-mini"> |
81 | <i class="material-icons">attach_file</i> | 81 | <i class="material-icons">attach_file</i> |
@@ -88,8 +88,18 @@ | @@ -88,8 +88,18 @@ | ||
88 | </div> | 88 | </div> |
89 | </div> | 89 | </div> |
90 | 90 | ||
91 | + <div class="col-lg-12 col-md-12 col-sm-12 alert alert-danger alert-dismissible client-file-errors" style="display:none" role="alert"> | ||
92 | + <button type="button" class="close" data-dismiss="alert" aria-label="Close"> | ||
93 | + <span aria-hidden="true">×</span> | ||
94 | + </button> | ||
95 | + <ul> | ||
96 | + <li class="format">{% trans 'File not supported.' %}</li> | ||
97 | + </ul> | ||
98 | + </div> | ||
99 | + | ||
100 | + | ||
91 | <div class="row text-center"> | 101 | <div class="row text-center"> |
92 | - <input type="submit" value="{% trans 'Restore' %}" class="btn btn-success btn-raised" /> | 102 | + <input type="submit" value="{% trans 'Restore' %}" disabled class="btn btn-success btn-raised" /> |
93 | </div> | 103 | </div> |
94 | </form> | 104 | </form> |
95 | </div> | 105 | </div> |
@@ -127,10 +137,23 @@ | @@ -127,10 +137,23 @@ | ||
127 | // file selection | 137 | // file selection |
128 | function FileSelectHandler(e) { | 138 | function FileSelectHandler(e) { |
129 | var files = e.target.files || e.dataTransfer.files, | 139 | var files = e.target.files || e.dataTransfer.files, |
130 | - parent = $(e.target.offsetParent); | 140 | + parent = $(e.target.offsetParent), |
141 | + mimeTypes = $(e.target).data('mimetypes'), | ||
142 | + submit_btn = $(e.target).closest("form").find("input[type='submit']"); | ||
143 | + | ||
144 | + $(".client-file-errors").hide(); | ||
145 | + $(submit_btn).prop('disable', false); | ||
146 | + $(submit_btn).prop('disabled', false); | ||
131 | 147 | ||
132 | // process all File objects | 148 | // process all File objects |
133 | for (var i = 0, f; f = files[i]; i++) { | 149 | for (var i = 0, f; f = files[i]; i++) { |
150 | + if (!mimeTypes.includes(f.type)) { | ||
151 | + $(submit_btn).prop('disable', true); | ||
152 | + $(submit_btn).prop('disabled', true); | ||
153 | + | ||
154 | + $(".client-file-errors").show(); | ||
155 | + } | ||
156 | + | ||
134 | parent.find('.filedrag').html(f.name); | 157 | parent.find('.filedrag').html(f.name); |
135 | } | 158 | } |
136 | } | 159 | } |
subjects/views.py
@@ -43,6 +43,8 @@ from rest_framework.renderers import JSONRenderer | @@ -43,6 +43,8 @@ from rest_framework.renderers import JSONRenderer | ||
43 | from rest_framework.parsers import JSONParser | 43 | from rest_framework.parsers import JSONParser |
44 | 44 | ||
45 | from users.serializers import UserBackupSerializer | 45 | from users.serializers import UserBackupSerializer |
46 | +from bulletin.serializers import SimpleBulletinSerializer, CompleteBulletinSerializer | ||
47 | +from bulletin.models import Bulletin | ||
46 | from file_link.serializers import SimpleFileLinkSerializer, CompleteFileLinkSerializer | 48 | from file_link.serializers import SimpleFileLinkSerializer, CompleteFileLinkSerializer |
47 | from file_link.models import FileLink | 49 | from file_link.models import FileLink |
48 | from goals.serializers import SimpleGoalSerializer, CompleteGoalSerializer | 50 | from goals.serializers import SimpleGoalSerializer, CompleteGoalSerializer |
@@ -284,14 +286,14 @@ class SubjectCreateView(LoginRequiredMixin, LogMixin, CreateView): | @@ -284,14 +286,14 @@ class SubjectCreateView(LoginRequiredMixin, LogMixin, CreateView): | ||
284 | initial = super(SubjectCreateView, self).get_initial() | 286 | initial = super(SubjectCreateView, self).get_initial() |
285 | 287 | ||
286 | if self.kwargs.get('slug'): #when the user creates a subject | 288 | if self.kwargs.get('slug'): #when the user creates a subject |
287 | - initial['category'] = Category.objects.all().filter(slug=self.kwargs['slug']) | 289 | + initial['category'] = Category.objects.filter(slug=self.kwargs['slug']) |
288 | # print (initial) | 290 | # print (initial) |
289 | # initial['professor'] = User.objects.all() | 291 | # initial['professor'] = User.objects.all() |
290 | 292 | ||
291 | if self.kwargs.get('subject_slug'): #when the user replicate a subject | 293 | if self.kwargs.get('subject_slug'): #when the user replicate a subject |
292 | subject = get_object_or_404(Subject, slug = self.kwargs['subject_slug']) | 294 | subject = get_object_or_404(Subject, slug = self.kwargs['subject_slug']) |
293 | initial = initial.copy() | 295 | initial = initial.copy() |
294 | - initial['category'] = subject.category | 296 | + initial['category'] = Category.objects.filter(slug = subject.category.slug) |
295 | initial['description'] = subject.description | 297 | initial['description'] = subject.description |
296 | initial['name'] = subject.name | 298 | initial['name'] = subject.name |
297 | initial['visible'] = subject.visible | 299 | initial['visible'] = subject.visible |
@@ -547,9 +549,8 @@ class SubjectDetailView(LoginRequiredMixin, LogMixin, DetailView): | @@ -547,9 +549,8 @@ class SubjectDetailView(LoginRequiredMixin, LogMixin, DetailView): | ||
547 | expire_time = settings.SESSION_SECURITY_EXPIRE_AFTER | 549 | expire_time = settings.SESSION_SECURITY_EXPIRE_AFTER |
548 | 550 | ||
549 | context['participants'] = User.objects.filter( | 551 | context['participants'] = User.objects.filter( |
550 | - Q(is_staff = True) | Q(subject_student__slug = sub) | | ||
551 | - Q(professors__slug = sub) | | ||
552 | - Q(coordinators__subject_category__slug = sub) | 552 | + Q(subject_student__slug = sub) | |
553 | + Q(professors__slug = sub) | ||
553 | ).extra(select = {'status': status_query}, select_params=(expire_time, expire_time,),).distinct().order_by('status', 'social_name','username').exclude(email = self.request.user.email) | 554 | ).extra(select = {'status': status_query}, select_params=(expire_time, expire_time,),).distinct().order_by('status', 'social_name','username').exclude(email = self.request.user.email) |
554 | 555 | ||
555 | resources = self.request.session.get('resources', None) | 556 | resources = self.request.session.get('resources', None) |
@@ -597,8 +598,6 @@ class SubjectSubscribeView(LoginRequiredMixin, LogMixin, TemplateView): | @@ -597,8 +598,6 @@ class SubjectSubscribeView(LoginRequiredMixin, LogMixin, TemplateView): | ||
597 | def post(self, request, *args, **kwargs): | 598 | def post(self, request, *args, **kwargs): |
598 | subject = get_object_or_404(Subject, slug= kwargs.get('slug')) | 599 | subject = get_object_or_404(Subject, slug= kwargs.get('slug')) |
599 | 600 | ||
600 | - print ("Deu Certo ", subject) | ||
601 | - | ||
602 | if subject.subscribe_end <= datetime.datetime.today().date(): | 601 | if subject.subscribe_end <= datetime.datetime.today().date(): |
603 | messages.error(self.request, _('Subscription date is due!')) | 602 | messages.error(self.request, _('Subscription date is due!')) |
604 | else: | 603 | else: |
@@ -763,6 +762,7 @@ def realize_backup(request, subject): | @@ -763,6 +762,7 @@ def realize_backup(request, subject): | ||
763 | 762 | ||
764 | zf = zipfile.ZipFile(s, "w", compression = zipfile.ZIP_DEFLATED) | 763 | zf = zipfile.ZipFile(s, "w", compression = zipfile.ZIP_DEFLATED) |
765 | 764 | ||
765 | + bulletins = Bulletin.objects.filter(id__in = resources_ids) | ||
766 | webpages = Webpage.objects.filter(id__in = resources_ids) | 766 | webpages = Webpage.objects.filter(id__in = resources_ids) |
767 | ytvideos = YTVideo.objects.filter(id__in = resources_ids) | 767 | ytvideos = YTVideo.objects.filter(id__in = resources_ids) |
768 | filelinks = FileLink.objects.filter(id__in = resources_ids) | 768 | filelinks = FileLink.objects.filter(id__in = resources_ids) |
@@ -790,6 +790,23 @@ def realize_backup(request, subject): | @@ -790,6 +790,23 @@ def realize_backup(request, subject): | ||
790 | # Add file, at correct path | 790 | # Add file, at correct path |
791 | zf.write(pdffile.file.path, zip_path) | 791 | zf.write(pdffile.file.path, zip_path) |
792 | 792 | ||
793 | + for bulletin in bulletins: | ||
794 | + if bool(bulletin.file_content): | ||
795 | + if os.path.exists(bulletin.file_content.path): | ||
796 | + fdir, fname = os.path.split(bulletin.file_content.path) | ||
797 | + zip_path = os.path.join(os.path.join("bulletin", "goals"), fname) | ||
798 | + | ||
799 | + # Add file, at correct path | ||
800 | + zf.write(bulletin.file_content.path, zip_path) | ||
801 | + | ||
802 | + if bool(bulletin.indicators): | ||
803 | + if os.path.exists(bulletin.indicators.path): | ||
804 | + fdir, fname = os.path.split(bulletin.indicators.path) | ||
805 | + zip_path = os.path.join(os.path.join("bulletin", "indicators"), fname) | ||
806 | + | ||
807 | + # Add file, at correct path | ||
808 | + zf.write(bulletin.indicators.path, zip_path) | ||
809 | + | ||
793 | file = open("backup.json", "w") | 810 | file = open("backup.json", "w") |
794 | 811 | ||
795 | data_list = [] | 812 | data_list = [] |
@@ -805,6 +822,7 @@ def realize_backup(request, subject): | @@ -805,6 +822,7 @@ def realize_backup(request, subject): | ||
805 | 822 | ||
806 | zf.write(user.image.path, zip_path) | 823 | zf.write(user.image.path, zip_path) |
807 | 824 | ||
825 | + serializer_b = CompleteBulletinSerializer(bulletins, many = True) | ||
808 | serializer_w = CompleteWebpageSerializer(webpages, many = True) | 826 | serializer_w = CompleteWebpageSerializer(webpages, many = True) |
809 | serializer_y = CompleteYTVideoSerializer(ytvideos, many = True) | 827 | serializer_y = CompleteYTVideoSerializer(ytvideos, many = True) |
810 | serializer_f = CompleteFileLinkSerializer(filelinks, many = True) | 828 | serializer_f = CompleteFileLinkSerializer(filelinks, many = True) |
@@ -813,6 +831,7 @@ def realize_backup(request, subject): | @@ -813,6 +831,7 @@ def realize_backup(request, subject): | ||
813 | serializer_g = CompleteGoalSerializer(goals, many = True) | 831 | serializer_g = CompleteGoalSerializer(goals, many = True) |
814 | serializer_c = CompleteWebconferenceSerializer(webconferences, many = True) | 832 | serializer_c = CompleteWebconferenceSerializer(webconferences, many = True) |
815 | else: | 833 | else: |
834 | + serializer_b = SimpleBulletinSerializer(bulletins, many = True) | ||
816 | serializer_w = SimpleWebpageSerializer(webpages, many = True) | 835 | serializer_w = SimpleWebpageSerializer(webpages, many = True) |
817 | serializer_y = SimpleYTVideoSerializer(ytvideos, many = True) | 836 | serializer_y = SimpleYTVideoSerializer(ytvideos, many = True) |
818 | serializer_f = SimpleFileLinkSerializer(filelinks, many = True) | 837 | serializer_f = SimpleFileLinkSerializer(filelinks, many = True) |
@@ -821,6 +840,9 @@ def realize_backup(request, subject): | @@ -821,6 +840,9 @@ def realize_backup(request, subject): | ||
821 | serializer_g = SimpleGoalSerializer(goals, many = True) | 840 | serializer_g = SimpleGoalSerializer(goals, many = True) |
822 | serializer_c = SimpleWebconferenceSerializer(webconferences, many = True) | 841 | serializer_c = SimpleWebconferenceSerializer(webconferences, many = True) |
823 | 842 | ||
843 | + if len(serializer_b.data) > 0: | ||
844 | + data_list.append(serializer_b.data) | ||
845 | + | ||
824 | if len(serializer_w.data) > 0: | 846 | if len(serializer_w.data) > 0: |
825 | data_list.append(serializer_w.data) | 847 | data_list.append(serializer_w.data) |
826 | 848 | ||
@@ -914,6 +936,14 @@ def realize_restore(request, subject): | @@ -914,6 +936,14 @@ def realize_restore(request, subject): | ||
914 | serial = CompleteWebpageSerializer(data = line, many = True, context = {'subject': subject, 'files': file}) | 936 | serial = CompleteWebpageSerializer(data = line, many = True, context = {'subject': subject, 'files': file}) |
915 | else: | 937 | else: |
916 | serial = SimpleWebpageSerializer(data = line, many = True, context = {'subject': subject}) | 938 | serial = SimpleWebpageSerializer(data = line, many = True, context = {'subject': subject}) |
939 | + elif line[0]["_my_subclass"] == "bulletin": | ||
940 | + if "students" in line[0]: | ||
941 | + print(file.namelist()) | ||
942 | + print(line[0]["file_content"]) | ||
943 | + print(line[0]["file_content"] in file.namelist()) | ||
944 | + serial = CompleteBulletinSerializer(data = line, many = True, context = {'subject': subject, 'files': file}) | ||
945 | + else: | ||
946 | + serial = SimpleBulletinSerializer(data = line, many = True, context = {'subject': subject, 'files': file}) | ||
917 | elif line[0]["_my_subclass"] == "filelink": | 947 | elif line[0]["_my_subclass"] == "filelink": |
918 | if "students" in line[0]: | 948 | if "students" in line[0]: |
919 | serial = CompleteFileLinkSerializer(data = line, many = True, context = {'subject': subject, 'files': file}) | 949 | serial = CompleteFileLinkSerializer(data = line, many = True, context = {'subject': subject, 'files': file}) |
themes/locale/pt_BR/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
8 | msgstr "" | 8 | msgstr "" |
9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
11 | -"POT-Creation-Date: 2017-08-30 22:41-0300\n" | 11 | +"POT-Creation-Date: 2017-09-07 22:29-0300\n" |
12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
14 | "Language-Team: LANGUAGE <LL@li.org>\n" | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" |
@@ -18,11 +18,12 @@ msgstr "" | @@ -18,11 +18,12 @@ msgstr "" | ||
18 | "Content-Transfer-Encoding: 8bit\n" | 18 | "Content-Transfer-Encoding: 8bit\n" |
19 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" | 19 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" |
20 | 20 | ||
21 | -#: themes/forms.py:15 themes/forms.py:27 themes/forms.py:39 | 21 | +#: themes/forms.py:17 themes/forms.py:29 themes/forms.py:41 |
22 | +#: themes/templates/themes/basic_update.html:94 | ||
22 | msgid "The image is too large. It should have less than 2MB." | 23 | msgid "The image is too large. It should have less than 2MB." |
23 | msgstr "A imagem é muito grande. Ela deve ter menos de 2MB." | 24 | msgstr "A imagem é muito grande. Ela deve ter menos de 2MB." |
24 | 25 | ||
25 | -#: themes/models.py:11 | 26 | +#: themes/models.py:11 themes/templates/themes/basic_update.html:95 |
26 | msgid "File not supported." | 27 | msgid "File not supported." |
27 | msgstr "Arquivo não suportado." | 28 | msgstr "Arquivo não suportado." |
28 | 29 | ||
@@ -96,12 +97,12 @@ msgstr "Dimensões recomendads" | @@ -96,12 +97,12 @@ msgstr "Dimensões recomendads" | ||
96 | msgid "It is recommended to be a white image" | 97 | msgid "It is recommended to be a white image" |
97 | msgstr "É recomendável ser uma imagem branca" | 98 | msgstr "É recomendável ser uma imagem branca" |
98 | 99 | ||
99 | -#: themes/templates/themes/basic_update.html:89 | 100 | +#: themes/templates/themes/basic_update.html:103 |
100 | #: themes/templates/themes/css_update.html:75 | 101 | #: themes/templates/themes/css_update.html:75 |
101 | msgid "Save" | 102 | msgid "Save" |
102 | msgstr "Salvar" | 103 | msgstr "Salvar" |
103 | 104 | ||
104 | -#: themes/templates/themes/basic_update.html:94 | 105 | +#: themes/templates/themes/basic_update.html:108 |
105 | #: themes/templates/themes/css_update.html:17 | 106 | #: themes/templates/themes/css_update.html:17 |
106 | #: themes/templates/themes/index.html:18 themes/views.py:78 | 107 | #: themes/templates/themes/index.html:18 themes/views.py:78 |
107 | msgid "CSS Selector" | 108 | msgid "CSS Selector" |
topics/locale/pt_BR/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
8 | msgstr "" | 8 | msgstr "" |
9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
11 | -"POT-Creation-Date: 2017-08-30 22:41-0300\n" | 11 | +"POT-Creation-Date: 2017-09-07 22:29-0300\n" |
12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
14 | "Language-Team: LANGUAGE <LL@li.org>\n" | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" |
users/locale/pt_BR/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
8 | msgstr "" | 8 | msgstr "" |
9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
11 | -"POT-Creation-Date: 2017-08-30 22:41-0300\n" | 11 | +"POT-Creation-Date: 2017-09-07 22:29-0300\n" |
12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
14 | "Language-Team: LANGUAGE <LL@li.org>\n" | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" |
@@ -23,6 +23,7 @@ msgid "You must insert an email address" | @@ -23,6 +23,7 @@ msgid "You must insert an email address" | ||
23 | msgstr "Você deve inserir um endereço de email" | 23 | msgstr "Você deve inserir um endereço de email" |
24 | 24 | ||
25 | #: users/forms.py:43 users/templates/users/_form.html:94 | 25 | #: users/forms.py:43 users/templates/users/_form.html:94 |
26 | +#: users/templates/users/register.html:107 | ||
26 | msgid "The image is too large. It should have less than 2MB." | 27 | msgid "The image is too large. It should have less than 2MB." |
27 | msgstr "A imagem é muito grande. Ela deve conter menos de 2MB." | 28 | msgstr "A imagem é muito grande. Ela deve conter menos de 2MB." |
28 | 29 | ||
@@ -88,6 +89,7 @@ msgid "You must insert a valid email address" | @@ -88,6 +89,7 @@ msgid "You must insert a valid email address" | ||
88 | msgstr "Você deve inserir um endereço de email válido" | 89 | msgstr "Você deve inserir um endereço de email válido" |
89 | 90 | ||
90 | #: users/models.py:18 users/templates/users/_form.html:95 | 91 | #: users/models.py:18 users/templates/users/_form.html:95 |
92 | +#: users/templates/users/register.html:108 | ||
91 | msgid "File not supported." | 93 | msgid "File not supported." |
92 | msgstr "Arquivo não suportado." | 94 | msgstr "Arquivo não suportado." |
93 | 95 | ||
@@ -173,15 +175,15 @@ msgstr "Sim" | @@ -173,15 +175,15 @@ msgstr "Sim" | ||
173 | msgid "Is not an admin" | 175 | msgid "Is not an admin" |
174 | msgstr "Não é administrador" | 176 | msgstr "Não é administrador" |
175 | 177 | ||
176 | -#: users/templates/users/_form.html:18 users/templates/users/register.html:53 | 178 | +#: users/templates/users/_form.html:18 users/templates/users/register.html:56 |
177 | msgid "Choose your photo..." | 179 | msgid "Choose your photo..." |
178 | msgstr "Escolha sua foto..." | 180 | msgstr "Escolha sua foto..." |
179 | 181 | ||
180 | -#: users/templates/users/_form.html:32 | 182 | +#: users/templates/users/_form.html:32 users/templates/users/register.html:70 |
181 | msgid "Click or drop the file here" | 183 | msgid "Click or drop the file here" |
182 | msgstr "" | 184 | msgstr "" |
183 | 185 | ||
184 | -#: users/templates/users/_form.html:34 | 186 | +#: users/templates/users/_form.html:34 users/templates/users/register.html:72 |
185 | msgid "The photo could not exceed 2MB." | 187 | msgid "The photo could not exceed 2MB." |
186 | msgstr "A imagem não pode exceder o tamanho de 2MB." | 188 | msgstr "A imagem não pode exceder o tamanho de 2MB." |
187 | 189 | ||
@@ -231,7 +233,7 @@ msgstr "Recuperar" | @@ -231,7 +233,7 @@ msgstr "Recuperar" | ||
231 | 233 | ||
232 | #: users/templates/users/forgot_password.html:75 | 234 | #: users/templates/users/forgot_password.html:75 |
233 | #: users/templates/users/new_password.html:80 | 235 | #: users/templates/users/new_password.html:80 |
234 | -#: users/templates/users/register.html:93 | 236 | +#: users/templates/users/register.html:121 |
235 | msgid "Back" | 237 | msgid "Back" |
236 | msgstr "Voltar" | 238 | msgstr "Voltar" |
237 | 239 | ||
@@ -308,7 +310,7 @@ msgstr "Estudante em" | @@ -308,7 +310,7 @@ msgstr "Estudante em" | ||
308 | msgid "User Register" | 310 | msgid "User Register" |
309 | msgstr "Cadastro de Usuário" | 311 | msgstr "Cadastro de Usuário" |
310 | 312 | ||
311 | -#: users/templates/users/register.html:90 | 313 | +#: users/templates/users/register.html:118 |
312 | msgid "Register" | 314 | msgid "Register" |
313 | msgstr "Cadastrar" | 315 | msgstr "Cadastrar" |
314 | 316 |
users/serializers.py
@@ -35,7 +35,7 @@ class UserBackupSerializer(serializers.ModelSerializer): | @@ -35,7 +35,7 @@ class UserBackupSerializer(serializers.ModelSerializer): | ||
35 | 35 | ||
36 | path = files.extract(data["image"], dst_path) | 36 | path = files.extract(data["image"], dst_path) |
37 | 37 | ||
38 | - new_name = "users/img_" + str(time.time()) + os.path.splitext(data["image"])[1] | 38 | + new_name = os.path.join("users","img_" + str(time.time()) + os.path.splitext(data["image"])[1]) |
39 | 39 | ||
40 | os.rename(os.path.join(dst_path, path), os.path.join(settings.MEDIA_ROOT, new_name)) | 40 | os.rename(os.path.join(dst_path, path), os.path.join(settings.MEDIA_ROOT, new_name)) |
41 | 41 |
webconference/forms.py
@@ -6,6 +6,7 @@ from django.forms.models import inlineformset_factory | @@ -6,6 +6,7 @@ from django.forms.models import inlineformset_factory | ||
6 | import datetime | 6 | import datetime |
7 | 7 | ||
8 | from subjects.models import Tag | 8 | from subjects.models import Tag |
9 | +from subjects.forms import ParticipantsMultipleChoiceField | ||
9 | 10 | ||
10 | from .models import Webconference, ConferenceSettings | 11 | from .models import Webconference, ConferenceSettings |
11 | 12 | ||
@@ -15,6 +16,7 @@ from pendencies.models import Pendencies | @@ -15,6 +16,7 @@ from pendencies.models import Pendencies | ||
15 | class WebconferenceForm(forms.ModelForm): | 16 | class WebconferenceForm(forms.ModelForm): |
16 | subject = None | 17 | subject = None |
17 | control_subject = forms.CharField(widget = forms.HiddenInput()) | 18 | control_subject = forms.CharField(widget = forms.HiddenInput()) |
19 | + students = ParticipantsMultipleChoiceField(queryset = None, required = False) | ||
18 | 20 | ||
19 | def __init__(self, *args, **kwargs): | 21 | def __init__(self, *args, **kwargs): |
20 | super(WebconferenceForm, self).__init__(*args, **kwargs) | 22 | super(WebconferenceForm, self).__init__(*args, **kwargs) |
webconference/locale/pt_BR/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
8 | msgstr "" | 8 | msgstr "" |
9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
11 | -"POT-Creation-Date: 2017-08-30 22:41-0300\n" | 11 | +"POT-Creation-Date: 2017-09-07 22:29-0300\n" |
12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
14 | "Language-Team: LANGUAGE <LL@li.org>\n" | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" |
@@ -18,35 +18,35 @@ msgstr "" | @@ -18,35 +18,35 @@ msgstr "" | ||
18 | "Content-Transfer-Encoding: 8bit\n" | 18 | "Content-Transfer-Encoding: 8bit\n" |
19 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" | 19 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" |
20 | 20 | ||
21 | -#: webconference/forms.py:33 | 21 | +#: webconference/forms.py:35 |
22 | msgid "Tags" | 22 | msgid "Tags" |
23 | msgstr "Tags" | 23 | msgstr "Tags" |
24 | 24 | ||
25 | -#: webconference/forms.py:39 | 25 | +#: webconference/forms.py:41 |
26 | msgid "Web Conference Title" | 26 | msgid "Web Conference Title" |
27 | msgstr "Titulo da Web Conferência" | 27 | msgstr "Titulo da Web Conferência" |
28 | 28 | ||
29 | -#: webconference/forms.py:40 webconference/models.py:8 | 29 | +#: webconference/forms.py:42 webconference/models.py:8 |
30 | msgid "Presentation" | 30 | msgid "Presentation" |
31 | msgstr "Apresentação" | 31 | msgstr "Apresentação" |
32 | 32 | ||
33 | -#: webconference/forms.py:61 | 33 | +#: webconference/forms.py:63 |
34 | msgid "This subject already has a web conference with this name" | 34 | msgid "This subject already has a web conference with this name" |
35 | msgstr "Este assunto já tem uma web conferência com este nome" | 35 | msgstr "Este assunto já tem uma web conferência com este nome" |
36 | 36 | ||
37 | -#: webconference/forms.py:71 | 37 | +#: webconference/forms.py:73 |
38 | msgid "This date must be today or after" | 38 | msgid "This date must be today or after" |
39 | msgstr "Esta data deve ser hoje ou depois" | 39 | msgstr "Esta data deve ser hoje ou depois" |
40 | 40 | ||
41 | -#: webconference/forms.py:81 | 41 | +#: webconference/forms.py:83 |
42 | msgid "This date must be equal start date/hour or after" | 42 | msgid "This date must be equal start date/hour or after" |
43 | msgstr "Esta data deve ser igual ou posterior a data/hora de inicio" | 43 | msgstr "Esta data deve ser igual ou posterior a data/hora de inicio" |
44 | 44 | ||
45 | -#: webconference/forms.py:128 webconference/models.py:35 | 45 | +#: webconference/forms.py:130 webconference/models.py:35 |
46 | msgid "Domain" | 46 | msgid "Domain" |
47 | msgstr "Dominio" | 47 | msgstr "Dominio" |
48 | 48 | ||
49 | -#: webconference/forms.py:132 | 49 | +#: webconference/forms.py:134 |
50 | msgid "The domain of the jitsi server, e.g. meet.jit.si" | 50 | msgid "The domain of the jitsi server, e.g. meet.jit.si" |
51 | msgstr "O dominio do servidor do jitsi, ex: meet.jit.si" | 51 | msgstr "O dominio do servidor do jitsi, ex: meet.jit.si" |
52 | 52 |
webconference/serializers.py
@@ -51,7 +51,7 @@ class SimpleWebconferenceSerializer(serializers.ModelSerializer): | @@ -51,7 +51,7 @@ class SimpleWebconferenceSerializer(serializers.ModelSerializer): | ||
51 | if topic_exist.exists(): | 51 | if topic_exist.exists(): |
52 | topic = topic_exist[0] | 52 | topic = topic_exist[0] |
53 | else: | 53 | else: |
54 | - topic = Topic.objects.create(name = topic['name'], subject = topic['subject'], repository = topic['repository'], visible = topic['visible'], order = topic['order']) | 54 | + topic = Topic.objects.create(name = topic['name'], subject = topic['subject'], repository = topic['repository'], visible = topic['visible'], order = topic['order'], description = topic['description']) |
55 | 55 | ||
56 | data["topic"] = topic | 56 | data["topic"] = topic |
57 | else: | 57 | else: |
@@ -136,7 +136,7 @@ class CompleteWebconferenceSerializer(serializers.ModelSerializer): | @@ -136,7 +136,7 @@ class CompleteWebconferenceSerializer(serializers.ModelSerializer): | ||
136 | if topic_exist.exists(): | 136 | if topic_exist.exists(): |
137 | topic = topic_exist[0] | 137 | topic = topic_exist[0] |
138 | else: | 138 | else: |
139 | - topic = Topic.objects.create(name = topic['name'], subject = topic['subject'], repository = topic['repository'], visible = topic['visible'], order = topic['order']) | 139 | + topic = Topic.objects.create(name = topic['name'], subject = topic['subject'], repository = topic['repository'], visible = topic['visible'], order = topic['order'], description = topic['description']) |
140 | 140 | ||
141 | data["topic"] = topic | 141 | data["topic"] = topic |
142 | else: | 142 | else: |
webconference/templates/webconference/_form.html
@@ -250,7 +250,7 @@ | @@ -250,7 +250,7 @@ | ||
250 | <div class="col-md-12"> | 250 | <div class="col-md-12"> |
251 | <a data-parent="#professors_accordion" data-toggle="collapse" href="#students"> | 251 | <a data-parent="#professors_accordion" data-toggle="collapse" href="#students"> |
252 | <h4 class="panel-title"> | 252 | <h4 class="panel-title"> |
253 | - <button class="btn btn-default btn-xs text-center cat-selector"><i class="fa fa-angle-right fa-2x" aria-hidden="true"></i></button><label for="{{ form.students.auto_id }}">{{ form.students.label }}</label> | 253 | + <button class="btn btn-default btn-xs text-center cat-selector"><i class="fa fa-angle-right fa-2x" aria-hidden="true"></i></button><label for="{{ form.students.auto_id }}">{% trans 'Students' %}</label> |
254 | </h4> | 254 | </h4> |
255 | </a> | 255 | </a> |
256 | </div> | 256 | </div> |
webpage/forms.py
@@ -4,6 +4,7 @@ from django.utils.translation import ugettext_lazy as _ | @@ -4,6 +4,7 @@ from django.utils.translation import ugettext_lazy as _ | ||
4 | from django.utils.html import strip_tags | 4 | from django.utils.html import strip_tags |
5 | 5 | ||
6 | from subjects.models import Tag | 6 | from subjects.models import Tag |
7 | +from subjects.forms import ParticipantsMultipleChoiceField | ||
7 | 8 | ||
8 | from .models import Webpage | 9 | from .models import Webpage |
9 | 10 | ||
@@ -11,6 +12,7 @@ from resubmit.widgets import ResubmitFileWidget | @@ -11,6 +12,7 @@ from resubmit.widgets import ResubmitFileWidget | ||
11 | 12 | ||
12 | class WebpageForm(forms.ModelForm): | 13 | class WebpageForm(forms.ModelForm): |
13 | subject = None | 14 | subject = None |
15 | + students = ParticipantsMultipleChoiceField(queryset = None, required = False) | ||
14 | 16 | ||
15 | def __init__(self, *args, **kwargs): | 17 | def __init__(self, *args, **kwargs): |
16 | super(WebpageForm, self).__init__(*args, **kwargs) | 18 | super(WebpageForm, self).__init__(*args, **kwargs) |
webpage/locale/pt_BR/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
8 | msgstr "" | 8 | msgstr "" |
9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
11 | -"POT-Creation-Date: 2017-08-30 22:41-0300\n" | 11 | +"POT-Creation-Date: 2017-09-07 22:29-0300\n" |
12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
14 | "Language-Team: LANGUAGE <LL@li.org>\n" | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" |
@@ -18,31 +18,31 @@ msgstr "" | @@ -18,31 +18,31 @@ msgstr "" | ||
18 | "Content-Transfer-Encoding: 8bit\n" | 18 | "Content-Transfer-Encoding: 8bit\n" |
19 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" | 19 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" |
20 | 20 | ||
21 | -#: webpage/forms.py:27 | 21 | +#: webpage/forms.py:29 |
22 | msgid "Tags" | 22 | msgid "Tags" |
23 | msgstr "Tags" | 23 | msgstr "Tags" |
24 | 24 | ||
25 | -#: webpage/forms.py:33 | 25 | +#: webpage/forms.py:35 |
26 | msgid "Webpage name" | 26 | msgid "Webpage name" |
27 | msgstr "Nome da Página Web" | 27 | msgstr "Nome da Página Web" |
28 | 28 | ||
29 | -#: webpage/forms.py:34 | 29 | +#: webpage/forms.py:36 |
30 | msgid "Webpage content" | 30 | msgid "Webpage content" |
31 | msgstr "Conteúdo da Página Web" | 31 | msgstr "Conteúdo da Página Web" |
32 | 32 | ||
33 | -#: webpage/forms.py:55 | 33 | +#: webpage/forms.py:57 |
34 | msgid "This subject already has a webpage with this name" | 34 | msgid "This subject already has a webpage with this name" |
35 | msgstr "Esse assunto já possui uma Página Web com esse nome" | 35 | msgstr "Esse assunto já possui uma Página Web com esse nome" |
36 | 36 | ||
37 | -#: webpage/forms.py:66 webpage/forms.py:112 | 37 | +#: webpage/forms.py:68 webpage/forms.py:114 |
38 | msgid "This field is required." | 38 | msgid "This field is required." |
39 | msgstr "Esse campo é obrigatório." | 39 | msgstr "Esse campo é obrigatório." |
40 | 40 | ||
41 | -#: webpage/forms.py:104 | 41 | +#: webpage/forms.py:106 |
42 | msgid "Message" | 42 | msgid "Message" |
43 | msgstr "Mensagem" | 43 | msgstr "Mensagem" |
44 | 44 | ||
45 | -#: webpage/forms.py:124 | 45 | +#: webpage/forms.py:126 |
46 | msgid "The image is too large. It should have less than 5MB." | 46 | msgid "The image is too large. It should have less than 5MB." |
47 | msgstr "A imagem é muito grande. Deve ser menor do que 5MB" | 47 | msgstr "A imagem é muito grande. Deve ser menor do que 5MB" |
48 | 48 |
webpage/serializers.py
@@ -51,7 +51,7 @@ class SimpleWebpageSerializer(serializers.ModelSerializer): | @@ -51,7 +51,7 @@ class SimpleWebpageSerializer(serializers.ModelSerializer): | ||
51 | if topic_exist.exists(): | 51 | if topic_exist.exists(): |
52 | topic = topic_exist[0] | 52 | topic = topic_exist[0] |
53 | else: | 53 | else: |
54 | - topic = Topic.objects.create(name = topic['name'], subject = topic['subject'], repository = topic['repository'], visible = topic['visible'], order = topic['order']) | 54 | + topic = Topic.objects.create(name = topic['name'], subject = topic['subject'], repository = topic['repository'], visible = topic['visible'], order = topic['order'], description = topic['description']) |
55 | 55 | ||
56 | data["topic"] = topic | 56 | data["topic"] = topic |
57 | else: | 57 | else: |
@@ -134,7 +134,7 @@ class CompleteWebpageSerializer(serializers.ModelSerializer): | @@ -134,7 +134,7 @@ class CompleteWebpageSerializer(serializers.ModelSerializer): | ||
134 | if topic_exist.exists(): | 134 | if topic_exist.exists(): |
135 | topic = topic_exist[0] | 135 | topic = topic_exist[0] |
136 | else: | 136 | else: |
137 | - topic = Topic.objects.create(name = topic['name'], subject = topic['subject'], repository = topic['repository'], visible = topic['visible'], order = topic['order']) | 137 | + topic = Topic.objects.create(name = topic['name'], subject = topic['subject'], repository = topic['repository'], visible = topic['visible'], order = topic['order'], description = topic['description']) |
138 | 138 | ||
139 | data["topic"] = topic | 139 | data["topic"] = topic |
140 | else: | 140 | else: |
webpage/templates/webpages/_form.html
@@ -203,7 +203,7 @@ | @@ -203,7 +203,7 @@ | ||
203 | <div class="col-md-12"> | 203 | <div class="col-md-12"> |
204 | <a data-parent="#professors_accordion" data-toggle="collapse" href="#students"> | 204 | <a data-parent="#professors_accordion" data-toggle="collapse" href="#students"> |
205 | <h4 class="panel-title"> | 205 | <h4 class="panel-title"> |
206 | - <button class="btn btn-default btn-xs text-center cat-selector"><i class="fa fa-angle-right fa-2x" aria-hidden="true"></i></button><label for="{{ form.students.auto_id }}">{{ form.students.label }}</label> | 206 | + <button class="btn btn-default btn-xs text-center cat-selector"><i class="fa fa-angle-right fa-2x" aria-hidden="true"></i></button><label for="{{ form.students.auto_id }}">{% trans 'Students' %}</label> |
207 | </h4> | 207 | </h4> |
208 | </a> | 208 | </a> |
209 | </div> | 209 | </div> |
youtube_video/forms.py
@@ -8,6 +8,7 @@ import requests | @@ -8,6 +8,7 @@ import requests | ||
8 | import re | 8 | import re |
9 | 9 | ||
10 | from subjects.models import Tag | 10 | from subjects.models import Tag |
11 | +from subjects.forms import ParticipantsMultipleChoiceField | ||
11 | 12 | ||
12 | from pendencies.forms import PendenciesForm | 13 | from pendencies.forms import PendenciesForm |
13 | from pendencies.models import Pendencies | 14 | from pendencies.models import Pendencies |
@@ -18,6 +19,7 @@ from .models import YTVideo | @@ -18,6 +19,7 @@ from .models import YTVideo | ||
18 | class YTVideoForm(forms.ModelForm): | 19 | class YTVideoForm(forms.ModelForm): |
19 | subject = None | 20 | subject = None |
20 | control_subject = forms.CharField(widget = forms.HiddenInput()) | 21 | control_subject = forms.CharField(widget = forms.HiddenInput()) |
22 | + students = ParticipantsMultipleChoiceField(queryset = None, required = False) | ||
21 | 23 | ||
22 | def __init__(self, *args, **kwargs): | 24 | def __init__(self, *args, **kwargs): |
23 | super(YTVideoForm, self).__init__(*args, **kwargs) | 25 | super(YTVideoForm, self).__init__(*args, **kwargs) |
youtube_video/locale/pt_BR/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
8 | msgstr "" | 8 | msgstr "" |
9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
11 | -"POT-Creation-Date: 2017-08-30 22:41-0300\n" | 11 | +"POT-Creation-Date: 2017-09-07 22:29-0300\n" |
12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
14 | "Language-Team: LANGUAGE <LL@li.org>\n" | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" |
@@ -18,19 +18,19 @@ msgstr "" | @@ -18,19 +18,19 @@ msgstr "" | ||
18 | "Content-Transfer-Encoding: 8bit\n" | 18 | "Content-Transfer-Encoding: 8bit\n" |
19 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" | 19 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" |
20 | 20 | ||
21 | -#: youtube_video/forms.py:36 | 21 | +#: youtube_video/forms.py:38 |
22 | msgid "Tags" | 22 | msgid "Tags" |
23 | msgstr "Tags" | 23 | msgstr "Tags" |
24 | 24 | ||
25 | -#: youtube_video/forms.py:42 | 25 | +#: youtube_video/forms.py:44 |
26 | msgid "Video title" | 26 | msgid "Video title" |
27 | msgstr "Título do Vídeo" | 27 | msgstr "Título do Vídeo" |
28 | 28 | ||
29 | -#: youtube_video/forms.py:62 | 29 | +#: youtube_video/forms.py:64 |
30 | msgid "This subject already has a resource with this name" | 30 | msgid "This subject already has a resource with this name" |
31 | msgstr "Esse assunto já possui um recurso com esse nome" | 31 | msgstr "Esse assunto já possui um recurso com esse nome" |
32 | 32 | ||
33 | -#: youtube_video/forms.py:71 | 33 | +#: youtube_video/forms.py:73 |
34 | msgid "Invalid URL. It should be an YouTube link." | 34 | msgid "Invalid URL. It should be an YouTube link." |
35 | msgstr "URL inválida. Ela deve ser uma URL de um vídeo do YouTube." | 35 | msgstr "URL inválida. Ela deve ser uma URL de um vídeo do YouTube." |
36 | 36 |
youtube_video/serializers.py
@@ -51,7 +51,7 @@ class SimpleYTVideoSerializer(serializers.ModelSerializer): | @@ -51,7 +51,7 @@ class SimpleYTVideoSerializer(serializers.ModelSerializer): | ||
51 | if topic_exist.exists(): | 51 | if topic_exist.exists(): |
52 | topic = topic_exist[0] | 52 | topic = topic_exist[0] |
53 | else: | 53 | else: |
54 | - topic = Topic.objects.create(name = topic['name'], subject = topic['subject'], repository = topic['repository'], visible = topic['visible'], order = topic['order']) | 54 | + topic = Topic.objects.create(name = topic['name'], subject = topic['subject'], repository = topic['repository'], visible = topic['visible'], order = topic['order'], description = topic['description']) |
55 | 55 | ||
56 | data["topic"] = topic | 56 | data["topic"] = topic |
57 | else: | 57 | else: |
@@ -135,7 +135,7 @@ class CompleteYTVideoSerializer(serializers.ModelSerializer): | @@ -135,7 +135,7 @@ class CompleteYTVideoSerializer(serializers.ModelSerializer): | ||
135 | if topic_exist.exists(): | 135 | if topic_exist.exists(): |
136 | topic = topic_exist[0] | 136 | topic = topic_exist[0] |
137 | else: | 137 | else: |
138 | - topic = Topic.objects.create(name = topic['name'], subject = topic['subject'], repository = topic['repository'], visible = topic['visible'], order = topic['order']) | 138 | + topic = Topic.objects.create(name = topic['name'], subject = topic['subject'], repository = topic['repository'], visible = topic['visible'], order = topic['order'], description = topic['description']) |
139 | 139 | ||
140 | data["topic"] = topic | 140 | data["topic"] = topic |
141 | else: | 141 | else: |
youtube_video/templates/youtube/_form.html
@@ -209,7 +209,7 @@ | @@ -209,7 +209,7 @@ | ||
209 | <div class="col-md-12"> | 209 | <div class="col-md-12"> |
210 | <a data-parent="#professors_accordion" data-toggle="collapse" href="#students"> | 210 | <a data-parent="#professors_accordion" data-toggle="collapse" href="#students"> |
211 | <h4 class="panel-title"> | 211 | <h4 class="panel-title"> |
212 | - <button class="btn btn-default btn-xs text-center cat-selector"><i class="fa fa-angle-right fa-2x" aria-hidden="true"></i></button><label for="{{ form.students.auto_id }}">{{ form.students.label }}</label> | 212 | + <button class="btn btn-default btn-xs text-center cat-selector"><i class="fa fa-angle-right fa-2x" aria-hidden="true"></i></button><label for="{{ form.students.auto_id }}">{% trans 'Students' %}</label> |
213 | </h4> | 213 | </h4> |
214 | </a> | 214 | </a> |
215 | </div> | 215 | </div> |