Commit 293b21cc7334963177131c3a01c3f1369ac6ce30
Exists in
master
and in
3 other branches
Merge branch 'refactoring' of https://github.com/amadeusproject/amadeuslms into refactoring
Showing
34 changed files
with
1277 additions
and
254 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-02-20 22:07-0300\n" | 11 | +"POT-Creation-Date: 2017-03-09 17:01-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,11 @@ msgstr "" | @@ -18,11 +18,11 @@ msgstr "" | ||
| 18 | "Content-Transfer-Encoding: 8bit\n" | 18 | "Content-Transfer-Encoding: 8bit\n" |
| 19 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" | 19 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" |
| 20 | 20 | ||
| 21 | -#: amadeus/settings.py:162 | 21 | +#: amadeus/settings.py:175 |
| 22 | msgid "Portuguese" | 22 | msgid "Portuguese" |
| 23 | msgstr "" | 23 | msgstr "" |
| 24 | 24 | ||
| 25 | -#: amadeus/settings.py:163 | 25 | +#: amadeus/settings.py:176 |
| 26 | msgid "English" | 26 | msgid "English" |
| 27 | msgstr "" | 27 | msgstr "" |
| 28 | 28 |
amadeus/static/css/base/amadeus.css
| @@ -1209,4 +1209,22 @@ div.dataTables_wrapper div.dataTables_paginate { | @@ -1209,4 +1209,22 @@ div.dataTables_wrapper div.dataTables_paginate { | ||
| 1209 | width: 15%; | 1209 | width: 15%; |
| 1210 | text-align: center; | 1210 | text-align: center; |
| 1211 | } | 1211 | } |
| 1212 | +#report-header{ | ||
| 1213 | + padding-left: 0px; | ||
| 1214 | +} | ||
| 1215 | + | ||
| 1216 | +#report-header li { | ||
| 1217 | + display: inline; | ||
| 1218 | + margin-right: 20px; | ||
| 1219 | + font-size: 16px; | ||
| 1220 | +} | ||
| 1221 | + | ||
| 1222 | +#report-info{ | ||
| 1223 | + padding-left: 0px; | ||
| 1224 | +} | ||
| 1225 | + | ||
| 1226 | +#report-info li{ | ||
| 1227 | + display: inline; | ||
| 1228 | + margin-right: 30px; | ||
| 1229 | +} | ||
| 1212 | /* End Reports */ | 1230 | /* End Reports */ |
| 1213 | \ No newline at end of file | 1231 | \ No newline at end of file |
amadeus/static/js/goals_reports.js
| @@ -40,6 +40,60 @@ function getAnswered() { | @@ -40,6 +40,60 @@ function getAnswered() { | ||
| 40 | }); | 40 | }); |
| 41 | } | 41 | } |
| 42 | 42 | ||
| 43 | + | ||
| 44 | + var url = container.find('.answ_log_url').val(); | ||
| 45 | + var log_input = container.find('.answ_log_id'); | ||
| 46 | + | ||
| 47 | + if (typeof(url) != 'undefined') { | ||
| 48 | + $.ajax({ | ||
| 49 | + url: url, | ||
| 50 | + data: {'action': 'open'}, | ||
| 51 | + dataType: 'json', | ||
| 52 | + success: function (data) { | ||
| 53 | + log_input.val(data.log_id); | ||
| 54 | + }, | ||
| 55 | + error: function (data) { | ||
| 56 | + console.log(data); | ||
| 57 | + } | ||
| 58 | + }); | ||
| 59 | + } | ||
| 60 | + | ||
| 61 | + var unan_url = container.find('.unan_log_url').val(); | ||
| 62 | + var unan_log_id = container.find('.unan_log_id').val(); | ||
| 63 | + | ||
| 64 | + if (typeof(unan_url) != 'undefined' && unan_log_id != "") { | ||
| 65 | + $.ajax({ | ||
| 66 | + url: unan_url, | ||
| 67 | + data: {'action': 'close', 'log_id': unan_log_id}, | ||
| 68 | + dataType: 'json', | ||
| 69 | + success: function (data) { | ||
| 70 | + console.log(data.message); | ||
| 71 | + container.find('.unan_log_id').val(""); | ||
| 72 | + }, | ||
| 73 | + error: function (data) { | ||
| 74 | + console.log(data); | ||
| 75 | + } | ||
| 76 | + }); | ||
| 77 | + } | ||
| 78 | + | ||
| 79 | + var hist_url = container.find('.hist_log_url').val(); | ||
| 80 | + var hist_log_id = container.find('.hist_log_id').val(); | ||
| 81 | + | ||
| 82 | + if (typeof(hist_url) != 'undefined' && hist_log_id != "") { | ||
| 83 | + $.ajax({ | ||
| 84 | + url: hist_url, | ||
| 85 | + data: {'action': 'close', 'log_id': hist_log_id}, | ||
| 86 | + dataType: 'json', | ||
| 87 | + success: function (data) { | ||
| 88 | + console.log(data.message); | ||
| 89 | + container.find('.hist_log_id').val(""); | ||
| 90 | + }, | ||
| 91 | + error: function (data) { | ||
| 92 | + console.log(data); | ||
| 93 | + } | ||
| 94 | + }); | ||
| 95 | + } | ||
| 96 | + | ||
| 43 | container.find('.answered_link').addClass('active'); | 97 | container.find('.answered_link').addClass('active'); |
| 44 | container.find('.answered').show(); | 98 | container.find('.answered').show(); |
| 45 | 99 | ||
| @@ -103,6 +157,59 @@ function getUnanswered() { | @@ -103,6 +157,59 @@ function getUnanswered() { | ||
| 103 | }); | 157 | }); |
| 104 | } | 158 | } |
| 105 | 159 | ||
| 160 | + var url = container.find('.answ_log_url').val(); | ||
| 161 | + var log_id = container.find('.answ_log_id').val(); | ||
| 162 | + | ||
| 163 | + if (typeof(url) != 'undefined' && log_id != "") { | ||
| 164 | + $.ajax({ | ||
| 165 | + url: url, | ||
| 166 | + data: {'action': 'close', 'log_id': log_id}, | ||
| 167 | + dataType: 'json', | ||
| 168 | + success: function (data) { | ||
| 169 | + console.log(data.message); | ||
| 170 | + container.find('.answ_log_id').val(""); | ||
| 171 | + }, | ||
| 172 | + error: function (data) { | ||
| 173 | + console.log(data); | ||
| 174 | + } | ||
| 175 | + }); | ||
| 176 | + } | ||
| 177 | + | ||
| 178 | + var unan_url = container.find('.unan_log_url').val(); | ||
| 179 | + var unan_log_input = container.find('.unan_log_id'); | ||
| 180 | + | ||
| 181 | + if (typeof(unan_url) != 'undefined') { | ||
| 182 | + $.ajax({ | ||
| 183 | + url: unan_url, | ||
| 184 | + data: {'action': 'open'}, | ||
| 185 | + dataType: 'json', | ||
| 186 | + success: function (data) { | ||
| 187 | + unan_log_input.val(data.log_id); | ||
| 188 | + }, | ||
| 189 | + error: function (data) { | ||
| 190 | + console.log(data); | ||
| 191 | + } | ||
| 192 | + }); | ||
| 193 | + } | ||
| 194 | + | ||
| 195 | + var hist_url = container.find('.hist_log_url').val(); | ||
| 196 | + var hist_log_id = container.find('.hist_log_id').val(); | ||
| 197 | + | ||
| 198 | + if (typeof(hist_url) != 'undefined' && hist_log_id != "") { | ||
| 199 | + $.ajax({ | ||
| 200 | + url: hist_url, | ||
| 201 | + data: {'action': 'close', 'log_id': hist_log_id}, | ||
| 202 | + dataType: 'json', | ||
| 203 | + success: function (data) { | ||
| 204 | + console.log(data.message); | ||
| 205 | + container.find('.hist_log_id').val(""); | ||
| 206 | + }, | ||
| 207 | + error: function (data) { | ||
| 208 | + console.log(data); | ||
| 209 | + } | ||
| 210 | + }); | ||
| 211 | + } | ||
| 212 | + | ||
| 106 | container.find('.answered_link').removeClass('active'); | 213 | container.find('.answered_link').removeClass('active'); |
| 107 | container.find('.answered').hide(); | 214 | container.find('.answered').hide(); |
| 108 | 215 | ||
| @@ -153,6 +260,60 @@ function getHistory() { | @@ -153,6 +260,60 @@ function getHistory() { | ||
| 153 | }); | 260 | }); |
| 154 | } | 261 | } |
| 155 | 262 | ||
| 263 | + var url = container.find('.answ_log_url').val(); | ||
| 264 | + var log_id = container.find('.answ_log_id').val(); | ||
| 265 | + | ||
| 266 | + if (typeof(url) != 'undefined' && log_id != "") { | ||
| 267 | + $.ajax({ | ||
| 268 | + url: url, | ||
| 269 | + data: {'action': 'close', 'log_id': log_id}, | ||
| 270 | + dataType: 'json', | ||
| 271 | + success: function (data) { | ||
| 272 | + console.log(data.message); | ||
| 273 | + container.find('.answ_log_id').val(""); | ||
| 274 | + }, | ||
| 275 | + error: function (data) { | ||
| 276 | + console.log(data); | ||
| 277 | + } | ||
| 278 | + }); | ||
| 279 | + } | ||
| 280 | + | ||
| 281 | + var unan_url = container.find('.unan_log_url').val(); | ||
| 282 | + var unan_log_id = container.find('.unan_log_id').val(); | ||
| 283 | + | ||
| 284 | + if (typeof(unan_url) != 'undefined' && unan_log_id != "") { | ||
| 285 | + $.ajax({ | ||
| 286 | + url: unan_url, | ||
| 287 | + data: {'action': 'close', 'log_id': unan_log_id}, | ||
| 288 | + dataType: 'json', | ||
| 289 | + success: function (data) { | ||
| 290 | + console.log(data.message); | ||
| 291 | + container.find('.unan_log_id').val(""); | ||
| 292 | + }, | ||
| 293 | + error: function (data) { | ||
| 294 | + console.log(data); | ||
| 295 | + } | ||
| 296 | + | ||
| 297 | + }); | ||
| 298 | + } | ||
| 299 | + | ||
| 300 | + var hist_url = container.find('.hist_log_url').val(); | ||
| 301 | + var hist_log_input = container.find('.hist_log_id'); | ||
| 302 | + | ||
| 303 | + if (typeof(hist_url) != 'undefined') { | ||
| 304 | + $.ajax({ | ||
| 305 | + url: hist_url, | ||
| 306 | + data: {'action': 'open'}, | ||
| 307 | + dataType: 'json', | ||
| 308 | + success: function (data) { | ||
| 309 | + hist_log_input.val(data.log_id); | ||
| 310 | + }, | ||
| 311 | + error: function (data) { | ||
| 312 | + console.log(data); | ||
| 313 | + } | ||
| 314 | + }); | ||
| 315 | + } | ||
| 316 | + | ||
| 156 | container.find('.answered_link').removeClass('active'); | 317 | container.find('.answered_link').removeClass('active'); |
| 157 | container.find('.answered').hide(); | 318 | container.find('.answered').hide(); |
| 158 | 319 |
amadeus/static/js/pendencies.js
| @@ -172,6 +172,7 @@ function getPendencies(panel_id) { | @@ -172,6 +172,7 @@ function getPendencies(panel_id) { | ||
| 172 | dataType: 'json', | 172 | dataType: 'json', |
| 173 | success: function (data) { | 173 | success: function (data) { |
| 174 | console.log(data.message); | 174 | console.log(data.message); |
| 175 | + list.parent().parent().find('.hist_log_id').val(""); | ||
| 175 | }, | 176 | }, |
| 176 | error: function (data) { | 177 | error: function (data) { |
| 177 | console.log(data); | 178 | console.log(data); |
| @@ -244,6 +245,7 @@ function getHistory(panel_id) { | @@ -244,6 +245,7 @@ function getHistory(panel_id) { | ||
| 244 | dataType: 'json', | 245 | dataType: 'json', |
| 245 | success: function (data) { | 246 | success: function (data) { |
| 246 | console.log(data.message); | 247 | console.log(data.message); |
| 248 | + container.find('.view_log_id').val(""); | ||
| 247 | }, | 249 | }, |
| 248 | error: function (data) { | 250 | error: function (data) { |
| 249 | console.log(data); | 251 | console.log(data); |
categories/locale/pt_BR/LC_MESSAGES/django.po
| @@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
| 8 | msgstr "" | 8 | msgstr "" |
| 9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
| 10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
| 11 | -"POT-Creation-Date: 2017-02-20 22:07-0300\n" | 11 | +"POT-Creation-Date: 2017-03-09 17:01-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" |
| @@ -50,7 +50,7 @@ msgstr "Data de modificação" | @@ -50,7 +50,7 @@ msgstr "Data de modificação" | ||
| 50 | msgid "Category" | 50 | msgid "Category" |
| 51 | msgstr "Categoria" | 51 | msgstr "Categoria" |
| 52 | 52 | ||
| 53 | -#: categories/models.py:20 categories/views.py:48 | 53 | +#: categories/models.py:20 categories/views.py:49 |
| 54 | msgid "Categories" | 54 | msgid "Categories" |
| 55 | msgstr "Categorias" | 55 | msgstr "Categorias" |
| 56 | 56 | ||
| @@ -114,7 +114,7 @@ msgstr "Deletar" | @@ -114,7 +114,7 @@ msgstr "Deletar" | ||
| 114 | msgid "categories" | 114 | msgid "categories" |
| 115 | msgstr "Categorias" | 115 | msgstr "Categorias" |
| 116 | 116 | ||
| 117 | -#: categories/templates/categories/list.html:31 categories/views.py:105 | 117 | +#: categories/templates/categories/list.html:31 categories/views.py:106 |
| 118 | msgid "Create Category" | 118 | msgid "Create Category" |
| 119 | msgstr "Criar Categoria" | 119 | msgstr "Criar Categoria" |
| 120 | 120 | ||
| @@ -127,12 +127,12 @@ msgid "all subjects" | @@ -127,12 +127,12 @@ msgid "all subjects" | ||
| 127 | msgstr "Todos os assuntos" | 127 | msgstr "Todos os assuntos" |
| 128 | 128 | ||
| 129 | #: categories/templates/categories/list.html:86 | 129 | #: categories/templates/categories/list.html:86 |
| 130 | -#: categories/templates/categories/list.html:131 | 130 | +#: categories/templates/categories/list.html:129 |
| 131 | msgid "Coordinator(s) " | 131 | msgid "Coordinator(s) " |
| 132 | msgstr "Coordenador(es)" | 132 | msgstr "Coordenador(es)" |
| 133 | 133 | ||
| 134 | #: categories/templates/categories/list.html:90 | 134 | #: categories/templates/categories/list.html:90 |
| 135 | -#: categories/templates/categories/list.html:135 | 135 | +#: categories/templates/categories/list.html:133 |
| 136 | msgid "It doesn't possess coordinators" | 136 | msgid "It doesn't possess coordinators" |
| 137 | msgstr "Não possui coordenadores" | 137 | msgstr "Não possui coordenadores" |
| 138 | 138 | ||
| @@ -148,16 +148,16 @@ msgstr "atras" | @@ -148,16 +148,16 @@ msgstr "atras" | ||
| 148 | msgid "Update: " | 148 | msgid "Update: " |
| 149 | msgstr "Editar: " | 149 | msgstr "Editar: " |
| 150 | 150 | ||
| 151 | -#: categories/views.py:103 | 151 | +#: categories/views.py:104 |
| 152 | msgid "Replicate Category" | 152 | msgid "Replicate Category" |
| 153 | msgstr "Replicar Categoria" | 153 | msgstr "Replicar Categoria" |
| 154 | 154 | ||
| 155 | -#: categories/views.py:130 | 155 | +#: categories/views.py:131 |
| 156 | #, python-format | 156 | #, python-format |
| 157 | msgid "Category \"%s\" register successfully!" | 157 | msgid "Category \"%s\" register successfully!" |
| 158 | msgstr "Categoria \"%s\" foi registrada com sucesso!" | 158 | msgstr "Categoria \"%s\" foi registrada com sucesso!" |
| 159 | 159 | ||
| 160 | -#: categories/views.py:166 | 160 | +#: categories/views.py:167 |
| 161 | msgid "" | 161 | msgid "" |
| 162 | "The category cannot be removed, it contains one or more virtual enviroments " | 162 | "The category cannot be removed, it contains one or more virtual enviroments " |
| 163 | "attach." | 163 | "attach." |
| @@ -165,12 +165,12 @@ msgstr "" | @@ -165,12 +165,12 @@ msgstr "" | ||
| 165 | "A categoria não pode ser removida, ela contém um ou mais ambientes virtuais " | 165 | "A categoria não pode ser removida, ela contém um ou mais ambientes virtuais " |
| 166 | "vinculados." | 166 | "vinculados." |
| 167 | 167 | ||
| 168 | -#: categories/views.py:179 | 168 | +#: categories/views.py:180 |
| 169 | #, python-format | 169 | #, python-format |
| 170 | msgid "Category \"%s\" removed successfully!" | 170 | msgid "Category \"%s\" removed successfully!" |
| 171 | msgstr "Categoria \"%s\" removida com sucesso!" | 171 | msgstr "Categoria \"%s\" removida com sucesso!" |
| 172 | 172 | ||
| 173 | -#: categories/views.py:207 | 173 | +#: categories/views.py:208 |
| 174 | #, python-format | 174 | #, python-format |
| 175 | msgid "Category \"%s\" updated successfully!" | 175 | msgid "Category \"%s\" updated successfully!" |
| 176 | msgstr "Categoria \"%s\" atualizada com sucesso!" | 176 | msgstr "Categoria \"%s\" atualizada com sucesso!" |
file_link/locale/pt_BR/LC_MESSAGES/django.po
| @@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
| 8 | msgstr "" | 8 | msgstr "" |
| 9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
| 10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
| 11 | -"POT-Creation-Date: 2017-02-20 22:07-0300\n" | 11 | +"POT-Creation-Date: 2017-03-09 17:01-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" |
| @@ -0,0 +1,370 @@ | @@ -0,0 +1,370 @@ | ||
| 1 | +# SOME DESCRIPTIVE TITLE. | ||
| 2 | +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER | ||
| 3 | +# This file is distributed under the same license as the PACKAGE package. | ||
| 4 | +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. | ||
| 5 | +# | ||
| 6 | +#, fuzzy | ||
| 7 | +msgid "" | ||
| 8 | +msgstr "" | ||
| 9 | +"Project-Id-Version: PACKAGE VERSION\n" | ||
| 10 | +"Report-Msgid-Bugs-To: \n" | ||
| 11 | +"POT-Creation-Date: 2017-03-09 17:01-0300\n" | ||
| 12 | +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | ||
| 13 | +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | ||
| 14 | +"Language-Team: LANGUAGE <LL@li.org>\n" | ||
| 15 | +"Language: \n" | ||
| 16 | +"MIME-Version: 1.0\n" | ||
| 17 | +"Content-Type: text/plain; charset=UTF-8\n" | ||
| 18 | +"Content-Transfer-Encoding: 8bit\n" | ||
| 19 | +"Plural-Forms: nplurals=2; plural=(n > 1);\n" | ||
| 20 | +#: goals/forms.py:33 | ||
| 21 | +msgid "Tags" | ||
| 22 | +msgstr "Tags" | ||
| 23 | + | ||
| 24 | +#: goals/forms.py:39 | ||
| 25 | +msgid "Name" | ||
| 26 | +msgstr "Nome" | ||
| 27 | + | ||
| 28 | +#: goals/forms.py:58 | ||
| 29 | +#, python-format | ||
| 30 | +msgid "" | ||
| 31 | +"There already is another resource with the goals specification for the Topic " | ||
| 32 | +"%s" | ||
| 33 | +msgstr "Já existe um outro recurso com a especificação de metas para o tópico %s" | ||
| 34 | + | ||
| 35 | +#: goals/forms.py:63 | ||
| 36 | +msgid "This input should be filled with a date equal or after today's date." | ||
| 37 | +msgstr "Esse campo deve ser preenchido com uma data igual ou posterior à data atual." | ||
| 38 | + | ||
| 39 | +#: goals/forms.py:66 | ||
| 40 | +msgid "" | ||
| 41 | +"This input should be filled with a date equal or after the subject begin " | ||
| 42 | +"date." | ||
| 43 | +msgstr "Esse campo deve ser preenchido com uma data igual ou posterior à data de início do assunto." | ||
| 44 | + | ||
| 45 | +#: goals/forms.py:69 | ||
| 46 | +msgid "" | ||
| 47 | +"This input should be filled with a date equal or after the subject end date." | ||
| 48 | +msgstr "Esse campo deve ser preenchido com uma data igual ou posterior à data final do assunto." | ||
| 49 | + | ||
| 50 | +#: goals/forms.py:115 | ||
| 51 | +msgid "This field is required." | ||
| 52 | +msgstr "Esse campo é obrigatório." | ||
| 53 | + | ||
| 54 | +#: goals/models.py:10 | ||
| 55 | +msgid "Presentation" | ||
| 56 | +msgstr "Apresentação" | ||
| 57 | + | ||
| 58 | +#: goals/models.py:11 | ||
| 59 | +msgid "Submission Limit Date" | ||
| 60 | +msgstr "Data limite para submissão" | ||
| 61 | + | ||
| 62 | +#: goals/models.py:14 goals/models.py:39 goals/models.py:47 | ||
| 63 | +#: goals/templates/goals/_form_submit.html:21 | ||
| 64 | +#: goals/templates/goals/view.html:73 | ||
| 65 | +msgid "Goal" | ||
| 66 | +msgstr "Meta" | ||
| 67 | + | ||
| 68 | +#: goals/models.py:15 goals/templates/goals/_answered.html:20 | ||
| 69 | +msgid "Goals" | ||
| 70 | +msgstr "Metas" | ||
| 71 | + | ||
| 72 | +#: goals/models.py:33 | ||
| 73 | +#, python-format | ||
| 74 | +msgid "Are you sure you want delete the %s topic goals specification" | ||
| 75 | +msgstr "Você tem certeza que deseja deleta a especificação de metas do tópico %s" | ||
| 76 | + | ||
| 77 | +#: goals/models.py:36 | ||
| 78 | +msgid "Description" | ||
| 79 | +msgstr "Descrição" | ||
| 80 | + | ||
| 81 | +#: goals/models.py:37 | ||
| 82 | +msgid "Referential Value" | ||
| 83 | +msgstr "Valor de referência" | ||
| 84 | + | ||
| 85 | +#: goals/models.py:38 | ||
| 86 | +msgid "Order" | ||
| 87 | +msgstr "Ordem" | ||
| 88 | + | ||
| 89 | +#: goals/models.py:45 | ||
| 90 | +msgid "My Value" | ||
| 91 | +msgstr "Meu valor" | ||
| 92 | + | ||
| 93 | +#: goals/models.py:46 | ||
| 94 | +msgid "User" | ||
| 95 | +msgstr "Usuário" | ||
| 96 | + | ||
| 97 | +#: goals/models.py:48 | ||
| 98 | +msgid "Create Date" | ||
| 99 | +msgstr "Data de criação" | ||
| 100 | + | ||
| 101 | +#: goals/models.py:49 | ||
| 102 | +msgid "Last Update" | ||
| 103 | +msgstr "Última atualização" | ||
| 104 | + | ||
| 105 | +#: goals/templates/goals/_answered.html:8 | ||
| 106 | +#: goals/templates/goals/_history.html:11 | ||
| 107 | +#: goals/templates/goals/_unanswered.html:8 | ||
| 108 | +msgid "Student" | ||
| 109 | +msgstr "Estudante" | ||
| 110 | + | ||
| 111 | +#: goals/templates/goals/_answered.html:11 | ||
| 112 | +#: goals/templates/goals/_history.html:14 | ||
| 113 | +#: goals/templates/goals/_unanswered.html:11 | ||
| 114 | +msgid "Group" | ||
| 115 | +msgstr "Grupo" | ||
| 116 | + | ||
| 117 | +#: goals/templates/goals/_answered.html:14 | ||
| 118 | +msgid "Definition Date" | ||
| 119 | +msgstr "Data de definição" | ||
| 120 | + | ||
| 121 | +#: goals/templates/goals/_answered.html:17 | ||
| 122 | +msgid "Update Date" | ||
| 123 | +msgstr "Data de atualização" | ||
| 124 | + | ||
| 125 | +#: goals/templates/goals/_form.html:56 | ||
| 126 | +msgid "Goals Specification" | ||
| 127 | +msgstr "Especificação de Metas" | ||
| 128 | + | ||
| 129 | +#: goals/templates/goals/_form.html:101 | ||
| 130 | +#: goals/templates/goals/_form_submit.html:22 | ||
| 131 | +#: goals/templates/goals/view.html:74 | ||
| 132 | +msgid "Minimum percentage desired" | ||
| 133 | +msgstr "Porcentagem mínima desejada" | ||
| 134 | + | ||
| 135 | +#: goals/templates/goals/_form.html:156 | ||
| 136 | +msgid "Common resources settings" | ||
| 137 | +msgstr "Configurações comuns a todos os recursos" | ||
| 138 | + | ||
| 139 | +#: goals/templates/goals/_form.html:204 | ||
| 140 | +msgid "Pendencies Notifications" | ||
| 141 | +msgstr "Notificações de Pendências" | ||
| 142 | + | ||
| 143 | +#: goals/templates/goals/_form.html:226 | ||
| 144 | +msgid "Action not performed by the user" | ||
| 145 | +msgstr "Ação não realizada pelo usuário" | ||
| 146 | + | ||
| 147 | +#: goals/templates/goals/_form.html:252 | ||
| 148 | +msgid "Wished period" | ||
| 149 | +msgstr "Período desejado" | ||
| 150 | + | ||
| 151 | +#: goals/templates/goals/_form.html:388 | ||
| 152 | +#: goals/templates/goals/_form_submit.html:54 | ||
| 153 | +msgid "Save" | ||
| 154 | +msgstr "Salvar" | ||
| 155 | + | ||
| 156 | +#: goals/templates/goals/_form.html:399 | ||
| 157 | +msgid "Add new goal" | ||
| 158 | +msgstr "Adicionar nova meta" | ||
| 159 | + | ||
| 160 | +#: goals/templates/goals/_form.html:400 | ||
| 161 | +msgid "Remove this goal" | ||
| 162 | +msgstr "Remover essa meta" | ||
| 163 | + | ||
| 164 | +#: goals/templates/goals/_form.html:420 | ||
| 165 | +msgid "Add new notification" | ||
| 166 | +msgstr "Adicionar nova notificação" | ||
| 167 | + | ||
| 168 | +#: goals/templates/goals/_form.html:421 | ||
| 169 | +msgid "Remove this" | ||
| 170 | +msgstr "Remover essa notificação" | ||
| 171 | + | ||
| 172 | +#: goals/templates/goals/_history.html:8 | ||
| 173 | +msgid "Date/Hour" | ||
| 174 | +msgstr "Data/Horário" | ||
| 175 | + | ||
| 176 | +#: goals/templates/goals/_history.html:17 | ||
| 177 | +msgid "Action" | ||
| 178 | +msgstr "Ação" | ||
| 179 | + | ||
| 180 | +#: goals/templates/goals/_history.html:20 | ||
| 181 | +msgid "Object" | ||
| 182 | +msgstr "Objeto" | ||
| 183 | + | ||
| 184 | +#: goals/templates/goals/_history.html:23 | ||
| 185 | +msgid "Resource" | ||
| 186 | +msgstr "Recurso" | ||
| 187 | + | ||
| 188 | +#: goals/templates/goals/_unanswered.html:14 | ||
| 189 | +msgid "Select All" | ||
| 190 | +msgstr "Selecionar todos" | ||
| 191 | + | ||
| 192 | +#: goals/templates/goals/create.html:23 | ||
| 193 | +msgid "Add Topic Goals" | ||
| 194 | +msgstr "Adicionar Metas do Tópico" | ||
| 195 | + | ||
| 196 | +#: goals/templates/goals/reports.html:25 goals/templates/goals/reports.html:104 | ||
| 197 | +msgid "Reports: Answered" | ||
| 198 | +msgstr "Relatórios: Respondentes" | ||
| 199 | + | ||
| 200 | +#: goals/templates/goals/reports.html:57 | ||
| 201 | +msgid "Answered" | ||
| 202 | +msgstr "Respondentes" | ||
| 203 | + | ||
| 204 | +#: goals/templates/goals/reports.html:58 | ||
| 205 | +msgid "Unanswered" | ||
| 206 | +msgstr "Não Respondentes" | ||
| 207 | + | ||
| 208 | +#: goals/templates/goals/reports.html:59 | ||
| 209 | +msgid "Resource History" | ||
| 210 | +msgstr "Histórico do Recurso" | ||
| 211 | + | ||
| 212 | +#: goals/templates/goals/reports.html:80 | ||
| 213 | +msgid "No data available in table" | ||
| 214 | +msgstr "Nenhum registro encontrado" | ||
| 215 | + | ||
| 216 | +#: goals/templates/goals/reports.html:81 | ||
| 217 | +msgid "Showing _START_ to _END_ of _TOTAL_ entries" | ||
| 218 | +msgstr "Mostrando de _START_ até _END_ de _TOTAL_ de registros" | ||
| 219 | + | ||
| 220 | +#: goals/templates/goals/reports.html:82 | ||
| 221 | +msgid "Showing 0 to 0 of 0 entries" | ||
| 222 | +msgstr "Mostrado de 0 até 0 de 0 registros" | ||
| 223 | + | ||
| 224 | +#: goals/templates/goals/reports.html:83 | ||
| 225 | +msgid "(filtered from _MAX_ total entries)" | ||
| 226 | +msgstr "(filtrados de _MAX_ registros)" | ||
| 227 | + | ||
| 228 | +#: goals/templates/goals/reports.html:86 | ||
| 229 | +msgid "Show _MENU_ entries" | ||
| 230 | +msgstr "_MENU_ resultados por página" | ||
| 231 | + | ||
| 232 | +#: goals/templates/goals/reports.html:87 | ||
| 233 | +msgid "Loading..." | ||
| 234 | +msgstr "Carregando..." | ||
| 235 | + | ||
| 236 | +#: goals/templates/goals/reports.html:88 | ||
| 237 | +msgid "Processing..." | ||
| 238 | +msgstr "Processando..." | ||
| 239 | + | ||
| 240 | +#: goals/templates/goals/reports.html:89 | ||
| 241 | +msgid "Search" | ||
| 242 | +msgstr "Buscar" | ||
| 243 | + | ||
| 244 | +#: goals/templates/goals/reports.html:90 | ||
| 245 | +msgid "No matching records found" | ||
| 246 | +msgstr "Nenhum registro encontrado" | ||
| 247 | + | ||
| 248 | +#: goals/templates/goals/reports.html:92 | ||
| 249 | +msgid "First" | ||
| 250 | +msgstr "Primeiro" | ||
| 251 | + | ||
| 252 | +#: goals/templates/goals/reports.html:93 | ||
| 253 | +msgid "Last" | ||
| 254 | +msgstr "Último" | ||
| 255 | + | ||
| 256 | +#: goals/templates/goals/reports.html:98 | ||
| 257 | +msgid ": activate to sort column ascending" | ||
| 258 | +msgstr ": Ordenar colunas de forma ascendente" | ||
| 259 | + | ||
| 260 | +#: goals/templates/goals/reports.html:99 | ||
| 261 | +msgid ": activate to sort column descending" | ||
| 262 | +msgstr ": Ordenar colunas de forma descendente" | ||
| 263 | + | ||
| 264 | +#: goals/templates/goals/reports.html:103 | ||
| 265 | +msgid "Download .csv file" | ||
| 266 | +msgstr "Download de arquivo .csv" | ||
| 267 | + | ||
| 268 | +#: goals/templates/goals/reports.html:105 | ||
| 269 | +msgid "Reports: Unanswered" | ||
| 270 | +msgstr "Relatórios: Não Respondentes" | ||
| 271 | + | ||
| 272 | +#: goals/templates/goals/reports.html:106 | ||
| 273 | +msgid "Reports: History" | ||
| 274 | +msgstr "Relatórios: Histórico" | ||
| 275 | + | ||
| 276 | +#: goals/templates/goals/submit.html:66 | ||
| 277 | +#: goals/templates/goals/update_submit.html:69 | ||
| 278 | +#: goals/templates/goals/view.html:66 | ||
| 279 | +#: goals/templates/goals/window_submit.html:40 | ||
| 280 | +msgid "Limit submission date" | ||
| 281 | +msgstr "Data limite de submissão" | ||
| 282 | + | ||
| 283 | +#: goals/templates/goals/update.html:23 | ||
| 284 | +msgid "Edit: Topic Goals " | ||
| 285 | +msgstr "Editar: Metas de Tópico" | ||
| 286 | + | ||
| 287 | +#: goals/templates/goals/update_submit.html:22 | ||
| 288 | +msgid "Update My Goals" | ||
| 289 | +msgstr "Atualizar Minhas Metas" | ||
| 290 | + | ||
| 291 | +#: goals/templates/goals/view.html:19 goals/templatetags/goals_filters.py:72 | ||
| 292 | +#: goals/views.py:217 | ||
| 293 | +msgid "My Goals" | ||
| 294 | +msgstr "Minhas Metas" | ||
| 295 | + | ||
| 296 | +#: goals/templates/goals/view.html:75 | ||
| 297 | +msgid "Goal stabilished" | ||
| 298 | +msgstr "Meta estabelecida" | ||
| 299 | + | ||
| 300 | +#: goals/templates/goals/view.html:83 | ||
| 301 | +msgid "Update Goals" | ||
| 302 | +msgstr "Atualizar Metas" | ||
| 303 | + | ||
| 304 | +#: goals/templatetags/goals_filters.py:59 | ||
| 305 | +msgid "Visualized" | ||
| 306 | +msgstr "Visualizou" | ||
| 307 | + | ||
| 308 | +#: goals/templatetags/goals_filters.py:61 | ||
| 309 | +msgid "Added" | ||
| 310 | +msgstr "Adicionou" | ||
| 311 | + | ||
| 312 | +#: goals/templatetags/goals_filters.py:63 | ||
| 313 | +msgid "Updated" | ||
| 314 | +msgstr "Atualizou" | ||
| 315 | + | ||
| 316 | +#: goals/templatetags/goals_filters.py:65 | ||
| 317 | +msgid "Submitted" | ||
| 318 | +msgstr "Submeteu" | ||
| 319 | + | ||
| 320 | +#: goals/templatetags/goals_filters.py:76 | ||
| 321 | +#, python-format | ||
| 322 | +msgid "%s Instance" | ||
| 323 | +msgstr "Instância de %s" | ||
| 324 | + | ||
| 325 | +#: goals/views.py:60 | ||
| 326 | +msgid "Reports" | ||
| 327 | +msgstr "Relatórios" | ||
| 328 | + | ||
| 329 | +#: goals/views.py:348 goals/views.py:476 | ||
| 330 | +#, python-format | ||
| 331 | +msgid "Your goals for %s was save successfully!" | ||
| 332 | +msgstr "Suas metas para %s foram salvas com sucesso!" | ||
| 333 | + | ||
| 334 | +#: goals/views.py:584 | ||
| 335 | +#, python-format | ||
| 336 | +msgid "Your goals for %s was update successfully!" | ||
| 337 | +msgstr "Suas metas para %s foram atualizadas com sucesso!" | ||
| 338 | + | ||
| 339 | +#: goals/views.py:635 goals/views.py:649 goals/views.py:670 goals/views.py:789 | ||
| 340 | +#: goals/views.py:803 goals/views.py:813 | ||
| 341 | +msgid "Visualize" | ||
| 342 | +msgstr "Visualizar" | ||
| 343 | + | ||
| 344 | +#: goals/views.py:635 goals/views.py:649 goals/views.py:670 goals/views.py:789 | ||
| 345 | +#: goals/views.py:803 goals/views.py:813 | ||
| 346 | +msgid "Submit" | ||
| 347 | +msgstr "Submeter" | ||
| 348 | + | ||
| 349 | +#: goals/views.py:733 | ||
| 350 | +msgid "Create Topic Goals" | ||
| 351 | +msgstr "Adicionar Metas do Tópico" | ||
| 352 | + | ||
| 353 | +#: goals/views.py:744 | ||
| 354 | +#, python-format | ||
| 355 | +msgid "The Goals specification for the topic %s was realized successfully!" | ||
| 356 | +msgstr "A Especificação de Metas para o tópico %s foi realizada com sucesso!" | ||
| 357 | + | ||
| 358 | +#: goals/views.py:868 | ||
| 359 | +msgid "Update Topic Goals" | ||
| 360 | +msgstr "Atualizar Metas do Tópico" | ||
| 361 | + | ||
| 362 | +#: goals/views.py:879 | ||
| 363 | +#, python-format | ||
| 364 | +msgid "The Goals specification for the topic %s was updated successfully!" | ||
| 365 | +msgstr "A Especificação de Metas para o tópico %s foi atualizada com sucesso!" | ||
| 366 | + | ||
| 367 | +#: goals/views.py:915 | ||
| 368 | +#, python-format | ||
| 369 | +msgid "The Goals specification of the topic %s was removed successfully!" | ||
| 370 | +msgstr "A Especificação de Metas para o tópico %s foi removida com sucesso!" |
goals/templates/goals/reports.html
| @@ -61,14 +61,23 @@ | @@ -61,14 +61,23 @@ | ||
| 61 | </div> | 61 | </div> |
| 62 | 62 | ||
| 63 | <div class="answered" data-url="{% url 'goals:answered_report' goal.slug %}"> | 63 | <div class="answered" data-url="{% url 'goals:answered_report' goal.slug %}"> |
| 64 | + <input type="hidden" class="answ_log_url" value="{% url 'goals:reports_log' goal.slug 'answered' %}" /> | ||
| 65 | + <input type="hidden" class="answ_log_id" value="" /> | ||
| 66 | + | ||
| 64 | <div class="answered_data"></div> | 67 | <div class="answered_data"></div> |
| 65 | </div> | 68 | </div> |
| 66 | 69 | ||
| 67 | <div class="unanswered" data-url="{% url 'goals:unanswered_report' goal.slug %}"> | 70 | <div class="unanswered" data-url="{% url 'goals:unanswered_report' goal.slug %}"> |
| 71 | + <input type="hidden" class="unan_log_url" value="{% url 'goals:reports_log' goal.slug 'unanaswered' %}" /> | ||
| 72 | + <input type="hidden" class="unan_log_id" value="" /> | ||
| 73 | + | ||
| 68 | <div class="unanswered_data"></div> | 74 | <div class="unanswered_data"></div> |
| 69 | </div> | 75 | </div> |
| 70 | 76 | ||
| 71 | <div class="history" data-url="{% url 'goals:history_report' goal.slug %}"> | 77 | <div class="history" data-url="{% url 'goals:history_report' goal.slug %}"> |
| 78 | + <input type="hidden" class="hist_log_url" value="{% url 'goals:reports_log' goal.slug 'history' %}" /> | ||
| 79 | + <input type="hidden" class="hist_log_id" value="" /> | ||
| 80 | + | ||
| 72 | <div class="history_data"></div> | 81 | <div class="history_data"></div> |
| 73 | </div> | 82 | </div> |
| 74 | </div> | 83 | </div> |
goals/urls.py
| @@ -15,4 +15,5 @@ urlpatterns = [ | @@ -15,4 +15,5 @@ urlpatterns = [ | ||
| 15 | url(r'^answered_report/(?P<slug>[\w_-]+)/$', views.AnsweredReport.as_view(), name = 'answered_report'), | 15 | url(r'^answered_report/(?P<slug>[\w_-]+)/$', views.AnsweredReport.as_view(), name = 'answered_report'), |
| 16 | url(r'^unanswered_report/(?P<slug>[\w_-]+)/$', views.UnansweredReport.as_view(), name = 'unanswered_report'), | 16 | url(r'^unanswered_report/(?P<slug>[\w_-]+)/$', views.UnansweredReport.as_view(), name = 'unanswered_report'), |
| 17 | url(r'^history_report/(?P<slug>[\w_-]+)/$', views.HistoryReport.as_view(), name = 'history_report'), | 17 | url(r'^history_report/(?P<slug>[\w_-]+)/$', views.HistoryReport.as_view(), name = 'history_report'), |
| 18 | + url(r'^view_log/(?P<goal>[\w_-]+)/(?P<report>[\w_-]+)/$', views.reports_log, name = 'reports_log'), | ||
| 18 | ] | 19 | ] |
goals/views.py
| @@ -5,6 +5,7 @@ from django.core.urlresolvers import reverse, reverse_lazy | @@ -5,6 +5,7 @@ from django.core.urlresolvers import reverse, reverse_lazy | ||
| 5 | from django.utils.translation import ugettext_lazy as _ | 5 | from django.utils.translation import ugettext_lazy as _ |
| 6 | from django.contrib.auth.mixins import LoginRequiredMixin | 6 | from django.contrib.auth.mixins import LoginRequiredMixin |
| 7 | from django.forms import formset_factory, modelformset_factory | 7 | from django.forms import formset_factory, modelformset_factory |
| 8 | +from django.http import JsonResponse | ||
| 8 | 9 | ||
| 9 | from log.models import Log | 10 | from log.models import Log |
| 10 | from log.mixins import LogMixin | 11 | from log.mixins import LogMixin |
| @@ -31,7 +32,7 @@ class Reports(LoginRequiredMixin, generic.ListView): | @@ -31,7 +32,7 @@ class Reports(LoginRequiredMixin, generic.ListView): | ||
| 31 | slug = self.kwargs.get('slug', '') | 32 | slug = self.kwargs.get('slug', '') |
| 32 | goals = get_object_or_404(Goals, slug = slug) | 33 | goals = get_object_or_404(Goals, slug = slug) |
| 33 | 34 | ||
| 34 | - if not has_resource_permissions(request.user, goals): | 35 | + if not has_subject_permissions(request.user, goals): |
| 35 | return redirect(reverse_lazy('subjects:home')) | 36 | return redirect(reverse_lazy('subjects:home')) |
| 36 | 37 | ||
| 37 | return super(Reports, self).dispatch(request, *args, **kwargs) | 38 | return super(Reports, self).dispatch(request, *args, **kwargs) |
| @@ -89,7 +90,7 @@ class AnsweredReport(LoginRequiredMixin, generic.ListView): | @@ -89,7 +90,7 @@ class AnsweredReport(LoginRequiredMixin, generic.ListView): | ||
| 89 | slug = self.kwargs.get('slug', '') | 90 | slug = self.kwargs.get('slug', '') |
| 90 | goals = get_object_or_404(Goals, slug = slug) | 91 | goals = get_object_or_404(Goals, slug = slug) |
| 91 | 92 | ||
| 92 | - if not has_resource_permissions(request.user, goals): | 93 | + if not has_subject_permissions(request.user, goals): |
| 93 | return redirect(reverse_lazy('subjects:home')) | 94 | return redirect(reverse_lazy('subjects:home')) |
| 94 | 95 | ||
| 95 | return super(AnsweredReport, self).dispatch(request, *args, **kwargs) | 96 | return super(AnsweredReport, self).dispatch(request, *args, **kwargs) |
| @@ -129,7 +130,7 @@ class UnansweredReport(LoginRequiredMixin, generic.ListView): | @@ -129,7 +130,7 @@ class UnansweredReport(LoginRequiredMixin, generic.ListView): | ||
| 129 | slug = self.kwargs.get('slug', '') | 130 | slug = self.kwargs.get('slug', '') |
| 130 | goals = get_object_or_404(Goals, slug = slug) | 131 | goals = get_object_or_404(Goals, slug = slug) |
| 131 | 132 | ||
| 132 | - if not has_resource_permissions(request.user, goals): | 133 | + if not has_subject_permissions(request.user, goals): |
| 133 | return redirect(reverse_lazy('subjects:home')) | 134 | return redirect(reverse_lazy('subjects:home')) |
| 134 | 135 | ||
| 135 | return super(UnansweredReport, self).dispatch(request, *args, **kwargs) | 136 | return super(UnansweredReport, self).dispatch(request, *args, **kwargs) |
| @@ -155,7 +156,7 @@ class HistoryReport(LoginRequiredMixin, generic.ListView): | @@ -155,7 +156,7 @@ class HistoryReport(LoginRequiredMixin, generic.ListView): | ||
| 155 | slug = self.kwargs.get('slug', '') | 156 | slug = self.kwargs.get('slug', '') |
| 156 | goal = get_object_or_404(Goals, slug = slug) | 157 | goal = get_object_or_404(Goals, slug = slug) |
| 157 | 158 | ||
| 158 | - rows = Log.objects.filter(context__contains = {"goals_id": goal.id}) | 159 | + rows = Log.objects.filter(context__contains = {"goals_id": goal.id}).exclude(action = 'view_reports') |
| 159 | 160 | ||
| 160 | return rows | 161 | return rows |
| 161 | 162 | ||
| @@ -163,7 +164,7 @@ class HistoryReport(LoginRequiredMixin, generic.ListView): | @@ -163,7 +164,7 @@ class HistoryReport(LoginRequiredMixin, generic.ListView): | ||
| 163 | slug = self.kwargs.get('slug', '') | 164 | slug = self.kwargs.get('slug', '') |
| 164 | goals = get_object_or_404(Goals, slug = slug) | 165 | goals = get_object_or_404(Goals, slug = slug) |
| 165 | 166 | ||
| 166 | - if not has_resource_permissions(request.user, goals): | 167 | + if not has_subject_permissions(request.user, goals): |
| 167 | return redirect(reverse_lazy('subjects:home')) | 168 | return redirect(reverse_lazy('subjects:home')) |
| 168 | 169 | ||
| 169 | return super(HistoryReport, self).dispatch(request, *args, **kwargs) | 170 | return super(HistoryReport, self).dispatch(request, *args, **kwargs) |
| @@ -912,7 +913,7 @@ class DeleteView(LoginRequiredMixin, LogMixin, generic.DeleteView): | @@ -912,7 +913,7 @@ class DeleteView(LoginRequiredMixin, LogMixin, generic.DeleteView): | ||
| 912 | return super(DeleteView, self).dispatch(request, *args, **kwargs) | 913 | return super(DeleteView, self).dispatch(request, *args, **kwargs) |
| 913 | 914 | ||
| 914 | def get_success_url(self): | 915 | def get_success_url(self): |
| 915 | - messages.success(self.request, _('The Goals specification of the thopic %s was removed successfully!')%(self.object.topic.name)) | 916 | + messages.success(self.request, _('The Goals specification of the topic %s was removed successfully!')%(self.object.topic.name)) |
| 916 | 917 | ||
| 917 | self.log_context['category_id'] = self.object.topic.subject.category.id | 918 | self.log_context['category_id'] = self.object.topic.subject.category.id |
| 918 | self.log_context['category_name'] = self.object.topic.subject.category.name | 919 | self.log_context['category_name'] = self.object.topic.subject.category.name |
| @@ -929,4 +930,36 @@ class DeleteView(LoginRequiredMixin, LogMixin, generic.DeleteView): | @@ -929,4 +930,36 @@ class DeleteView(LoginRequiredMixin, LogMixin, generic.DeleteView): | ||
| 929 | 930 | ||
| 930 | super(DeleteView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context) | 931 | super(DeleteView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context) |
| 931 | 932 | ||
| 932 | - return reverse_lazy('subjects:view', kwargs = {'slug': self.object.topic.subject.slug}) | ||
| 933 | \ No newline at end of file | 933 | \ No newline at end of file |
| 934 | + return reverse_lazy('subjects:view', kwargs = {'slug': self.object.topic.subject.slug}) | ||
| 935 | + | ||
| 936 | +@log_decorator_ajax('resources', 'view_reports', 'goals') | ||
| 937 | +def reports_log(request, goal, report): | ||
| 938 | + action = request.GET.get('action') | ||
| 939 | + | ||
| 940 | + if action == 'open': | ||
| 941 | + goals = get_object_or_404(Goals, slug = goal) | ||
| 942 | + | ||
| 943 | + log_context = {} | ||
| 944 | + log_context['category_id'] = goals.topic.subject.category.id | ||
| 945 | + log_context['category_name'] = goals.topic.subject.category.name | ||
| 946 | + log_context['category_slug'] = goals.topic.subject.category.slug | ||
| 947 | + log_context['subject_id'] = goals.topic.subject.id | ||
| 948 | + log_context['subject_name'] = goals.topic.subject.name | ||
| 949 | + log_context['subject_slug'] = goals.topic.subject.slug | ||
| 950 | + log_context['topic_id'] = goals.topic.id | ||
| 951 | + log_context['topic_name'] = goals.topic.name | ||
| 952 | + log_context['topic_slug'] = goals.topic.slug | ||
| 953 | + log_context['goals_id'] = goals.id | ||
| 954 | + log_context['goals_name'] = goals.name | ||
| 955 | + log_context['goals_slug'] = goals.slug | ||
| 956 | + log_context['goals_report'] = report | ||
| 957 | + log_context['timestamp_start'] = str(int(time.time())) | ||
| 958 | + log_context['timestamp_end'] = '-1' | ||
| 959 | + | ||
| 960 | + request.log_context = log_context | ||
| 961 | + | ||
| 962 | + log_id = Log.objects.latest('id').id | ||
| 963 | + | ||
| 964 | + return JsonResponse({'message': 'ok', 'log_id': log_id}) | ||
| 965 | + | ||
| 966 | + return JsonResponse({'message': 'ok'}) | ||
| 934 | \ No newline at end of file | 967 | \ No newline at end of file |
links/locale/pt_BR/LC_MESSAGES/django.po
| @@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
| 8 | msgstr "" | 8 | msgstr "" |
| 9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
| 10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
| 11 | -"POT-Creation-Date: 2017-02-20 22:07-0300\n" | 11 | +"POT-Creation-Date: 2017-03-09 17:01-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" |
log/locale/pt_BR/LC_MESSAGES/django.po
| @@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
| 8 | msgstr "" | 8 | msgstr "" |
| 9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
| 10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
| 11 | -"POT-Creation-Date: 2017-02-20 22:07-0300\n" | 11 | +"POT-Creation-Date: 2017-03-09 17:01-0300\n" |
| 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
| 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
| 14 | "Language-Team: LANGUAGE <LL@li.org>\n" | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" |
mailsender/locale/pt_BR/LC_MESSAGES/django.po
| @@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
| 8 | msgstr "" | 8 | msgstr "" |
| 9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
| 10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
| 11 | -"POT-Creation-Date: 2017-02-20 22:07-0300\n" | 11 | +"POT-Creation-Date: 2017-03-09 17:01-0300\n" |
| 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
| 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
| 14 | "Language-Team: LANGUAGE <LL@li.org>\n" | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" |
mural/locale/pt_BR/LC_MESSAGES/django.po
| @@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
| 8 | msgstr "" | 8 | msgstr "" |
| 9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
| 10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
| 11 | -"POT-Creation-Date: 2017-02-20 22:07-0300\n" | 11 | +"POT-Creation-Date: 2017-03-09 17:01-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,15 +18,15 @@ msgstr "" | @@ -18,15 +18,15 @@ msgstr "" | ||
| 18 | "Content-Transfer-Encoding: 8bit\n" | 18 | "Content-Transfer-Encoding: 8bit\n" |
| 19 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" | 19 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" |
| 20 | 20 | ||
| 21 | -#: mural/forms.py:19 mural/forms.py:97 | 21 | +#: mural/forms.py:21 mural/forms.py:104 |
| 22 | msgid "This field is required." | 22 | msgid "This field is required." |
| 23 | msgstr "Esse campo é obrigatório." | 23 | msgstr "Esse campo é obrigatório." |
| 24 | 24 | ||
| 25 | -#: mural/forms.py:31 mural/forms.py:109 | 25 | +#: mural/forms.py:33 mural/forms.py:116 |
| 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 possuir 5MB ou menos." | 27 | msgstr "A imagem é muito grande. Ela deve possuir 5MB ou menos." |
| 28 | 28 | ||
| 29 | -#: mural/forms.py:70 | 29 | +#: mural/forms.py:75 |
| 30 | msgid "Choose an especific resource" | 30 | msgid "Choose an especific resource" |
| 31 | msgstr "Escolha um recurso específico" | 31 | msgstr "Escolha um recurso específico" |
| 32 | 32 | ||
| @@ -48,7 +48,7 @@ msgid "Ask for Help" | @@ -48,7 +48,7 @@ msgid "Ask for Help" | ||
| 48 | msgstr "Pediu ajuda" | 48 | msgstr "Pediu ajuda" |
| 49 | 49 | ||
| 50 | #: mural/models.py:22 mural/models.py:107 mural/models.py:118 | 50 | #: mural/models.py:22 mural/models.py:107 mural/models.py:118 |
| 51 | -#: mural/models.py:126 | 51 | +#: mural/models.py:127 |
| 52 | msgid "Post" | 52 | msgid "Post" |
| 53 | msgstr "Postagem" | 53 | msgstr "Postagem" |
| 54 | 54 | ||
| @@ -57,7 +57,7 @@ msgid "Image" | @@ -57,7 +57,7 @@ msgid "Image" | ||
| 57 | msgstr "Imagem" | 57 | msgstr "Imagem" |
| 58 | 58 | ||
| 59 | #: mural/models.py:24 mural/models.py:108 mural/models.py:120 | 59 | #: mural/models.py:24 mural/models.py:108 mural/models.py:120 |
| 60 | -#: mural/models.py:127 | 60 | +#: mural/models.py:128 |
| 61 | msgid "User" | 61 | msgid "User" |
| 62 | msgstr "Usuário" | 62 | msgstr "Usuário" |
| 63 | 63 | ||
| @@ -89,32 +89,35 @@ msgstr "Recurso" | @@ -89,32 +89,35 @@ msgstr "Recurso" | ||
| 89 | msgid "Viewed" | 89 | msgid "Viewed" |
| 90 | msgstr "Visualizado" | 90 | msgstr "Visualizado" |
| 91 | 91 | ||
| 92 | -#: mural/templates/mural/_form.html:76 | ||
| 93 | -#: mural/templates/mural/_form_comment.html:33 | ||
| 94 | -msgid "Choose your photo..." | ||
| 95 | -msgstr "Escolha sua foto..." | 92 | +#: mural/models.py:121 |
| 93 | +msgid "Date/Time Viewed" | ||
| 94 | +msgstr "" | ||
| 96 | 95 | ||
| 97 | -#: mural/templates/mural/_form.html:85 | 96 | +#: mural/templates/mural/_form.html:76 |
| 98 | #: mural/templates/mural/_form_comment.html:42 | 97 | #: mural/templates/mural/_form_comment.html:42 |
| 99 | msgid "Click or drop the file here" | 98 | msgid "Click or drop the file here" |
| 100 | msgstr "Clique ou solte o arquivo aqui" | 99 | msgstr "Clique ou solte o arquivo aqui" |
| 101 | 100 | ||
| 102 | -#: mural/templates/mural/_form.html:87 | 101 | +#: mural/templates/mural/_form.html:78 |
| 103 | #: mural/templates/mural/_form_comment.html:44 | 102 | #: mural/templates/mural/_form_comment.html:44 |
| 104 | msgid "The file could not exceed 5MB." | 103 | msgid "The file could not exceed 5MB." |
| 105 | msgstr "O arquivo não pode exceder 5MB." | 104 | msgstr "O arquivo não pode exceder 5MB." |
| 106 | 105 | ||
| 107 | -#: mural/templates/mural/_form.html:109 | 106 | +#: mural/templates/mural/_form.html:100 |
| 108 | #: mural/templates/mural/_form_comment.html:66 | 107 | #: mural/templates/mural/_form_comment.html:66 |
| 109 | msgid "Save" | 108 | msgid "Save" |
| 110 | msgstr "Salvar" | 109 | msgstr "Salvar" |
| 111 | 110 | ||
| 112 | -#: mural/templates/mural/_form.html:110 | 111 | +#: mural/templates/mural/_form.html:101 |
| 113 | #: mural/templates/mural/_form_comment.html:67 | 112 | #: mural/templates/mural/_form_comment.html:67 |
| 114 | #: mural/templates/mural/_form_comment.html:85 | 113 | #: mural/templates/mural/_form_comment.html:85 |
| 115 | msgid "Cancel" | 114 | msgid "Cancel" |
| 116 | msgstr "Cancelar" | 115 | msgstr "Cancelar" |
| 117 | 116 | ||
| 117 | +#: mural/templates/mural/_form_comment.html:33 | ||
| 118 | +msgid "Choose your photo..." | ||
| 119 | +msgstr "Escolha sua foto..." | ||
| 120 | + | ||
| 118 | #: mural/templates/mural/_form_comment.html:78 | 121 | #: mural/templates/mural/_form_comment.html:78 |
| 119 | msgid "Insert here the name of the user you wish to mark in this comment" | 122 | msgid "Insert here the name of the user you wish to mark in this comment" |
| 120 | msgstr "Insira aqui o nome do usuário que você quer marcar nesse comentário" | 123 | msgstr "Insira aqui o nome do usuário que você quer marcar nesse comentário" |
| @@ -196,14 +199,14 @@ msgstr "Por Assunto" | @@ -196,14 +199,14 @@ msgstr "Por Assunto" | ||
| 196 | 199 | ||
| 197 | #: mural/templates/mural/list.html:26 mural/templates/mural/list.html:39 | 200 | #: mural/templates/mural/list.html:26 mural/templates/mural/list.html:39 |
| 198 | #: mural/templates/mural/list.html:74 mural/templates/mural/list.html:87 | 201 | #: mural/templates/mural/list.html:74 mural/templates/mural/list.html:87 |
| 199 | -#: mural/templates/mural/list_category.html:72 | ||
| 200 | -#: mural/templates/mural/list_category.html:85 | ||
| 201 | -#: mural/templates/mural/list_category.html:123 | ||
| 202 | -#: mural/templates/mural/list_category.html:136 | ||
| 203 | -#: mural/templates/mural/list_subject.html:71 | ||
| 204 | -#: mural/templates/mural/list_subject.html:84 | ||
| 205 | -#: mural/templates/mural/list_subject.html:122 | ||
| 206 | -#: mural/templates/mural/list_subject.html:135 | 202 | +#: mural/templates/mural/list_category.html:75 |
| 203 | +#: mural/templates/mural/list_category.html:88 | ||
| 204 | +#: mural/templates/mural/list_category.html:126 | ||
| 205 | +#: mural/templates/mural/list_category.html:139 | ||
| 206 | +#: mural/templates/mural/list_subject.html:74 | ||
| 207 | +#: mural/templates/mural/list_subject.html:87 | ||
| 208 | +#: mural/templates/mural/list_subject.html:125 | ||
| 209 | +#: mural/templates/mural/list_subject.html:138 | ||
| 207 | #: mural/templates/mural/resource_view.html:73 | 210 | #: mural/templates/mural/resource_view.html:73 |
| 208 | #: mural/templates/mural/resource_view.html:86 | 211 | #: mural/templates/mural/resource_view.html:86 |
| 209 | #: mural/templates/mural/subject_view.html:85 | 212 | #: mural/templates/mural/subject_view.html:85 |
| @@ -212,46 +215,46 @@ msgid "Filter" | @@ -212,46 +215,46 @@ msgid "Filter" | ||
| 212 | msgstr "Filtrar" | 215 | msgstr "Filtrar" |
| 213 | 216 | ||
| 214 | #: mural/templates/mural/list.html:31 mural/templates/mural/list.html:79 | 217 | #: mural/templates/mural/list.html:31 mural/templates/mural/list.html:79 |
| 215 | -#: mural/templates/mural/list_category.html:77 | ||
| 216 | -#: mural/templates/mural/list_category.html:128 | ||
| 217 | -#: mural/templates/mural/list_subject.html:76 | ||
| 218 | -#: mural/templates/mural/list_subject.html:127 | 218 | +#: mural/templates/mural/list_category.html:80 |
| 219 | +#: mural/templates/mural/list_category.html:131 | ||
| 220 | +#: mural/templates/mural/list_subject.html:79 | ||
| 221 | +#: mural/templates/mural/list_subject.html:130 | ||
| 219 | #: mural/templates/mural/resource_view.html:78 | 222 | #: mural/templates/mural/resource_view.html:78 |
| 220 | #: mural/templates/mural/subject_view.html:90 | 223 | #: mural/templates/mural/subject_view.html:90 |
| 221 | msgid "Favorite posts" | 224 | msgid "Favorite posts" |
| 222 | msgstr "Postagens favoritas" | 225 | msgstr "Postagens favoritas" |
| 223 | 226 | ||
| 224 | #: mural/templates/mural/list.html:36 mural/templates/mural/list.html:84 | 227 | #: mural/templates/mural/list.html:36 mural/templates/mural/list.html:84 |
| 225 | -#: mural/templates/mural/list_category.html:82 | ||
| 226 | -#: mural/templates/mural/list_category.html:133 | ||
| 227 | -#: mural/templates/mural/list_subject.html:81 | ||
| 228 | -#: mural/templates/mural/list_subject.html:132 | 228 | +#: mural/templates/mural/list_category.html:85 |
| 229 | +#: mural/templates/mural/list_category.html:136 | ||
| 230 | +#: mural/templates/mural/list_subject.html:84 | ||
| 231 | +#: mural/templates/mural/list_subject.html:135 | ||
| 229 | #: mural/templates/mural/resource_view.html:83 | 232 | #: mural/templates/mural/resource_view.html:83 |
| 230 | #: mural/templates/mural/subject_view.html:95 | 233 | #: mural/templates/mural/subject_view.html:95 |
| 231 | msgid "Only my posts" | 234 | msgid "Only my posts" |
| 232 | msgstr "Apenas minhas postagens" | 235 | msgstr "Apenas minhas postagens" |
| 233 | 236 | ||
| 234 | #: mural/templates/mural/list.html:40 mural/templates/mural/list.html:88 | 237 | #: mural/templates/mural/list.html:40 mural/templates/mural/list.html:88 |
| 235 | -#: mural/templates/mural/list_category.html:86 | ||
| 236 | -#: mural/templates/mural/list_category.html:137 | ||
| 237 | -#: mural/templates/mural/list_subject.html:85 | ||
| 238 | -#: mural/templates/mural/list_subject.html:136 | 238 | +#: mural/templates/mural/list_category.html:89 |
| 239 | +#: mural/templates/mural/list_category.html:140 | ||
| 240 | +#: mural/templates/mural/list_subject.html:88 | ||
| 241 | +#: mural/templates/mural/list_subject.html:139 | ||
| 239 | #: mural/templates/mural/resource_view.html:87 | 242 | #: mural/templates/mural/resource_view.html:87 |
| 240 | #: mural/templates/mural/subject_view.html:99 | 243 | #: mural/templates/mural/subject_view.html:99 |
| 241 | msgid "Clean Filters" | 244 | msgid "Clean Filters" |
| 242 | msgstr "Limpar Filtros" | 245 | msgstr "Limpar Filtros" |
| 243 | 246 | ||
| 244 | #: mural/templates/mural/list.html:52 | 247 | #: mural/templates/mural/list.html:52 |
| 245 | -#: mural/templates/mural/list_category.html:98 | ||
| 246 | -#: mural/templates/mural/list_subject.html:97 | 248 | +#: mural/templates/mural/list_category.html:101 |
| 249 | +#: mural/templates/mural/list_subject.html:100 | ||
| 247 | #: mural/templates/mural/resource_view.html:51 | 250 | #: mural/templates/mural/resource_view.html:51 |
| 248 | #: mural/templates/mural/subject_view.html:63 | 251 | #: mural/templates/mural/subject_view.html:63 |
| 249 | msgid "Wish to make a new post?" | 252 | msgid "Wish to make a new post?" |
| 250 | msgstr "Deseja fazer uma nova postagem?" | 253 | msgstr "Deseja fazer uma nova postagem?" |
| 251 | 254 | ||
| 252 | #: mural/templates/mural/list.html:70 | 255 | #: mural/templates/mural/list.html:70 |
| 253 | -#: mural/templates/mural/list_category.html:119 | ||
| 254 | -#: mural/templates/mural/list_subject.html:118 | 256 | +#: mural/templates/mural/list_category.html:122 |
| 257 | +#: mural/templates/mural/list_subject.html:121 | ||
| 255 | #: mural/templates/mural/resource_view.html:69 | 258 | #: mural/templates/mural/resource_view.html:69 |
| 256 | #: mural/templates/mural/subject_view.html:81 | 259 | #: mural/templates/mural/subject_view.html:81 |
| 257 | msgid "There are no posts in this mural yet." | 260 | msgid "There are no posts in this mural yet." |
| @@ -267,8 +270,8 @@ msgstr "Mural: Por Categoria" | @@ -267,8 +270,8 @@ msgstr "Mural: Por Categoria" | ||
| 267 | msgid "Replicate" | 270 | msgid "Replicate" |
| 268 | msgstr "Replicar" | 271 | msgstr "Replicar" |
| 269 | 272 | ||
| 270 | -#: mural/templates/mural/list_category.html:108 | ||
| 271 | -#: mural/templates/mural/list_subject.html:107 | 273 | +#: mural/templates/mural/list_category.html:111 |
| 274 | +#: mural/templates/mural/list_subject.html:110 | ||
| 272 | msgid "See more posts" | 275 | msgid "See more posts" |
| 273 | msgstr "Ver mais postagens" | 276 | msgstr "Ver mais postagens" |
| 274 | 277 | ||
| @@ -282,7 +285,7 @@ msgid "Groups" | @@ -282,7 +285,7 @@ msgid "Groups" | ||
| 282 | msgstr "Grupos" | 285 | msgstr "Grupos" |
| 283 | 286 | ||
| 284 | #: mural/templates/mural/resource_view.html:12 | 287 | #: mural/templates/mural/resource_view.html:12 |
| 285 | -#: mural/templates/mural/subject_view.html:9 mural/views.py:84 | 288 | +#: mural/templates/mural/subject_view.html:9 mural/views.py:101 |
| 286 | msgid "Mural" | 289 | msgid "Mural" |
| 287 | msgstr "Mural" | 290 | msgstr "Mural" |
| 288 | 291 | ||
| @@ -290,11 +293,11 @@ msgstr "Mural" | @@ -290,11 +293,11 @@ msgstr "Mural" | ||
| 290 | msgid "(Edited)" | 293 | msgid "(Edited)" |
| 291 | msgstr "(Editado)" | 294 | msgstr "(Editado)" |
| 292 | 295 | ||
| 293 | -#: mural/templatetags/mural_filters.py:30 mural/views.py:1008 | 296 | +#: mural/templatetags/mural_filters.py:30 mural/views.py:1226 |
| 294 | msgid "Unfavorite" | 297 | msgid "Unfavorite" |
| 295 | msgstr "Desfavoritar" | 298 | msgstr "Desfavoritar" |
| 296 | 299 | ||
| 297 | -#: mural/templatetags/mural_filters.py:32 mural/views.py:1012 | 300 | +#: mural/templatetags/mural_filters.py:32 mural/views.py:1230 |
| 298 | msgid "Favorite" | 301 | msgid "Favorite" |
| 299 | msgstr "Favoritar" | 302 | msgstr "Favoritar" |
| 300 | 303 | ||
| @@ -302,62 +305,62 @@ msgstr "Favoritar" | @@ -302,62 +305,62 @@ msgstr "Favoritar" | ||
| 302 | msgid "about" | 305 | msgid "about" |
| 303 | msgstr "sobre" | 306 | msgstr "sobre" |
| 304 | 307 | ||
| 305 | -#: mural/views.py:132 | 308 | +#: mural/views.py:154 |
| 306 | #, python-format | 309 | #, python-format |
| 307 | msgid "%s has made a post in General" | 310 | msgid "%s has made a post in General" |
| 308 | msgstr "%s postou em Geral" | 311 | msgstr "%s postou em Geral" |
| 309 | 312 | ||
| 310 | -#: mural/views.py:220 mural/views.py:452 mural/views.py:721 | 313 | +#: mural/views.py:258 mural/views.py:522 mural/views.py:858 |
| 311 | msgid "Are you sure you want to delete this post?" | 314 | msgid "Are you sure you want to delete this post?" |
| 312 | msgstr "Você tem certeza que deseja deletar essa postagem?" | 315 | msgstr "Você tem certeza que deseja deletar essa postagem?" |
| 313 | 316 | ||
| 314 | -#: mural/views.py:324 | 317 | +#: mural/views.py:366 |
| 315 | msgid "Mural - Per Category" | 318 | msgid "Mural - Per Category" |
| 316 | msgstr "Mural - Por Categoria" | 319 | msgstr "Mural - Por Categoria" |
| 317 | 320 | ||
| 318 | -#: mural/views.py:364 mural/views.py:613 mural/views.py:945 | 321 | +#: mural/views.py:411 mural/views.py:717 mural/views.py:1152 |
| 319 | #, python-format | 322 | #, python-format |
| 320 | msgid "%s has made a post in %s" | 323 | msgid "%s has made a post in %s" |
| 321 | msgstr "%s postou em %s" | 324 | msgstr "%s postou em %s" |
| 322 | 325 | ||
| 323 | -#: mural/views.py:556 | 326 | +#: mural/views.py:655 |
| 324 | msgid "Mural - Per Subject" | 327 | msgid "Mural - Per Subject" |
| 325 | msgstr "Mural - Por Assunto" | 328 | msgstr "Mural - Por Assunto" |
| 326 | 329 | ||
| 327 | -#: mural/views.py:806 mural/views.py:883 | 330 | +#: mural/views.py:969 mural/views.py:1085 |
| 328 | #, python-format | 331 | #, python-format |
| 329 | msgid "%s - Mural" | 332 | msgid "%s - Mural" |
| 330 | msgstr "%s - Mural" | 333 | msgstr "%s - Mural" |
| 331 | 334 | ||
| 332 | -#: mural/views.py:989 | 335 | +#: mural/views.py:1207 |
| 333 | msgid "Your post was published successfully!" | 336 | msgid "Your post was published successfully!" |
| 334 | msgstr "Sua postagem foi publicada com sucesso!" | 337 | msgstr "Sua postagem foi publicada com sucesso!" |
| 335 | 338 | ||
| 336 | -#: mural/views.py:991 | 339 | +#: mural/views.py:1209 |
| 337 | msgid "Your post was edited successfully!" | 340 | msgid "Your post was edited successfully!" |
| 338 | msgstr "Sua postagem foi editada com sucesso!" | 341 | msgstr "Sua postagem foi editada com sucesso!" |
| 339 | 342 | ||
| 340 | -#: mural/views.py:998 | 343 | +#: mural/views.py:1216 |
| 341 | msgid "Post deleted successfully!" | 344 | msgid "Post deleted successfully!" |
| 342 | msgstr "Postagem deletada com sucesso!" | 345 | msgstr "Postagem deletada com sucesso!" |
| 343 | 346 | ||
| 344 | -#: mural/views.py:1061 | 347 | +#: mural/views.py:1284 |
| 345 | #, python-format | 348 | #, python-format |
| 346 | msgid "%s has commented in a post" | 349 | msgid "%s has commented in a post" |
| 347 | msgstr "%s comentou em um postagem" | 350 | msgstr "%s comentou em um postagem" |
| 348 | 351 | ||
| 349 | -#: mural/views.py:1161 | 352 | +#: mural/views.py:1443 |
| 350 | msgid "Are you sure you want to delete this comment?" | 353 | msgid "Are you sure you want to delete this comment?" |
| 351 | msgstr "Você tem certeza que deseja deletar esse comentário?" | 354 | msgstr "Você tem certeza que deseja deletar esse comentário?" |
| 352 | 355 | ||
| 353 | -#: mural/views.py:1203 | 356 | +#: mural/views.py:1510 |
| 354 | msgid "Your comment was published successfully!" | 357 | msgid "Your comment was published successfully!" |
| 355 | msgstr "Seu comentário foi publicado com sucesso!" | 358 | msgstr "Seu comentário foi publicado com sucesso!" |
| 356 | 359 | ||
| 357 | -#: mural/views.py:1205 | 360 | +#: mural/views.py:1512 |
| 358 | msgid "Your comment was edited successfully!" | 361 | msgid "Your comment was edited successfully!" |
| 359 | msgstr "Seu comentário foi editado com sucesso!" | 362 | msgstr "Seu comentário foi editado com sucesso!" |
| 360 | 363 | ||
| 361 | -#: mural/views.py:1212 | 364 | +#: mural/views.py:1519 |
| 362 | msgid "Comment deleted successfully!" | 365 | msgid "Comment deleted successfully!" |
| 363 | msgstr "Comentário deletado com sucesso!" | 366 | msgstr "Comentário deletado com sucesso!" |
notifications/locale/pt_BR/LC_MESSAGES/django.po
| @@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
| 8 | msgstr "" | 8 | msgstr "" |
| 9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
| 10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
| 11 | -"POT-Creation-Date: 2017-02-20 22:07-0300\n" | 11 | +"POT-Creation-Date: 2017-03-09 17:01-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" |
| @@ -173,12 +173,12 @@ msgstr "Pendências Atuais" | @@ -173,12 +173,12 @@ msgstr "Pendências Atuais" | ||
| 173 | msgid "Notifications History" | 173 | msgid "Notifications History" |
| 174 | msgstr "Histórico de Notificações" | 174 | msgstr "Histórico de Notificações" |
| 175 | 175 | ||
| 176 | -#: notifications/templates/notifications/index.html:63 | 176 | +#: notifications/templates/notifications/index.html:69 |
| 177 | msgid "You do not posses any pendency." | 177 | msgid "You do not posses any pendency." |
| 178 | msgstr "Você não possui nenhuma pendência." | 178 | msgstr "Você não possui nenhuma pendência." |
| 179 | 179 | ||
| 180 | #: notifications/templates/notifications/subject.html:23 | 180 | #: notifications/templates/notifications/subject.html:23 |
| 181 | -#: notifications/views.py:162 | 181 | +#: notifications/views.py:198 |
| 182 | msgid "Pendencies" | 182 | msgid "Pendencies" |
| 183 | msgstr "Pendências" | 183 | msgstr "Pendências" |
| 184 | 184 | ||
| @@ -210,37 +210,37 @@ msgstr "Meta definida para realização da tarefa: %s" | @@ -210,37 +210,37 @@ msgstr "Meta definida para realização da tarefa: %s" | ||
| 210 | msgid "New goal defined to task realization: %s" | 210 | msgid "New goal defined to task realization: %s" |
| 211 | msgstr "Nova meta definida para realização da tarefa: %s" | 211 | msgstr "Nova meta definida para realização da tarefa: %s" |
| 212 | 212 | ||
| 213 | -#: notifications/views.py:59 notifications/views.py:123 | 213 | +#: notifications/views.py:69 notifications/views.py:148 |
| 214 | #, python-format | 214 | #, python-format |
| 215 | msgid "%s - Pendencies" | 215 | msgid "%s - Pendencies" |
| 216 | msgstr "%s - Pendências" | 216 | msgstr "%s - Pendências" |
| 217 | 217 | ||
| 218 | -#: notifications/views.py:245 | 218 | +#: notifications/views.py:282 |
| 219 | msgid "No goal date received" | 219 | msgid "No goal date received" |
| 220 | msgstr "Nenhuma data para meta recebida" | 220 | msgstr "Nenhuma data para meta recebida" |
| 221 | 221 | ||
| 222 | -#: notifications/views.py:252 | 222 | +#: notifications/views.py:289 |
| 223 | msgid "Could not identify the notification" | 223 | msgid "Could not identify the notification" |
| 224 | msgstr "Não foi possível identificar a notificação" | 224 | msgstr "Não foi possível identificar a notificação" |
| 225 | 225 | ||
| 226 | -#: notifications/views.py:259 | 226 | +#: notifications/views.py:296 |
| 227 | msgid "The goal date should be equal or after today's date" | 227 | msgid "The goal date should be equal or after today's date" |
| 228 | msgstr "" | 228 | msgstr "" |
| 229 | "A meta de realização da tarefa deve ser uma data igual ou posterior à data " | 229 | "A meta de realização da tarefa deve ser uma data igual ou posterior à data " |
| 230 | "atual" | 230 | "atual" |
| 231 | 231 | ||
| 232 | -#: notifications/views.py:262 | 232 | +#: notifications/views.py:299 |
| 233 | msgid "The goal date should be equal or before subject's date" | 233 | msgid "The goal date should be equal or before subject's date" |
| 234 | msgstr "" | 234 | msgstr "" |
| 235 | "A meta de realização da tarefa deve ser uma data igual ou anterior à data " | 235 | "A meta de realização da tarefa deve ser uma data igual ou anterior à data " |
| 236 | "final do assunto" | 236 | "final do assunto" |
| 237 | 237 | ||
| 238 | -#: notifications/views.py:268 | 238 | +#: notifications/views.py:311 |
| 239 | #, python-format | 239 | #, python-format |
| 240 | msgid "Your new goal to realize the task %s is %s" | 240 | msgid "Your new goal to realize the task %s is %s" |
| 241 | msgstr "Sua nova meta para realizar a tarefa %s é %s" | 241 | msgstr "Sua nova meta para realizar a tarefa %s é %s" |
| 242 | 242 | ||
| 243 | -#: notifications/views.py:270 | 243 | +#: notifications/views.py:313 |
| 244 | #, python-format | 244 | #, python-format |
| 245 | msgid "Your goal to realize the task %s is %s" | 245 | msgid "Your goal to realize the task %s is %s" |
| 246 | msgstr "Sua meta para realizar a tarefa %s é %s" | 246 | msgstr "Sua meta para realizar a tarefa %s é %s" |
pdf_file/locale/pt_BR/LC_MESSAGES/django.po
| @@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
| 8 | msgstr "" | 8 | msgstr "" |
| 9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
| 10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
| 11 | -"POT-Creation-Date: 2017-02-20 22:07-0300\n" | 11 | +"POT-Creation-Date: 2017-03-09 17:01-0300\n" |
| 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
| 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
| 14 | "Language-Team: LANGUAGE <LL@li.org>\n" | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" |
| @@ -18,23 +18,23 @@ msgstr "" | @@ -18,23 +18,23 @@ msgstr "" | ||
| 18 | "Content-Transfer-Encoding: 8bit\n" | 18 | "Content-Transfer-Encoding: 8bit\n" |
| 19 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" | 19 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" |
| 20 | 20 | ||
| 21 | -#: pdf_file/forms.py:24 | 21 | +#: pdf_file/forms.py:25 |
| 22 | msgid "Tags" | 22 | msgid "Tags" |
| 23 | msgstr "" | 23 | msgstr "" |
| 24 | 24 | ||
| 25 | -#: pdf_file/forms.py:29 | 25 | +#: pdf_file/forms.py:30 |
| 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:49 | 29 | +#: pdf_file/forms.py:51 |
| 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:61 | 33 | +#: pdf_file/forms.py:63 |
| 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:66 | 37 | +#: pdf_file/forms.py:68 |
| 38 | msgid "This field is required." | 38 | msgid "This field is required." |
| 39 | msgstr "" | 39 | msgstr "" |
| 40 | 40 |
pendencies/locale/pt_BR/LC_MESSAGES/django.po
| @@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
| 8 | msgstr "" | 8 | msgstr "" |
| 9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
| 10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
| 11 | -"POT-Creation-Date: 2017-02-20 22:07-0300\n" | 11 | +"POT-Creation-Date: 2017-03-09 17:01-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,31 @@ msgstr "" | @@ -18,27 +18,31 @@ msgstr "" | ||
| 18 | "Content-Transfer-Encoding: 8bit\n" | 18 | "Content-Transfer-Encoding: 8bit\n" |
| 19 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" | 19 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" |
| 20 | 20 | ||
| 21 | -#: pendencies/forms.py:41 pendencies/forms.py:44 pendencies/forms.py:47 | 21 | +#: pendencies/forms.py:49 pendencies/forms.py:52 pendencies/forms.py:55 |
| 22 | +#: pendencies/forms.py:128 pendencies/forms.py:131 pendencies/forms.py:134 | ||
| 23 | +#: pendencies/forms.py:137 | ||
| 22 | msgid "This field is required." | 24 | msgid "This field is required." |
| 23 | msgstr "Esse campo é obrigatório." | 25 | msgstr "Esse campo é obrigatório." |
| 24 | 26 | ||
| 25 | -#: pendencies/forms.py:52 | 27 | +#: pendencies/forms.py:60 pendencies/forms.py:142 |
| 26 | msgid "This input should be filled with a date equal or before the End Date." | 28 | msgid "This input should be filled with a date equal or before the End Date." |
| 27 | msgstr "" | 29 | msgstr "" |
| 28 | "Esse campo deve ser preenchido com uma data igual ou anterior à Data Final." | 30 | "Esse campo deve ser preenchido com uma data igual ou anterior à Data Final." |
| 29 | 31 | ||
| 30 | -#: pendencies/forms.py:53 | 32 | +#: pendencies/forms.py:61 pendencies/forms.py:143 pendencies/forms.py:149 |
| 31 | msgid "This input should be filled with a date equal or after the Begin Date." | 33 | msgid "This input should be filled with a date equal or after the Begin Date." |
| 32 | msgstr "" | 34 | msgstr "" |
| 33 | "Esse campo deve ser preenchido com uma data igual ou posterior à Data " | 35 | "Esse campo deve ser preenchido com uma data igual ou posterior à Data " |
| 34 | "Inicial." | 36 | "Inicial." |
| 35 | 37 | ||
| 36 | -#: pendencies/forms.py:60 pendencies/forms.py:70 | 38 | +#: pendencies/forms.py:68 pendencies/forms.py:78 pendencies/forms.py:162 |
| 39 | +#: pendencies/forms.py:172 pendencies/forms.py:182 | ||
| 37 | msgid "This input should be filled with a date equal or after today's date." | 40 | msgid "This input should be filled with a date equal or after today's date." |
| 38 | msgstr "" | 41 | msgstr "" |
| 39 | "Esse campo deve ser preenchido com uma data igual ou posterior à data atual." | 42 | "Esse campo deve ser preenchido com uma data igual ou posterior à data atual." |
| 40 | 43 | ||
| 41 | -#: pendencies/forms.py:63 pendencies/forms.py:73 | 44 | +#: pendencies/forms.py:71 pendencies/forms.py:81 pendencies/forms.py:165 |
| 45 | +#: pendencies/forms.py:175 pendencies/forms.py:185 | ||
| 42 | msgid "" | 46 | msgid "" |
| 43 | "This input should be filled with a date equal or after the subject begin " | 47 | "This input should be filled with a date equal or after the subject begin " |
| 44 | "date." | 48 | "date." |
| @@ -46,20 +50,49 @@ msgstr "" | @@ -46,20 +50,49 @@ msgstr "" | ||
| 46 | "Esse campo deve ser preenchido com uma data igual ou posterior à data " | 50 | "Esse campo deve ser preenchido com uma data igual ou posterior à data " |
| 47 | "inicial do assunto." | 51 | "inicial do assunto." |
| 48 | 52 | ||
| 49 | -#: pendencies/forms.py:66 | 53 | +#: pendencies/forms.py:74 pendencies/forms.py:168 |
| 50 | msgid "" | 54 | msgid "" |
| 51 | "This input should be filled with a date equal or after the subject end date." | 55 | "This input should be filled with a date equal or after the subject end date." |
| 52 | msgstr "" | 56 | msgstr "" |
| 53 | "Esse campo deve ser preenchido com uma data igual ou posterior à data final " | 57 | "Esse campo deve ser preenchido com uma data igual ou posterior à data final " |
| 54 | "do assunto." | 58 | "do assunto." |
| 55 | 59 | ||
| 56 | -#: pendencies/forms.py:76 | 60 | +#: pendencies/forms.py:84 pendencies/forms.py:178 pendencies/forms.py:188 |
| 57 | msgid "" | 61 | msgid "" |
| 58 | "This input should be filled with a date equal or before the subject end date." | 62 | "This input should be filled with a date equal or before the subject end date." |
| 59 | msgstr "" | 63 | msgstr "" |
| 60 | "Esse campo deve ser preenchido com uma data igual ou anterior à data final " | 64 | "Esse campo deve ser preenchido com uma data igual ou anterior à data final " |
| 61 | "do assunto" | 65 | "do assunto" |
| 62 | 66 | ||
| 67 | +#: pendencies/forms.py:148 pendencies/forms.py:154 | ||
| 68 | +#, fuzzy | ||
| 69 | +#| msgid "" | ||
| 70 | +#| "This input should be filled with a date equal or before the End Date." | ||
| 71 | +msgid "This input should be filled with a date equal or before the Limit Date." | ||
| 72 | +msgstr "" | ||
| 73 | +"Esse campo deve ser preenchido com uma data igual ou anterior à Data Final." | ||
| 74 | + | ||
| 75 | +#: pendencies/forms.py:155 | ||
| 76 | +#, fuzzy | ||
| 77 | +#| msgid "" | ||
| 78 | +#| "This input should be filled with a date equal or after the Begin Date." | ||
| 79 | +msgid "This input should be filled with a date equal or after the End Date." | ||
| 80 | +msgstr "" | ||
| 81 | +"Esse campo deve ser preenchido com uma data igual ou posterior à Data " | ||
| 82 | +"Inicial." | ||
| 83 | + | ||
| 84 | +#: pendencies/forms.py:196 pendencies/forms.py:200 pendencies/forms.py:204 | ||
| 85 | +#, fuzzy | ||
| 86 | +#| msgid "" | ||
| 87 | +#| "This input should be filled with a date equal or before the subject end " | ||
| 88 | +#| "date." | ||
| 89 | +msgid "" | ||
| 90 | +"This input should be filled with a date equal or before the goals submission " | ||
| 91 | +"limit date." | ||
| 92 | +msgstr "" | ||
| 93 | +"Esse campo deve ser preenchido com uma data igual ou anterior à data final " | ||
| 94 | +"do assunto" | ||
| 95 | + | ||
| 63 | #: pendencies/models.py:8 | 96 | #: pendencies/models.py:8 |
| 64 | msgid "Action" | 97 | msgid "Action" |
| 65 | msgstr "Ação" | 98 | msgstr "Ação" |
| @@ -84,6 +117,10 @@ msgstr "Acessar" | @@ -84,6 +117,10 @@ msgstr "Acessar" | ||
| 84 | msgid "Finish" | 117 | msgid "Finish" |
| 85 | msgstr "" | 118 | msgstr "" |
| 86 | 119 | ||
| 120 | +#: pendencies/models.py:8 | ||
| 121 | +msgid "Submit" | ||
| 122 | +msgstr "" | ||
| 123 | + | ||
| 87 | #: pendencies/models.py:9 | 124 | #: pendencies/models.py:9 |
| 88 | msgid "Begin Date" | 125 | msgid "Begin Date" |
| 89 | msgstr "Data Inicial" | 126 | msgstr "Data Inicial" |
reports/forms.py
| @@ -5,12 +5,12 @@ import datetime | @@ -5,12 +5,12 @@ import datetime | ||
| 5 | 5 | ||
| 6 | 6 | ||
| 7 | class CreateInteractionReportForm(forms.Form): | 7 | class CreateInteractionReportForm(forms.Form): |
| 8 | - topic = forms.ChoiceField(required=True, label= _("topics to select data from")) | ||
| 9 | - init_date = forms.DateField(required=True) | ||
| 10 | - end_date = forms.DateField(required=True) | 8 | + topic = forms.ChoiceField( label= _("Topics to select data from")) |
| 9 | + init_date = forms.DateField() | ||
| 10 | + end_date = forms.DateField() | ||
| 11 | 11 | ||
| 12 | - from_mural = forms.BooleanField() | ||
| 13 | - from_messages = forms.BooleanField() | 12 | + from_mural = forms.BooleanField(required=False) |
| 13 | + from_messages = forms.BooleanField(required=False) | ||
| 14 | 14 | ||
| 15 | class Meta: | 15 | class Meta: |
| 16 | fields = ('topic', 'init_date', 'end_date', 'from_mural' , 'from_messages') | 16 | fields = ('topic', 'init_date', 'end_date', 'from_mural' , 'from_messages') |
| @@ -20,5 +20,18 @@ class CreateInteractionReportForm(forms.Form): | @@ -20,5 +20,18 @@ class CreateInteractionReportForm(forms.Form): | ||
| 20 | 20 | ||
| 21 | initial = kwargs['initial'] | 21 | initial = kwargs['initial'] |
| 22 | topics = list(initial['topic']) | 22 | topics = list(initial['topic']) |
| 23 | - | 23 | + self.subject = initial['subject'] #so we can check date cleaned data |
| 24 | self.fields['topic'].choices = [(topic.id, topic.name) for topic in topics] | 24 | self.fields['topic'].choices = [(topic.id, topic.name) for topic in topics] |
| 25 | + self.fields['topic'].choices.append((_("All"), _("All"))) | ||
| 26 | + | ||
| 27 | + def clean_init_date(self): | ||
| 28 | + init_date = self.cleaned_data.get('init_date') | ||
| 29 | + if init_date < self.subject.init_date: | ||
| 30 | + self._errors['init_date'] = [_('This date should be right or after ' + str(self.subject.init_date) + ', which is when the subject started. ')] | ||
| 31 | + return init_date | ||
| 32 | + | ||
| 33 | + def clean_end_date(self): | ||
| 34 | + end_date = self.cleaned_data.get('init_date') | ||
| 35 | + if end_date > self.subject.init_date: | ||
| 36 | + self._errors['end_date'] = [_('This date should be right or before ' + str(self.subject.init_date) + ', which is when the subject finishes. ')] | ||
| 37 | + return end_date | ||
| 25 | \ No newline at end of file | 38 | \ No newline at end of file |
| @@ -0,0 +1,86 @@ | @@ -0,0 +1,86 @@ | ||
| 1 | +# SOME DESCRIPTIVE TITLE. | ||
| 2 | +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER | ||
| 3 | +# This file is distributed under the same license as the PACKAGE package. | ||
| 4 | +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. | ||
| 5 | +# | ||
| 6 | +#, fuzzy | ||
| 7 | +msgid "" | ||
| 8 | +msgstr "" | ||
| 9 | +"Project-Id-Version: PACKAGE VERSION\n" | ||
| 10 | +"Report-Msgid-Bugs-To: \n" | ||
| 11 | +"POT-Creation-Date: 2017-03-09 17:01-0300\n" | ||
| 12 | +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | ||
| 13 | +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | ||
| 14 | +"Language-Team: LANGUAGE <LL@li.org>\n" | ||
| 15 | +"Language: \n" | ||
| 16 | +"MIME-Version: 1.0\n" | ||
| 17 | +"Content-Type: text/plain; charset=UTF-8\n" | ||
| 18 | +"Content-Transfer-Encoding: 8bit\n" | ||
| 19 | +"Plural-Forms: nplurals=2; plural=(n > 1);\n" | ||
| 20 | +#: reports/forms.py:8 | ||
| 21 | +msgid "Topics to select data from" | ||
| 22 | +msgstr "" | ||
| 23 | + | ||
| 24 | +#: reports/forms.py:25 | ||
| 25 | +msgid "All" | ||
| 26 | +msgstr "" | ||
| 27 | + | ||
| 28 | +#: reports/templates/reports/create.html:21 | ||
| 29 | +#: reports/templates/reports/report.html.py:20 | ||
| 30 | +#: reports/templates/reports/view.html:33 | ||
| 31 | +msgid "Analytics" | ||
| 32 | +msgstr "" | ||
| 33 | + | ||
| 34 | +#: reports/templates/reports/create.html:31 | ||
| 35 | +#: reports/templates/reports/report.html.py:30 | ||
| 36 | +#: reports/templates/reports/view.html:43 | ||
| 37 | +msgid "Interaction Data" | ||
| 38 | +msgstr "" | ||
| 39 | + | ||
| 40 | +#: reports/templates/reports/create.html:34 | ||
| 41 | +#: reports/templates/reports/report.html.py:33 | ||
| 42 | +#: reports/templates/reports/view.html:46 | ||
| 43 | +msgid "Report Card" | ||
| 44 | +msgstr "" | ||
| 45 | + | ||
| 46 | +#: reports/templates/reports/create.html:37 | ||
| 47 | +#: reports/templates/reports/report.html.py:36 | ||
| 48 | +#: reports/templates/reports/view.html:49 | ||
| 49 | +msgid "Participation" | ||
| 50 | +msgstr "" | ||
| 51 | + | ||
| 52 | +#: reports/templates/reports/view.html:56 | ||
| 53 | +msgid "Subject" | ||
| 54 | +msgstr "" | ||
| 55 | + | ||
| 56 | +#: reports/templates/reports/view.html:57 | ||
| 57 | +msgid "Topic" | ||
| 58 | +msgstr "" | ||
| 59 | + | ||
| 60 | +#: reports/templates/reports/view.html:58 | ||
| 61 | +msgid "Initial Date" | ||
| 62 | +msgstr "" | ||
| 63 | + | ||
| 64 | +#: reports/templates/reports/view.html:59 | ||
| 65 | +msgid "End Date" | ||
| 66 | +msgstr "" | ||
| 67 | + | ||
| 68 | +#: reports/templates/reports/view.html:60 | ||
| 69 | +msgid "new search" | ||
| 70 | +msgstr "" | ||
| 71 | + | ||
| 72 | +#: reports/templates/reports/view.html:66 | ||
| 73 | +msgid "register(s)" | ||
| 74 | +msgstr "" | ||
| 75 | + | ||
| 76 | +#: reports/templates/reports/view.html:68 | ||
| 77 | +msgid "Variable Descriptions" | ||
| 78 | +msgstr "" | ||
| 79 | + | ||
| 80 | +#: reports/templates/reports/view.html:72 | ||
| 81 | +msgid "Interactions Data" | ||
| 82 | +msgstr "" | ||
| 83 | + | ||
| 84 | +#: reports/views.py:47 | ||
| 85 | +msgid "Report created successfully" | ||
| 86 | +msgstr "" |
reports/templates/reports/_form.html
| @@ -11,6 +11,21 @@ | @@ -11,6 +11,21 @@ | ||
| 11 | {% render_field field class='form-control' %} | 11 | {% render_field field class='form-control' %} |
| 12 | {% endif %} | 12 | {% endif %} |
| 13 | 13 | ||
| 14 | + {% if field.errors %} | ||
| 15 | + <div class="row"> | ||
| 16 | + </br> | ||
| 17 | + <div class="alert alert-danger alert-dismissible" role="alert"> | ||
| 18 | + <button type="button" class="close" data-dismiss="alert" aria-label="Close"> | ||
| 19 | + <span aria-hidden="true">×</span> | ||
| 20 | + </button> | ||
| 21 | + <ul> | ||
| 22 | + {% for error in field.errors %} | ||
| 23 | + <li>{{ error }}</li> | ||
| 24 | + {% endfor %} | ||
| 25 | + </ul> | ||
| 26 | + </div> | ||
| 27 | + </div> | ||
| 28 | + {% endif %} | ||
| 14 | {% endfor %} | 29 | {% endfor %} |
| 15 | <div class="row text-center"> | 30 | <div class="row text-center"> |
| 16 | <input type="submit" value="Search" class="btn btn-success btn-raised" /> | 31 | <input type="submit" value="Search" class="btn btn-success btn-raised" /> |
| @@ -0,0 +1,45 @@ | @@ -0,0 +1,45 @@ | ||
| 1 | +{% extends 'base.html' %} | ||
| 2 | + | ||
| 3 | +{% load static i18n pagination %} | ||
| 4 | +{% load django_bootstrap_breadcrumbs %} | ||
| 5 | +{% load widget_tweaks %} | ||
| 6 | + | ||
| 7 | +{% block breadcrumbs %} | ||
| 8 | + {{ block.super }} | ||
| 9 | + {% breadcrumb subject.category 'subjects:cat_view' subject.category.slug %} | ||
| 10 | + {% breadcrumb subject 'subjects:view' subject.slug %} | ||
| 11 | + {% breadcrumb 'analytics' '' %} | ||
| 12 | +{% endblock %} | ||
| 13 | + | ||
| 14 | +{% block content %} | ||
| 15 | + | ||
| 16 | + <div class="panel panel-info topic-panel"> | ||
| 17 | + <div class="panel-heading"> | ||
| 18 | + <div class="row"> | ||
| 19 | + <div class="col-md-12 category-header"> | ||
| 20 | + <h4 class="panel-title" style="margin-top: 10px; margin-bottom: 8px"> | ||
| 21 | + <span>{% trans "Analytics" %}</span> | ||
| 22 | + </h4> | ||
| 23 | + </div> | ||
| 24 | + </div> | ||
| 25 | + </div> | ||
| 26 | + </div> | ||
| 27 | + | ||
| 28 | + <div id="core-subjects-options-div"> | ||
| 29 | + <ul class="core-subjects-options report-menu-choice"> | ||
| 30 | + <li class="active"> | ||
| 31 | + {% trans "Interaction Data" %} | ||
| 32 | + </li> | ||
| 33 | + <li> | ||
| 34 | + {% trans "Report Card" %} | ||
| 35 | + </li> | ||
| 36 | + <li> | ||
| 37 | + {% trans "Participation" %} | ||
| 38 | + </li> | ||
| 39 | + </ul> | ||
| 40 | + </div> | ||
| 41 | + | ||
| 42 | + {% include "reports/_form.html" %} | ||
| 43 | + | ||
| 44 | + | ||
| 45 | +{% endblock content %} | ||
| 0 | \ No newline at end of file | 46 | \ No newline at end of file |
reports/templates/reports/report.html
| @@ -1,57 +0,0 @@ | @@ -1,57 +0,0 @@ | ||
| 1 | -{% extends 'base.html' %} | ||
| 2 | - | ||
| 3 | -{% load static i18n pagination %} | ||
| 4 | -{% load django_bootstrap_breadcrumbs %} | ||
| 5 | -{% load widget_tweaks %} | ||
| 6 | - | ||
| 7 | -{% block breadcrumbs %} | ||
| 8 | - {{ block.super }} | ||
| 9 | - | ||
| 10 | - {% breadcrumb 'analytics' '' %} | ||
| 11 | -{% endblock %} | ||
| 12 | - | ||
| 13 | -{% block content %} | ||
| 14 | - | ||
| 15 | - <div class="panel panel-info topic-panel"> | ||
| 16 | - <div class="panel-heading"> | ||
| 17 | - <div class="row"> | ||
| 18 | - <div class="col-md-12 category-header"> | ||
| 19 | - <h4 class="panel-title" style="margin-top: 10px; margin-bottom: 8px"> | ||
| 20 | - <span>{% trans "Analytics" %}</span> | ||
| 21 | - </h4> | ||
| 22 | - </div> | ||
| 23 | - </div> | ||
| 24 | - </div> | ||
| 25 | - </div> | ||
| 26 | - | ||
| 27 | - <div id="core-subjects-options-div"> | ||
| 28 | - <ul class="core-subjects-options report-menu-choice"> | ||
| 29 | - <li class="active"> | ||
| 30 | - {% trans "Interaction Data" %} | ||
| 31 | - </li> | ||
| 32 | - <li> | ||
| 33 | - {% trans "Report Card" %} | ||
| 34 | - </li> | ||
| 35 | - <li> | ||
| 36 | - {% trans "Participation" %} | ||
| 37 | - </li> | ||
| 38 | - </ul> | ||
| 39 | - </div> | ||
| 40 | - | ||
| 41 | - {% include "reports/_form.html" %} | ||
| 42 | - | ||
| 43 | - {% for user, datum in data.items %} | ||
| 44 | - | ||
| 45 | - | ||
| 46 | - <p> | ||
| 47 | - <ul> | ||
| 48 | - | ||
| 49 | - {{user}} : | ||
| 50 | - {% for key, value in datum.items %} | ||
| 51 | - <li>{{key}}: {{value}}</li> | ||
| 52 | - {% endfor %} | ||
| 53 | - </ul> | ||
| 54 | - | ||
| 55 | - </p> | ||
| 56 | - {% endfor %} | ||
| 57 | -{% endblock content %} | ||
| 58 | \ No newline at end of file | 0 | \ No newline at end of file |
| @@ -0,0 +1,105 @@ | @@ -0,0 +1,105 @@ | ||
| 1 | +{% extends 'base.html' %} | ||
| 2 | + | ||
| 3 | +{% load static i18n pagination %} | ||
| 4 | +{% load django_bootstrap_breadcrumbs %} | ||
| 5 | +{% load widget_tweaks %} | ||
| 6 | + | ||
| 7 | +{% block breadcrumbs %} | ||
| 8 | + {{ block.super }} | ||
| 9 | + {% breadcrumb view.subject.category 'subjects:cat_view' view.subject.category.slug %} | ||
| 10 | + {% breadcrumb view.subject 'subjects:view' view.subject.slug %} | ||
| 11 | + {% breadcrumb 'analytics' '' %} | ||
| 12 | +{% endblock %} | ||
| 13 | + | ||
| 14 | +{% block content %} | ||
| 15 | + | ||
| 16 | + {% if messages %} | ||
| 17 | + {% for message in messages %} | ||
| 18 | + <div class="alert alert-{{ message.tags }} alert-dismissible" role="alert"> | ||
| 19 | + <button type="button" class="close" data-dismiss="alert" aria-label="Close"> | ||
| 20 | + <span aria-hidden="true">×</span> | ||
| 21 | + </button> | ||
| 22 | + <p>{{ message }}</p> | ||
| 23 | + </div> | ||
| 24 | + {% endfor %} | ||
| 25 | + {% endif %} | ||
| 26 | + | ||
| 27 | + | ||
| 28 | + <div class="panel panel-info topic-panel"> | ||
| 29 | + <div class="panel-heading"> | ||
| 30 | + <div class="row"> | ||
| 31 | + <div class="col-md-12 category-header"> | ||
| 32 | + <h4 class="panel-title" style="margin-top: 10px; margin-bottom: 8px"> | ||
| 33 | + <span>{% trans "Analytics" %}</span> | ||
| 34 | + </h4> | ||
| 35 | + </div> | ||
| 36 | + </div> | ||
| 37 | + </div> | ||
| 38 | + </div> | ||
| 39 | + | ||
| 40 | + <div id="core-subjects-options-div"> | ||
| 41 | + <ul class="core-subjects-options report-menu-choice"> | ||
| 42 | + <li class="active"> | ||
| 43 | + {% trans "Interaction Data" %} | ||
| 44 | + </li> | ||
| 45 | + <li> | ||
| 46 | + {% trans "Report Card" %} | ||
| 47 | + </li> | ||
| 48 | + <li> | ||
| 49 | + {% trans "Participation" %} | ||
| 50 | + </li> | ||
| 51 | + </ul> | ||
| 52 | + </div> | ||
| 53 | + | ||
| 54 | + <div class="col-md-12"> | ||
| 55 | + <ul id="report-header"> | ||
| 56 | + <li><b>{% trans "Subject" %}:</b> {{subject_name}}</li> | ||
| 57 | + <li><b>{% trans "Topic" %}:</b> {{topic_name}}</li> | ||
| 58 | + <li><b>{% trans "Initial Date" %}:</b> {{init_date}}</li> | ||
| 59 | + <li><b>{% trans "End Date" %}:</b> {{end_date}}</li> | ||
| 60 | + <li><a href="{% url 'subjects:reports:create_interaction' %}?subject_id={{subject.id}}"><button class="btn btn-success btn-raised">{% trans "new search" %}</button></a></li> | ||
| 61 | + | ||
| 62 | + </ul> | ||
| 63 | + | ||
| 64 | + <div> | ||
| 65 | + <ul id="report-info"> | ||
| 66 | + <li> {{data.values|length}} {% trans "register(s)" %} </li> | ||
| 67 | + <li> | ||
| 68 | + <i class="fa fa-download" aria-hidden="true"></i> {% trans "Variable Descriptions" %} | ||
| 69 | + | ||
| 70 | + </li> | ||
| 71 | + <li> | ||
| 72 | + <i class="fa fa-download" aria-hidden="true"></i> {% trans "Interactions Data" %} | ||
| 73 | + </li> | ||
| 74 | + </ul> | ||
| 75 | + | ||
| 76 | + | ||
| 77 | + </div> | ||
| 78 | + <div class="table-responsive"> | ||
| 79 | + <table class="table table-striped"> | ||
| 80 | + <thead> | ||
| 81 | + <tr> | ||
| 82 | + | ||
| 83 | + {% for value in header %} | ||
| 84 | + <th>{{value}}</th> | ||
| 85 | + {% endfor %} | ||
| 86 | + </tr> | ||
| 87 | + </thead> | ||
| 88 | + <tbody> | ||
| 89 | + | ||
| 90 | + | ||
| 91 | + {% for variables in data.values %} | ||
| 92 | + <tr> | ||
| 93 | + {% for variable in variables %} | ||
| 94 | + <td>{{variable}}</td> | ||
| 95 | + {% endfor %} | ||
| 96 | + </tr> | ||
| 97 | + {% endfor %} | ||
| 98 | + </tbody> | ||
| 99 | + | ||
| 100 | + </table> | ||
| 101 | + </div> | ||
| 102 | + </div> | ||
| 103 | + | ||
| 104 | + | ||
| 105 | +{% endblock content %} | ||
| 0 | \ No newline at end of file | 106 | \ No newline at end of file |
reports/urls.py
| @@ -4,4 +4,5 @@ from . import views | @@ -4,4 +4,5 @@ from . import views | ||
| 4 | 4 | ||
| 5 | urlpatterns = [ | 5 | urlpatterns = [ |
| 6 | url(r'^create/interactions/$', views.ReportView.as_view(), name='create_interaction'), | 6 | url(r'^create/interactions/$', views.ReportView.as_view(), name='create_interaction'), |
| 7 | + url(r'^view/interactions/$', views.ViewReportView.as_view(), name='view_report'), | ||
| 7 | ] | 8 | ] |
| 8 | \ No newline at end of file | 9 | \ No newline at end of file |
reports/views.py
| @@ -3,6 +3,9 @@ from django.http import HttpResponse, JsonResponse | @@ -3,6 +3,9 @@ from django.http import HttpResponse, JsonResponse | ||
| 3 | from django.utils.translation import ugettext_lazy as _ | 3 | from django.utils.translation import ugettext_lazy as _ |
| 4 | 4 | ||
| 5 | from django import forms | 5 | from django import forms |
| 6 | +from django.core.urlresolvers import reverse_lazy | ||
| 7 | + | ||
| 8 | +from django.contrib import messages | ||
| 6 | 9 | ||
| 7 | import django.views.generic as generic | 10 | import django.views.generic as generic |
| 8 | from mural.models import SubjectPost, Comment, MuralVisualizations | 11 | from mural.models import SubjectPost, Comment, MuralVisualizations |
| @@ -15,7 +18,7 @@ from log.models import Log | @@ -15,7 +18,7 @@ from log.models import Log | ||
| 15 | 18 | ||
| 16 | 19 | ||
| 17 | class ReportView(LoginRequiredMixin, generic.FormView): | 20 | class ReportView(LoginRequiredMixin, generic.FormView): |
| 18 | - template_name = "reports/report.html" | 21 | + template_name = "reports/create.html" |
| 19 | form_class = CreateInteractionReportForm | 22 | form_class = CreateInteractionReportForm |
| 20 | 23 | ||
| 21 | def get_initial(self): | 24 | def get_initial(self): |
| @@ -27,6 +30,158 @@ class ReportView(LoginRequiredMixin, generic.FormView): | @@ -27,6 +30,158 @@ class ReportView(LoginRequiredMixin, generic.FormView): | ||
| 27 | params = self.request.GET | 30 | params = self.request.GET |
| 28 | subject = Subject.objects.get(id=params['subject_id']) | 31 | subject = Subject.objects.get(id=params['subject_id']) |
| 29 | topics = subject.topic_subject.all() | 32 | topics = subject.topic_subject.all() |
| 33 | + initial['subject'] = subject | ||
| 30 | initial['topic'] = topics | 34 | initial['topic'] = topics |
| 31 | initial['end_date'] = date.today() | 35 | initial['end_date'] = date.today() |
| 32 | return initial | 36 | return initial |
| 37 | + | ||
| 38 | + def get_context_data(self, **kwargs): | ||
| 39 | + context = super(ReportView, self).get_context_data(**kwargs) | ||
| 40 | + subject = Subject.objects.get(id=self.request.GET['subject_id']) | ||
| 41 | + | ||
| 42 | + context['subject'] = subject | ||
| 43 | + | ||
| 44 | + return context | ||
| 45 | + | ||
| 46 | + def get_success_url(self): | ||
| 47 | + | ||
| 48 | + messages.success(self.request, _("Report created successfully")) | ||
| 49 | + | ||
| 50 | + get_params = "?" | ||
| 51 | + #passing form data through GET | ||
| 52 | + for key, value in self.form_data.items(): | ||
| 53 | + get_params += key + "=" + str(value) + "&" | ||
| 54 | + | ||
| 55 | + | ||
| 56 | + #retrieving subject id for data purposes | ||
| 57 | + for key, value in self.request.GET.items(): | ||
| 58 | + get_params += key + "=" + str(value) | ||
| 59 | + | ||
| 60 | + return reverse_lazy('subjects:reports:view_report', kwargs={}) + get_params | ||
| 61 | + | ||
| 62 | + def post(self, request, *args, **kwargs): | ||
| 63 | + """ | ||
| 64 | + Handles POST requests, instantiating a form instance with the passed | ||
| 65 | + POST variables and then checked for validity. | ||
| 66 | + """ | ||
| 67 | + form = self.get_form() | ||
| 68 | + if form.is_valid(): | ||
| 69 | + | ||
| 70 | + self.form_data = form.cleaned_data | ||
| 71 | + return self.form_valid(form) | ||
| 72 | + else: | ||
| 73 | + return self.form_invalid(form) | ||
| 74 | + | ||
| 75 | + | ||
| 76 | +class ViewReportView(LoginRequiredMixin, generic.TemplateView): | ||
| 77 | + template_name = "reports/view.html" | ||
| 78 | + | ||
| 79 | + | ||
| 80 | + def get_context_data(self, **kwargs): | ||
| 81 | + context = {} | ||
| 82 | + params_data = self.request.GET | ||
| 83 | + subject = Subject.objects.get(id=params_data['subject_id']) | ||
| 84 | + context['subject_name'] = subject.name | ||
| 85 | + context['topic_name'] = params_data['topic'] | ||
| 86 | + context['init_date'] = params_data['init_date'] | ||
| 87 | + context['end_date'] = params_data['end_date'] | ||
| 88 | + context['subject'] = subject | ||
| 89 | + if params_data['from_mural']: | ||
| 90 | + context['data'], context['header'] = self.get_mural_data(subject, params_data['init_date'], params_data['end_date']) | ||
| 91 | + return context | ||
| 92 | + | ||
| 93 | + def get_mural_data(self, subject, init_date, end_date): | ||
| 94 | + data = {} | ||
| 95 | + students = subject.students.all() | ||
| 96 | + formats = ["%d/%m/%Y", "%m/%d/%Y"] #so it accepts english and portuguese date formats | ||
| 97 | + for fmt in formats: | ||
| 98 | + try: | ||
| 99 | + init_date = datetime.strptime(init_date, fmt) | ||
| 100 | + end_date = datetime.strptime(end_date, fmt) | ||
| 101 | + except ValueError: | ||
| 102 | + pass | ||
| 103 | + | ||
| 104 | + header = ['User'] | ||
| 105 | + | ||
| 106 | + for student in students: | ||
| 107 | + data[student] = [] | ||
| 108 | + | ||
| 109 | + data[student].append(student.social_name) | ||
| 110 | + | ||
| 111 | + interactions = {} | ||
| 112 | + #interactions['username'] = student.social_name | ||
| 113 | + | ||
| 114 | + help_posts_made_by_user = SubjectPost.objects.filter(action="help",space__id=subject.id, user=student, | ||
| 115 | + create_date__range=(init_date, end_date)) | ||
| 116 | + | ||
| 117 | + #number of help posts created by the student | ||
| 118 | + interactions['v01'] = help_posts_made_by_user.count() | ||
| 119 | + | ||
| 120 | + help_posts = SubjectPost.objects.filter(action="help", create_date__range=(init_date, end_date), | ||
| 121 | + space__id=subject.id) | ||
| 122 | + | ||
| 123 | + #comments count on help posts created by the student | ||
| 124 | + interactions['v02'] = Comment.objects.filter(post__in = help_posts.filter(user=student), | ||
| 125 | + create_date__range=(init_date, end_date)).count() | ||
| 126 | + | ||
| 127 | + | ||
| 128 | + #count the amount of comments made by the student on posts made by one of the professors | ||
| 129 | + interactions['v03'] = Comment.objects.filter(post__in = help_posts.filter(user__in= subject.professor.all()), create_date__range=(init_date, end_date), | ||
| 130 | + user=student).count() | ||
| 131 | + | ||
| 132 | + #comments made by the user on other users posts | ||
| 133 | + interactions['v04'] = Comment.objects.filter(post__in = help_posts.exclude(user=student), | ||
| 134 | + create_date__range=(init_date, end_date), | ||
| 135 | + user= student).count() | ||
| 136 | + | ||
| 137 | + | ||
| 138 | + | ||
| 139 | + comments_by_teacher = Comment.objects.filter(user__in=subject.professor.all()) | ||
| 140 | + help_posts_ids = [] | ||
| 141 | + for comment in comments_by_teacher: | ||
| 142 | + help_posts_ids.append(comment.post.id) | ||
| 143 | + #number of help posts created by the user that the teacher commented on | ||
| 144 | + interactions['v05'] = help_posts.filter(user=student, id__in = help_posts_ids).count() | ||
| 145 | + | ||
| 146 | + | ||
| 147 | + comments_by_others = Comment.objects.filter(user__in=subject.students.exclude(id = student.id)) | ||
| 148 | + help_posts_ids = [] | ||
| 149 | + for comment in comments_by_teacher: | ||
| 150 | + help_posts_ids.append(comment.post.id) | ||
| 151 | + #number of help posts created by the user others students commented on | ||
| 152 | + interactions['v06'] = help_posts.filter(user=student, id__in = help_posts_ids).count() | ||
| 153 | + | ||
| 154 | + #Number of student visualizations on the mural of the subject | ||
| 155 | + interactions['v07'] = MuralVisualizations.objects.filter(post__in = SubjectPost.objects.filter(space__id=subject.id), | ||
| 156 | + user = student).count() | ||
| 157 | + | ||
| 158 | + | ||
| 159 | + #VAR20 - number of access to mural between 6 a.m to 12a.m. | ||
| 160 | + interactions['v20'] = Log.objects.filter(action="access", resource="subject", | ||
| 161 | + user_id= student.id, context__contains = {'subject_id' : subject.id}, datetime__hour__range = (5, 11)).count() | ||
| 162 | + | ||
| 163 | + #VAR21 - number of access to mural between 6 a.m to 12a.m. | ||
| 164 | + interactions['v21'] = Log.objects.filter(action="access", resource="subject", | ||
| 165 | + user_id= student.id, context__contains = {'subject_id' : subject.id}, datetime__hour__range = (11, 17)).count() | ||
| 166 | + #VAR22 | ||
| 167 | + interactions['v22'] = Log.objects.filter(action="access", resource="subject", | ||
| 168 | + user_id= student.id, context__contains = {'subject_id' : subject.id}, datetime__hour__range = (17, 23)).count() | ||
| 169 | + | ||
| 170 | + #VAR23 | ||
| 171 | + interactions['v23'] = Log.objects.filter(action="access", resource="subject", | ||
| 172 | + user_id= student.id, context__contains = {'subject_id' : subject.id}, datetime__hour__range = (23, 5)).count() | ||
| 173 | + | ||
| 174 | + #VAR24 through 30 | ||
| 175 | + day_numbers = [0, 1, 2, 3, 4, 5, 6] | ||
| 176 | + day_names = ["sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday"] | ||
| 177 | + for day_num in day_numbers: | ||
| 178 | + interactions['v'+ str(24+day_num)] = Log.objects.filter(action="access", resource="subject", | ||
| 179 | + user_id= student.id, context__contains = {'subject_id' : subject.id}, datetime__week_day = day_num).count() | ||
| 180 | + | ||
| 181 | + for value in interactions.values(): | ||
| 182 | + data[student].append(value) | ||
| 183 | + if len(header) <= 1: | ||
| 184 | + for key in interactions.keys(): | ||
| 185 | + header.append(key) | ||
| 186 | + return data, header | ||
| 187 | + |
security/locale/pt_BR/LC_MESSAGES/django.po
| @@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
| 8 | msgstr "" | 8 | msgstr "" |
| 9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
| 10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
| 11 | -"POT-Creation-Date: 2017-02-20 22:07-0300\n" | 11 | +"POT-Creation-Date: 2017-03-09 17:01-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/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-02-20 22:07-0300\n" | 11 | +"POT-Creation-Date: 2017-03-09 17:01-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" |
subjects/locale/pt_BR/LC_MESSAGES/django.po
| @@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
| 8 | msgstr "" | 8 | msgstr "" |
| 9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
| 10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
| 11 | -"POT-Creation-Date: 2017-02-20 22:07-0300\n" | 11 | +"POT-Creation-Date: 2017-03-09 17:01-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,17 +18,36 @@ msgstr "" | @@ -18,17 +18,36 @@ msgstr "" | ||
| 18 | "Content-Transfer-Encoding: 8bit\n" | 18 | "Content-Transfer-Encoding: 8bit\n" |
| 19 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" | 19 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" |
| 20 | 20 | ||
| 21 | -#: subjects/forms.py:14 subjects/forms.py:129 | 21 | +#: subjects/forms.py:14 subjects/forms.py:117 |
| 22 | msgid "Tags" | 22 | msgid "Tags" |
| 23 | msgstr "Tags" | 23 | msgstr "Tags" |
| 24 | 24 | ||
| 25 | -#: subjects/forms.py:82 subjects/forms.py:187 | 25 | +#: subjects/forms.py:67 subjects/forms.py:170 |
| 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:91 subjects/forms.py:100 subjects/forms.py:108 | ||
| 30 | -#: subjects/forms.py:116 | ||
| 31 | -msgid "this date must be today or after" | 29 | +#: subjects/forms.py:76 subjects/forms.py:180 |
| 30 | +#, fuzzy | ||
| 31 | +#| msgid "this date must be today or after" | ||
| 32 | +msgid "This date must be today or after" | ||
| 33 | +msgstr "Essa data deve ser hoje ou depois disso" | ||
| 34 | + | ||
| 35 | +#: subjects/forms.py:86 subjects/forms.py:190 | ||
| 36 | +#, fuzzy | ||
| 37 | +#| msgid "this date must be today or after" | ||
| 38 | +msgid "This date must be equal subscribe begin or after" | ||
| 39 | +msgstr "Essa data deve ser hoje ou depois disso" | ||
| 40 | + | ||
| 41 | +#: subjects/forms.py:96 subjects/forms.py:200 | ||
| 42 | +#, fuzzy | ||
| 43 | +#| msgid "this date must be today or after" | ||
| 44 | +msgid "This date must be after subscribe end" | ||
| 45 | +msgstr "Essa data deve ser hoje ou depois disso" | ||
| 46 | + | ||
| 47 | +#: subjects/forms.py:105 subjects/forms.py:209 | ||
| 48 | +#, fuzzy | ||
| 49 | +#| msgid "this date must be today or after" | ||
| 50 | +msgid "This date must be equal init date or after" | ||
| 32 | msgstr "Essa data deve ser hoje ou depois disso" | 51 | msgstr "Essa data deve ser hoje ou depois disso" |
| 33 | 52 | ||
| 34 | #: subjects/models.py:14 subjects/models.py:20 | 53 | #: subjects/models.py:14 subjects/models.py:20 |
| @@ -111,15 +130,16 @@ msgstr "Fechar" | @@ -111,15 +130,16 @@ msgstr "Fechar" | ||
| 111 | msgid "DELETE" | 130 | msgid "DELETE" |
| 112 | msgstr "Deletar" | 131 | msgstr "Deletar" |
| 113 | 132 | ||
| 114 | -#: subjects/templates/subjects/initial.html:30 | 133 | +#: subjects/templates/subjects/initial.html:33 |
| 134 | +#: subjects/templates/subjects/initial.html:67 | ||
| 115 | msgid "Most popular keywords" | 135 | msgid "Most popular keywords" |
| 116 | msgstr "Palavras-chave mais populares" | 136 | msgstr "Palavras-chave mais populares" |
| 117 | 137 | ||
| 118 | -#: subjects/templates/subjects/initial.html:66 subjects/views.py:183 | 138 | +#: subjects/templates/subjects/initial.html:93 subjects/views.py:185 |
| 119 | msgid "My Subjects" | 139 | msgid "My Subjects" |
| 120 | msgstr "Meus assuntos" | 140 | msgstr "Meus assuntos" |
| 121 | 141 | ||
| 122 | -#: subjects/templates/subjects/initial.html:79 | 142 | +#: subjects/templates/subjects/initial.html:106 |
| 123 | #: subjects/templates/subjects/list.html:180 | 143 | #: subjects/templates/subjects/list.html:180 |
| 124 | msgid "You still do not posses any subject in our platform" | 144 | msgid "You still do not posses any subject in our platform" |
| 125 | msgstr "Você ainda não possui assuntos em nossa plataforma" | 145 | msgstr "Você ainda não possui assuntos em nossa plataforma" |
| @@ -186,12 +206,12 @@ msgid " Any subjects or Resources were not found on the search for " | @@ -186,12 +206,12 @@ msgid " Any subjects or Resources were not found on the search for " | ||
| 186 | msgstr " Nenhum assunto ou recursos foram encontrados na busca por " | 206 | msgstr " Nenhum assunto ou recursos foram encontrados na busca por " |
| 187 | 207 | ||
| 188 | #: subjects/templates/subjects/list_search.html:48 | 208 | #: subjects/templates/subjects/list_search.html:48 |
| 189 | -#: subjects/templates/subjects/list_search.html:51 subjects/views.py:613 | 209 | +#: subjects/templates/subjects/list_search.html:51 subjects/views.py:619 |
| 190 | msgid "Subjects" | 210 | msgid "Subjects" |
| 191 | msgstr "Assuntos" | 211 | msgstr "Assuntos" |
| 192 | 212 | ||
| 193 | #: subjects/templates/subjects/list_search.html:49 | 213 | #: subjects/templates/subjects/list_search.html:49 |
| 194 | -#: subjects/templates/subjects/list_search.html:52 subjects/views.py:620 | 214 | +#: subjects/templates/subjects/list_search.html:52 subjects/views.py:626 |
| 195 | msgid "Resources" | 215 | msgid "Resources" |
| 196 | msgstr "Recursos" | 216 | msgstr "Recursos" |
| 197 | 217 | ||
| @@ -268,52 +288,52 @@ msgstr "Editar: " | @@ -268,52 +288,52 @@ msgstr "Editar: " | ||
| 268 | msgid "Create new topic" | 288 | msgid "Create new topic" |
| 269 | msgstr "Criar novo tópico" | 289 | msgstr "Criar novo tópico" |
| 270 | 290 | ||
| 271 | -#: subjects/views.py:57 | 291 | +#: subjects/views.py:59 |
| 272 | msgid "Home" | 292 | msgid "Home" |
| 273 | msgstr "Início" | 293 | msgstr "Início" |
| 274 | 294 | ||
| 275 | -#: subjects/views.py:155 | 295 | +#: subjects/views.py:157 |
| 276 | msgid "Page is not 'last', nor can it be converted to an int." | 296 | msgid "Page is not 'last', nor can it be converted to an int." |
| 277 | msgstr "" | 297 | msgstr "" |
| 278 | "Página não é a 'última', e também não pode ser convertido para um inteiro" | 298 | "Página não é a 'última', e também não pode ser convertido para um inteiro" |
| 279 | 299 | ||
| 280 | -#: subjects/views.py:161 | 300 | +#: subjects/views.py:163 |
| 281 | #, python-format | 301 | #, python-format |
| 282 | msgid "Invalid page (%(page_number)s): %(message)s" | 302 | msgid "Invalid page (%(page_number)s): %(message)s" |
| 283 | msgstr "Página inválida (%(page_number)s): %(message)s" | 303 | msgstr "Página inválida (%(page_number)s): %(message)s" |
| 284 | 304 | ||
| 285 | -#: subjects/views.py:190 | 305 | +#: subjects/views.py:192 |
| 286 | msgid "All Subjects" | 306 | msgid "All Subjects" |
| 287 | msgstr "Todos os assuntos" | 307 | msgstr "Todos os assuntos" |
| 288 | 308 | ||
| 289 | -#: subjects/views.py:284 | 309 | +#: subjects/views.py:286 |
| 290 | msgid "Create Subject" | 310 | msgid "Create Subject" |
| 291 | msgstr "Criar Assunto" | 311 | msgstr "Criar Assunto" |
| 292 | 312 | ||
| 293 | -#: subjects/views.py:290 | 313 | +#: subjects/views.py:292 |
| 294 | msgid "Replicate Subject" | 314 | msgid "Replicate Subject" |
| 295 | msgstr "Replicar Assunto" | 315 | msgstr "Replicar Assunto" |
| 296 | 316 | ||
| 297 | -#: subjects/views.py:332 | 317 | +#: subjects/views.py:334 |
| 298 | #, python-format | 318 | #, python-format |
| 299 | msgid "The Subject \"%s\" was registered on \"%s\" Category successfully!" | 319 | msgid "The Subject \"%s\" was registered on \"%s\" Category successfully!" |
| 300 | msgstr "Assunto \"%s\" foi registrado na categoria \"%s\" com sucesso!" | 320 | msgstr "Assunto \"%s\" foi registrado na categoria \"%s\" com sucesso!" |
| 301 | 321 | ||
| 302 | -#: subjects/views.py:358 | 322 | +#: subjects/views.py:360 |
| 303 | msgid "Update Subject" | 323 | msgid "Update Subject" |
| 304 | msgstr "Atualizar Assunto" | 324 | msgstr "Atualizar Assunto" |
| 305 | 325 | ||
| 306 | -#: subjects/views.py:378 | 326 | +#: subjects/views.py:384 |
| 307 | #, python-format | 327 | #, python-format |
| 308 | msgid "The Subject \"%s\" was updated on \"%s\" Category successfully!" | 328 | msgid "The Subject \"%s\" was updated on \"%s\" Category successfully!" |
| 309 | msgstr "Assunto \"%s\" foi atualizado na categoria \"%s\" com sucesso!" | 329 | msgstr "Assunto \"%s\" foi atualizado na categoria \"%s\" com sucesso!" |
| 310 | 330 | ||
| 311 | -#: subjects/views.py:419 subjects/views.py:463 | 331 | +#: subjects/views.py:425 subjects/views.py:469 |
| 312 | #, python-format | 332 | #, python-format |
| 313 | msgid "Subject \"%s\" removed successfully!" | 333 | msgid "Subject \"%s\" removed successfully!" |
| 314 | msgstr "Assunto \"%s\" removido com sucesso!" | 334 | msgstr "Assunto \"%s\" removido com sucesso!" |
| 315 | 335 | ||
| 316 | -#: subjects/views.py:427 subjects/views.py:431 | 336 | +#: subjects/views.py:433 subjects/views.py:437 |
| 317 | msgid "" | 337 | msgid "" |
| 318 | "Subject can't be removed. The subject still possess students and learning " | 338 | "Subject can't be removed. The subject still possess students and learning " |
| 319 | "objects associated" | 339 | "objects associated" |
| @@ -321,11 +341,11 @@ msgstr "" | @@ -321,11 +341,11 @@ msgstr "" | ||
| 321 | "Assunto não pode ser removido. Ele ainda possui alunos e objetos de " | 341 | "Assunto não pode ser removido. Ele ainda possui alunos e objetos de " |
| 322 | "aprendizado associados" | 342 | "aprendizado associados" |
| 323 | 343 | ||
| 324 | -#: subjects/views.py:539 | 344 | +#: subjects/views.py:545 |
| 325 | msgid "Subscription date is due!" | 345 | msgid "Subscription date is due!" |
| 326 | msgstr "O período de inscrição está encerrado!" | 346 | msgstr "O período de inscrição está encerrado!" |
| 327 | 347 | ||
| 328 | -#: subjects/views.py:552 | 348 | +#: subjects/views.py:558 |
| 329 | msgid "Subscription was successfull!" | 349 | msgid "Subscription was successfull!" |
| 330 | msgstr "Inscrição feita com sucesso!" | 350 | msgstr "Inscrição feita com sucesso!" |
| 331 | 351 |
themes/locale/pt_BR/LC_MESSAGES/django.po
| @@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
| 8 | msgstr "" | 8 | msgstr "" |
| 9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
| 10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
| 11 | -"POT-Creation-Date: 2017-02-20 22:07-0300\n" | 11 | +"POT-Creation-Date: 2017-03-09 17:01-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" |
topics/locale/pt_BR/LC_MESSAGES/django.po
| @@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
| 8 | msgstr "" | 8 | msgstr "" |
| 9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
| 10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
| 11 | -"POT-Creation-Date: 2017-02-20 22:07-0300\n" | 11 | +"POT-Creation-Date: 2017-03-09 17:01-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" |
| @@ -116,7 +116,11 @@ msgstr "Deletar" | @@ -116,7 +116,11 @@ msgstr "Deletar" | ||
| 116 | msgid "Edit" | 116 | msgid "Edit" |
| 117 | msgstr "Editar" | 117 | msgstr "Editar" |
| 118 | 118 | ||
| 119 | -#: topics/templates/resources/list.html:32 topics/templates/topics/list.html:29 | 119 | +#: topics/templates/resources/list.html:33 |
| 120 | +msgid "Reports" | ||
| 121 | +msgstr "Relatórios" | ||
| 122 | + | ||
| 123 | +#: topics/templates/resources/list.html:35 topics/templates/topics/list.html:29 | ||
| 120 | msgid "Remove" | 124 | msgid "Remove" |
| 121 | msgstr "Remover" | 125 | msgstr "Remover" |
| 122 | 126 | ||
| @@ -128,7 +132,7 @@ msgstr "Apenas um tópico por asssunto pode ser um repositório" | @@ -128,7 +132,7 @@ msgstr "Apenas um tópico por asssunto pode ser um repositório" | ||
| 128 | msgid "Save" | 132 | msgid "Save" |
| 129 | msgstr "Salvar" | 133 | msgstr "Salvar" |
| 130 | 134 | ||
| 131 | -#: topics/templates/topics/create.html:8 topics/views.py:81 | 135 | +#: topics/templates/topics/create.html:8 topics/views.py:85 |
| 132 | msgid "Create Topic" | 136 | msgid "Create Topic" |
| 133 | msgstr "Criar Tópico" | 137 | msgstr "Criar Tópico" |
| 134 | 138 | ||
| @@ -169,32 +173,34 @@ msgid "Webpage" | @@ -169,32 +173,34 @@ msgid "Webpage" | ||
| 169 | msgstr "Página Web" | 173 | msgstr "Página Web" |
| 170 | 174 | ||
| 171 | #: topics/templates/topics/list.html:61 | 175 | #: topics/templates/topics/list.html:61 |
| 176 | +msgid "Topic Goals" | ||
| 177 | +msgstr "Metas do Tópico" | ||
| 178 | + | ||
| 179 | +#: topics/templates/topics/list.html:62 | ||
| 172 | msgid "Questionary" | 180 | msgid "Questionary" |
| 173 | msgstr "Questionário" | 181 | msgstr "Questionário" |
| 174 | 182 | ||
| 175 | -#: topics/templates/topics/update.html:8 topics/views.py:130 | 183 | +#: topics/templates/topics/update.html:8 topics/views.py:134 |
| 176 | msgid "Update Topic" | 184 | msgid "Update Topic" |
| 177 | msgstr "Atualizar Tópico" | 185 | msgstr "Atualizar Tópico" |
| 178 | 186 | ||
| 179 | -#: topics/views.py:91 | 187 | +#: topics/views.py:95 |
| 180 | #, python-format | 188 | #, python-format |
| 181 | msgid "Topic \"%s\" was created on virtual enviroment \"%s\" successfully!" | 189 | msgid "Topic \"%s\" was created on virtual enviroment \"%s\" successfully!" |
| 182 | msgstr "Tópico \"%s\" foi criado no ambiente virtual \"%s\" com sucesso!" | 190 | msgstr "Tópico \"%s\" foi criado no ambiente virtual \"%s\" com sucesso!" |
| 183 | 191 | ||
| 184 | -#: topics/views.py:140 | 192 | +#: topics/views.py:151 |
| 185 | #, python-format | 193 | #, python-format |
| 186 | msgid "Topic \"%s\" was updated on virtual enviroment \"%s\" successfully!" | 194 | msgid "Topic \"%s\" was updated on virtual enviroment \"%s\" successfully!" |
| 187 | msgstr "Tópico \"%s\" foi atualizado no ambiente virtual \"%s\" com sucesso!" | 195 | msgstr "Tópico \"%s\" foi atualizado no ambiente virtual \"%s\" com sucesso!" |
| 188 | 196 | ||
| 189 | -#: topics/views.py:182 | ||
| 190 | -#, fuzzy | ||
| 191 | -#| msgid "Could not remove this topic. It has on or more resources attached." | 197 | +#: topics/views.py:193 |
| 192 | msgid "Could not remove this topic. It has one or more resources attached." | 198 | msgid "Could not remove this topic. It has one or more resources attached." |
| 193 | msgstr "" | 199 | msgstr "" |
| 194 | "Não é possível remover esse tópico. Ele possui um ou mais recursos " | 200 | "Não é possível remover esse tópico. Ele possui um ou mais recursos " |
| 195 | "vinculados." | 201 | "vinculados." |
| 196 | 202 | ||
| 197 | -#: topics/views.py:191 | 203 | +#: topics/views.py:202 |
| 198 | #, python-format | 204 | #, python-format |
| 199 | msgid "Topic \"%s\" was removed from virtual enviroment \"%s\" successfully!" | 205 | msgid "Topic \"%s\" was removed from virtual enviroment \"%s\" successfully!" |
| 200 | msgstr "Tópico \"%s\" foi removido do ambiente virtual \"%s\" com sucesso!" | 206 | msgstr "Tópico \"%s\" foi removido do ambiente virtual \"%s\" com sucesso!" |
topics/templates/topics/list.html
| @@ -57,8 +57,8 @@ | @@ -57,8 +57,8 @@ | ||
| 57 | <li><a href="#"><i class="fa fa-comments-o"></i> {% trans 'Forum' %}</a></li> | 57 | <li><a href="#"><i class="fa fa-comments-o"></i> {% trans 'Forum' %}</a></li> |
| 58 | <li><a href="{% url 'file_links:create' topic.slug %}"><i class="fa fa-file-archive-o"></i> {% trans 'File Link' %}</a></li> | 58 | <li><a href="{% url 'file_links:create' topic.slug %}"><i class="fa fa-file-archive-o"></i> {% trans 'File Link' %}</a></li> |
| 59 | <li><a href="{% url 'links:create' topic.slug %}" > <i class="fa fa-globe"></i> {% trans "Link to Website" %}</a> | 59 | <li><a href="{% url 'links:create' topic.slug %}" > <i class="fa fa-globe"></i> {% trans "Link to Website" %}</a> |
| 60 | - <li><a href="{% url 'webpages:create' topic.slug %}"><i class="fa fa-file-code-o"></i> {% trans 'Webpage' %}</a></li> | ||
| 61 | <li><a href="{% url 'goals:create' topic.slug %}"><i class="fa fa-line-chart"></i> {% trans 'Topic Goals' %}</a></li> | 60 | <li><a href="{% url 'goals:create' topic.slug %}"><i class="fa fa-line-chart"></i> {% trans 'Topic Goals' %}</a></li> |
| 61 | + <li><a href="{% url 'webpages:create' topic.slug %}"><i class="fa fa-file-code-o"></i> {% trans 'Webpage' %}</a></li> | ||
| 62 | <li><a href="#"><i class="fa fa-question-circle-o"></i> {% trans 'Questionary' %}</a></li> | 62 | <li><a href="#"><i class="fa fa-question-circle-o"></i> {% trans 'Questionary' %}</a></li> |
| 63 | 63 | ||
| 64 | </ul> | 64 | </ul> |
users/locale/pt_BR/LC_MESSAGES/django.po
| @@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
| 8 | msgstr "" | 8 | msgstr "" |
| 9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
| 10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
| 11 | -"POT-Creation-Date: 2017-02-20 22:07-0300\n" | 11 | +"POT-Creation-Date: 2017-03-09 17:01-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,57 +18,57 @@ msgstr "" | @@ -18,57 +18,57 @@ msgstr "" | ||
| 18 | "Content-Transfer-Encoding: 8bit\n" | 18 | "Content-Transfer-Encoding: 8bit\n" |
| 19 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" | 19 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" |
| 20 | 20 | ||
| 21 | -#: users/forms.py:21 | 21 | +#: users/forms.py:25 users/forms.py:30 users/forms.py:189 |
| 22 | msgid "You must insert an email address" | 22 | msgid "You must insert an email address" |
| 23 | msgstr "Você deve inserir um endereço de email" | 23 | msgstr "Você deve inserir um endereço de email" |
| 24 | 24 | ||
| 25 | -#: users/forms.py:31 | 25 | +#: users/forms.py:40 |
| 26 | msgid "The image is too large. It should have less than 2MB." | 26 | msgid "The image is too large. It should have less than 2MB." |
| 27 | msgstr "A imagem é muito grande. Ela deve conter menos de 2MB." | 27 | msgstr "A imagem é muito grande. Ela deve conter menos de 2MB." |
| 28 | 28 | ||
| 29 | -#: users/forms.py:42 | 29 | +#: users/forms.py:51 |
| 30 | msgid "The confirmation password is incorrect." | 30 | msgid "The confirmation password is incorrect." |
| 31 | msgstr "A confirmação de senha está incorreta." | 31 | msgstr "A confirmação de senha está incorreta." |
| 32 | 32 | ||
| 33 | -#: users/forms.py:49 users/forms.py:102 users/templates/users/login.html:52 | 33 | +#: users/forms.py:58 users/forms.py:114 users/templates/users/login.html:52 |
| 34 | msgid "Password" | 34 | msgid "Password" |
| 35 | msgstr "Senha" | 35 | msgstr "Senha" |
| 36 | 36 | ||
| 37 | -#: users/forms.py:50 users/forms.py:103 users/forms.py:132 users/forms.py:183 | 37 | +#: users/forms.py:59 users/forms.py:115 users/forms.py:146 users/forms.py:202 |
| 38 | msgid "Confirm Password" | 38 | msgid "Confirm Password" |
| 39 | msgstr "Confirmação de Senha" | 39 | msgstr "Confirmação de Senha" |
| 40 | 40 | ||
| 41 | -#: users/forms.py:67 users/forms.py:166 users/templates/users/list.html:56 | 41 | +#: users/forms.py:76 users/forms.py:180 users/templates/users/list.html:56 |
| 42 | #: users/templates/users/login.html:47 users/templates/users/search.html:47 | 42 | #: users/templates/users/login.html:47 users/templates/users/search.html:47 |
| 43 | msgid "Email" | 43 | msgid "Email" |
| 44 | msgstr "Email" | 44 | msgstr "Email" |
| 45 | 45 | ||
| 46 | -#: users/forms.py:68 users/models.py:27 users/templates/users/list.html:55 | 46 | +#: users/forms.py:77 users/models.py:27 users/templates/users/list.html:55 |
| 47 | #: users/templates/users/search.html:46 | 47 | #: users/templates/users/search.html:46 |
| 48 | msgid "Name" | 48 | msgid "Name" |
| 49 | msgstr "Nome" | 49 | msgstr "Nome" |
| 50 | 50 | ||
| 51 | -#: users/forms.py:69 users/models.py:28 | 51 | +#: users/forms.py:78 users/models.py:28 |
| 52 | msgid "Last Name" | 52 | msgid "Last Name" |
| 53 | msgstr "Sobrenome" | 53 | msgstr "Sobrenome" |
| 54 | 54 | ||
| 55 | -#: users/forms.py:70 users/models.py:29 | 55 | +#: users/forms.py:79 users/models.py:29 |
| 56 | msgid "Social Name" | 56 | msgid "Social Name" |
| 57 | msgstr "Nome Social" | 57 | msgstr "Nome Social" |
| 58 | 58 | ||
| 59 | -#: users/forms.py:131 users/forms.py:182 | 59 | +#: users/forms.py:145 users/forms.py:201 |
| 60 | msgid "New Password" | 60 | msgid "New Password" |
| 61 | msgstr "Nova Senha" | 61 | msgstr "Nova Senha" |
| 62 | 62 | ||
| 63 | -#: users/forms.py:138 | 63 | +#: users/forms.py:152 |
| 64 | msgid "The value inputed does not match with your actual password." | 64 | msgid "The value inputed does not match with your actual password." |
| 65 | msgstr "O valor inserido não corresponde à sua senha atual." | 65 | msgstr "O valor inserido não corresponde à sua senha atual." |
| 66 | 66 | ||
| 67 | -#: users/forms.py:159 | 67 | +#: users/forms.py:173 |
| 68 | msgid "Actual Password" | 68 | msgid "Actual Password" |
| 69 | msgstr "Senha Atual" | 69 | msgstr "Senha Atual" |
| 70 | 70 | ||
| 71 | -#: users/forms.py:175 | 71 | +#: users/forms.py:194 |
| 72 | msgid "You must insert a valid email address" | 72 | msgid "You must insert a valid email address" |
| 73 | msgstr "Você deve inserir um endereço de email válido" | 73 | msgstr "Você deve inserir um endereço de email válido" |
| 74 | 74 | ||
| @@ -188,7 +188,7 @@ msgstr "Remover Conta" | @@ -188,7 +188,7 @@ msgstr "Remover Conta" | ||
| 188 | msgid "Are you sure you want delete your account?" | 188 | msgid "Are you sure you want delete your account?" |
| 189 | msgstr "Tem certeza que deseja deletar sua conta?" | 189 | msgstr "Tem certeza que deseja deletar sua conta?" |
| 190 | 190 | ||
| 191 | -#: users/templates/users/forgot_password.html:39 users/views.py:379 | 191 | +#: users/templates/users/forgot_password.html:39 users/views.py:380 |
| 192 | msgid "Forgot Password" | 192 | msgid "Forgot Password" |
| 193 | msgstr "Esqueceu Senha" | 193 | msgstr "Esqueceu Senha" |
| 194 | 194 | ||
| @@ -243,7 +243,7 @@ msgstr "Entre com a sua conta para continuar" | @@ -243,7 +243,7 @@ msgstr "Entre com a sua conta para continuar" | ||
| 243 | msgid "Log in" | 243 | msgid "Log in" |
| 244 | msgstr "Entrar" | 244 | msgstr "Entrar" |
| 245 | 245 | ||
| 246 | -#: users/templates/users/login.html:66 users/views.py:353 | 246 | +#: users/templates/users/login.html:66 users/views.py:354 |
| 247 | msgid "Sign Up" | 247 | msgid "Sign Up" |
| 248 | msgstr "Cadastrar" | 248 | msgstr "Cadastrar" |
| 249 | 249 | ||
| @@ -295,37 +295,37 @@ msgstr "Não é professor" | @@ -295,37 +295,37 @@ msgstr "Não é professor" | ||
| 295 | msgid "Is not a student" | 295 | msgid "Is not a student" |
| 296 | msgstr "Não é estudante" | 296 | msgstr "Não é estudante" |
| 297 | 297 | ||
| 298 | -#: users/views.py:54 | 298 | +#: users/views.py:55 |
| 299 | msgid "Manage Users" | 299 | msgid "Manage Users" |
| 300 | msgstr "Gerenciar Usuários" | 300 | msgstr "Gerenciar Usuários" |
| 301 | 301 | ||
| 302 | -#: users/views.py:84 | 302 | +#: users/views.py:85 |
| 303 | msgid "Search Users" | 303 | msgid "Search Users" |
| 304 | msgstr "Pesquisar Usuário" | 304 | msgstr "Pesquisar Usuário" |
| 305 | 305 | ||
| 306 | -#: users/views.py:107 | 306 | +#: users/views.py:108 |
| 307 | #, python-format | 307 | #, python-format |
| 308 | msgid "User %s created successfully" | 308 | msgid "User %s created successfully" |
| 309 | msgstr "Usuário %s criado com sucesso" | 309 | msgstr "Usuário %s criado com sucesso" |
| 310 | 310 | ||
| 311 | -#: users/views.py:121 | 311 | +#: users/views.py:122 |
| 312 | msgid "Add User" | 312 | msgid "Add User" |
| 313 | msgstr "Cadastrar Usuário" | 313 | msgstr "Cadastrar Usuário" |
| 314 | 314 | ||
| 315 | -#: users/views.py:155 | 315 | +#: users/views.py:156 |
| 316 | #, python-format | 316 | #, python-format |
| 317 | msgid "User %s updated successfully" | 317 | msgid "User %s updated successfully" |
| 318 | msgstr "Usuário %s atualizado com sucesso" | 318 | msgstr "Usuário %s atualizado com sucesso" |
| 319 | 319 | ||
| 320 | -#: users/views.py:169 | 320 | +#: users/views.py:170 |
| 321 | msgid "Update User" | 321 | msgid "Update User" |
| 322 | msgstr "Atualizar Usuário" | 322 | msgstr "Atualizar Usuário" |
| 323 | 323 | ||
| 324 | -#: users/views.py:224 | 324 | +#: users/views.py:225 |
| 325 | msgid "User removed successfully!" | 325 | msgid "User removed successfully!" |
| 326 | msgstr "Usuário removido com sucesso!" | 326 | msgstr "Usuário removido com sucesso!" |
| 327 | 327 | ||
| 328 | -#: users/views.py:225 | 328 | +#: users/views.py:226 |
| 329 | msgid "" | 329 | msgid "" |
| 330 | "Could not remove the account. The user is attach to one or more functions " | 330 | "Could not remove the account. The user is attach to one or more functions " |
| 331 | "(administrator, coordinator, professor ou student) in the system." | 331 | "(administrator, coordinator, professor ou student) in the system." |
| @@ -333,39 +333,39 @@ msgstr "" | @@ -333,39 +333,39 @@ msgstr "" | ||
| 333 | "Não é possível deletar a conta. O usuário está vinculado com uma ou mais " | 333 | "Não é possível deletar a conta. O usuário está vinculado com uma ou mais " |
| 334 | "funções (administrador, coordenador, professor ou estudante) no sistema." | 334 | "funções (administrador, coordenador, professor ou estudante) no sistema." |
| 335 | 335 | ||
| 336 | -#: users/views.py:248 | 336 | +#: users/views.py:249 |
| 337 | msgid "Delete Account" | 337 | msgid "Delete Account" |
| 338 | msgstr "Remover Conta" | 338 | msgstr "Remover Conta" |
| 339 | 339 | ||
| 340 | -#: users/views.py:291 | 340 | +#: users/views.py:292 |
| 341 | msgid "Password changed successfully!" | 341 | msgid "Password changed successfully!" |
| 342 | msgstr "Senha alterada com sucesso!" | 342 | msgstr "Senha alterada com sucesso!" |
| 343 | 343 | ||
| 344 | -#: users/views.py:297 | 344 | +#: users/views.py:298 |
| 345 | msgid "Change Password" | 345 | msgid "Change Password" |
| 346 | msgstr "Alterar Senha" | 346 | msgstr "Alterar Senha" |
| 347 | 347 | ||
| 348 | -#: users/views.py:315 | 348 | +#: users/views.py:316 |
| 349 | msgid "Profile" | 349 | msgid "Profile" |
| 350 | msgstr "Perfil" | 350 | msgstr "Perfil" |
| 351 | 351 | ||
| 352 | -#: users/views.py:334 | 352 | +#: users/views.py:335 |
| 353 | msgid "Update Profile" | 353 | msgid "Update Profile" |
| 354 | msgstr "Atualizar Perfil" | 354 | msgstr "Atualizar Perfil" |
| 355 | 355 | ||
| 356 | -#: users/views.py:340 | 356 | +#: users/views.py:341 |
| 357 | msgid "Profile edited successfully!" | 357 | msgid "Profile edited successfully!" |
| 358 | msgstr "Perfil editado com sucesso!" | 358 | msgstr "Perfil editado com sucesso!" |
| 359 | 359 | ||
| 360 | -#: users/views.py:360 | 360 | +#: users/views.py:361 |
| 361 | msgid "User successfully registered!" | 361 | msgid "User successfully registered!" |
| 362 | msgstr "Usuário cadastrado com sucesso!" | 362 | msgstr "Usuário cadastrado com sucesso!" |
| 363 | 363 | ||
| 364 | -#: users/views.py:398 | 364 | +#: users/views.py:399 |
| 365 | msgid "Recover Password" | 365 | msgid "Recover Password" |
| 366 | msgstr "Recuperar Senha" | 366 | msgstr "Recuperar Senha" |
| 367 | 367 | ||
| 368 | -#: users/views.py:434 | 368 | +#: users/views.py:435 |
| 369 | msgid "" | 369 | msgid "" |
| 370 | "Soon you'll receive an email with instructions to set your new password. If " | 370 | "Soon you'll receive an email with instructions to set your new password. If " |
| 371 | "you don't receive it in 24 hours, please check your spam box." | 371 | "you don't receive it in 24 hours, please check your spam box." |
| @@ -373,34 +373,34 @@ msgstr "" | @@ -373,34 +373,34 @@ msgstr "" | ||
| 373 | "Em breve você receberá um email com instruções para cadastrar sua nova " | 373 | "Em breve você receberá um email com instruções para cadastrar sua nova " |
| 374 | "senha. Se você não recebê-lo em 24 hhoras, por favor olhe sua caixa de spam." | 374 | "senha. Se você não recebê-lo em 24 hhoras, por favor olhe sua caixa de spam." |
| 375 | 375 | ||
| 376 | -#: users/views.py:439 | 376 | +#: users/views.py:438 |
| 377 | msgid "No user is associated with this email address" | 377 | msgid "No user is associated with this email address" |
| 378 | msgstr "Nenhum usuário associado com esse endereço de email." | 378 | msgstr "Nenhum usuário associado com esse endereço de email." |
| 379 | 379 | ||
| 380 | -#: users/views.py:450 | 380 | +#: users/views.py:451 |
| 381 | msgid "Reset Password" | 381 | msgid "Reset Password" |
| 382 | msgstr "Recuperar Senha" | 382 | msgstr "Recuperar Senha" |
| 383 | 383 | ||
| 384 | -#: users/views.py:472 | 384 | +#: users/views.py:473 |
| 385 | msgid "Password reset successfully." | 385 | msgid "Password reset successfully." |
| 386 | msgstr "Senha alterada com sucesso!" | 386 | msgstr "Senha alterada com sucesso!" |
| 387 | 387 | ||
| 388 | -#: users/views.py:476 | 388 | +#: users/views.py:477 |
| 389 | msgid "We were not able to reset your password." | 389 | msgid "We were not able to reset your password." |
| 390 | msgstr "Não foi possível restaurar sua senha" | 390 | msgstr "Não foi possível restaurar sua senha" |
| 391 | 391 | ||
| 392 | -#: users/views.py:479 | 392 | +#: users/views.py:480 |
| 393 | msgid "The reset password link is no longer valid." | 393 | msgid "The reset password link is no longer valid." |
| 394 | msgstr "O link para restaurar senha não está mais válido." | 394 | msgstr "O link para restaurar senha não está mais válido." |
| 395 | 395 | ||
| 396 | -#: users/views.py:485 | 396 | +#: users/views.py:486 |
| 397 | msgid "Log In" | 397 | msgid "Log In" |
| 398 | msgstr "Entrar" | 398 | msgstr "Entrar" |
| 399 | 399 | ||
| 400 | -#: users/views.py:506 | 400 | +#: users/views.py:507 |
| 401 | msgid "System under maintenance. Try again later" | 401 | msgid "System under maintenance. Try again later" |
| 402 | msgstr "Sistema em manutenção. Tente novamente mais tarde" | 402 | msgstr "Sistema em manutenção. Tente novamente mais tarde" |
| 403 | 403 | ||
| 404 | -#: users/views.py:508 | 404 | +#: users/views.py:509 |
| 405 | msgid "E-mail or password are incorrect." | 405 | msgid "E-mail or password are incorrect." |
| 406 | msgstr "Email ou senha incorretos." | 406 | msgstr "Email ou senha incorretos." |
webpage/locale/pt_BR/LC_MESSAGES/django.po
| @@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
| 8 | msgstr "" | 8 | msgstr "" |
| 9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
| 10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
| 11 | -"POT-Creation-Date: 2017-02-20 22:07-0300\n" | 11 | +"POT-Creation-Date: 2017-03-09 17:01-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" |
youtube_video/locale/pt_BR/LC_MESSAGES/django.po
| @@ -8,7 +8,7 @@ msgid "" | @@ -8,7 +8,7 @@ msgid "" | ||
| 8 | msgstr "" | 8 | msgstr "" |
| 9 | "Project-Id-Version: PACKAGE VERSION\n" | 9 | "Project-Id-Version: PACKAGE VERSION\n" |
| 10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
| 11 | -"POT-Creation-Date: 2017-02-20 22:07-0300\n" | 11 | +"POT-Creation-Date: 2017-03-09 17:01-0300\n" |
| 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
| 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
| 14 | "Language-Team: LANGUAGE <LL@li.org>\n" | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" |
| @@ -18,19 +18,19 @@ msgstr "" | @@ -18,19 +18,19 @@ msgstr "" | ||
| 18 | "Content-Transfer-Encoding: 8bit\n" | 18 | "Content-Transfer-Encoding: 8bit\n" |
| 19 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" | 19 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" |
| 20 | 20 | ||
| 21 | -#: youtube_video/forms.py:31 | 21 | +#: youtube_video/forms.py:36 |
| 22 | msgid "Tags" | 22 | msgid "Tags" |
| 23 | msgstr "Tags" | 23 | msgstr "Tags" |
| 24 | 24 | ||
| 25 | -#: youtube_video/forms.py:37 | 25 | +#: youtube_video/forms.py:42 |
| 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:57 | 29 | +#: youtube_video/forms.py:62 |
| 30 | msgid "This subject already has a youtube video with this name" | 30 | msgid "This subject already has a youtube video with this name" |
| 31 | msgstr "Esse assunto já possui um vídeo do YouTube com esse nome" | 31 | msgstr "Esse assunto já possui um vídeo do YouTube com esse nome" |
| 32 | 32 | ||
| 33 | -#: youtube_video/forms.py:67 | 33 | +#: youtube_video/forms.py:71 |
| 34 | #, fuzzy | 34 | #, fuzzy |
| 35 | #| msgid "Invalid URL. It should be an embed YouTube link." | 35 | #| msgid "Invalid URL. It should be an embed YouTube link." |
| 36 | msgid "Invalid URL. It should be an YouTube link." | 36 | msgid "Invalid URL. It should be an YouTube link." |