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> |