Commit 2ace89260d55f20c2b4e7785bd6f20f63b742c51

Authored by Jose Guilherme
2 parents 4aedbe76 30e80411

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 = &quot;&quot;) { @@ -250,6 +255,11 @@ function setCommentFormSubmit(post, comment = &quot;&quot;) {
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 &quot;&quot; @@ -8,7 +8,7 @@ msgid &quot;&quot;
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 &quot;&quot; @@ -8,7 +8,7 @@ msgid &quot;&quot;
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 &quot;&quot; @@ -18,23 +18,31 @@ msgstr &quot;&quot;
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 ""
api/utils.py 0 → 100644
@@ -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
@@ -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
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&nbsp;</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 &quot;&quot; @@ -8,7 +8,7 @@ msgid &quot;&quot;
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 &quot;Nome do boletim&quot; @@ -30,23 +30,25 @@ msgstr &quot;Nome do boletim&quot;
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 &quot;Metas&quot; @@ -70,7 +72,7 @@ msgstr &quot;Metas&quot;
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 &quot;Click to download a xls file with the data of the goals&quot; @@ -87,7 +89,7 @@ msgid &quot;Click to download a xls file with the data of the goals&quot;
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 &quot;Click or drop the .xls file with the goals data&quot; @@ -96,35 +98,40 @@ msgid &quot;Click or drop the .xls file with the goals data&quot;
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 &quot;The picture could not exceed 5MB.&quot; @@ -189,14 +196,14 @@ msgid &quot;The picture could not exceed 5MB.&quot;
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 &quot;Enviar&quot; @@ -204,50 +211,55 @@ msgstr &quot;Enviar&quot;
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 &quot;&quot; @@ -256,17 +268,17 @@ msgstr &quot;&quot;
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 &quot;&quot; @@ -275,58 +287,58 @@ msgstr &quot;&quot;
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'))
bulletin/serializers.py 0 → 100644
@@ -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
bulletin/sheets/xls/future-5.xls 0 → 100644
No preview for this file type
bulletin/sheets/xls/olhos.xls 0 → 100644
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">&times;</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">&times;</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">&times;</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">&times;</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">&times;</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">&times;</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">&times;</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">&times;</span></button> 249 + <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</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 &quot;&quot; @@ -8,7 +8,7 @@ msgid &quot;&quot;
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 &quot;&quot; @@ -8,7 +8,7 @@ msgid &quot;&quot;
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 &quot;Inativo&quot; @@ -250,11 +250,11 @@ msgstr &quot;Inativo&quot;
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'))
@@ -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 &quot;&quot; @@ -8,7 +8,7 @@ msgid &quot;&quot;
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 &quot;&quot; @@ -8,7 +8,7 @@ msgid &quot;&quot;
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 &quot;&quot; @@ -18,27 +18,27 @@ msgstr &quot;&quot;
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 &quot;&quot; @@ -48,19 +48,19 @@ msgstr &quot;&quot;
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 &quot;Clique ou solte o arquivo aqui&quot; @@ -76,31 +76,35 @@ msgstr &quot;Clique ou solte o arquivo aqui&quot;
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 &quot;Enviar&quot; @@ -180,12 +184,12 @@ msgstr &quot;Enviar&quot;
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 &quot;&quot; @@ -194,16 +198,16 @@ msgstr &quot;&quot;
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 &quot;&quot; @@ -212,57 +216,54 @@ msgstr &quot;&quot;
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 &quot;&quot; @@ -8,7 +8,7 @@ msgid &quot;&quot;
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 &quot;Submeteu&quot; @@ -403,7 +403,7 @@ msgstr &quot;Submeteu&quot;
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 &quot;&quot; @@ -8,7 +8,7 @@ msgid &quot;&quot;
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 &quot;&quot; @@ -18,27 +18,27 @@ msgstr &quot;&quot;
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 &quot;&quot; @@ -8,7 +8,7 @@ msgid &quot;&quot;
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 &quot;&quot; @@ -8,7 +8,7 @@ msgid &quot;&quot;
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 &quot;&quot; @@ -8,7 +8,7 @@ msgid &quot;&quot;
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 &quot;Pedir ajuda&quot; @@ -32,7 +32,8 @@ msgstr &quot;Pedir ajuda&quot;
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 &quot;A imagem é muito grande. Ela deve possuir 5MB ou menos.&quot; @@ -40,7 +41,8 @@ msgstr &quot;A imagem é muito grande. Ela deve possuir 5MB ou menos.&quot;
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 &quot;Resource&quot; @@ -97,7 +99,7 @@ msgid &quot;Resource&quot;
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 &quot;Clique ou solte a imagem aqui&quot; @@ -119,14 +121,14 @@ msgstr &quot;Clique ou solte a imagem aqui&quot;
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 &quot;Cancelar&quot; @@ -134,15 +136,15 @@ msgstr &quot;Cancelar&quot;
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">&times;</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">&times;</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">&times;</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">&times;</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">&times;</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">&times;</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("&nbsp;");  
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 }
@@ -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 &quot;&quot; @@ -8,7 +8,7 @@ msgid &quot;&quot;
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 &quot;&quot; @@ -22,7 +22,7 @@ msgstr &quot;&quot;
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 &quot;A imagem é muito grande. Ela deve ter menos que 5MB.&quot; @@ -30,7 +30,7 @@ msgstr &quot;A imagem é muito grande. Ela deve ter menos que 5MB.&quot;
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 &quot;Data de criação&quot; @@ -58,19 +58,27 @@ msgstr &quot;Data de criação&quot;
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 &quot;Search by title, author or date&quot; @@ -104,7 +112,7 @@ msgid &quot;Search by title, author or date&quot;
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 &quot;Nenhuma notícia encontrada&quot; @@ -120,11 +128,11 @@ msgstr &quot;Nenhuma notícia encontrada&quot;
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 &quot;Imprimir Notícia&quot; @@ -132,7 +140,7 @@ msgstr &quot;Imprimir Notícia&quot;
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 &quot;Notícia \&quot;%s\&quot; removida com sucesso&quot; @@ -144,12 +152,3 @@ msgstr &quot;Notícia \&quot;%s\&quot; removida com sucesso&quot;
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">&times;</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">&times;</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">&times;</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 %}
@@ -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 &quot;&quot; @@ -8,7 +8,7 @@ msgid &quot;&quot;
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 &quot;&quot; @@ -8,7 +8,7 @@ msgid &quot;&quot;
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 &quot;&quot; @@ -18,23 +18,23 @@ msgstr &quot;&quot;
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 &quot;Arquivo&quot; @@ -50,43 +50,49 @@ msgstr &quot;Arquivo&quot;
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 &quot;Editar: &quot; @@ -170,8 +176,8 @@ msgstr &quot;Editar: &quot;
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 &quot;Visualizar&quot; @@ -179,7 +185,7 @@ msgstr &quot;Visualizar&quot;
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 &quot;&quot; @@ -188,67 +194,67 @@ msgstr &quot;&quot;
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 &quot;&quot; @@ -8,7 +8,7 @@ msgid &quot;&quot;
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 &quot;&quot; @@ -8,7 +8,7 @@ msgid &quot;&quot;
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 &quot;&quot; @@ -8,7 +8,7 @@ msgid &quot;&quot;
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 &quot;&quot; @@ -8,7 +8,7 @@ msgid &quot;&quot;
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 &quot;&quot; @@ -18,7 +18,7 @@ msgstr &quot;&quot;
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 &quot;&quot; @@ -8,7 +8,7 @@ msgid &quot;&quot;
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 &quot;&quot; @@ -18,27 +18,27 @@ msgstr &quot;&quot;
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 &quot;DELETE&quot; @@ -189,7 +189,7 @@ msgid &quot;DELETE&quot;
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 &quot; Any subjects or Resources were not found on the search for &quot; @@ -242,12 +242,12 @@ msgid &quot; Any subjects or Resources were not found on the search for &quot;
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 &quot;Ver Perfil&quot; @@ -362,52 +362,52 @@ msgstr &quot;Ver Perfil&quot;
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 &quot;&quot; @@ -415,24 +415,24 @@ msgstr &quot;&quot;
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">&times;</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 &quot;&quot; @@ -8,7 +8,7 @@ msgid &quot;&quot;
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 &quot;&quot; @@ -18,11 +18,12 @@ msgstr &quot;&quot;
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 &quot;Dimensões recomendads&quot; @@ -96,12 +97,12 @@ msgstr &quot;Dimensões recomendads&quot;
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 &quot;&quot; @@ -8,7 +8,7 @@ msgid &quot;&quot;
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 &quot;&quot; @@ -8,7 +8,7 @@ msgid &quot;&quot;
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 &quot;You must insert an email address&quot; @@ -23,6 +23,7 @@ msgid &quot;You must insert an email address&quot;
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 &quot;You must insert a valid email address&quot; @@ -88,6 +89,7 @@ msgid &quot;You must insert a valid email address&quot;
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 &quot;Sim&quot; @@ -173,15 +175,15 @@ msgstr &quot;Sim&quot;
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 &quot;Recuperar&quot; @@ -231,7 +233,7 @@ msgstr &quot;Recuperar&quot;
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 &quot;Estudante em&quot; @@ -308,7 +310,7 @@ msgstr &quot;Estudante em&quot;
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 &quot;&quot; @@ -8,7 +8,7 @@ msgid &quot;&quot;
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 &quot;&quot; @@ -18,35 +18,35 @@ msgstr &quot;&quot;
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 &quot;&quot; @@ -8,7 +8,7 @@ msgid &quot;&quot;
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 &quot;&quot; @@ -18,31 +18,31 @@ msgstr &quot;&quot;
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 &quot;&quot; @@ -8,7 +8,7 @@ msgid &quot;&quot;
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 &quot;&quot; @@ -18,19 +18,19 @@ msgstr &quot;&quot;
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>