Commit 65e07ef0e88681b72b45b65b9d7afe7170504284

Authored by fbormann
2 parents cd987ddf 49ad6388

Merge branch 'refactoring' of https://github.com/amadeusproject/amadeuslms into refactoring

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-03-22 17:37-0300\n" 11 +"POT-Creation-Date: 2017-03-23 13:53-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"
@@ -87,8 +87,10 @@ msgid &quot;Theme&quot; @@ -87,8 +87,10 @@ msgid &quot;Theme&quot;
87 msgstr "Temas" 87 msgstr "Temas"
88 88
89 #: amadeus/templates/base.html:179 89 #: amadeus/templates/base.html:179
90 -msgid "Web Conference Settings"  
91 -msgstr "Configurações da Web conferência" 90 +#, fuzzy
  91 +#| msgid "Web Conference Settings"
  92 +msgid "Web Conference"
  93 +msgstr "Web conferência"
92 94
93 #: amadeus/templates/base.html:199 amadeus/templates/base.html:254 95 #: amadeus/templates/base.html:199 amadeus/templates/base.html:254
94 msgid "Subjects" 96 msgid "Subjects"
amadeus/static/css/.sass-cache/a7f87b90919294b62ab4f8079e31dcda8f485534/green.sassc
No preview for this file type
amadeus/static/css/a 0 → 100644
@@ -0,0 +1,23 @@ @@ -0,0 +1,23 @@
  1 +/*
  2 +Errno::ENOENT: No such file or directory @ rb_sysopen - a
  3 +
  4 +Backtrace:
  5 +/var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/plugin/compiler.rb:484:in `read'
  6 +/var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/plugin/compiler.rb:484:in `update_stylesheet'
  7 +/var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/plugin/compiler.rb:215:in `block in update_stylesheets'
  8 +/var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/plugin/compiler.rb:209:in `each'
  9 +/var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/plugin/compiler.rb:209:in `update_stylesheets'
  10 +/var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/plugin/compiler.rb:294:in `watch'
  11 +/var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/plugin.rb:109:in `method_missing'
  12 +/var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/exec/sass_scss.rb:360:in `watch_or_update'
  13 +/var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/exec/sass_scss.rb:51:in `process_result'
  14 +/var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/exec/base.rb:52:in `parse'
  15 +/var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/exec/base.rb:19:in `parse!'
  16 +/var/lib/gems/2.3.0/gems/sass-3.4.23/bin/sass:13:in `<top (required)>'
  17 +/usr/local/bin/sass:23:in `load'
  18 +/usr/local/bin/sass:23:in `<main>'
  19 +*/
  20 +body:before {
  21 + white-space: pre;
  22 + font-family: monospace;
  23 + content: "Errno::ENOENT: No such file or directory @ rb_sysopen - a"; }
amadeus/static/css/base/amadeus.css
@@ -1538,6 +1538,18 @@ div.dataTables_wrapper div.dataTables_paginate { @@ -1538,6 +1538,18 @@ div.dataTables_wrapper div.dataTables_paginate {
1538 display: none; 1538 display: none;
1539 } 1539 }
1540 1540
  1541 +.chat-panel {
  1542 + box-shadow: none;
  1543 +}
  1544 +
  1545 +.chat-panel .content {
  1546 + margin-top: 10px;
  1547 +}
  1548 +
  1549 +.chat-panel .chat-collapse {
  1550 + padding: 15px 0px;
  1551 +}
  1552 +
1541 @-moz-document url-prefix() { 1553 @-moz-document url-prefix() {
1542 .talk_body .checkbox input[type="checkbox"] { 1554 .talk_body .checkbox input[type="checkbox"] {
1543 display: none; 1555 display: none;
amadeus/static/css/themes/a 0 → 100644
@@ -0,0 +1,37 @@ @@ -0,0 +1,37 @@
  1 +/*
  2 +Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.
  3 + on line 35 of a
  4 +
  5 +30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'
  6 +31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'
  7 +32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'
  8 +33: *\/
  9 +34: body:before {
  10 +35: white-space: pre;
  11 +36: font-family: monospace;
  12 +37: content: "Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 35 of a\A \A 30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 33: *\/\A 34: body:before {\A 35: white-space: pre;\A 36: font-family: monospace;\A 37: content: \"Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 35 of a\A \A 30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 33: *\/\A 34: body:before {\A 35: white-space: pre;\A 36: font-family: monospace;\A 37: content: \\"Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 35 of a\A \A 30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 33: *\/\A 34: body:before {\A 35: white-space: pre;\A 36: font-family: monospace;\A 37: content: \\\"Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 35 of a\A \A 30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 33: *\/\A 34: body:before {\A 35: white-space: pre;\A 36: font-family: monospace;\A 37: content: \\\\"Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 35 of a\A \A 30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 33: *\/\A 34: body:before {\A 35: white-space: pre;\A 36: font-family: monospace;\A 37: content: \\\\\"Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 35 of a\A \A 30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 33: *\/\A 34: body:before {\A 35: white-space: pre;\A 36: font-family: monospace;\A 37: content: \\\\\\"Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 35 of a\A \A 30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 33: *\/\A 34: body:before {\A 35: white-space: pre;\A 36: font-family: monospace;\A 37: content: \\\\\\\"Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 35 of a\A \A 30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 33: *\/\A 34: body:before {\A 35: white-space: pre;\A 36: font-family: monospace;\A 37: content: \\\\\\\\"Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 35 of a\A \A 30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 33: *\/\A 34: body:before {\A 35: white-space: pre;\A 36: font-family: monospace;\A 37: content: \\\\\\\\\"Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 39 of a\A \A 34: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 35: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 36: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 37: *\/\A 38: body:before {\A 39: white-space: pre;\A 40: font-family: monospace;\A 41: content: \\\\\\\\\\"Error: Invalid property: \\\\\\\\\\\"Backtrace:\\\\\\\\\\\" (no value).\A on line 4 of a\A \A 1: /*\A 2: Errno::ENOENT: No such file or directory @ rb_sysopen - a\A 3: \A 4: Backtrace:\A 5: /var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/plugin/compiler.rb:484:in `read'\A 6: /var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/plugin/compiler.rb:484:in `update_stylesheet'\A 7: /var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/plugin/compiler.rb:215:in `block in update_stylesheets'\A 8: /var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/plugin/compiler.rb:209:in `each'\A 9: /var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/plugin/compiler.rb:209:in `update_stylesheets'\\\\\\\\\\"; }\\\\\\\\\"; }\\\\\\\\"; }\\\\\\\"; }\\\\\\"; }\\\\\"; }\\\\"; }\\\"; }\\"; }\"; }"; }
  13 +
  14 +Backtrace:
  15 +a:35
  16 +/var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/engine.rb:486:in `block in tabulate'
  17 +/var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/engine.rb:444:in `each'
  18 +/var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/engine.rb:444:in `each_with_index'
  19 +/var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/engine.rb:444:in `tabulate'
  20 +/var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/engine.rb:409:in `_to_tree'
  21 +/var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/engine.rb:381:in `_render_with_sourcemap'
  22 +/var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/engine.rb:298:in `render_with_sourcemap'
  23 +/var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/plugin/compiler.rb:492:in `update_stylesheet'
  24 +/var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/plugin/compiler.rb:215:in `block in update_stylesheets'
  25 +/var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/plugin/compiler.rb:209:in `each'
  26 +/var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/plugin/compiler.rb:209:in `update_stylesheets'
  27 +/var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/plugin/compiler.rb:473:in `on_file_changed'
  28 +/var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/plugin/compiler.rb:331:in `block in watch'
  29 +/var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:252:in `on_change'
  30 +/var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'
  31 +/var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'
  32 +/var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'
  33 +*/
  34 +body:before {
  35 + white-space: pre;
  36 + font-family: monospace;
  37 + content: "Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 35 of a\A \A 30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 33: */\A 34: body:before {\A 35: white-space: pre;\A 36: font-family: monospace;\A 37: content: \"Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 35 of a\A \A 30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 33: */\A 34: body:before {\A 35: white-space: pre;\A 36: font-family: monospace;\A 37: content: \\"Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 35 of a\A \A 30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 33: */\A 34: body:before {\A 35: white-space: pre;\A 36: font-family: monospace;\A 37: content: \\\"Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 35 of a\A \A 30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 33: */\A 34: body:before {\A 35: white-space: pre;\A 36: font-family: monospace;\A 37: content: \\\\"Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 35 of a\A \A 30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 33: */\A 34: body:before {\A 35: white-space: pre;\A 36: font-family: monospace;\A 37: content: \\\\\"Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 35 of a\A \A 30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 33: */\A 34: body:before {\A 35: white-space: pre;\A 36: font-family: monospace;\A 37: content: \\\\\\"Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 35 of a\A \A 30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 33: */\A 34: body:before {\A 35: white-space: pre;\A 36: font-family: monospace;\A 37: content: \\\\\\\"Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 35 of a\A \A 30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 33: */\A 34: body:before {\A 35: white-space: pre;\A 36: font-family: monospace;\A 37: content: \\\\\\\\"Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 35 of a\A \A 30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 33: */\A 34: body:before {\A 35: white-space: pre;\A 36: font-family: monospace;\A 37: content: \\\\\\\\\"Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 35 of a\A \A 30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 33: */\A 34: body:before {\A 35: white-space: pre;\A 36: font-family: monospace;\A 37: content: \\\\\\\\\\"Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 39 of a\A \A 34: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 35: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 36: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 37: */\A 38: body:before {\A 39: white-space: pre;\A 40: font-family: monospace;\A 41: content: \\\\\\\\\\\"Error: Invalid property: \\\\\\\\\\\\"Backtrace:\\\\\\\\\\\\" (no value).\A on line 4 of a\A \A 1: /*\A 2: Errno::ENOENT: No such file or directory @ rb_sysopen - a\A 3: \A 4: Backtrace:\A 5: /var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/plugin/compiler.rb:484:in `read'\A 6: /var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/plugin/compiler.rb:484:in `update_stylesheet'\A 7: /var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/plugin/compiler.rb:215:in `block in update_stylesheets'\A 8: /var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/plugin/compiler.rb:209:in `each'\A 9: /var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/plugin/compiler.rb:209:in `update_stylesheets'\\\\\\\\\\\"; }\\\\\\\\\\"; }\\\\\\\\\"; }\\\\\\\\"; }\\\\\\\"; }\\\\\\"; }\\\\\"; }\\\\"; }\\\"; }\\"; }\"; }"; }
amadeus/static/css/themes/green.css
@@ -514,6 +514,9 @@ a.add-row { @@ -514,6 +514,9 @@ a.add-row {
514 color: #FFFFFF; 514 color: #FFFFFF;
515 background-color: #59b75c; } 515 background-color: #59b75c; }
516 516
  517 +.chat-panel .chat-collapse {
  518 + background: #EEE; }
  519 +
517 @media(max-width: 768px) { 520 @media(max-width: 768px) {
518 .navbar .navbar-nav .dropdown .dropdown-menu li > a { 521 .navbar .navbar-nav .dropdown .dropdown-menu li > a {
519 color: #333333 !important; } 522 color: #333333 !important; }
amadeus/static/css/themes/green.css.map
1 { 1 {
2 "version": 3, 2 "version": 3,
3 -"mappings": "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", 3 +"mappings": "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",
4 "sources": ["green.sass"], 4 "sources": ["green.sass"],
5 "names": [], 5 "names": [],
6 "file": "green.css" 6 "file": "green.css"
amadeus/static/css/themes/green.sass
@@ -686,6 +686,9 @@ a.add-row @@ -686,6 +686,9 @@ a.add-row
686 color: $white 686 color: $white
687 background-color: #59b75c 687 background-color: #59b75c
688 688
  689 +.chat-panel .chat-collapse
  690 + background: #EEE
  691 +
689 @media(max-width: 768px) 692 @media(max-width: 768px)
690 .navbar .navbar-nav .dropdown .dropdown-menu li > a 693 .navbar .navbar-nav .dropdown .dropdown-menu li > a
691 color: #333333 !important 694 color: #333333 !important
amadeus/static/css/themes/themes 0 → 100644
@@ -0,0 +1,37 @@ @@ -0,0 +1,37 @@
  1 +/*
  2 +Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.
  3 + on line 35 of themes
  4 +
  5 +30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'
  6 +31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'
  7 +32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'
  8 +33: *\/
  9 +34: body:before {
  10 +35: white-space: pre;
  11 +36: font-family: monospace;
  12 +37: content: "Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 35 of themes\A \A 30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 33: *\/\A 34: body:before {\A 35: white-space: pre;\A 36: font-family: monospace;\A 37: content: \"Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 35 of themes\A \A 30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 33: *\/\A 34: body:before {\A 35: white-space: pre;\A 36: font-family: monospace;\A 37: content: \\"Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 35 of themes\A \A 30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 33: *\/\A 34: body:before {\A 35: white-space: pre;\A 36: font-family: monospace;\A 37: content: \\\"Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 35 of themes\A \A 30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 33: *\/\A 34: body:before {\A 35: white-space: pre;\A 36: font-family: monospace;\A 37: content: \\\\"Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 35 of themes\A \A 30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 33: *\/\A 34: body:before {\A 35: white-space: pre;\A 36: font-family: monospace;\A 37: content: \\\\\"Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 35 of themes\A \A 30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 33: *\/\A 34: body:before {\A 35: white-space: pre;\A 36: font-family: monospace;\A 37: content: \\\\\\"Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 35 of themes\A \A 30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 33: *\/\A 34: body:before {\A 35: white-space: pre;\A 36: font-family: monospace;\A 37: content: \\\\\\\"Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 35 of themes\A \A 30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 33: *\/\A 34: body:before {\A 35: white-space: pre;\A 36: font-family: monospace;\A 37: content: \\\\\\\\"Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 35 of themes\A \A 30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 33: *\/\A 34: body:before {\A 35: white-space: pre;\A 36: font-family: monospace;\A 37: content: \\\\\\\\\"Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 35 of themes\A \A 30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 33: *\/\A 34: body:before {\A 35: white-space: pre;\A 36: font-family: monospace;\A 37: content: \\\\\\\\\\"Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 42 of themes\A \A 37: /var/lib/gems/2.3.0/gems/sass-3.4.23/bin/sass:13:in `<top (required)>'\A 38: /usr/local/bin/sass:23:in `load'\A 39: /usr/local/bin/sass:23:in `<main>'\A 40: *\/\A 41: body:before {\A 42: white-space: pre;\A 43: font-family: monospace;\A 44: content: \\\\\\\\\\\"Error: Invalid property: \\\\\\\\\\\\"Backtrace:\\\\\\\\\\\\" (no value).\A on line 4 of themes\A \A 1: /*\A 2: Errno::ENOENT: No such file or directory @ rb_sysopen - app\A 3: \A 4: Backtrace:\A 5: /var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/plugin/compiler.rb:484:in `read'\A 6: /var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/plugin/compiler.rb:484:in `update_stylesheet'\A 7: /var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/plugin/compiler.rb:215:in `block in update_stylesheets'\A 8: /var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/plugin/compiler.rb:209:in `each'\A 9: /var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/plugin/compiler.rb:209:in `update_stylesheets'\\\\\\\\\\\"; }\\\\\\\\\\"; }\\\\\\\\\"; }\\\\\\\\"; }\\\\\\\"; }\\\\\\"; }\\\\\"; }\\\\"; }\\\"; }\\"; }\"; }"; }
  13 +
  14 +Backtrace:
  15 +themes:35
  16 +/var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/engine.rb:486:in `block in tabulate'
  17 +/var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/engine.rb:444:in `each'
  18 +/var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/engine.rb:444:in `each_with_index'
  19 +/var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/engine.rb:444:in `tabulate'
  20 +/var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/engine.rb:409:in `_to_tree'
  21 +/var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/engine.rb:381:in `_render_with_sourcemap'
  22 +/var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/engine.rb:298:in `render_with_sourcemap'
  23 +/var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/plugin/compiler.rb:492:in `update_stylesheet'
  24 +/var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/plugin/compiler.rb:215:in `block in update_stylesheets'
  25 +/var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/plugin/compiler.rb:209:in `each'
  26 +/var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/plugin/compiler.rb:209:in `update_stylesheets'
  27 +/var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/plugin/compiler.rb:473:in `on_file_changed'
  28 +/var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/plugin/compiler.rb:331:in `block in watch'
  29 +/var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:252:in `on_change'
  30 +/var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'
  31 +/var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'
  32 +/var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'
  33 +*/
  34 +body:before {
  35 + white-space: pre;
  36 + font-family: monospace;
  37 + content: "Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 35 of themes\A \A 30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 33: */\A 34: body:before {\A 35: white-space: pre;\A 36: font-family: monospace;\A 37: content: \"Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 35 of themes\A \A 30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 33: */\A 34: body:before {\A 35: white-space: pre;\A 36: font-family: monospace;\A 37: content: \\"Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 35 of themes\A \A 30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 33: */\A 34: body:before {\A 35: white-space: pre;\A 36: font-family: monospace;\A 37: content: \\\"Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 35 of themes\A \A 30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 33: */\A 34: body:before {\A 35: white-space: pre;\A 36: font-family: monospace;\A 37: content: \\\\"Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 35 of themes\A \A 30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 33: */\A 34: body:before {\A 35: white-space: pre;\A 36: font-family: monospace;\A 37: content: \\\\\"Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 35 of themes\A \A 30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 33: */\A 34: body:before {\A 35: white-space: pre;\A 36: font-family: monospace;\A 37: content: \\\\\\"Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 35 of themes\A \A 30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 33: */\A 34: body:before {\A 35: white-space: pre;\A 36: font-family: monospace;\A 37: content: \\\\\\\"Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 35 of themes\A \A 30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 33: */\A 34: body:before {\A 35: white-space: pre;\A 36: font-family: monospace;\A 37: content: \\\\\\\\"Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 35 of themes\A \A 30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 33: */\A 34: body:before {\A 35: white-space: pre;\A 36: font-family: monospace;\A 37: content: \\\\\\\\\"Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 35 of themes\A \A 30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 33: */\A 34: body:before {\A 35: white-space: pre;\A 36: font-family: monospace;\A 37: content: \\\\\\\\\\"Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 35 of themes\A \A 30: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/listener.rb:290:in `block in initialize_adapter'\A 31: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapters/polling.rb:48:in `poll_changed_directories'\A 32: /var/lib/gems/2.3.0/gems/sass-3.4.23/vendor/listen/lib/listen/adapter.rb:299:in `block in start_poller'\A 33: */\A 34: body:before {\A 35: white-space: pre;\A 36: font-family: monospace;\A 37: content: \\\\\\\\\\\"Error: Inconsistent indentation: 2 spaces were used for indentation, but the rest of the document was indented using 8 spaces.\A on line 42 of themes\A \A 37: /var/lib/gems/2.3.0/gems/sass-3.4.23/bin/sass:13:in `<top (required)>'\A 38: /usr/local/bin/sass:23:in `load'\A 39: /usr/local/bin/sass:23:in `<main>'\A 40: */\A 41: body:before {\A 42: white-space: pre;\A 43: font-family: monospace;\A 44: content: \\\\\\\\\\\\"Error: Invalid property: \\\\\\\\\\\\\"Backtrace:\\\\\\\\\\\\\" (no value).\A on line 4 of themes\A \A 1: /*\A 2: Errno::ENOENT: No such file or directory @ rb_sysopen - app\A 3: \A 4: Backtrace:\A 5: /var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/plugin/compiler.rb:484:in `read'\A 6: /var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/plugin/compiler.rb:484:in `update_stylesheet'\A 7: /var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/plugin/compiler.rb:215:in `block in update_stylesheets'\A 8: /var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/plugin/compiler.rb:209:in `each'\A 9: /var/lib/gems/2.3.0/gems/sass-3.4.23/lib/sass/plugin/compiler.rb:209:in `update_stylesheets'\\\\\\\\\\\\"; }\\\\\\\\\\\"; }\\\\\\\\\\"; }\\\\\\\\\"; }\\\\\\\\"; }\\\\\\\"; }\\\\\\"; }\\\\\"; }\\\\"; }\\\"; }\\"; }\"; }"; }
amadeus/static/js/chat.js
1 var new_msgs = {}; 1 var new_msgs = {};
2 2
  3 +$('#chat-modal-info').on('show.bs.modal', function (e) {
  4 + var header = $(this).find('.talk_header');
  5 + if (header.length > 0) {
  6 + var li = $(".breadcrumb").find('li:last-child');
  7 + var li_text = $(li).html();
  8 + var new_li = $(li).clone();
  9 +
  10 + new_li.html(header.find('h4').data('breadcrumb'));
  11 +
  12 + $(li).html("<a href='#'>" + li_text + "</a>");
  13 + $(li).append("<span class='divider'>/</span>");
  14 +
  15 + new_li.appendTo('.breadcrumb');
  16 + }
  17 +});
  18 +
  19 +$('#chat-modal-info').on('hide.bs.modal', function (e) {
  20 + var header = $(this).find('.talk_header');
  21 + if (header.length > 0) {
  22 + $(".breadcrumb").find('li:last-child').remove();
  23 +
  24 + var li = $(".breadcrumb").find('li:last-child');
  25 + var text = $(li).find('a').text();
  26 +
  27 + $(li).html(text);
  28 + }
  29 +});
  30 +
  31 +
3 function getModalInfo(btn, space, space_type) { 32 function getModalInfo(btn, space, space_type) {
4 var url = btn.data('url'); 33 var url = btn.data('url');
5 34
@@ -115,6 +144,10 @@ function setChatFormSubmit() { @@ -115,6 +144,10 @@ function setChatFormSubmit() {
115 144
116 new_msgs[data.talk_id].push(data.new_id); 145 new_msgs[data.talk_id].push(data.new_id);
117 146
  147 + frm.attr('action', data.new_form_url);
  148 + $("#short-chat").attr('action', data.new_form_url);
  149 + $("#send-img").data('url', data.new_form_url);
  150 +
118 $('#chat-modal-form').modal('hide'); 151 $('#chat-modal-form').modal('hide');
119 }, 152 },
120 error: function(data) { 153 error: function(data) {
@@ -149,6 +182,7 @@ function setShortChatFormSubmit() { @@ -149,6 +182,7 @@ function setShortChatFormSubmit() {
149 dataType: "json", 182 dataType: "json",
150 async: false, 183 async: false,
151 success: function (data) { 184 success: function (data) {
  185 +
152 $('.messages-list').append(data.view); 186 $('.messages-list').append(data.view);
153 187
154 $(".messages-container").each(function () { 188 $(".messages-container").each(function () {
@@ -165,6 +199,9 @@ function setShortChatFormSubmit() { @@ -165,6 +199,9 @@ function setShortChatFormSubmit() {
165 199
166 editable.html(""); 200 editable.html("");
167 editable.trigger("focusout"); 201 editable.trigger("focusout");
  202 +
  203 + frm.attr('action', data.new_form_url);
  204 + $("#send-img").data('url', data.new_form_url);
168 }, 205 },
169 error: function(data) { 206 error: function(data) {
170 setShortChatFormSubmit(); 207 setShortChatFormSubmit();
@@ -227,7 +264,7 @@ function setFiltersSubmitAndPagination() { @@ -227,7 +264,7 @@ function setFiltersSubmitAndPagination() {
227 loading.hide(); 264 loading.hide();
228 265
229 if (data.count > 0) { 266 if (data.count > 0) {
230 - msg_section.append(data.messages); 267 + msg_section.html(data.messages);
231 268
232 messages.data('pages', data.num_pages); 269 messages.data('pages', data.num_pages);
233 messages.data('page', data.num_page); 270 messages.data('page', data.num_page);
@@ -306,4 +343,80 @@ function setFiltersSubmitAndPagination() { @@ -306,4 +343,80 @@ function setFiltersSubmitAndPagination() {
306 } 343 }
307 }); 344 });
308 }); 345 });
309 -}  
310 \ No newline at end of file 346 \ No newline at end of file
  347 +}
  348 +
  349 +function getParticipants(btn) {
  350 + var url = btn.attr('href'),
  351 + content_section = btn.parent().parent().parent().parent().find('.content');
  352 +
  353 + $.ajax({
  354 + url: url,
  355 + success: function (response) {
  356 + content_section.html(response);
  357 +
  358 + var items = $('#content-list').children(":visible").length;
  359 + var holder = content_section.find('.holder');
  360 +
  361 + if (items > 10) {
  362 + holder.jPages({
  363 + containerID : "content-list",
  364 + perPage: 10,
  365 + previous: "«",
  366 + next: "»",
  367 + midRange: 5
  368 + });
  369 + }
  370 + }
  371 + });
  372 +}
  373 +
  374 +$('.chat-collapse').on('shown.bs.collapse', function(e) {
  375 + if($(this).is(e.target)){
  376 + var li = $(".breadcrumb").find('li:last-child');
  377 + var li_text = $(li).html();
  378 + var url = $(".cat_url").val();
  379 + var new_li = $(li).clone();
  380 +
  381 + new_li.html($(this).parent().find('.panel-title span').text());
  382 +
  383 + $(li).html("<a href='" + url + "'>" + li_text + "</a>");
  384 + $(li).append("<span class='divider'>/</span>");
  385 +
  386 + new_li.appendTo('.breadcrumb');
  387 +
  388 + var content_section = $(this).find('.content');
  389 +
  390 + var url = $(this).data('url');
  391 +
  392 + $.ajax({
  393 + url: url,
  394 + success: function (response) {
  395 + content_section.html(response);
  396 +
  397 + var items = $('#content-list').children(":visible").length;
  398 + var holder = content_section.find('.holder');
  399 +
  400 + if (items > 10) {
  401 + holder.jPages({
  402 + containerID : "content-list",
  403 + perPage: 10,
  404 + previous: "«",
  405 + next: "»",
  406 + midRange: 5
  407 + });
  408 + }
  409 + }
  410 + });
  411 + }
  412 +});
  413 +
  414 +$('.chat-collapse').on('hidden.bs.collapse', function(e) {
  415 + if($(this).is(e.target)){
  416 + $(".breadcrumb").find('li:last-child').remove();
  417 +
  418 + var li = $(".breadcrumb").find('li:last-child');
  419 + var text = $(li).find('a').text();
  420 +
  421 + $(li).html(text);
  422 + }
  423 +});
311 \ No newline at end of file 424 \ No newline at end of file
amadeus/templates/base.html
@@ -176,7 +176,7 @@ @@ -176,7 +176,7 @@
176 <li><a href="{% url 'mailsender:update' %}">{% trans 'Mail Sender' %}</a></li> 176 <li><a href="{% url 'mailsender:update' %}">{% trans 'Mail Sender' %}</a></li>
177 <li><a href="{% url 'security:update' %}">{% trans 'Security' %}</a></li> 177 <li><a href="{% url 'security:update' %}">{% trans 'Security' %}</a></li>
178 <li><a href="{% url 'themes:manage' %}">{% trans 'Theme' %}</a></li> 178 <li><a href="{% url 'themes:manage' %}">{% trans 'Theme' %}</a></li>
179 - <li><a href="{% url 'webconferences:settings' %}">{% trans 'Web Conference Settings' %}</a></li> 179 + <li><a href="{% url 'webconferences:settings' %}">{% trans 'Web Conference' %}</a></li>
180 </ul> 180 </ul>
181 </div> 181 </div>
182 </div> 182 </div>
amadeus/urls.py
@@ -42,6 +42,7 @@ urlpatterns = [ @@ -42,6 +42,7 @@ urlpatterns = [
42 url(r'^pendencies/', include('notifications.urls', namespace = 'notifications')), 42 url(r'^pendencies/', include('notifications.urls', namespace = 'notifications')),
43 url(r'^links/', include('links.urls', namespace='links')), 43 url(r'^links/', include('links.urls', namespace='links')),
44 url(r'^pdf_files/', include('pdf_file.urls', namespace='pdf_files')), 44 url(r'^pdf_files/', include('pdf_file.urls', namespace='pdf_files')),
  45 + url(r'^webconferences/', include('webconference.urls', namespace = 'webconferences')),
45 url(r'^i18n/', include('django.conf.urls.i18n')), 46 url(r'^i18n/', include('django.conf.urls.i18n')),
46 #API 47 #API
47 url(r'^o/', include('oauth2_provider.urls', namespace='oauth2_provider')), 48 url(r'^o/', include('oauth2_provider.urls', namespace='oauth2_provider')),
@@ -49,8 +50,6 @@ urlpatterns = [ @@ -49,8 +50,6 @@ urlpatterns = [
49 url(r'^s3direct/', include('s3direct.urls')), 50 url(r'^s3direct/', include('s3direct.urls')),
50 url(r'^summernote/', include('django_summernote.urls')), 51 url(r'^summernote/', include('django_summernote.urls')),
51 url(r'session_security/', include('session_security.urls')), 52 url(r'session_security/', include('session_security.urls')),
52 - url(r'^webconferences/', include('webconference.urls', namespace = 'webconferences')),  
53 -  
54 ] 53 ]
55 54
56 if settings.DEBUG: 55 if settings.DEBUG:
chat/templates/chat/_participants.html 0 → 100644
@@ -0,0 +1,23 @@ @@ -0,0 +1,23 @@
  1 +{% load static i18n chat_tags %}
  2 +
  3 +{% if participants.count > 0 %}
  4 + <div class="panel category-panel-content panel-body">
  5 + <h2 class="my-subjects-title"><b>{% trans 'Participants' %}</b></h2>
  6 +
  7 + <div id="content-list" class="participants-group">
  8 + {% for participant in participants %}
  9 + {% include 'chat/_view_participant.html' with space=space space_type=space_type %}
  10 + {% endfor %}
  11 + </div>
  12 + <div class="col-md-12">
  13 + <div class="text-center">
  14 + <div class="holder"></div>
  15 + </div>
  16 + </div>
  17 + </div>
  18 +{% else %}
  19 + <div class="text-center no-subjects">
  20 + <i class="fa fa-envelope-o"></i>
  21 + <h4>{% trans 'There is no other participants in this space yet.' %}</h4>
  22 + </div>
  23 +{% endif %}
0 \ No newline at end of file 24 \ No newline at end of file
chat/templates/chat/_talks_list.html 0 → 100644
@@ -0,0 +1,23 @@ @@ -0,0 +1,23 @@
  1 +{% load static i18n chat_tags %}
  2 +
  3 +{% if conversations.count > 0 %}
  4 + <div class="panel category-panel-content panel-body">
  5 + <h2 class="my-subjects-title"><b>{% trans 'Conversations' %}</b></h2>
  6 +
  7 + <div id="content-list" class="talks-group">
  8 + {% for chat in conversations %}
  9 + {% include 'chat/_view.html' with space=space space_type=space_type %}
  10 + {% endfor %}
  11 + </div>
  12 + <div class="col-md-12">
  13 + <div class="text-center">
  14 + <div class="holder"></div>
  15 + </div>
  16 + </div>
  17 + </div>
  18 +{% else %}
  19 + <div class="text-center no-subjects">
  20 + <i class="fa fa-envelope-o"></i>
  21 + <h4>{% trans 'You do not posses messages in this space yet.' %}</h4>
  22 + </div>
  23 +{% endif %}
0 \ No newline at end of file 24 \ No newline at end of file
chat/templates/chat/list.html
@@ -15,7 +15,7 @@ @@ -15,7 +15,7 @@
15 <div id="core-subjects-options-div"> 15 <div id="core-subjects-options-div">
16 <ul class="core-subjects-options chat-tabs"> 16 <ul class="core-subjects-options chat-tabs">
17 <a href="{% url 'chat:manage_general' %}"><li data-chat="general" class="active">{% trans "General" %} (<span>{{ totals.general }}</span>)</li></a> 17 <a href="{% url 'chat:manage_general' %}"><li data-chat="general" class="active">{% trans "General" %} (<span>{{ totals.general }}</span>)</li></a>
18 - <a href=""><li data-chat="category">{% trans "Per Category" %} (<span>{{ totals.category }}</span>)</li></a> 18 + <a href="{% url 'chat:manage_category' %}"><li data-chat="category">{% trans "Per Category" %} (<span>{{ totals.category }}</span>)</li></a>
19 <a href=""><li data-chat="subject">{% trans "Per Subject" %} (<span>{{ totals.subject }}</span>)</li></a> 19 <a href=""><li data-chat="subject">{% trans "Per Subject" %} (<span>{{ totals.subject }}</span>)</li></a>
20 </ul> 20 </ul>
21 </div> 21 </div>
@@ -46,7 +46,7 @@ @@ -46,7 +46,7 @@
46 </div> 46 </div>
47 47
48 {% if conversations.count > 0 %} 48 {% if conversations.count > 0 %}
49 - <div class="panel panel-info panel-body"> 49 + <div class="panel category-panel-content panel-body">
50 <h2 class="my-subjects-title"><b>{% trans 'Conversations' %}</b></h2> 50 <h2 class="my-subjects-title"><b>{% trans 'Conversations' %}</b></h2>
51 51
52 <div class="talks-group"> 52 <div class="talks-group">
@@ -70,4 +70,4 @@ @@ -70,4 +70,4 @@
70 <div class="modal fade" id="chat-modal-form" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"></div> 70 <div class="modal fade" id="chat-modal-form" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"></div>
71 71
72 <script type="text/javascript" src="{% static 'js/chat.js' %}"></script> 72 <script type="text/javascript" src="{% static 'js/chat.js' %}"></script>
73 - {% endblock %}  
74 \ No newline at end of file 73 \ No newline at end of file
  74 +{% endblock %}
75 \ No newline at end of file 75 \ No newline at end of file
chat/templates/chat/list_category.html 0 → 100644
@@ -0,0 +1,110 @@ @@ -0,0 +1,110 @@
  1 +{% extends 'base.html' %}
  2 +
  3 +{% load static i18n pagination permissions_tags %}
  4 +{% load django_bootstrap_breadcrumbs %}
  5 +
  6 +{% block breadcrumbs %}
  7 + {{ block.super }}
  8 +
  9 + {% trans 'Messages per Category' as category %}
  10 +
  11 + {% breadcrumb category 'chat:manage_category' %}
  12 +{% endblock %}
  13 +
  14 +{% block content %}
  15 + <input type="hidden" value="{% url 'chat:manage_category' %}" class="cat_url">
  16 +
  17 + <div id="core-subjects-options-div">
  18 + <ul class="core-subjects-options chat-tabs">
  19 + <a href="{% url 'chat:manage_general' %}"><li data-chat="general">{% trans "General" %} (<span>{{ totals.general }}</span>)</li></a>
  20 + <a href="{% url 'chat:manage_category' %}"><li data-chat="category" class="active">{% trans "Per Category" %} (<span>{{ totals.category }}</span>)</li></a>
  21 + <a href=""><li data-chat="subject">{% trans "Per Subject" %} (<span>{{ totals.subject }}</span>)</li></a>
  22 + </ul>
  23 + </div>
  24 +
  25 + <div class="col-md-12 cards-content">
  26 + {% if categories.count > 0 %}
  27 + <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
  28 + {% for category in categories %}
  29 + {% category_permissions request.user category as has_category_permissions %}
  30 +
  31 + {% if category.visible or has_category_permissions %}
  32 + {% if category.visible %}
  33 + <div class="panel panel-info category-panel chat-panel">
  34 + <div class="panel-heading">
  35 + {% elif has_category_permissions %}
  36 + <div class="panel special-panel">
  37 + <div class="panel-heading panel-invisible chat-panel">
  38 + {% endif %}
  39 +
  40 + <div class="row">
  41 + <div class="col-md-12 category-header">
  42 + <h4 class="panel-title">
  43 + <a class="category-course-link pull-left" data-parent="#accordion" data-toggle="collapse" href="#{{category.slug}}">
  44 + <button class="btn btn-default btn-xs text-center cat-selector"><i class="fa fa-angle-right fa-2x" aria-hidden="true"></i></button> <span>{{ category.name }}</span>
  45 +
  46 + </a>
  47 + </h4>
  48 +
  49 + <div class="col-md-5 pull-right category-card-items">
  50 + {% if has_category_permissions %}
  51 + <a href="" id="moreActions" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
  52 + <i class="fa fa-ellipsis-v" aria-hidden="true"></i>
  53 + </a>
  54 + <ul class="dropdown-menu pull-right" aria-labelledby="moreActions">
  55 + {% if request.user.is_staff %}
  56 + <li><a href="{% url 'categories:replicate' category.slug %}"><i class="fa fa-files-o fa-fw" aria-hidden="true"></i> {% trans 'Replicate' %}</a></li>
  57 + {% endif %}
  58 + <li><a href="{% url 'categories:update' category.slug %}"><i class="fa fa-pencil fa-fw" aria-hidden="true"></i> {% trans 'Edit' %}</a></li>
  59 + <li>
  60 + <a href="javascript:delete_course.get('{% url 'categories:delete' category.slug %}?view=index','#category','#modal_course')" aria-hidden="true"><i class="fa fa-trash fa-fw" aria-hidden="true"></i> {% trans 'Remove' %}</a></li>
  61 + </ul>
  62 + {% endif %}
  63 + </div>
  64 + </div>
  65 + </div>
  66 + </div>
  67 + <div id="{{category.slug}}" class="panel-collapse panel-body collapse chat-collapse" data-url="{% url 'chat:category_talks' category.id %}">
  68 + <div class="panel panel-default">
  69 + <div class="panel-body">
  70 + <div class="col-md-8">
  71 + <form action="{% url 'chat:participants_general' %}" method="GET" class="form-horizontal">
  72 + <div class="form-group">
  73 + <div class="col-md-11 col-sm-11 col-xs-11">
  74 + <input type="text" class="form-control" name="search" value="{{ search }}" placeholder="{% trans 'Search...' %}" />
  75 + </div>
  76 + <div class="col-md-1 col-sm-1 col-xs-1">
  77 + <button type="submit" class="btn btn-fab btn-fab-mini">
  78 + <i class="fa fa-search"></i>
  79 + </button>
  80 + </div>
  81 + </div>
  82 + </form>
  83 + </div>
  84 + <div class="col-md-4">
  85 + <a href="{% url 'chat:participants_category' category.id %}" onclick="getParticipants($(this)); return false;" class="pull-right btn btn-default btn-raised btn-md">{% trans 'List all participants' %}</a>
  86 + </div>
  87 + </div>
  88 + </div>
  89 +
  90 + <div class="content">
  91 + </div>
  92 + </div>
  93 + </div>
  94 + {% endif %}
  95 + {% endfor %}
  96 +
  97 + {% pagination request paginator page_obj %}
  98 + </div>
  99 + {% endif %}
  100 + </div>
  101 +
  102 + <div id="modal_course"></div>
  103 +
  104 + <div class="modal fade" id="chat-modal-info" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"></div>
  105 +
  106 + <div class="modal fade" id="chat-modal-form" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"></div>
  107 +
  108 + <script type="text/javascript" src="{% static 'js/category.js' %}"></script>
  109 + <script type="text/javascript" src="{% static 'js/chat.js' %}"></script>
  110 +{% endblock %}
0 \ No newline at end of file 111 \ No newline at end of file
chat/templates/chat/list_participants.html
@@ -17,7 +17,7 @@ @@ -17,7 +17,7 @@
17 <div id="core-subjects-options-div"> 17 <div id="core-subjects-options-div">
18 <ul class="core-subjects-options mural-tabs"> 18 <ul class="core-subjects-options mural-tabs">
19 <a href="{% url 'chat:manage_general' %}"><li data-chat="general" class="active">{% trans "General" %} (<span>{{ totals.general }}</span>)</li></a> 19 <a href="{% url 'chat:manage_general' %}"><li data-chat="general" class="active">{% trans "General" %} (<span>{{ totals.general }}</span>)</li></a>
20 - <a href=""><li data-chat="categories">{% trans "Per Category" %} (<span>{{ totals.category }}</span>)</li></a> 20 + <a href="{% url 'chat:manage_category' %}"><li data-chat="categories">{% trans "Per Category" %} (<span>{{ totals.category }}</span>)</li></a>
21 <a href=""><li data-chat="subjects">{% trans "Per Subject" %} (<span>{{ totals.subject }}</span>)</li></a> 21 <a href=""><li data-chat="subjects">{% trans "Per Subject" %} (<span>{{ totals.subject }}</span>)</li></a>
22 </ul> 22 </ul>
23 </div> 23 </div>
chat/templates/chat/talk.html
@@ -10,7 +10,7 @@ @@ -10,7 +10,7 @@
10 <span class="pull-left"> 10 <span class="pull-left">
11 <img src="{{ participant.image_url }}" /> 11 <img src="{{ participant.image_url }}" />
12 </span> 12 </span>
13 - <h4 class=" pull-left"> 13 + <h4 class="pull-left" data-breadcrumb="{% trans 'Talk with ' %}{{ participant }}">
14 <a class="status {{ status }}" title="{{ status|status_text }}"></a> 14 <a class="status {{ status }}" title="{{ status|status_text }}"></a>
15 <b>{{ participant }}</b> 15 <b>{{ participant }}</b>
16 </h4> 16 </h4>
chat/templatetags/chat_tags.py
@@ -53,7 +53,7 @@ def last_message(chat): @@ -53,7 +53,7 @@ def last_message(chat):
53 53
54 @register.filter(name = 'notifies') 54 @register.filter(name = 'notifies')
55 def notifies(chat, user): 55 def notifies(chat, user):
56 - total = ChatVisualizations.objects.filter(message__talk = chat, user = user).count() 56 + total = ChatVisualizations.objects.filter(message__talk = chat, user = user, viewed = False).count()
57 57
58 return total 58 return total
59 59
@@ -4,7 +4,10 @@ from . import views @@ -4,7 +4,10 @@ from . import views
4 urlpatterns = [ 4 urlpatterns = [
5 url(r'^$', views.GeneralIndex.as_view(), name='manage_general'), 5 url(r'^$', views.GeneralIndex.as_view(), name='manage_general'),
6 url(r'^participants/$', views.GeneralParticipants.as_view(), name='participants_general'), 6 url(r'^participants/$', views.GeneralParticipants.as_view(), name='participants_general'),
7 - url(r'^render_message/([\w_-]+)/$', views.render_message, name='render_message'), 7 + url(r'^categories/$', views.CategoryIndex.as_view(), name='manage_category'),
  8 + url(r'^category/talks/(?P<category>[\w_-]+)/$', views.CategoryTalks.as_view(), name='category_talks'),
  9 + url(r'^category/participants/(?P<category>[\w_-]+)/$', views.CategoryParticipants.as_view(), name='participants_category'),
  10 + url(r'^render_message/([\w_-]+)/([\w_-]+)/([\w_-]+)/([\w_-]+)/([\w.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4})/$', views.render_message, name='render_message'),
8 url(r'^favorite/([\w_-]+)/$', views.favorite, name='favorite'), 11 url(r'^favorite/([\w_-]+)/$', views.favorite, name='favorite'),
9 url(r'^load_messages/([\w_-]+)/$', views.load_messages, name='load_messages'), 12 url(r'^load_messages/([\w_-]+)/$', views.load_messages, name='load_messages'),
10 url(r'^talk/(?P<email>[\w.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4})/$', views.GetTalk.as_view(), name = 'talk'), 13 url(r'^talk/(?P<email>[\w.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4})/$', views.GetTalk.as_view(), name = 'talk'),
@@ -39,7 +39,7 @@ class GeneralIndex(LoginRequiredMixin, generic.ListView): @@ -39,7 +39,7 @@ class GeneralIndex(LoginRequiredMixin, generic.ListView):
39 user = self.request.user 39 user = self.request.user
40 page = self.request.GET.get('page', False) 40 page = self.request.GET.get('page', False)
41 41
42 - conversations = Conversation.objects.filter(Q(user_one = user) | Q(user_two = user)) 42 + conversations = Conversation.objects.filter((Q(user_one = user) | Q(user_two = user)) & Q(categorytalk__isnull = True) & Q(subjecttalk__isnull = True))
43 43
44 self.totals['general'] = ChatVisualizations.objects.filter(user = user, viewed = False, message__talk__generaltalk__isnull = False).count() 44 self.totals['general'] = ChatVisualizations.objects.filter(user = user, viewed = False, message__talk__generaltalk__isnull = False).count()
45 self.totals['category'] = ChatVisualizations.objects.filter(user = user, viewed = False, message__talk__categorytalk__isnull = False).count() 45 self.totals['category'] = ChatVisualizations.objects.filter(user = user, viewed = False, message__talk__categorytalk__isnull = False).count()
@@ -88,6 +88,89 @@ class GeneralParticipants(LoginRequiredMixin, generic.ListView): @@ -88,6 +88,89 @@ class GeneralParticipants(LoginRequiredMixin, generic.ListView):
88 88
89 return context 89 return context
90 90
  91 +class CategoryIndex(LoginRequiredMixin, generic.ListView):
  92 + login_url = reverse_lazy("users:login")
  93 + redirect_field_name = 'next'
  94 +
  95 + template_name = 'chat/list_category.html'
  96 + context_object_name = "categories"
  97 + paginate_by = 10
  98 +
  99 + totals = {}
  100 +
  101 + def get_queryset(self):
  102 + user = self.request.user
  103 + page = self.request.GET.get('page', False)
  104 +
  105 + if user.is_staff:
  106 + categories = Category.objects.all()
  107 + else:
  108 + categories = Category.objects.filter(Q(coordinators__pk = user.pk) | Q(subject_category__professor__pk = user.pk) | Q(subject_category__students__pk = user.pk, visible = True)).distinct()
  109 +
  110 + self.totals['general'] = ChatVisualizations.objects.filter(user = user, viewed = False, message__talk__generaltalk__isnull = False).count()
  111 + self.totals['category'] = ChatVisualizations.objects.filter(user = user, viewed = False, message__talk__categorytalk__isnull = False).count()
  112 + self.totals['subject'] = ChatVisualizations.objects.filter(user = user, viewed = False, message__talk__subjecttalk__isnull = False).count()
  113 +
  114 + return categories
  115 +
  116 + def get_context_data(self, **kwargs):
  117 + context = super(CategoryIndex, self).get_context_data(**kwargs)
  118 +
  119 + context['title'] = _('Messages per Category')
  120 + context['totals'] = self.totals
  121 + context['chat_menu_active'] = 'subjects_menu_active'
  122 +
  123 + return context
  124 +
  125 +class CategoryTalks(LoginRequiredMixin, generic.ListView):
  126 + login_url = reverse_lazy("users:login")
  127 + redirect_field_name = 'next'
  128 +
  129 + template_name = 'chat/_talks_list.html'
  130 + context_object_name = "conversations"
  131 +
  132 + def get_queryset(self):
  133 + user = self.request.user
  134 + cat = self.kwargs.get('category', 0)
  135 +
  136 + conversations = CategoryTalk.objects.filter((Q(user_one = user) | Q(user_two = user)) & Q(space__id = cat))
  137 +
  138 + print(cat)
  139 +
  140 + return conversations
  141 +
  142 + def get_context_data(self, **kwargs):
  143 + context = super(CategoryTalks, self).get_context_data(**kwargs)
  144 +
  145 + context['space'] = self.kwargs.get('category', 0)
  146 + context['space_type'] = 'category'
  147 +
  148 + return context
  149 +
  150 +class CategoryParticipants(LoginRequiredMixin, generic.ListView):
  151 + login_url = reverse_lazy("users:login")
  152 + redirect_field_name = 'next'
  153 +
  154 + template_name = 'chat/_participants.html'
  155 + context_object_name = "participants"
  156 +
  157 + def get_queryset(self):
  158 + user = self.request.user
  159 + cat = self.kwargs.get('category', 0)
  160 + search = self.request.GET.get('search', '')
  161 +
  162 + users = User.objects.filter((Q(username__icontains = search) | Q(last_name__icontains = search) | Q(social_name__icontains = search) | Q(email__icontains = search)) & (Q(is_staff = True) | Q(subject_student__category__id = cat) | Q(professors__category__id = cat) | Q(coordinators__id = cat))).distinct().order_by('social_name','username').exclude(email = user.email)
  163 +
  164 + return users
  165 +
  166 + def get_context_data(self, **kwargs):
  167 + context = super(CategoryParticipants, self).get_context_data(**kwargs)
  168 +
  169 + context['space'] = self.kwargs.get('category', 0)
  170 + context['space_type'] = 'category'
  171 +
  172 + return context
  173 +
91 class ParticipantProfile(LoginRequiredMixin, generic.DetailView): 174 class ParticipantProfile(LoginRequiredMixin, generic.DetailView):
92 login_url = reverse_lazy("users:login") 175 login_url = reverse_lazy("users:login")
93 redirect_field_name = 'next' 176 redirect_field_name = 'next'
@@ -129,6 +212,9 @@ class GetTalk(LoginRequiredMixin, generic.ListView): @@ -129,6 +212,9 @@ class GetTalk(LoginRequiredMixin, generic.ListView):
129 212
130 messages = TalkMessages.objects.filter(talk = talk).order_by('-create_date') 213 messages = TalkMessages.objects.filter(talk = talk).order_by('-create_date')
131 214
  215 + views = ChatVisualizations.objects.filter(Q(user = user) & Q(viewed = False) & (Q(message__talk = talk)))
  216 + views.update(viewed = True, date_viewed = datetime.now())
  217 +
132 return messages 218 return messages
133 219
134 def get_context_data(self, **kwargs): 220 def get_context_data(self, **kwargs):
@@ -141,7 +227,7 @@ class GetTalk(LoginRequiredMixin, generic.ListView): @@ -141,7 +227,7 @@ class GetTalk(LoginRequiredMixin, generic.ListView):
141 context['space'] = self.request.GET.get('space', '0') 227 context['space'] = self.request.GET.get('space', '0')
142 context['space_type'] = self.request.GET.get('space_type', 'general') 228 context['space_type'] = self.request.GET.get('space_type', 'general')
143 context['form'] = ChatMessageForm() 229 context['form'] = ChatMessageForm()
144 - context['form_url'] = reverse_lazy('chat:create', args = (), kwargs = {'email': self.kwargs.get('email', ''), 'talk_id': self.talk_id, 'space': self.kwargs.get('space', '0'), 'space_type': self.kwargs.get('space_type', 'general')}) 230 + context['form_url'] = reverse_lazy('chat:create', args = (), kwargs = {'email': self.kwargs.get('email', ''), 'talk_id': self.talk_id, 'space': self.request.GET.get('space', '0'), 'space_type': self.request.GET.get('space_type', 'general')})
145 231
146 return context 232 return context
147 233
@@ -216,17 +302,19 @@ class SendMessage(LoginRequiredMixin, generic.edit.CreateView): @@ -216,17 +302,19 @@ class SendMessage(LoginRequiredMixin, generic.edit.CreateView):
216 return context 302 return context
217 303
218 def get_success_url(self): 304 def get_success_url(self):
219 - return reverse_lazy('chat:render_message', args = (self.object.id, )) 305 + return reverse_lazy('chat:render_message', args = (self.object.id, self.object.talk.id, self.kwargs.get('space', '0'), self.kwargs.get('space_type', 'general'), self.kwargs.get('email', ''),))
220 306
221 -def render_message(request, talk_msg): 307 +def render_message(request, talk_msg, talk_id, space, space_type, email):
222 msg = get_object_or_404(TalkMessages, id = talk_msg) 308 msg = get_object_or_404(TalkMessages, id = talk_msg)
223 309
224 context = {} 310 context = {}
225 context['talk_msg'] = msg 311 context['talk_msg'] = msg
226 312
  313 + form_url = reverse_lazy('chat:create', args = (), kwargs = {'email': email, 'talk_id': talk_id, 'space': space, 'space_type': space_type})
  314 +
227 html = render_to_string("chat/_message.html", context, request) 315 html = render_to_string("chat/_message.html", context, request)
228 316
229 - return JsonResponse({'view': html, 'new_id': msg.id, 'talk_id': msg.talk.id}) 317 + return JsonResponse({'view': html, 'new_id': msg.id, 'talk_id': msg.talk.id, 'new_form_url': form_url})
230 318
231 @login_required 319 @login_required
232 def favorite(request, message): 320 def favorite(request, message):
@@ -270,11 +358,6 @@ def load_messages(request, talk): @@ -270,11 +358,6 @@ def load_messages(request, talk):
270 358
271 has_page = request.GET.get('page', None) 359 has_page = request.GET.get('page', None)
272 360
273 - if has_page is None:  
274 - views = ChatVisualizations.objects.filter(Q(user = user) & Q(viewed = False) & (Q(message__talk__id = talk)))  
275 - n_views = views.count()  
276 - views.update(viewed = True, date_viewed = datetime.now())  
277 -  
278 paginator = Paginator(messages.order_by("-create_date"), 20) 361 paginator = Paginator(messages.order_by("-create_date"), 20)
279 362
280 try: 363 try:
@@ -291,4 +374,4 @@ def load_messages(request, talk): @@ -291,4 +374,4 @@ def load_messages(request, talk):
291 374
292 response = render_to_string("chat/_list_messages.html", context, request) 375 response = render_to_string("chat/_list_messages.html", context, request)
293 376
294 - return JsonResponse({"messages": response, "unviewed": n_views, "count": messages.count(), "num_pages": paginator.num_pages, "num_page": page_obj.number})  
295 \ No newline at end of file 377 \ No newline at end of file
  378 + return JsonResponse({"messages": response, "count": messages.count(), "num_pages": paginator.num_pages, "num_page": page_obj.number})
296 \ No newline at end of file 379 \ No newline at end of file
pendencies/migrations/0007_auto_20170323_1535.py 0 → 100644
@@ -0,0 +1,20 @@ @@ -0,0 +1,20 @@
  1 +# -*- coding: utf-8 -*-
  2 +# Generated by Django 1.10.4 on 2017-03-23 18:35
  3 +from __future__ import unicode_literals
  4 +
  5 +from django.db import migrations, models
  6 +
  7 +
  8 +class Migration(migrations.Migration):
  9 +
  10 + dependencies = [
  11 + ('pendencies', '0006_auto_20170224_0023'),
  12 + ]
  13 +
  14 + operations = [
  15 + migrations.AlterField(
  16 + model_name='pendencies',
  17 + name='action',
  18 + field=models.CharField(blank=True, choices=[('view', 'Visualize'), ('create', 'Create'), ('answer', 'Answer'), ('access', 'Access'), ('participate', 'Participate'), ('finish', 'Finish'), ('submit', 'Submit')], max_length=100, verbose_name='Action'),
  19 + ),
  20 + ]
pendencies/models.py
@@ -5,8 +5,8 @@ from django.utils.translation import ugettext_lazy as _ @@ -5,8 +5,8 @@ from django.utils.translation import ugettext_lazy as _
5 from topics.models import Resource 5 from topics.models import Resource
6 6
7 class Pendencies(models.Model): 7 class Pendencies(models.Model):
8 - action = models.CharField(_('Action'), max_length = 100, choices = (("view", _("Visualize")), ("create", _("Create")), ("answer", _("Answer")), ("access", _("Access")), ("finish", _("Finish")), ("submit", _("Submit"))), blank = True) 8 + action = models.CharField(_('Action'), max_length = 100, choices = (("view", _("Visualize")), ("create", _("Create")), ("answer", _("Answer")), ("access", _("Access")), ("participate", _("Participate")), ("finish", _("Finish")), ("submit", _("Submit"))), blank = True)
9 begin_date = models.DateTimeField(_('Begin Date'), null = True, blank = True) 9 begin_date = models.DateTimeField(_('Begin Date'), null = True, blank = True)
10 end_date = models.DateTimeField(_('End Date'), null = True, blank = True) 10 end_date = models.DateTimeField(_('End Date'), null = True, blank = True)
11 limit_date = models.DateTimeField(_('Limit Date'), null = True, blank = True) 11 limit_date = models.DateTimeField(_('Limit Date'), null = True, blank = True)
12 - resource = models.ForeignKey(Resource, verbose_name = _('Resource'), related_name = 'pendencies_resource', null = True)  
13 \ No newline at end of file 12 \ No newline at end of file
  13 + resource = models.ForeignKey(Resource, verbose_name = _('Resource'), related_name = 'pendencies_resource', null = True)
webconference/forms.py
@@ -2,14 +2,19 @@ @@ -2,14 +2,19 @@
2 from django import forms 2 from django import forms
3 from django.utils.translation import ugettext_lazy as _ 3 from django.utils.translation import ugettext_lazy as _
4 from django.utils.html import strip_tags 4 from django.utils.html import strip_tags
  5 +from django.forms.models import inlineformset_factory
5 import datetime 6 import datetime
6 7
7 from subjects.models import Tag 8 from subjects.models import Tag
8 9
9 from .models import Webconference, ConferenceSettings 10 from .models import Webconference, ConferenceSettings
10 11
  12 +from pendencies.forms import PendenciesForm
  13 +from pendencies.models import Pendencies
  14 +
11 class WebconferenceForm(forms.ModelForm): 15 class WebconferenceForm(forms.ModelForm):
12 subject = None 16 subject = None
  17 + control_subject = forms.CharField(widget = forms.HiddenInput())
13 18
14 def __init__(self, *args, **kwargs): 19 def __init__(self, *args, **kwargs):
15 super(WebconferenceForm, self).__init__(*args, **kwargs) 20 super(WebconferenceForm, self).__init__(*args, **kwargs)
@@ -20,6 +25,8 @@ class WebconferenceForm(forms.ModelForm): @@ -20,6 +25,8 @@ class WebconferenceForm(forms.ModelForm):
20 self.subject = self.instance.topic.subject 25 self.subject = self.instance.topic.subject
21 self.initial['tags'] = ", ".join(self.instance.tags.all().values_list("name", flat = True)) 26 self.initial['tags'] = ", ".join(self.instance.tags.all().values_list("name", flat = True))
22 27
  28 + self.initial['control_subject'] = self.subject.id
  29 +
23 self.fields['students'].queryset = self.subject.students.all() 30 self.fields['students'].queryset = self.subject.students.all()
24 self.fields['groups'].queryset = self.subject.group_subject.all() 31 self.fields['groups'].queryset = self.subject.group_subject.all()
25 32
@@ -105,6 +112,10 @@ class WebconferenceForm(forms.ModelForm): @@ -105,6 +112,10 @@ class WebconferenceForm(forms.ModelForm):
105 112
106 return self.instance 113 return self.instance
107 114
  115 +class WebConferenceUpdateForm(WebconferenceForm):
  116 +
  117 + def clean_start(self):
  118 + return self.cleaned_data['start']
108 119
109 120
110 class SettingsForm(forms.ModelForm): 121 class SettingsForm(forms.ModelForm):
@@ -120,3 +131,5 @@ class SettingsForm(forms.ModelForm): @@ -120,3 +131,5 @@ class SettingsForm(forms.ModelForm):
120 help_texts = { 131 help_texts = {
121 'domain': _('The domain of the jitsi server, e.g. meet.jit.si'), 132 'domain': _('The domain of the jitsi server, e.g. meet.jit.si'),
122 } 133 }
  134 +
  135 +InlinePendenciesFormset = inlineformset_factory(Webconference, Pendencies, form = PendenciesForm, extra = 1, max_num = 3, validate_max = True, can_delete = True)
webconference/locale/pt_BR/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid &quot;&quot; @@ -8,7 +8,7 @@ msgid &quot;&quot;
8 msgstr "" 8 msgstr ""
9 "Project-Id-Version: PACKAGE VERSION\n" 9 "Project-Id-Version: PACKAGE VERSION\n"
10 "Report-Msgid-Bugs-To: \n" 10 "Report-Msgid-Bugs-To: \n"
11 -"POT-Creation-Date: 2017-03-22 17:37-0300\n" 11 +"POT-Creation-Date: 2017-03-23 13:53-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"
@@ -62,7 +62,6 @@ msgid &quot;End date/hour&quot; @@ -62,7 +62,6 @@ msgid &quot;End date/hour&quot;
62 msgstr "Data/hora de termino" 62 msgstr "Data/hora de termino"
63 63
64 #: webconference/models.py:13 64 #: webconference/models.py:13
65 -#: webconference/templates/webconference/jitsi.html:6  
66 msgid "Web Conference" 65 msgid "Web Conference"
67 msgstr "Web Conferência" 66 msgstr "Web Conferência"
68 67
@@ -122,7 +121,7 @@ msgid &quot;Settings: Conference&quot; @@ -122,7 +121,7 @@ msgid &quot;Settings: Conference&quot;
122 msgstr "Configurações: Web Conferência" 121 msgstr "Configurações: Web Conferência"
123 122
124 #: webconference/templates/webconference/create.html:20 123 #: webconference/templates/webconference/create.html:20
125 -#: webconference/views.py:246 124 +#: webconference/views.py:319
126 msgid "Create Web Conference" 125 msgid "Create Web Conference"
127 msgstr "Criar Web Conferência" 126 msgstr "Criar Web Conferência"
128 127
@@ -135,18 +134,18 @@ msgstr &quot;Editar: &quot; @@ -135,18 +134,18 @@ msgstr &quot;Editar: &quot;
135 msgid "Participate" 134 msgid "Participate"
136 msgstr "Participar" 135 msgstr "Participar"
137 136
138 -#: webconference/views.py:49 137 +#: webconference/views.py:48 webconference/views.py:93
139 #, python-format 138 #, python-format
140 msgid "%s - Web Conference" 139 msgid "%s - Web Conference"
141 msgstr "%s - Web Conferência" 140 msgstr "%s - Web Conferência"
142 141
143 -#: webconference/views.py:175 webconference/views.py:187  
144 -#: webconference/views.py:306 webconference/views.py:308  
145 -#: webconference/views.py:324 webconference/views.py:326 142 +#: webconference/views.py:247 webconference/views.py:259
  143 +#: webconference/views.py:377 webconference/views.py:379
  144 +#: webconference/views.py:395 webconference/views.py:397
146 msgid "Visualize" 145 msgid "Visualize"
147 msgstr "Visualizar" 146 msgstr "Visualizar"
148 147
149 -#: webconference/views.py:257 148 +#: webconference/views.py:330
150 #, fuzzy, python-format 149 #, fuzzy, python-format
151 #| msgid "" 150 #| msgid ""
152 #| "The Web conference '%s' was added to the Topic '%s' of the virtual " 151 #| "The Web conference '%s' was added to the Topic '%s' of the virtual "
@@ -158,17 +157,17 @@ msgstr &quot;&quot; @@ -158,17 +157,17 @@ msgstr &quot;&quot;
158 "A web conferência '%s' foi adicionada ao tópico '%s' do ambiente virtual " 157 "A web conferência '%s' foi adicionada ao tópico '%s' do ambiente virtual "
159 "'%s' com sucesso!" 158 "'%s' com sucesso!"
160 159
161 -#: webconference/views.py:370 160 +#: webconference/views.py:441
162 msgid "Update Web Conference" 161 msgid "Update Web Conference"
163 msgstr "Atualizar a web conferência" 162 msgstr "Atualizar a web conferência"
164 163
165 -#: webconference/views.py:381 164 +#: webconference/views.py:452
166 #, fuzzy, python-format 165 #, fuzzy, python-format
167 #| msgid "Security settings updated successfully!" 166 #| msgid "Security settings updated successfully!"
168 msgid "The Web conference \"%s\" was updated successfully!" 167 msgid "The Web conference \"%s\" was updated successfully!"
169 msgstr "A web conferência '%s' foi atualizada com sucesso!" 168 msgstr "A web conferência '%s' foi atualizada com sucesso!"
170 169
171 -#: webconference/views.py:419 170 +#: webconference/views.py:488
172 #, python-format 171 #, python-format
173 msgid "" 172 msgid ""
174 "The web conference \"%s\" was removed successfully from virtual environment " 173 "The web conference \"%s\" was removed successfully from virtual environment "
@@ -176,13 +175,13 @@ msgid &quot;&quot; @@ -176,13 +175,13 @@ msgid &quot;&quot;
176 msgstr "" 175 msgstr ""
177 "A web conferência '%s' foi removida com sucesso do ambiente virtual '%s'!" 176 "A web conferência '%s' foi removida com sucesso do ambiente virtual '%s'!"
178 177
179 -#: webconference/views.py:453 178 +#: webconference/views.py:522
180 #, fuzzy 179 #, fuzzy
181 #| msgid "Security settings updated successfully!" 180 #| msgid "Security settings updated successfully!"
182 msgid "Conference settings updated successfully!" 181 msgid "Conference settings updated successfully!"
183 msgstr "Configurações de segurança atualizadas com sucesso!" 182 msgstr "Configurações de segurança atualizadas com sucesso!"
184 183
185 -#: webconference/views.py:460 184 +#: webconference/views.py:529
186 #, fuzzy 185 #, fuzzy
187 #| msgid "Conference Setting" 186 #| msgid "Conference Setting"
188 msgid "Web Conference Settings" 187 msgid "Web Conference Settings"
webconference/migrations/0003_auto_20170323_1535.py 0 → 100644
@@ -0,0 +1,19 @@ @@ -0,0 +1,19 @@
  1 +# -*- coding: utf-8 -*-
  2 +# Generated by Django 1.10.4 on 2017-03-23 18:35
  3 +from __future__ import unicode_literals
  4 +
  5 +from django.db import migrations
  6 +
  7 +
  8 +class Migration(migrations.Migration):
  9 +
  10 + dependencies = [
  11 + ('webconference', '0002_conferencesettings'),
  12 + ]
  13 +
  14 + operations = [
  15 + migrations.AlterModelOptions(
  16 + name='conferencesettings',
  17 + options={'verbose_name': 'Web Conference Setting', 'verbose_name_plural': 'Web Conferences Setting'},
  18 + ),
  19 + ]
webconference/templates/webconference/_form.html
@@ -143,98 +143,104 @@ @@ -143,98 +143,104 @@
143 </div> 143 </div>
144 </div> 144 </div>
145 <div id="notifications" class="panel-collapse collapse"> 145 <div id="notifications" class="panel-collapse collapse">
146 -  
147 - <div class="notifies">  
148 - <div style="text-align:left">  
149 - {% render_field pendencies_form.id %}  
150 - {% render_field pendencies_form.resource %}  
151 - {% render_field pendencies_form.subject class='pend_subj' %}  
152 -  
153 - <div class="form-group{% if pendencies_form.has_error %} has-error {% endif %} row">  
154 - <label for="{{ pendencies_form.action.auto_id }}" class="pull-left action_label contol-label">  
155 - {% trans 'Action not performed by the user' %}:  
156 - </label>  
157 - <div class="col-md-3">  
158 - {% render_field pendencies_form.action class='form-control' %}  
159 - </div>  
160 -  
161 - <br clear="all" />  
162 -  
163 - <span id="helpBlock" class="help-block">{{ pendencies_form.action.help_text }}</span>  
164 -  
165 - {% if pendencies_form.action.errors %}  
166 - <div class="alert alert-danger alert-dismissible" role="alert">  
167 - <button type="button" class="close" data-dismiss="alert" aria-label="Close">  
168 - <span aria-hidden="true">&times;</span>  
169 - </button>  
170 - <ul>  
171 - {% for error in pendencies_form.action.errors %}  
172 - <li>{{ error }}</li>  
173 - {% endfor %}  
174 - </ul>  
175 - </div>  
176 - {% endif %}  
177 - </div>  
178 - <br clear="all" />  
179 - <div class="row">  
180 - <div class="col-md-12">  
181 - <p>{% trans 'Wished period' %}: </p>  
182 - </div>  
183 - </div>  
184 - <div class="form-group{% if pendencies_form.has_error %} has-error {% endif %} row">  
185 - <div class="col-lg-2 col-md-2 col-sm-2 col-xs-3 checkbox">  
186 - <label>  
187 - {% render_field pendencies_form.begin_date_check class="begin_date" %} {{ pendencies_form.begin_date.label }}  
188 - </label>  
189 - </div>  
190 - <div class="col-lg-4 col-md-4 col-sm-4 col-xs-4">  
191 - {% render_field pendencies_form.begin_date class='form-control datetime-picker begin_date_input' %}  
192 - </div>  
193 - </div>  
194 - <div class="row">  
195 - <span id="helpBlock" class="help-block">{{ pendencies_form.begin_date.help_text }}</span>  
196 -  
197 - {% if pendencies_form.begin_date.errors %}  
198 - <div class="alert alert-danger alert-dismissible" role="alert">  
199 - <button type="button" class="close" data-dismiss="alert" aria-label="Close">  
200 - <span aria-hidden="true">&times;</span>  
201 - </button>  
202 - <ul>  
203 - {% for error in pendencies_form.begin_date.errors %}  
204 - <li>{{ error }}</li>  
205 - {% endfor %}  
206 - </ul>  
207 - </div>  
208 - {% endif %}  
209 - </div>  
210 - <div class="form-group{% if pendencies_form.has_error %} has-error {% endif %} row">  
211 - <div class="col-lg-2 col-md-2 col-sm-2 col-xs-3 checkbox">  
212 - <label>  
213 - {% render_field pendencies_form.end_date_check class="end_date" %} {{ pendencies_form.end_date.label }}  
214 - </label>  
215 - </div>  
216 - <div class="col-lg-4 col-md-4 col-sm-4 col-xs-4">  
217 - {% render_field pendencies_form.end_date class='form-control datetime-picker end_date_input' %}  
218 - </div>  
219 - </div>  
220 - <div class="row">  
221 - <span id="helpBlock" class="help-block">{{ pendencies_form.end_date.help_text }}</span>  
222 -  
223 - {% if pendencies_form.end_date.errors %}  
224 - <div class="alert alert-danger alert-dismissible" role="alert">  
225 - <button type="button" class="close" data-dismiss="alert" aria-label="Close">  
226 - <span aria-hidden="true">&times;</span>  
227 - </button>  
228 - <ul>  
229 - {% for error in pendencies_form.end_date.errors %}  
230 - <li>{{ error }}</li>  
231 - {% endfor %}  
232 - </ul>  
233 - </div>  
234 - {% endif %}  
235 - </div> 146 + {{ pendencies_form.management_form }}
  147 + {{ pendencies_form.non_form_errors }}
  148 +
  149 + {% for notify in pendencies_form %}
  150 + <div class="notifies">
  151 + <div style="text-align:left">
  152 + {% render_field notify.id %}
  153 + {% render_field notify.resource %}
  154 + {% render_field notify.subject class='pend_subj' %}
  155 +
  156 + {% if notify.instance.pk %}{{ notify.DELETE }}{% endif %}
  157 +
  158 + <div class="form-group{% if notify.has_error %} has-error {% endif %} row">
  159 + <label for="{{ notify.action.auto_id }}" class="pull-left action_label contol-label">
  160 + {% trans 'Action not performed by the user' %}:
  161 + </label>
  162 + <div class="col-md-3">
  163 + {% render_field notify.action class='form-control' %}
  164 + </div>
  165 +
  166 + <br clear="all" />
  167 +
  168 + <span id="helpBlock" class="help-block">{{ notify.action.help_text }}</span>
  169 +
  170 + {% if notify.action.errors %}
  171 + <div class="alert alert-danger alert-dismissible" role="alert">
  172 + <button type="button" class="close" data-dismiss="alert" aria-label="Close">
  173 + <span aria-hidden="true">&times;</span>
  174 + </button>
  175 + <ul>
  176 + {% for error in notify.action.errors %}
  177 + <li>{{ error }}</li>
  178 + {% endfor %}
  179 + </ul>
  180 + </div>
  181 + {% endif %}
  182 + </div>
  183 + <br clear="all" />
  184 + <div class="row">
  185 + <div class="col-md-12">
  186 + <p>{% trans 'Wished period' %}: </p>
  187 + </div>
  188 + </div>
  189 + <div class="form-group{% if notify.has_error %} has-error {% endif %} row">
  190 + <div class="col-lg-2 col-md-2 col-sm-2 col-xs-3 checkbox">
  191 + <label>
  192 + {% render_field notify.begin_date_check class="begin_date" %} {{ notify.begin_date.label }}
  193 + </label>
  194 + </div>
  195 + <div class="col-lg-4 col-md-4 col-sm-4 col-xs-4">
  196 + {% render_field notify.begin_date class='form-control datetime-picker begin_date_input' %}
  197 + </div>
  198 + </div>
  199 + <div class="row">
  200 + <span id="helpBlock" class="help-block">{{ notify.begin_date.help_text }}</span>
  201 +
  202 + {% if notify.begin_date.errors %}
  203 + <div class="alert alert-danger alert-dismissible" role="alert">
  204 + <button type="button" class="close" data-dismiss="alert" aria-label="Close">
  205 + <span aria-hidden="true">&times;</span>
  206 + </button>
  207 + <ul>
  208 + {% for error in notify.begin_date.errors %}
  209 + <li>{{ error }}</li>
  210 + {% endfor %}
  211 + </ul>
  212 + </div>
  213 + {% endif %}
  214 + </div>
  215 + <div class="form-group{% if notify.has_error %} has-error {% endif %} row">
  216 + <div class="col-lg-2 col-md-2 col-sm-2 col-xs-3 checkbox">
  217 + <label>
  218 + {% render_field notify.end_date_check class="end_date" %} {{ notify.end_date.label }}
  219 + </label>
  220 + </div>
  221 + <div class="col-lg-4 col-md-4 col-sm-4 col-xs-4">
  222 + {% render_field notify.end_date class='form-control datetime-picker end_date_input' %}
  223 + </div>
  224 + </div>
  225 + <div class="row">
  226 + <span id="helpBlock" class="help-block">{{ notify.end_date.help_text }}</span>
  227 +
  228 + {% if notify.end_date.errors %}
  229 + <div class="alert alert-danger alert-dismissible" role="alert">
  230 + <button type="button" class="close" data-dismiss="alert" aria-label="Close">
  231 + <span aria-hidden="true">&times;</span>
  232 + </button>
  233 + <ul>
  234 + {% for error in notify.end_date.errors %}
  235 + <li>{{ error }}</li>
  236 + {% endfor %}
  237 + </ul>
  238 + </div>
  239 + {% endif %}
  240 + </div>
  241 + </div>
236 </div> 242 </div>
237 - </div> 243 + {% endfor %}
238 </div> 244 </div>
239 </div> 245 </div>
240 246
@@ -274,7 +280,7 @@ @@ -274,7 +280,7 @@
274 {% endif %} 280 {% endif %}
275 </div> 281 </div>
276 282
277 - <p><em>{% trans 'Attribute students to web conference' %}:</em></p> 283 + <p><em>{% trans 'Attribute students to YouTube Video' %}:</em></p>
278 {% render_field form.students class='form-control' %} 284 {% render_field form.students class='form-control' %}
279 285
280 <span id="helpBlock" class="help-block">{{ form.students.help_text }}</span> 286 <span id="helpBlock" class="help-block">{{ form.students.help_text }}</span>
@@ -294,7 +300,7 @@ @@ -294,7 +300,7 @@
294 300
295 <br clear="all" /> 301 <br clear="all" />
296 302
297 - <p><em>{% trans 'Attribute groups to web conference' %}:</em></p> 303 + <p><em>{% trans 'Attribute groups to YouTube Video' %}:</em></p>
298 {% render_field form.groups class='form-control' %} 304 {% render_field form.groups class='form-control' %}
299 305
300 <span id="helpBlock" class="help-block">{{ form.groups.help_text }}</span> 306 <span id="helpBlock" class="help-block">{{ form.groups.help_text }}</span>
@@ -369,16 +375,53 @@ @@ -369,16 +375,53 @@
369 </form> 375 </form>
370 <script type="text/javascript"> 376 <script type="text/javascript">
371 $(function() { 377 $(function() {
372 - var begin_val = $('.begin_date_input').val(),  
373 - end_val = $('.end_date_input').val();  
374 -  
375 - if (begin_val != '') {  
376 - $(".begin_date").prop('checked', true);  
377 - }  
378 -  
379 - if (end_val != '') {  
380 - $(".end_date").prop('checked', true);  
381 - } 378 + $('.notifies').formset({
  379 + addText: '{% trans "Add new notification" %}',
  380 + deleteText: '{% trans "Remove this" %}',
  381 + prefix: '{{ pendencies_form.prefix }}',
  382 + added: function (row) {
  383 + var locale = navigator.language || navigator.userLanguage;
  384 +
  385 + $(row).find('.datetime-picker').each(function () {
  386 + $(this).datetimepicker({
  387 + locale: locale
  388 + });
  389 + });
  390 + $('.begin_date_input').on('click', function () {
  391 + var checkbox = $(this).parent().parent().find('.begin_date');
  392 + $(checkbox).prop('checked', true);
  393 + });
  394 + $('.end_date_input').on('click', function () {
  395 + var checkbox = $(this).parent().parent().find('.end_date');
  396 + $(checkbox).prop('checked', true);
  397 + });
  398 +
  399 + var subject = $("#id_control_subject").val();
  400 +
  401 + $(row).find('.pend_subj').val(subject);
  402 + }
  403 + });
  404 +
  405 + $('.begin_date_input').each(function () {
  406 + console.log($(this).val());
  407 + if ($(this).val() != '') {
  408 + $(this).parent().parent().find('.begin_date').prop('checked', true);
  409 + } else {
  410 + $(this).parent().parent().find('.begin_date').prop('checked', false);
  411 + }
  412 + });
  413 +
  414 + $('.end_date_input').each(function () {
  415 + if ($(this).val() != '') {
  416 + $(this).parent().parent().find('.end_date').prop('checked', true);
  417 + } else {
  418 + $(this).parent().parent().find('.end_date').prop('checked', false);
  419 + }
  420 + });
  421 +
  422 + var subject = $("#id_control_subject").val();
  423 +
  424 + $('.pend_subj').val(subject);
382 425
383 {% if not pendencies_form.is_valid and pendencies_form.is_bound %} 426 {% if not pendencies_form.is_valid and pendencies_form.is_bound %}
384 $("#notifications").collapse('toggle'); 427 $("#notifications").collapse('toggle');
webconference/templates/webconference/create.html
@@ -10,6 +10,7 @@ @@ -10,6 +10,7 @@
10 {% block javascript %} 10 {% block javascript %}
11 {{block.super}} 11 {{block.super}}
12 <script type="text/javascript" src="{% static 'js/bootstrap-tagsinput.js' %} "></script> 12 <script type="text/javascript" src="{% static 'js/bootstrap-tagsinput.js' %} "></script>
  13 + <script type="text/javascript" src="{% static 'js/jquery.formset.js' %} "></script>
13 {% endblock %} 14 {% endblock %}
14 15
15 {% block breadcrumbs %} 16 {% block breadcrumbs %}
webconference/templates/webconference/jitsi.html
@@ -60,7 +60,7 @@ @@ -60,7 +60,7 @@
60 var repeater = setInterval(function () { 60 var repeater = setInterval(function () {
61 $.ajax({ 61 $.ajax({
62 method: "GET", 62 method: "GET",
63 - url: "{% url 'webconferences:participando'%}", 63 + url: "{% url 'webconferences:participating'%}",
64 dataType: 'json', 64 dataType: 'json',
65 data: {'slug':'{{name_room}}'}, 65 data: {'slug':'{{name_room}}'},
66 success: function(response) { 66 success: function(response) {
webconference/templates/webconference/update.html
@@ -10,6 +10,7 @@ @@ -10,6 +10,7 @@
10 {% block javascript %} 10 {% block javascript %}
11 {{block.super}} 11 {{block.super}}
12 <script type="text/javascript" src="{% static 'js/bootstrap-tagsinput.js' %} "></script> 12 <script type="text/javascript" src="{% static 'js/bootstrap-tagsinput.js' %} "></script>
  13 + <script type="text/javascript" src="{% static 'js/jquery.formset.js' %} "></script>
13 {% endblock %} 14 {% endblock %}
14 15
15 {% block breadcrumbs %} 16 {% block breadcrumbs %}
webconference/urls.py
@@ -12,6 +12,6 @@ urlpatterns = [ @@ -12,6 +12,6 @@ urlpatterns = [
12 url(r'^view/(?P<slug>[\w_-]+)/$', views.InsideView.as_view(), name = 'view'), 12 url(r'^view/(?P<slug>[\w_-]+)/$', views.InsideView.as_view(), name = 'view'),
13 url(r'^conference/(?P<slug>[\w_-]+)/$',views.Conference.as_view(), name = 'conference'), 13 url(r'^conference/(?P<slug>[\w_-]+)/$',views.Conference.as_view(), name = 'conference'),
14 url(r'^finish/$',views.finish, name = 'exit'), 14 url(r'^finish/$',views.finish, name = 'exit'),
15 - url(r'^participando/$',views.participando, name = 'participando'), 15 + url(r'^participating/$',views.participating, name = 'participating'),
16 url(r'^settings/$', views.ConferenceSettings.as_view(), name = 'settings'), 16 url(r'^settings/$', views.ConferenceSettings.as_view(), name = 'settings'),
17 ] 17 ]
webconference/views.py
@@ -18,7 +18,7 @@ from topics.models import Topic @@ -18,7 +18,7 @@ from topics.models import Topic
18 from pendencies.forms import PendenciesForm 18 from pendencies.forms import PendenciesForm
19 from braces import views as braces_mixins 19 from braces import views as braces_mixins
20 20
21 -from .forms import WebconferenceForm, SettingsForm 21 +from .forms import WebconferenceForm, SettingsForm, InlinePendenciesFormset, WebConferenceUpdateForm
22 from .models import Webconference, ConferenceSettings as Settings 22 from .models import Webconference, ConferenceSettings as Settings
23 23
24 class NewWindowView(LoginRequiredMixin,LogMixin, generic.DetailView): 24 class NewWindowView(LoginRequiredMixin,LogMixin, generic.DetailView):
@@ -120,8 +120,8 @@ class Conference(LoginRequiredMixin,LogMixin,generic.TemplateView): @@ -120,8 +120,8 @@ class Conference(LoginRequiredMixin,LogMixin,generic.TemplateView):
120 120
121 return context 121 return context
122 122
123 -@log_decorator('resources', 'participando', 'webconference')  
124 -def participando(request): 123 +@log_decorator('resources', 'participating', 'webconference')
  124 +def participating(request):
125 webconference = get_object_or_404(Webconference, slug = request.GET['slug']) 125 webconference = get_object_or_404(Webconference, slug = request.GET['slug'])
126 log_context = {} 126 log_context = {}
127 log_context['category_id'] = webconference.topic.subject.category.id 127 log_context['category_id'] = webconference.topic.subject.category.id
@@ -142,7 +142,7 @@ def participando(request): @@ -142,7 +142,7 @@ def participando(request):
142 142
143 return JsonResponse({'message':'ok'}) 143 return JsonResponse({'message':'ok'})
144 144
145 -@log_decorator('resources', 'finish', 'webconference') 145 +@log_decorator('resources', 'participate', 'webconference')
146 def finish(request): 146 def finish(request):
147 147
148 webconference = get_object_or_404(Webconference, slug = request.GET['roomName']) 148 webconference = get_object_or_404(Webconference, slug = request.GET['roomName'])
@@ -244,7 +244,8 @@ class CreateView(LoginRequiredMixin, LogMixin, generic.edit.CreateView): @@ -244,7 +244,8 @@ class CreateView(LoginRequiredMixin, LogMixin, generic.edit.CreateView):
244 244
245 slug = self.kwargs.get('slug', '') 245 slug = self.kwargs.get('slug', '')
246 topic = get_object_or_404(Topic, slug = slug) 246 topic = get_object_or_404(Topic, slug = slug)
247 - pendencies_form = PendenciesForm(initial = {'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize"))]}) 247 + pendencies_form = InlinePendenciesFormset(initial = [{'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize")), ("participate", _("Participate"))]}])
  248 + print (pendencies_form)
248 return self.render_to_response(self.get_context_data(form = form, pendencies_form = pendencies_form)) 249 return self.render_to_response(self.get_context_data(form = form, pendencies_form = pendencies_form))
249 250
250 def post(self, request, *args, **kwargs): 251 def post(self, request, *args, **kwargs):
@@ -256,12 +257,12 @@ class CreateView(LoginRequiredMixin, LogMixin, generic.edit.CreateView): @@ -256,12 +257,12 @@ class CreateView(LoginRequiredMixin, LogMixin, generic.edit.CreateView):
256 slug = self.kwargs.get('slug', '') 257 slug = self.kwargs.get('slug', '')
257 topic = get_object_or_404(Topic, slug = slug) 258 topic = get_object_or_404(Topic, slug = slug)
258 259
259 - pendencies_form = PendenciesForm(self.request.POST, initial = {'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize"))]}) 260 + pendencies_form = InlinePendenciesFormset(self.request.POST, initial = [{'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize")), ("participate", _("Participate"))]}])
260 261
261 if (form.is_valid() and pendencies_form.is_valid()): 262 if (form.is_valid() and pendencies_form.is_valid()):
262 - return self.form_valid(form, pendencies_form) 263 + return self.form_valid(form, pendencies_form)
263 else: 264 else:
264 - return self.form_invalid(form, pendencies_form) 265 + return self.form_invalid(form, pendencies_form)
265 266
266 def get_initial(self): 267 def get_initial(self):
267 initial = super(CreateView, self).get_initial() 268 initial = super(CreateView, self).get_initial()
@@ -274,6 +275,11 @@ class CreateView(LoginRequiredMixin, LogMixin, generic.edit.CreateView): @@ -274,6 +275,11 @@ class CreateView(LoginRequiredMixin, LogMixin, generic.edit.CreateView):
274 return initial 275 return initial
275 276
276 def form_invalid(self, form, pendencies_form): 277 def form_invalid(self, form, pendencies_form):
  278 + # print (form," Form")
  279 + # print (pendencies_form, " Penden")
  280 + for p_form in pendencies_form.forms:
  281 + p_form.fields['action'].choices = [("", "-------"),("view", _("Visualize")), ("participate", _("Participate"))]
  282 + print ("Invalid")
277 return self.render_to_response(self.get_context_data(form = form, pendencies_form = pendencies_form)) 283 return self.render_to_response(self.get_context_data(form = form, pendencies_form = pendencies_form))
278 284
279 def form_valid(self, form, pendencies_form): 285 def form_valid(self, form, pendencies_form):
@@ -289,13 +295,15 @@ class CreateView(LoginRequiredMixin, LogMixin, generic.edit.CreateView): @@ -289,13 +295,15 @@ class CreateView(LoginRequiredMixin, LogMixin, generic.edit.CreateView):
289 self.object.visible = False 295 self.object.visible = False
290 296
291 self.object.save() 297 self.object.save()
292 - pend_form = pendencies_form.save(commit = False)  
293 - pend_form.resource = self.object  
294 -  
295 - if not pend_form.action == "":  
296 - pend_form.save() 298 + pendencies_form.instance = self.object
  299 + pendencies_form.save(commit = False)
297 300
  301 + for pform in pendencies_form.forms:
  302 + pend_form = pform.save(commit = False)
298 303
  304 + if not pend_form.action == "":
  305 + pend_form.save()
  306 + print ("Valid")
299 self.log_context['category_id'] = self.object.topic.subject.category.id 307 self.log_context['category_id'] = self.object.topic.subject.category.id
300 self.log_context['category_name'] = self.object.topic.subject.category.name 308 self.log_context['category_name'] = self.object.topic.subject.category.name
301 self.log_context['category_slug'] = self.object.topic.subject.category.slug 309 self.log_context['category_slug'] = self.object.topic.subject.category.slug
@@ -341,126 +349,122 @@ class CreateView(LoginRequiredMixin, LogMixin, generic.edit.CreateView): @@ -341,126 +349,122 @@ class CreateView(LoginRequiredMixin, LogMixin, generic.edit.CreateView):
341 return success_url 349 return success_url
342 350
343 class UpdateView(LoginRequiredMixin, LogMixin, generic.UpdateView): 351 class UpdateView(LoginRequiredMixin, LogMixin, generic.UpdateView):
344 - log_component = 'resources'  
345 - log_action = 'update'  
346 - log_resource = 'webconference'  
347 - log_context = {} 352 + log_component = 'resources'
  353 + log_action = 'update'
  354 + log_resource = 'webconference'
  355 + log_context = {}
348 356
349 - login_url = reverse_lazy("users:login")  
350 - redirect_field_name = 'next' 357 + login_url = reverse_lazy("users:login")
  358 + redirect_field_name = 'next'
351 359
352 - template_name = 'webconference/update.html'  
353 - model = Webconference  
354 - form_class = WebconferenceForm 360 + template_name = 'webconference/update.html'
  361 + model = Webconference
  362 + form_class = WebConferenceUpdateForm
355 363
356 - def dispatch(self, request, *args, **kwargs):  
357 - slug = self.kwargs.get('topic_slug', '')  
358 - topic = get_object_or_404(Topic, slug = slug) 364 + def dispatch(self, request, *args, **kwargs):
  365 + slug = self.kwargs.get('topic_slug', '')
  366 + topic = get_object_or_404(Topic, slug = slug)
359 367
360 - if not has_subject_permissions(request.user, topic.subject):  
361 - return redirect(reverse_lazy('subjects:home')) 368 + if not has_subject_permissions(request.user, topic.subject):
  369 + return redirect(reverse_lazy('subjects:home'))
362 370
363 - return super(UpdateView, self).dispatch(request, *args, **kwargs) 371 + return super(UpdateView, self).dispatch(request, *args, **kwargs)
364 372
365 - def get(self, request, *args, **kwargs):  
366 - self.object = self.get_object() 373 + def get(self, request, *args, **kwargs):
  374 + self.object = self.get_object()
367 375
368 - form_class = self.get_form_class()  
369 - form = self.get_form(form_class) 376 + form_class = self.get_form_class()
  377 + form = self.get_form(form_class)
370 378
371 - slug = self.kwargs.get('topic_slug', '')  
372 - topic = get_object_or_404(Topic, slug = slug) 379 + slug = self.kwargs.get('topic_slug', '')
  380 + topic = get_object_or_404(Topic, slug = slug)
373 381
374 - pend_form = self.object.pendencies_resource.all() 382 + pendencies_form = InlinePendenciesFormset(instance=self.object, initial = [{'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize")), ("participate", _("Participate"))]}])
375 383
376 - if len(pend_form) > 0:  
377 - pendencies_form = PendenciesForm(instance = pend_form[0], initial = {'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize"))]})  
378 - else:  
379 - pendencies_form = PendenciesForm(initial = {'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize"))]}) 384 + return self.render_to_response(self.get_context_data(form = form, pendencies_form = pendencies_form))
380 385
381 - return self.render_to_response(self.get_context_data(form = form, pendencies_form = pendencies_form)) 386 + def post(self, request, *args, **kwargs):
  387 + self.object = self.get_object()
382 388
383 - def post(self, request, *args, **kwargs):  
384 - self.object = self.get_object() 389 + form_class = self.get_form_class()
  390 + form = self.get_form(form_class)
385 391
386 - form_class = self.get_form_class()  
387 - form = self.get_form(form_class) 392 + slug = self.kwargs.get('topic_slug', '')
  393 + topic = get_object_or_404(Topic, slug = slug)
388 394
389 - slug = self.kwargs.get('topic_slug', '')  
390 - topic = get_object_or_404(Topic, slug = slug) 395 + pendencies_form = InlinePendenciesFormset(self.request.POST, instance = self.object, initial = [{'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize")), ("participate", _("Participate"))]}])
391 396
392 - pend_form = self.object.pendencies_resource.all() 397 + if (form.is_valid() and pendencies_form.is_valid()):
  398 + return self.form_valid(form, pendencies_form)
  399 + else:
  400 + return self.form_invalid(form, pendencies_form)
393 401
394 - if len(pend_form) > 0:  
395 - pendencies_form = PendenciesForm(self.request.POST, instance = pend_form[0], initial = {'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize"))]})  
396 - else:  
397 - pendencies_form = PendenciesForm(self.request.POST, initial = {'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize"))]}) 402 + def form_invalid(self, form, pendencies_form):
  403 + for p_form in pendencies_form.forms:
  404 + p_form.fields['action'].choices = [("", "-------"),("view", _("Visualize")), ("participate", _("Participate"))]
398 405
399 - if (form.is_valid() and pendencies_form.is_valid()):  
400 - return self.form_valid(form, pendencies_form)  
401 - else:  
402 - return self.form_invalid(form, pendencies_form) 406 + return self.render_to_response(self.get_context_data(form = form, pendencies_form = pendencies_form))
403 407
404 - def form_invalid(self, form, pendencies_form):  
405 - return self.render_to_response(self.get_context_data(form = form, pendencies_form = pendencies_form)) 408 + def form_valid(self, form, pendencies_form):
  409 + self.object = form.save(commit = False)
406 410
407 - def form_valid(self, form, pendencies_form):  
408 - self.object = form.save(commit = False) 411 + if not self.object.topic.visible and not self.object.topic.repository:
  412 + self.object.visible = False
409 413
410 - if not self.object.topic.visible and not self.object.topic.repository:  
411 - self.object.visible = False 414 + self.object.save()
412 415
413 - self.object.save() 416 + pendencies_form.instance = self.object
  417 + pendencies_form.save(commit = False)
414 418
415 - pend_form = pendencies_form.save(commit = False)  
416 - pend_form.resource = self.object 419 + for form in pendencies_form.forms:
  420 + pend_form = form.save(commit = False)
417 421
418 - if not pend_form.action == "":  
419 - pend_form.save() 422 + if not pend_form.action == "":
  423 + pend_form.save()
420 424
421 - self.log_context['category_id'] = self.object.topic.subject.category.id  
422 - self.log_context['category_name'] = self.object.topic.subject.category.name  
423 - self.log_context['category_slug'] = self.object.topic.subject.category.slug  
424 - self.log_context['subject_id'] = self.object.topic.subject.id  
425 - self.log_context['subject_name'] = self.object.topic.subject.name  
426 - self.log_context['subject_slug'] = self.object.topic.subject.slug  
427 - self.log_context['topic_id'] = self.object.topic.id  
428 - self.log_context['topic_name'] = self.object.topic.name  
429 - self.log_context['topic_slug'] = self.object.topic.slug  
430 - self.log_context['webconference_id'] = self.object.id  
431 - self.log_context['webconference_name'] = self.object.name  
432 - self.log_context['webconference_slug'] = self.object.slug 425 + self.log_context['category_id'] = self.object.topic.subject.category.id
  426 + self.log_context['category_name'] = self.object.topic.subject.category.name
  427 + self.log_context['category_slug'] = self.object.topic.subject.category.slug
  428 + self.log_context['subject_id'] = self.object.topic.subject.id
  429 + self.log_context['subject_name'] = self.object.topic.subject.name
  430 + self.log_context['subject_slug'] = self.object.topic.subject.slug
  431 + self.log_context['topic_id'] = self.object.topic.id
  432 + self.log_context['topic_name'] = self.object.topic.name
  433 + self.log_context['topic_slug'] = self.object.topic.slug
  434 + self.log_context['webconference_id'] = self.object.id
  435 + self.log_context['webconference_name'] = self.object.name
  436 + self.log_context['webconference_slug'] = self.object.slug
433 437
434 - super(UpdateView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context) 438 + super(UpdateView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
435 439
436 - return redirect(self.get_success_url()) 440 + return redirect(self.get_success_url())
437 441
438 - def get_context_data(self, **kwargs):  
439 - context = super(UpdateView, self).get_context_data(**kwargs) 442 + def get_context_data(self, **kwargs):
  443 + context = super(UpdateView, self).get_context_data(**kwargs)
440 444
441 - context['title'] = _('Update Web Conference') 445 + context['title'] = _('Update Web Conference')
442 446
443 - slug = self.kwargs.get('topic_slug', '')  
444 - topic = get_object_or_404(Topic, slug = slug) 447 + slug = self.kwargs.get('topic_slug', '')
  448 + topic = get_object_or_404(Topic, slug = slug)
445 449
446 - context['topic'] = topic  
447 - context['subject'] = topic.subject 450 + context['topic'] = topic
  451 + context['subject'] = topic.subject
448 452
449 - return context 453 + return context
450 454
451 - def get_success_url(self):  
452 - messages.success(self.request, _('The Web conference "%s" was updated successfully!')%(self.object.name)) 455 + def get_success_url(self):
  456 + messages.success(self.request, _('The Web conference "%s" was updated successfully!')%(self.object.name))
453 457
454 - success_url = reverse_lazy('webconferences:view', kwargs = {'slug': self.object.slug}) 458 + success_url = reverse_lazy('webconferences:view', kwargs = {'slug': self.object.slug})
455 459
456 - if self.object.show_window:  
457 - self.request.session['resources'] = {}  
458 - self.request.session['resources']['new_page'] = True  
459 - self.request.session['resources']['new_page_url'] = reverse('webconferences:window_view', kwargs = {'slug': self.object.slug}) 460 + if self.object.show_window:
  461 + self.request.session['resources'] = {}
  462 + self.request.session['resources']['new_page'] = True
  463 + self.request.session['resources']['new_page_url'] = reverse('webconferences:window_view', kwargs = {'slug': self.object.slug})
460 464
461 - success_url = reverse_lazy('subjects:view', kwargs = {'slug': self.object.topic.subject.slug}) 465 + success_url = reverse_lazy('subjects:view', kwargs = {'slug': self.object.topic.subject.slug})
462 466
463 - return success_url 467 + return success_url
464 468
465 class DeleteView(LoginRequiredMixin, LogMixin, generic.DeleteView): 469 class DeleteView(LoginRequiredMixin, LogMixin, generic.DeleteView):
466 log_component = 'resources' 470 log_component = 'resources'