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 8 msgstr ""
9 9 "Project-Id-Version: PACKAGE VERSION\n"
10 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 12 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13 13 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14 14 "Language-Team: LANGUAGE <LL@li.org>\n"
... ... @@ -87,8 +87,10 @@ msgid &quot;Theme&quot;
87 87 msgstr "Temas"
88 88  
89 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 95 #: amadeus/templates/base.html:199 amadeus/templates/base.html:254
94 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 @@
  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 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 1553 @-moz-document url-prefix() {
1542 1554 .talk_body .checkbox input[type="checkbox"] {
1543 1555 display: none;
... ...
amadeus/static/css/themes/a 0 → 100644
... ... @@ -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 514 color: #FFFFFF;
515 515 background-color: #59b75c; }
516 516  
  517 +.chat-panel .chat-collapse {
  518 + background: #EEE; }
  519 +
517 520 @media(max-width: 768px) {
518 521 .navbar .navbar-nav .dropdown .dropdown-menu li > a {
519 522 color: #333333 !important; }
... ...
amadeus/static/css/themes/green.css.map
1 1 {
2 2 "version": 3,
3   -"mappings": "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",
  3 +"mappings": "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",
4 4 "sources": ["green.sass"],
5 5 "names": [],
6 6 "file": "green.css"
... ...
amadeus/static/css/themes/green.sass
... ... @@ -686,6 +686,9 @@ a.add-row
686 686 color: $white
687 687 background-color: #59b75c
688 688  
  689 +.chat-panel .chat-collapse
  690 + background: #EEE
  691 +
689 692 @media(max-width: 768px)
690 693 .navbar .navbar-nav .dropdown .dropdown-menu li > a
691 694 color: #333333 !important
... ...
amadeus/static/css/themes/themes 0 → 100644
... ... @@ -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 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 32 function getModalInfo(btn, space, space_type) {
4 33 var url = btn.data('url');
5 34  
... ... @@ -115,6 +144,10 @@ function setChatFormSubmit() {
115 144  
116 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 151 $('#chat-modal-form').modal('hide');
119 152 },
120 153 error: function(data) {
... ... @@ -149,6 +182,7 @@ function setShortChatFormSubmit() {
149 182 dataType: "json",
150 183 async: false,
151 184 success: function (data) {
  185 +
152 186 $('.messages-list').append(data.view);
153 187  
154 188 $(".messages-container").each(function () {
... ... @@ -165,6 +199,9 @@ function setShortChatFormSubmit() {
165 199  
166 200 editable.html("");
167 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 206 error: function(data) {
170 207 setShortChatFormSubmit();
... ... @@ -227,7 +264,7 @@ function setFiltersSubmitAndPagination() {
227 264 loading.hide();
228 265  
229 266 if (data.count > 0) {
230   - msg_section.append(data.messages);
  267 + msg_section.html(data.messages);
231 268  
232 269 messages.data('pages', data.num_pages);
233 270 messages.data('page', data.num_page);
... ... @@ -306,4 +343,80 @@ function setFiltersSubmitAndPagination() {
306 343 }
307 344 });
308 345 });
309   -}
310 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 424 \ No newline at end of file
... ...
amadeus/templates/base.html
... ... @@ -176,7 +176,7 @@
176 176 <li><a href="{% url 'mailsender:update' %}">{% trans 'Mail Sender' %}</a></li>
177 177 <li><a href="{% url 'security:update' %}">{% trans 'Security' %}</a></li>
178 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 180 </ul>
181 181 </div>
182 182 </div>
... ...
amadeus/urls.py
... ... @@ -42,6 +42,7 @@ urlpatterns = [
42 42 url(r'^pendencies/', include('notifications.urls', namespace = 'notifications')),
43 43 url(r'^links/', include('links.urls', namespace='links')),
44 44 url(r'^pdf_files/', include('pdf_file.urls', namespace='pdf_files')),
  45 + url(r'^webconferences/', include('webconference.urls', namespace = 'webconferences')),
45 46 url(r'^i18n/', include('django.conf.urls.i18n')),
46 47 #API
47 48 url(r'^o/', include('oauth2_provider.urls', namespace='oauth2_provider')),
... ... @@ -49,8 +50,6 @@ urlpatterns = [
49 50 url(r'^s3direct/', include('s3direct.urls')),
50 51 url(r'^summernote/', include('django_summernote.urls')),
51 52 url(r'session_security/', include('session_security.urls')),
52   - url(r'^webconferences/', include('webconference.urls', namespace = 'webconferences')),
53   -
54 53 ]
55 54  
56 55 if settings.DEBUG:
... ...
chat/templates/chat/_participants.html 0 → 100644
... ... @@ -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 24 \ No newline at end of file
... ...
chat/templates/chat/_talks_list.html 0 → 100644
... ... @@ -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 24 \ No newline at end of file
... ...
chat/templates/chat/list.html
... ... @@ -15,7 +15,7 @@
15 15 <div id="core-subjects-options-div">
16 16 <ul class="core-subjects-options chat-tabs">
17 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 19 <a href=""><li data-chat="subject">{% trans "Per Subject" %} (<span>{{ totals.subject }}</span>)</li></a>
20 20 </ul>
21 21 </div>
... ... @@ -46,7 +46,7 @@
46 46 </div>
47 47  
48 48 {% if conversations.count > 0 %}
49   - <div class="panel panel-info panel-body">
  49 + <div class="panel category-panel-content panel-body">
50 50 <h2 class="my-subjects-title"><b>{% trans 'Conversations' %}</b></h2>
51 51  
52 52 <div class="talks-group">
... ... @@ -70,4 +70,4 @@
70 70 <div class="modal fade" id="chat-modal-form" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"></div>
71 71  
72 72 <script type="text/javascript" src="{% static 'js/chat.js' %}"></script>
73   - {% endblock %}
74 73 \ No newline at end of file
  74 +{% endblock %}
75 75 \ No newline at end of file
... ...
chat/templates/chat/list_category.html 0 → 100644
... ... @@ -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 111 \ No newline at end of file
... ...
chat/templates/chat/list_participants.html
... ... @@ -17,7 +17,7 @@
17 17 <div id="core-subjects-options-div">
18 18 <ul class="core-subjects-options mural-tabs">
19 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 21 <a href=""><li data-chat="subjects">{% trans "Per Subject" %} (<span>{{ totals.subject }}</span>)</li></a>
22 22 </ul>
23 23 </div>
... ...
chat/templates/chat/talk.html
... ... @@ -10,7 +10,7 @@
10 10 <span class="pull-left">
11 11 <img src="{{ participant.image_url }}" />
12 12 </span>
13   - <h4 class=" pull-left">
  13 + <h4 class="pull-left" data-breadcrumb="{% trans 'Talk with ' %}{{ participant }}">
14 14 <a class="status {{ status }}" title="{{ status|status_text }}"></a>
15 15 <b>{{ participant }}</b>
16 16 </h4>
... ...
chat/templatetags/chat_tags.py
... ... @@ -53,7 +53,7 @@ def last_message(chat):
53 53  
54 54 @register.filter(name = 'notifies')
55 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 58 return total
59 59  
... ...
chat/urls.py
... ... @@ -4,7 +4,10 @@ from . import views
4 4 urlpatterns = [
5 5 url(r'^$', views.GeneralIndex.as_view(), name='manage_general'),
6 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 11 url(r'^favorite/([\w_-]+)/$', views.favorite, name='favorite'),
9 12 url(r'^load_messages/([\w_-]+)/$', views.load_messages, name='load_messages'),
10 13 url(r'^talk/(?P<email>[\w.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4})/$', views.GetTalk.as_view(), name = 'talk'),
... ...
chat/views.py
... ... @@ -39,7 +39,7 @@ class GeneralIndex(LoginRequiredMixin, generic.ListView):
39 39 user = self.request.user
40 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 44 self.totals['general'] = ChatVisualizations.objects.filter(user = user, viewed = False, message__talk__generaltalk__isnull = False).count()
45 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 88  
89 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 174 class ParticipantProfile(LoginRequiredMixin, generic.DetailView):
92 175 login_url = reverse_lazy("users:login")
93 176 redirect_field_name = 'next'
... ... @@ -129,6 +212,9 @@ class GetTalk(LoginRequiredMixin, generic.ListView):
129 212  
130 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 218 return messages
133 219  
134 220 def get_context_data(self, **kwargs):
... ... @@ -141,7 +227,7 @@ class GetTalk(LoginRequiredMixin, generic.ListView):
141 227 context['space'] = self.request.GET.get('space', '0')
142 228 context['space_type'] = self.request.GET.get('space_type', 'general')
143 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 232 return context
147 233  
... ... @@ -216,17 +302,19 @@ class SendMessage(LoginRequiredMixin, generic.edit.CreateView):
216 302 return context
217 303  
218 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 308 msg = get_object_or_404(TalkMessages, id = talk_msg)
223 309  
224 310 context = {}
225 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 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 319 @login_required
232 320 def favorite(request, message):
... ... @@ -270,11 +358,6 @@ def load_messages(request, talk):
270 358  
271 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 361 paginator = Paginator(messages.order_by("-create_date"), 20)
279 362  
280 363 try:
... ... @@ -291,4 +374,4 @@ def load_messages(request, talk):
291 374  
292 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 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 379 \ No newline at end of file
... ...
pendencies/migrations/0007_auto_20170323_1535.py 0 → 100644
... ... @@ -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 5 from topics.models import Resource
6 6  
7 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 9 begin_date = models.DateTimeField(_('Begin Date'), null = True, blank = True)
10 10 end_date = models.DateTimeField(_('End Date'), null = True, blank = True)
11 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 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 2 from django import forms
3 3 from django.utils.translation import ugettext_lazy as _
4 4 from django.utils.html import strip_tags
  5 +from django.forms.models import inlineformset_factory
5 6 import datetime
6 7  
7 8 from subjects.models import Tag
8 9  
9 10 from .models import Webconference, ConferenceSettings
10 11  
  12 +from pendencies.forms import PendenciesForm
  13 +from pendencies.models import Pendencies
  14 +
11 15 class WebconferenceForm(forms.ModelForm):
12 16 subject = None
  17 + control_subject = forms.CharField(widget = forms.HiddenInput())
13 18  
14 19 def __init__(self, *args, **kwargs):
15 20 super(WebconferenceForm, self).__init__(*args, **kwargs)
... ... @@ -20,6 +25,8 @@ class WebconferenceForm(forms.ModelForm):
20 25 self.subject = self.instance.topic.subject
21 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 30 self.fields['students'].queryset = self.subject.students.all()
24 31 self.fields['groups'].queryset = self.subject.group_subject.all()
25 32  
... ... @@ -105,6 +112,10 @@ class WebconferenceForm(forms.ModelForm):
105 112  
106 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 121 class SettingsForm(forms.ModelForm):
... ... @@ -120,3 +131,5 @@ class SettingsForm(forms.ModelForm):
120 131 help_texts = {
121 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 8 msgstr ""
9 9 "Project-Id-Version: PACKAGE VERSION\n"
10 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 12 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13 13 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14 14 "Language-Team: LANGUAGE <LL@li.org>\n"
... ... @@ -62,7 +62,6 @@ msgid &quot;End date/hour&quot;
62 62 msgstr "Data/hora de termino"
63 63  
64 64 #: webconference/models.py:13
65   -#: webconference/templates/webconference/jitsi.html:6
66 65 msgid "Web Conference"
67 66 msgstr "Web Conferência"
68 67  
... ... @@ -122,7 +121,7 @@ msgid &quot;Settings: Conference&quot;
122 121 msgstr "Configurações: Web Conferência"
123 122  
124 123 #: webconference/templates/webconference/create.html:20
125   -#: webconference/views.py:246
  124 +#: webconference/views.py:319
126 125 msgid "Create Web Conference"
127 126 msgstr "Criar Web Conferência"
128 127  
... ... @@ -135,18 +134,18 @@ msgstr &quot;Editar: &quot;
135 134 msgid "Participate"
136 135 msgstr "Participar"
137 136  
138   -#: webconference/views.py:49
  137 +#: webconference/views.py:48 webconference/views.py:93
139 138 #, python-format
140 139 msgid "%s - Web Conference"
141 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 145 msgid "Visualize"
147 146 msgstr "Visualizar"
148 147  
149   -#: webconference/views.py:257
  148 +#: webconference/views.py:330
150 149 #, fuzzy, python-format
151 150 #| msgid ""
152 151 #| "The Web conference '%s' was added to the Topic '%s' of the virtual "
... ... @@ -158,17 +157,17 @@ msgstr &quot;&quot;
158 157 "A web conferência '%s' foi adicionada ao tópico '%s' do ambiente virtual "
159 158 "'%s' com sucesso!"
160 159  
161   -#: webconference/views.py:370
  160 +#: webconference/views.py:441
162 161 msgid "Update Web Conference"
163 162 msgstr "Atualizar a web conferência"
164 163  
165   -#: webconference/views.py:381
  164 +#: webconference/views.py:452
166 165 #, fuzzy, python-format
167 166 #| msgid "Security settings updated successfully!"
168 167 msgid "The Web conference \"%s\" was updated successfully!"
169 168 msgstr "A web conferência '%s' foi atualizada com sucesso!"
170 169  
171   -#: webconference/views.py:419
  170 +#: webconference/views.py:488
172 171 #, python-format
173 172 msgid ""
174 173 "The web conference \"%s\" was removed successfully from virtual environment "
... ... @@ -176,13 +175,13 @@ msgid &quot;&quot;
176 175 msgstr ""
177 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 179 #, fuzzy
181 180 #| msgid "Security settings updated successfully!"
182 181 msgid "Conference settings updated successfully!"
183 182 msgstr "Configurações de segurança atualizadas com sucesso!"
184 183  
185   -#: webconference/views.py:460
  184 +#: webconference/views.py:529
186 185 #, fuzzy
187 186 #| msgid "Conference Setting"
188 187 msgid "Web Conference Settings"
... ...
webconference/migrations/0003_auto_20170323_1535.py 0 → 100644
... ... @@ -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 143 </div>
144 144 </div>
145 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 242 </div>
237   - </div>
  243 + {% endfor %}
238 244 </div>
239 245 </div>
240 246  
... ... @@ -274,7 +280,7 @@
274 280 {% endif %}
275 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 284 {% render_field form.students class='form-control' %}
279 285  
280 286 <span id="helpBlock" class="help-block">{{ form.students.help_text }}</span>
... ... @@ -294,7 +300,7 @@
294 300  
295 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 304 {% render_field form.groups class='form-control' %}
299 305  
300 306 <span id="helpBlock" class="help-block">{{ form.groups.help_text }}</span>
... ... @@ -369,16 +375,53 @@
369 375 </form>
370 376 <script type="text/javascript">
371 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 426 {% if not pendencies_form.is_valid and pendencies_form.is_bound %}
384 427 $("#notifications").collapse('toggle');
... ...
webconference/templates/webconference/create.html
... ... @@ -10,6 +10,7 @@
10 10 {% block javascript %}
11 11 {{block.super}}
12 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 14 {% endblock %}
14 15  
15 16 {% block breadcrumbs %}
... ...
webconference/templates/webconference/jitsi.html
... ... @@ -60,7 +60,7 @@
60 60 var repeater = setInterval(function () {
61 61 $.ajax({
62 62 method: "GET",
63   - url: "{% url 'webconferences:participando'%}",
  63 + url: "{% url 'webconferences:participating'%}",
64 64 dataType: 'json',
65 65 data: {'slug':'{{name_room}}'},
66 66 success: function(response) {
... ...
webconference/templates/webconference/update.html
... ... @@ -10,6 +10,7 @@
10 10 {% block javascript %}
11 11 {{block.super}}
12 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 14 {% endblock %}
14 15  
15 16 {% block breadcrumbs %}
... ...
webconference/urls.py
... ... @@ -12,6 +12,6 @@ urlpatterns = [
12 12 url(r'^view/(?P<slug>[\w_-]+)/$', views.InsideView.as_view(), name = 'view'),
13 13 url(r'^conference/(?P<slug>[\w_-]+)/$',views.Conference.as_view(), name = 'conference'),
14 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 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 18 from pendencies.forms import PendenciesForm
19 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 22 from .models import Webconference, ConferenceSettings as Settings
23 23  
24 24 class NewWindowView(LoginRequiredMixin,LogMixin, generic.DetailView):
... ... @@ -120,8 +120,8 @@ class Conference(LoginRequiredMixin,LogMixin,generic.TemplateView):
120 120  
121 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 125 webconference = get_object_or_404(Webconference, slug = request.GET['slug'])
126 126 log_context = {}
127 127 log_context['category_id'] = webconference.topic.subject.category.id
... ... @@ -142,7 +142,7 @@ def participando(request):
142 142  
143 143 return JsonResponse({'message':'ok'})
144 144  
145   -@log_decorator('resources', 'finish', 'webconference')
  145 +@log_decorator('resources', 'participate', 'webconference')
146 146 def finish(request):
147 147  
148 148 webconference = get_object_or_404(Webconference, slug = request.GET['roomName'])
... ... @@ -244,7 +244,8 @@ class CreateView(LoginRequiredMixin, LogMixin, generic.edit.CreateView):
244 244  
245 245 slug = self.kwargs.get('slug', '')
246 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 249 return self.render_to_response(self.get_context_data(form = form, pendencies_form = pendencies_form))
249 250  
250 251 def post(self, request, *args, **kwargs):
... ... @@ -256,12 +257,12 @@ class CreateView(LoginRequiredMixin, LogMixin, generic.edit.CreateView):
256 257 slug = self.kwargs.get('slug', '')
257 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 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 264 else:
264   - return self.form_invalid(form, pendencies_form)
  265 + return self.form_invalid(form, pendencies_form)
265 266  
266 267 def get_initial(self):
267 268 initial = super(CreateView, self).get_initial()
... ... @@ -274,6 +275,11 @@ class CreateView(LoginRequiredMixin, LogMixin, generic.edit.CreateView):
274 275 return initial
275 276  
276 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 283 return self.render_to_response(self.get_context_data(form = form, pendencies_form = pendencies_form))
278 284  
279 285 def form_valid(self, form, pendencies_form):
... ... @@ -289,13 +295,15 @@ class CreateView(LoginRequiredMixin, LogMixin, generic.edit.CreateView):
289 295 self.object.visible = False
290 296  
291 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 307 self.log_context['category_id'] = self.object.topic.subject.category.id
300 308 self.log_context['category_name'] = self.object.topic.subject.category.name
301 309 self.log_context['category_slug'] = self.object.topic.subject.category.slug
... ... @@ -341,126 +349,122 @@ class CreateView(LoginRequiredMixin, LogMixin, generic.edit.CreateView):
341 349 return success_url
342 350  
343 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 469 class DeleteView(LoginRequiredMixin, LogMixin, generic.DeleteView):
466 470 log_component = 'resources'
... ...