Commit 43fbc10d56eba97ef79df9aa7a44c7f55bcda878

Authored by fbormann
2 parents 4f16a4b0 54c3e1be

merging pull request on my local with migrations modifications

amadeus/staticfiles/nothing.d41d8cd98f00.txt.py 0 → 100644
amadeus/staticfiles/nothing.txt.py 0 → 100644
amadeus/staticfiles/sample.c7b009bae842.txt.py 0 → 100644
... ... @@ -0,0 +1 @@
  1 +XXXX XXXX XXX XXXXXXX XX XXXX XXXXXXXX XX XXXXXXX
0 2 \ No newline at end of file
... ...
amadeus/staticfiles/sample.txt.py 0 → 100644
... ... @@ -0,0 +1 @@
  1 +XXXX XXXX XXX XXXXXXX XX XXXX XXXXXXXX XX XXXXXXX
0 2 \ No newline at end of file
... ...
app/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: 2016-10-26 14:47-0300\n"
  11 +"POT-Creation-Date: 2016-11-16 11:52-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"
... ... @@ -18,134 +18,239 @@ msgstr &quot;&quot;
18 18 "Content-Transfer-Encoding: 8bit\n"
19 19 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
20 20  
21   -#: app/templates/home.html:69 app/templates/home_professor.html:20
22   -#: app/templates/home_student.html:21
  21 +#: .\forms.py:16
  22 +msgid "A host name. Example: smtp.gmail.com"
  23 +msgstr "O nome do host. Exemplo: smtp.gmail.com"
  24 +
  25 +#: .\forms.py:17
  26 +msgid "A port number"
  27 +msgstr "O Número da porta"
  28 +
  29 +#: .\forms.py:18
  30 +msgid "Your host username"
  31 +msgstr ""
  32 +
  33 +#: .\forms.py:19
  34 +msgid "Your host password"
  35 +msgstr "A senha do seu host"
  36 +
  37 +#: .\models.py:8
  38 +msgid "No"
  39 +msgstr "Não"
  40 +
  41 +#: .\models.py:9
  42 +msgid "TLS, if available"
  43 +msgstr "TLS, se disponível"
  44 +
  45 +#: .\models.py:14
  46 +msgid "Description"
  47 +msgstr "Descrição"
  48 +
  49 +#: .\models.py:15
  50 +msgid "E-mail Host"
  51 +msgstr "E-mail do Host"
  52 +
  53 +#: .\models.py:16
  54 +msgid "Email Port"
  55 +msgstr "Porta do E-mail"
  56 +
  57 +#: .\models.py:17
  58 +msgid "Email host username"
  59 +msgstr "Nome de usuário do E-mail do Host"
  60 +
  61 +#: .\models.py:18
  62 +msgid "Email host password"
  63 +msgstr "Senha de E-mail do Host"
  64 +
  65 +#: .\models.py:19
  66 +msgid "Use safe conection"
  67 +msgstr "Use uma conexão segura"
  68 +
  69 +#: .\models.py:20
  70 +msgid "Default from email"
  71 +msgstr "Padrão do E-mail"
  72 +
  73 +#: .\models.py:23
  74 +msgid "Amadeus SMTP setting"
  75 +msgstr "Configuração SMTP do Amadeus"
  76 +
  77 +#: .\models.py:24
  78 +msgid "Amadeus SMTP settings"
  79 +msgstr "Configurações SMTP do Amadeus"
  80 +
  81 +#: .\templates\admin_settings.html:23 .\templates\admin_settings.html:29
  82 +msgid "System"
  83 +msgstr "Sistema"
  84 +
  85 +#: .\templates\admin_settings.html:26 .\templates\admin_settings.html:31
  86 +msgid "Mail Sender"
  87 +msgstr "Remetente do E-mail"
  88 +
  89 +#: .\templates\admin_settings.html:35
  90 +msgid "Security"
  91 +msgstr "Segurança"
  92 +
  93 +#: .\templates\admin_settings.html:49
  94 +msgid "General"
  95 +msgstr "Geral"
  96 +
  97 +#: .\templates\admin_settings.html:71
  98 +msgid "Outgoing Server (SMTP)"
  99 +msgstr "Servidor de saída (SMTP)"
  100 +
  101 +#: .\templates\admin_settings.html:74 .\templates\home.html:100
  102 +msgid "Settings"
  103 +msgstr "Configurações"
  104 +
  105 +#: .\templates\admin_settings.html:126
  106 +msgid "Default:"
  107 +msgstr "Padrão:"
  108 +
  109 +#: .\templates\admin_settings.html:147
  110 +msgid "Security and authentication"
  111 +msgstr "Segurança e autenticação"
  112 +
  113 +#: .\templates\admin_settings.html:246 .\templates\admin_settings.html:263
  114 +msgid "Save changes"
  115 +msgstr "Salvar mudanças"
  116 +
  117 +#: .\templates\admin_settings.html:260
  118 +msgid "Allow users self-enroll."
  119 +msgstr "Permitir que os usuários possam se inscrever"
  120 +
  121 +#: .\templates\home.html:77
23 122 msgid "Menu"
24 123 msgstr "Menu"
25 124  
26   -#: app/templates/home.html:73
27   -msgid "Home"
28   -msgstr "Início"
29   -
30   -#: app/templates/home.html:74 app/templates/home_student.html:25
31   -msgid "Profile"
32   -msgstr "Perfil"
  125 +#: .\templates\home.html:82 .\templates\home.html:109
  126 +#: .\templates\home_professor.html:22
  127 +msgid "Courses"
  128 +msgstr "Cursos"
33 129  
34   -#: app/templates/home.html:76
35   -#, fuzzy
36   -#| msgid "My Courses"
37   -msgid "My courses"
  130 +#: .\templates\home.html:85
  131 +msgid "My Courses"
38 132 msgstr "Meus Cursos"
39 133  
40   -#: app/templates/home.html:78 app/templates/home_student.html:27
41   -#, fuzzy
42   -#| msgid "Courses"
  134 +#: .\templates\home.html:86
43 135 msgid "All Courses"
44   -msgstr "Cursos"
  136 +msgstr "Todos Cursos"
45 137  
46   -#: app/templates/home.html:80
  138 +#: .\templates\home.html:88
  139 +msgid "List Category"
  140 +msgstr "Listar Categorias"
  141 +
  142 +#: .\templates\home.html:89
  143 +msgid "Create Course"
  144 +msgstr "Criar Curso"
  145 +
  146 +#: .\templates\home.html:90
47 147 #, fuzzy
48   -#| msgid "Manage Course"
49   -msgid "Manage Users"
50   -msgstr "Gerenciar Usuários"
  148 +#| msgid "Create Course"
  149 +msgid "Create Category"
  150 +msgstr "Criar Curso"
51 151  
52   -#: app/templates/home.html:84
  152 +#: .\templates\home.html:99
53 153 #, fuzzy
54 154 #| msgid "Manage Course"
55   -msgid "Manage Courses"
56   -msgstr "Gerenciar Cursos"
57   -
58   -#: app/templates/home.html:101 app/templates/home_professor.html:34
59   -msgid "Courses"
60   -msgstr "Cursos"
  155 +msgid "Manage Users"
  156 +msgstr "Gerenciar Usuários"
61 157  
62   -#: app/templates/home_admin_content.html:10
  158 +#: .\templates\home_admin_content.html:10
63 159 #, fuzzy
64 160 #| msgid "Students:"
65 161 msgid "Students"
66 162 msgstr "Alunos"
67 163  
68   -#: app/templates/home_admin_content.html:11
  164 +#: .\templates\home_admin_content.html:11
69 165 #, fuzzy
70 166 #| msgid "Beginning:"
71 167 msgid "Beginning"
72   -msgstr "Começo"
  168 +msgstr "Início"
73 169  
74   -#: app/templates/home_admin_content.html:12
  170 +#: .\templates\home_admin_content.html:12
75 171 #, fuzzy
76 172 #| msgid "End:"
77 173 msgid "End"
78 174 msgstr "Fim:"
79 175  
80   -#: app/templates/home_admin_content.html:15
  176 +#: .\templates\home_admin_content.html:15
81 177 msgid "Edit"
82 178 msgstr "Editar"
83 179  
84   -#: app/templates/home_professor.html:24
85   -msgid "Pending tasks"
86   -msgstr "Tarefas Pendentes"
87   -
88   -#: app/templates/home_professor.html:25
89   -msgid "Create Course"
90   -msgstr "Criar Curso"
91   -
92   -#: app/templates/home_professor.html:26
93   -msgid "Manage Course"
94   -msgstr "Gerenciar Curso"
95   -
96   -#: app/templates/home_professor.html:44
  180 +#: .\templates\home_professor.html:32
97 181 msgid "Students:"
98 182 msgstr "Alunos"
99 183  
100   -#: app/templates/home_professor.html:45
  184 +#: .\templates\home_professor.html:33
101 185 msgid "Beginning:"
102   -msgstr "Começo"
  186 +msgstr "Início"
103 187  
104   -#: app/templates/home_professor.html:46
  188 +#: .\templates\home_professor.html:34
105 189 msgid "End:"
106 190 msgstr "Fim:"
107 191  
108   -#: app/templates/home_professor.html:53
  192 +#: .\templates\home_professor.html:41
109 193 msgid "You didn't create any course yet."
110 194 msgstr "Você não criou nenhum curso ainda."
111 195  
112   -#: app/templates/home_student.html:26
113   -msgid "My Courses"
114   -msgstr "Meus Cursos"
115   -
116   -#: app/templates/home_student.html:28
117   -msgid "Google accounts"
118   -msgstr "Contas do Google"
119   -
120   -#: app/templates/home_student.html:35
  196 +#: .\templates\home_student.html:22
121 197 msgid "Notifications"
122 198 msgstr "Notificações"
123 199  
124   -#: app/templates/home_student.html:48
  200 +#: .\templates\home_student.html:35
125 201 msgid "His course has notified a new activity!"
126 202 msgstr "Seu curso tem uma nova atividade!"
127 203  
128   -#: app/templates/home_student.html:51 app/templates/home_student.html:59
129   -#: app/templates/home_student.html:67
  204 +#: .\templates\home_student.html:38 .\templates\home_student.html:46
  205 +#: .\templates\home_student.html:54
130 206 msgid "Go"
131 207 msgstr "Ir"
132 208  
133   -#: app/templates/home_student.html:56
  209 +#: .\templates\home_student.html:43
134 210 msgid "His teacher has notified a new material!"
135 211 msgstr "Seu professor adicionou um novo material!"
136 212  
137   -#: app/templates/home_student.html:64
  213 +#: .\templates\home_student.html:51
138 214 msgid "You have a new guardian!"
139 215 msgstr "Você tem um novo tutor!"
140 216  
141   -#: app/templates/home_teacher_student_content.html:14
  217 +#: .\templates\home_teacher_student_content.html:14
142 218 msgid "at"
143 219 msgstr "em"
144 220  
145   -#: app/templates/home_teacher_student_content.html:15
  221 +#: .\templates\home_teacher_student_content.html:15
146 222 msgid "ago"
147 223 msgstr "atrás"
148 224  
  225 +#: .\views.py:72
  226 +msgid "Changes saved."
  227 +msgstr "Mudanças salvas"
  228 +
  229 +#, fuzzy
  230 +#~| msgid "My Courses"
  231 +#~ msgid "My courses"
  232 +#~ msgstr "Meus Cursos"
  233 +
  234 +#~ msgid "Home"
  235 +#~ msgstr "Início"
  236 +
  237 +#~ msgid "Profile"
  238 +#~ msgstr "Perfil"
  239 +
  240 +#, fuzzy
  241 +#~| msgid "Manage Course"
  242 +#~ msgid "Manage Courses"
  243 +#~ msgstr "Gerenciar Cursos"
  244 +
  245 +#~ msgid "Pending tasks"
  246 +#~ msgstr "Tarefas Pendentes"
  247 +
  248 +#~ msgid "Manage Course"
  249 +#~ msgstr "Gerenciar Curso"
  250 +
  251 +#~ msgid "Google accounts"
  252 +#~ msgstr "Contas do Google"
  253 +
149 254 #~ msgid "The Project"
150 255 #~ msgstr "O projeto"
151 256  
... ... @@ -160,9 +265,6 @@ msgstr &quot;atrás&quot;
160 265 #~ msgid "See Profile"
161 266 #~ msgstr "Perfil"
162 267  
163   -#~ msgid "Settings"
164   -#~ msgstr "Configurações"
165   -
166 268 #~ msgid "Logout"
167 269 #~ msgstr "Sair"
168 270  
... ...
app/migrations/0001_initial.py
1 1 # -*- coding: utf-8 -*-
2 2 # Generated by Django 1.10 on 2016-11-16 20:53
  3 +
3 4 from __future__ import unicode_literals
4 5  
5 6 from django.db import migrations, models
... ...
app/templates/home.html
... ... @@ -82,8 +82,8 @@
82 82 <a href="#menu_courses" class="accordion" data-toggle="collapse">{% trans 'Courses' %}<span class="pull-right glyphicon glyphicon-chevron-down"></span></a>
83 83 <div id="menu_courses" class="collapse">
84 84 <ul class="nav nav-pill nav-stacked accordion_list">
85   - <li><a href="{% url 'course:manage' %}">{% trans 'My courses' %}</a></li>
86   - <li><a href="{% url 'course:all_courses' %}">{% trans 'All Courses' %}</a></li>
  85 + <li><a href="{% url 'course:manage' %}"> {% trans 'My Courses' %} </a></li>
  86 + <li><a href="{% url 'course:all_courses' %}"> {% trans 'All Courses' %} </a></li>
87 87 {% if user|has_role:'system_admin' or user|has_role:'professor'%}
88 88 <li><a href="{% url 'course:manage_cat' %}">{% trans 'List Category' %}</a></li>
89 89 <li><a href="{% url 'course:create' %}">{% trans 'Create Course' %}</a></li>
... ...
core/migrations/0001_initial.py
1 1 # -*- coding: utf-8 -*-
  2 +
2 3 # Generated by Django 1.10 on 2016-11-16 20:53
  4 +
3 5 from __future__ import unicode_literals
4 6  
5 7 import autoslug.fields
... ...
courses/migrations/0001_initial.py
1 1 # -*- coding: utf-8 -*-
2 2 # Generated by Django 1.10 on 2016-11-16 20:52
  3 +
3 4 from __future__ import unicode_literals
4 5  
5 6 import autoslug.fields
... ...
courses/templates/subject/form_view_teacher.html
... ... @@ -21,7 +21,7 @@
21 21 {% professor_subject topic.subject user as dropdown_topic %}
22 22 {% if dropdown_topic %}
23 23 <ul class="dropdown-menu pull-right" aria-labelledby="moreActions">
24   - <li><a href="" data-toggle="modal" data-target="#myModal4"><i class="fa fa-files-o fa-fw" aria-hidden="true"></i>&nbsp; {% trans "Replicate" %}</a></li>
  24 + <li><a href="{% url 'course:replicate_topic' topic.slug %}"><i class="fa fa-files-o fa-fw" aria-hidden="true"></i>&nbsp; {% trans "Replicate" %}</a></li>
25 25 <li><a href="javascript:show_editation('{{topic.slug}}')"><i class="fa fa-pencil fa-fw" aria-hidden="true"></i>&nbsp; {% trans "Edit" %}</a></li>
26 26 <li><a href="javascript:void(0)" data-toggle="modal" data-target="#removeTopic"><i class="fa fa-trash fa-fw" aria-hidden="true"></i>&nbsp; {% trans "Remove" %}</a></li>
27 27 </ul>
... ...
courses/templates/subject/replicate.html
... ... @@ -2,61 +2,51 @@
2 2  
3 3 {% load static i18n permission_tags widget_tweaks %}
4 4  
5   -{% block breadcrumbs %}
6   - <ol class="breadcrumb">
7   - <li><a href="{% url 'app:index' %}">{% trans 'Home' %}</a></li>
8   - <li class="active">{% trans 'Replicate Subject' %}</li>
9   - </ol>
10   -{% endblock %}
11   -
12 5 {% block content %}
13   -<div class="panel panel-default">
  6 +
  7 + <div class="panel panel-default">
14 8 <div class="panel-body">
15 9 <form class="form-group " method="post" action="">
16 10 {% csrf_token %}
17 11  
18 12 <div class="form-group {% if subject.name.errors %} has-error{% endif %}">
19   - <label for="{{ id_name }}" class="control-label label-static"> {% trans 'Name' %}</label>
20   - <input class="form-control" id="id_name" maxlength="100" name="name" type="text" required="True" value="{{subject.name}}">
21   - <span class="help-block">{% trans 'Subject name' %}</span>
  13 + <label for="id_name" class="control-label label-static"> {% trans 'Name'%}</label>
  14 + <textarea class="form-control" id="id_name" maxlength="100" rows="1" name="name" placeholder="Name" type="text" required >{{subject.name}}</textarea>
22 15  
  16 + <span class="help-block">{% trans 'Subject name'%}</span>
23 17 </div>
24 18  
25   - <div class="form-group {% if subject.name.errors %} has-error{% endif %}">
26   - <label for="{{ id_description }}" class="control-label label-static"> {% trans 'Description' %} </label>
27   - <textarea class="form-control" id="id_description" name="description" type="text" required="">{{subject.description}}</textarea>
28   - <span class="help-block">{% trans 'Subject Description' %}</span>
  19 + <div class="form-group">
  20 + <label for="id_description" class="control-label label-static"> {% trans 'Description'%}</label>
  21 + <textarea class="form-control" id="id_description" name="description" placeholder="Description" type="text" >{{subject.description}}</textarea>
29 22  
  23 + <span class="help-block">{% trans 'Subject description'%}</span>
30 24 </div>
31 25  
32   - <div class="form-group {% if subject.name.errors %} has-error{% endif %}">
33   - <label for="{{ id_init_date }}" class="control-label label-static"> {% trans 'Init date' %}</label>
34   - <input type="text" class="form-control date-picker" name="{{field.name}}" value="{{field.value|date:'SHORT_DA E_FORMAT'}}" min="{{now|date:'SHORT_DATE_FORMAT'}}">
35   - <span class="help-block">{% trans 'Subject init date' %}</span>
  26 + <div class="form-group">
  27 + <label for="id_init_date" class="control-label label-static"> {% trans 'Init date'%}</label>
  28 + <input type="text" class="form-control date-picker" name="init_date" value="{{field.value|date:'SHORT_DATE_FORMAT'}}" min="{{now|date:'SHORT_DATE_FORMAT'}}">
36 29  
  30 + <span class="help-block">{% trans 'Init date'%}</span>
37 31 </div>
38 32  
39   - <div class="form-group {% if subject.name.errors %} has-error{% endif %}">
40   - <label for="{{ id_end_date }}" class="control-label label-static"> {% trans 'End date' %}</label>
41   - <input type="text" class="form-control date-picker" name="{{field.name}}" value="{{field.value|date:'SHORT_DA E_FORMAT'}}" min="{{now|date:'SHORT_DATE_FORMAT'}}">
42   - <span class="help-block">{% trans 'Subject end date' %}</span>
43   -
44   - </div>
45   - <div class="form-group {% if subject.name.errors %} has-error{% endif %}">
46   - <label for="{{ id_visible }}" class="control-label label-static"> {% trans 'Visible?' %} </label>
47   - <input type="checkbox" class="form-control" id="id_visible" name="visible" required="true"/>
48   - <span class="help-block">{% trans 'Is it visible?' %}</span>
  33 + <div class="form-group">
  34 + <label for="id_end_date" class="control-label label-static"> {% trans 'End date'%}</label>
  35 + <input type="text" class="form-control date-picker" name="end_date" value="{{field.value|date:'SHORT_DATE_FORMAT'}}" min="{{now|date:'SHORT_DATE_FORMAT'}}">
49 36  
  37 + <span class="help-block">{% trans 'End date'%}</span>
50 38 </div>
51 39  
  40 + <div class="form-group">
  41 + <label for="id_visible" class="control-label label-static"> {% trans 'Visible'%}</label>
  42 + <input class="form-control" id="id_visible" name="visible" type="checkbox"/>
52 43  
  44 + <span class="help-block">{% trans 'Is it visible?'%}</span>
53 45 </div>
54   -
55 46 <div class="col-lg-offset-4 col-lg-4">
56   - <button type="submit" class="btn btn-raised btn-primary btn-lg btn-block">{% trans 'Replicate' %}</button>
  47 + <button type="submite" class="btn btn-raised btn-primary btn-lg btn-block">{% trans 'Replicate' %}</button>
57 48 </div>
58 49 </form>
59   -
60 50 </div>
61 51 </div>
62 52  
... ... @@ -70,4 +60,4 @@
70 60 $('#id_description').summernote({height: 300});
71 61 });
72 62 </script>
73   -{% endblock %}
74 63 \ No newline at end of file
  64 +{% endblock content %}
... ...
courses/templates/topic/replicate.html 0 → 100644
... ... @@ -0,0 +1,38 @@
  1 +{% extends 'subject/index.html' %}
  2 +
  3 +{% load static i18n permission_tags widget_tweaks %}
  4 +
  5 +{% block content %}
  6 +
  7 + <div class="panel panel-default">
  8 + <div class="panel-body">
  9 + <form class="form-group " method="post" action="">
  10 + {% csrf_token %}
  11 +
  12 + <div class="form-group {% if topic.name.errors %} has-error{% endif %}">
  13 + <label for="id_name" class="control-label label-static"> {% trans 'Name'%}</label>
  14 + <textarea class="form-control" id="id_name" maxlength="100" rows="1" name="name" placeholder="Name" type="text" required >{{topic.name}}</textarea>
  15 +
  16 + <span class="help-block">{% trans 'Topic name'%}</span>
  17 + </div>
  18 + <div class="form-group {% if topic.description.errors %} has-error{% endif %}">
  19 + <label for="id_description" class="control-label label-static"> {% trans 'Description'%}</label>
  20 + <textarea class="form-control" id="id_description" name="description" placeholder="Description" type="text"> {{topic.description}}</textarea>
  21 +
  22 + <span class="help-block">{% trans 'Topic description'%}</span>
  23 + </div>
  24 +
  25 + <div class="col-lg-offset-4 col-lg-4">
  26 + <button type="submit" class="btn btn-raised btn-primary btn-lg btn-block">{% trans 'Create' %}</button>
  27 +
  28 + </div>
  29 + </form>
  30 + </div>
  31 + </div>
  32 +
  33 + <script type="text/javascript">
  34 + $(document).ready(function() {
  35 + $('#id_description').summernote({height: 300});
  36 + });
  37 + </script>
  38 +{% endblock content %}
... ...
courses/templates/topic/replicate_topic.html
... ... @@ -1,38 +0,0 @@
1   -{% extends 'subject/index.html' %}
2   -
3   -{% load static i18n permission_tags widget_tweaks %}
4   -
5   -{% block content %}
6   -
7   - <div class="panel panel-default">
8   - <div class="panel-body">
9   - <form class="form-group " method="post" action="">
10   - {% csrf_token %}
11   -
12   - <div class="form-group {% if topic.name.errors %} has-error{% endif %}">
13   - <label for="id_name" class="control-label label-static"> {% trans 'Name'%}</label>
14   - <input class="form-control" id="id_name" maxlength="100" name="name" placeholder="Name" type="text" value={{topic.name}} required />
15   -
16   - <span class="help-block">{% trans 'Topic name'%}</span>
17   - </div>
18   - <div class="form-group {% if topic.description.errors %} has-error{% endif %}">
19   - <label for="id_description" class="control-label label-static"> {% trans 'Description'%}</label>
20   - <textarea class="form-control" id="id_description" name="description" placeholder="Description" type="text"> {{topic.description}}</textarea>
21   -
22   - <span class="help-block">{% trans 'Topic description'%}</span>
23   - </div>
24   -
25   - <div class="col-lg-offset-4 col-lg-4">
26   - <button type="submit" class="btn btn-raised btn-primary btn-lg btn-block">{% trans 'Create' %}</button>
27   -
28   - </div>
29   - </form>
30   - </div>
31   - </div>
32   -
33   - <script type="text/javascript">
34   - $(document).ready(function() {
35   - $('#id_description').summernote({height: 300});
36   - });
37   - </script>
38   -{% endblock content %}
courses/urls.py
... ... @@ -6,7 +6,6 @@ urlpatterns = [
6 6 url(r'^all-courses/$', views.AllCoursesView.as_view(), name='all_courses'),
7 7 url(r'^create/$', views.CreateCourseView.as_view(), name='create'),
8 8 url(r'^replicate_course/(?P<slug>[\w_-]+)/$', views.ReplicateCourseView.as_view(), name='replicate_course'),
9   - url(r'^replicate_subject/(?P<slug>[\w_-]+)/$', views.ReplicateSubjectView.as_view(), name='replicate_subject'),
10 9 url(r'^edit/(?P<slug>[\w_-]+)/$', views.UpdateCourseView.as_view(), name='update'),
11 10 url(r'^delete/(?P<slug>[\w_-]+)/$', views.DeleteCourseView.as_view(), name='delete'),
12 11 url(r'^subscribe/(?P<slug>[\w_-]+)/$', views.subscribe_course, name='subscribe'),
... ... @@ -19,10 +18,11 @@ urlpatterns = [
19 18 url(r'^subjects/create/(?P<slug>[\w_-]+)/$', views.CreateSubjectView.as_view(), name='create_subject'),
20 19 url(r'^subjects/update/(?P<slug>[\w_-]+)/$', views.UpdateSubjectView.as_view(), name='update_subject'),
21 20 url(r'^subjects/delete/(?P<slug>[\w_-]+)/$', views.DeleteSubjectView.as_view(), name='delete_subject'),
  21 + url(r'^subjects/replicate/(?P<slug>[\w_-]+)/$', views.ReplicateSubjectView.as_view(), name='replicate_subject'),
22 22 url(r'^subjects/subscribe/(?P<slug>[\w_-]+)/$', views.subscribe_subject, name='subscribe_subject'),
23 23 url(r'^topics/create/(?P<slug>[\w_-]+)/$', views.CreateTopicView.as_view(), name='create_topic'),
24 24 url(r'^topics/update/(?P<slug>[\w_-]+)/$', views.UpdateTopicView.as_view(), name='update_topic'),
25   - url(r'^topics/update/(?P<slug>[\w_-]+)/$', views.DeleteTopic.as_view(), name='delete_topic'),
  25 + url(r'^topics/delete/(?P<slug>[\w_-]+)/$', views.DeleteTopic.as_view(), name='delete_topic'),
26 26 url(r'^topics/replicate/(?P<slug>[\w_-]+)/$', views.ReplicateTopicView.as_view(), name='replicate_topic'),
27 27 url(r'^topics/(?P<slug>[\w_-]+)/$', views.TopicsView.as_view(), name='view_topic'),
28 28 url(r'^subjects/categories$',views.IndexSubjectCategoryView.as_view(), name='subject_category_index'),
... ...
courses/views.py
... ... @@ -561,39 +561,6 @@ class SubjectsView(LoginRequiredMixin, LogMixin, generic.ListView):
561 561 context['files'] = TopicFile.objects.filter(students__name = self.request.user.name)
562 562 return context
563 563  
564   -class ReplicateSubjectView(LoginRequiredMixin, HasRoleMixin, LogMixin, NotificationMixin,generic.edit.CreateView):
565   -
566   - allowed_roles = ['professor', 'system_admin']
567   - login_url = reverse_lazy("core:home")
568   - redirect_field_name = 'next'
569   - template_name = 'subject/replicate.html'
570   - form_class = SubjectForm
571   - success_url = reverse_lazy('course:view')
572   -
573   - def get_context_data(self, **kwargs):
574   - context = super(ReplicateSubjectView, self).get_context_data(**kwargs)
575   - subject = get_object_or_404(Subject, slug=self.kwargs.get('slug'))
576   -
577   - if has_role(self.request.user,'system_admin'):
578   - subjects = Subject.objects.all()
579   - context['subjects'] = subjects
580   - elif has_role(self.request.user,'professor'):
581   - subject = self.request.user.professors_subjects.all()
582   - categorys_subjects = CategorySubject.objects.all()
583   -
584   - context['subject'] = subject
585   - context['categorys_subjects'] = categorys_subjects
586   - context['title'] = _("Replicate Subject")
587   - context['now'] = date.today()
588   - return context
589   -
590   - def form_valid(self, form):
591   - self.object = form.save()
592   -
593   - return super(ReplicateSubjectView, self).form_valid(form)
594   -
595   - def get_success_url(self):
596   - return reverse_lazy('course:view', kwargs={'slug' : self.object.slug})
597 564  
598 565 class UploadMaterialView(LoginRequiredMixin, generic.edit.CreateView):
599 566 login_url = reverse_lazy("core:home")
... ... @@ -1017,13 +984,13 @@ class TopicViewSet(viewsets.ModelViewSet):
1017 984 class ReplicateTopicView (LoginRequiredMixin, HasRoleMixin, LogMixin, NotificationMixin,generic.edit.CreateView):
1018 985 log_component = "course"
1019 986 log_resource = "topic"
1020   - log_action = "create"
  987 + log_action = "replicate"
1021 988 log_context = {}
1022 989  
1023 990 allowed_roles = ['professor', 'system_admin']
1024 991 login_url = reverse_lazy("core:home")
1025   - model = Topic
1026   - template_name = 'topic/replicate_topic.html'
  992 + redirect_field_name = 'next'
  993 + template_name = 'topic/replicate.html'
1027 994 form_class = TopicForm
1028 995  
1029 996 def get_success_url(self):
... ... @@ -1032,21 +999,23 @@ class ReplicateTopicView (LoginRequiredMixin, HasRoleMixin, LogMixin, Notificati
1032 999 def get_context_data(self, **kwargs):
1033 1000 context = super(ReplicateTopicView, self).get_context_data(**kwargs)
1034 1001 topic = get_object_or_404(Topic, slug = self.kwargs.get('slug'))
1035   - subject = topic.subject
  1002 + subject = Subject.objects.get(pk = topic.subject_id)
1036 1003 context['course'] = subject.course
1037 1004 context['subject'] = subject
1038 1005 context['subjects'] = subject.course.subjects.all()
1039 1006 context['topic'] = topic
1040 1007 return context
1041 1008  
1042   -
1043 1009 def form_valid(self, form):
1044   - self.object.subject = self.object.subject.id
  1010 + topic = get_object_or_404(Topic, slug = self.kwargs.get('slug'))
  1011 + subject = Subject.objects.get(pk = topic.subject_id)
  1012 +
1045 1013 self.object = form.save(commit = False)
  1014 + self.object.topic = topic
  1015 + self.object.subject = subject
1046 1016 self.object.owner = self.request.user
1047 1017 self.object.save()
1048   -
1049   - action = super(ReplicateTopicView, self).createorRetrieveAction("replicate Topic")
  1018 + action = super(ReplicateTopicView, self).createorRetrieveAction("create Topic")
1050 1019 super(ReplicateTopicView, self).createNotification("Topic "+ self.object.name + " was created",
1051 1020 resource_name=self.object.name, resource_link= reverse('course:view_topic',args=[self.object.slug]),
1052 1021 actor=self.request.user, users = self.object.subject.course.students.all() )
... ... @@ -1066,3 +1035,55 @@ class ReplicateTopicView (LoginRequiredMixin, HasRoleMixin, LogMixin, Notificati
1066 1035 super(ReplicateTopicView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
1067 1036  
1068 1037 return super(ReplicateTopicView, self).form_valid(form)
  1038 +
  1039 +class ReplicateSubjectView(LoginRequiredMixin, HasRoleMixin, LogMixin, NotificationMixin, generic.edit.CreateView):
  1040 + log_component = "course"
  1041 + log_resource = "subject"
  1042 + log_action = "replicate"
  1043 + log_context = {}
  1044 +
  1045 + allowed_roles = ['professor', 'system_admin']
  1046 + login_url = reverse_lazy("core:home")
  1047 + redirect_field_name = 'next'
  1048 + template_name = 'subject/replicate.html'
  1049 + form_class = SubjectForm
  1050 +
  1051 + def get_success_url(self):
  1052 + return reverse_lazy('course:view_subject', kwargs={'slug' : self.object.slug})
  1053 +
  1054 + def get_context_data(self, **kwargs):
  1055 + context = super(ReplicateSubjectView, self).get_context_data(**kwargs)
  1056 + subject = get_object_or_404(Subject, slug = self.kwargs.get('slug'))
  1057 + course = Course.objects.get(pk=subject.course_id)
  1058 + context['course'] = course
  1059 + context['subjects'] = course.subjects.filter(Q(visible=True) | Q(professors__in=[self.request.user]))
  1060 + context['subject'] = subject
  1061 + if (has_role(self.request.user,'system_admin')):
  1062 + context['subjects'] = course.subjects.all()
  1063 + return context
  1064 +
  1065 + def form_valid(self, form):
  1066 + subject = get_object_or_404(Subject, slug = self.kwargs.get('slug'))
  1067 + course = Course.objects.get(pk=subject.course_id)
  1068 +
  1069 + self.object = form.save(commit = False)
  1070 + self.object.course = course
  1071 + self.object.save()
  1072 + self.object.professors.add(self.request.user)
  1073 + if self.object.visible:
  1074 + super(ReplicateSubjectView, self).createNotification( " created subject " + self.object.name, resource_name=self.object.name,
  1075 + resource_slug = self.object.slug, actor=self.request.user, users= self.object.course.students.all(),
  1076 + resource_link = reverse('course:view_subject', args=[self.object.slug]))
  1077 +
  1078 + self.log_context['subject_id'] = self.object.id
  1079 + self.log_context['subject_name'] = self.object.name
  1080 + self.log_context['subject_slug'] = self.object.slug
  1081 + self.log_context['course_id'] = course.id
  1082 + self.log_context['course_name'] = course.name
  1083 + self.log_context['course_slug'] = course.slug
  1084 + self.log_context['course_category_id'] = course.category.id
  1085 + self.log_context['course_category_name'] = course.category.name
  1086 +
  1087 + super(ReplicateSubjectView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
  1088 +
  1089 + return super(ReplicateSubjectView, self).form_valid(form)
... ...
exam/migrations/0001_initial.py
1 1 # -*- coding: utf-8 -*-
  2 +
2 3 # Generated by Django 1.10 on 2016-11-16 20:53
  4 +
3 5 from __future__ import unicode_literals
4 6  
5 7 from django.conf import settings
... ... @@ -39,8 +41,8 @@ class Migration(migrations.Migration):
39 41 ('answer', models.ManyToManyField(related_name='student_answer', to='exam.Answer', verbose_name='Answers Students')),
40 42 ],
41 43 options={
42   - 'verbose_name': 'Answer Stundent',
43 44 'verbose_name_plural': 'Answers Student',
  45 + 'verbose_name': 'Answer Stundent',
44 46 },
45 47 ),
46 48 migrations.CreateModel(
... ... @@ -51,8 +53,8 @@ class Migration(migrations.Migration):
51 53 ('exibe', models.BooleanField(default=False, verbose_name='Exibe?')),
52 54 ],
53 55 options={
54   - 'verbose_name': 'Exam',
55 56 'verbose_name_plural': 'Exams',
  57 + 'verbose_name': 'Exam',
56 58 },
57 59 bases=('courses.activity',),
58 60 ),
... ...
exercise/migrations/0001_initial.py
1 1 # -*- coding: utf-8 -*-
2 2 # Generated by Django 1.10 on 2016-11-16 20:53
  3 +
3 4 from __future__ import unicode_literals
4 5  
5 6 from django.db import migrations, models
... ...
exercise/templates/exercise/create_exercise.html.py 0 → 100644
... ... @@ -0,0 +1,83 @@
  1 +BBBB BBBBBBBBBBBBB BBBB BBBBBB
  2 +XXXXXXXXX XXXXXX XXXXXXXXXXX
  3 +XXXX XXXXXXXXXXXX XXXXX XXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  4 + XXXX XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
  5 + XXXX XXXXXXXXXXXXXXXXXXXXXX
  6 + XXXX XXXXXXXXXXXXXXXXXXXXX
  7 + XXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  8 + XXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXX gettext(u'Create a New Exercise') XXXXX
  9 + XXXXXX
  10 + XXXX XXXXXXXXXXXXXXXXXXX
  11 + XXXX XXXX XXX
  12 + XXXXX XXXXXXXXXXXXX XXXXXXXXX XXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  13 + BBBBBBBBBB
  14 + BB BBBBBBBB
  15 + BBB BBBBBBB BB BBBBBBBB
  16 + XXXX XXXXXXXXXXXX XXXXXX XXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX
  17 + XXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX
  18 + XXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  19 + XXXXXXXXX
  20 + XXXXXXX
  21 + XXXXXX
  22 + BBBBBB
  23 + BBBBB
  24 + BBB BBBBB BB BBBB
  25 + XXXX XXXXX XXXXXXXXXXXXXX
  26 + BB BBBBBBBBBBBBBBBBBBBB
  27 + XXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  28 + BBBBB
  29 + BBBBBBBBBBBB BBBBB BBBBBBBBBBBBBBBBBBB BBBBBBBBB
  30 + BB BBBBBBBBBBBB
  31 + XXXX XXXXXXXXXXXX XXXXXXXXXXXX XXXXXXXXXXXXXXXXX XXXXXXXXX XXXXXXXXXXXXX
  32 + XXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX
  33 + XXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  34 + XXXXXXXXX
  35 + XXXX
  36 + BBB BBBBB BB BBBBBBBBBBBB
  37 + XXXXXXXXX
  38 + BBBBBB
  39 + XXXXX
  40 + XXXXXX
  41 + BBBBB
  42 + XXXXXX
  43 + BBBBBB
  44 + XXXX XXXXXXXXXXXXXXXXXXX
  45 + XXXXXXX XXXXXXXXXXXXX XXXXXXXXXX XXXXXXXXXX XXXXXXXXXXX X XXXXXXXXXXXXXXXXXXXXX gettext(u'Cancel') XXXXXXXXX
  46 + XXXXXXX XXXXXXXXXX XXXXXXXXXX XXXXXXXXXXXX XXXXXXXXXXXXXX gettext(u'Submit') XXXXXXXXX
  47 + XXXXXX
  48 + XXXX XXXX XXXX XXX
  49 + XXXXXX
  50 + XXXXXX
  51 + XXXXXX
  52 +XXXXXX
  53 +XXXX XXXXXXXX XXX
  54 +XXXXXXX XXXXXBBBBBB BBBBBBBBBBBBBBBBBXXXXXXXXXXX
  55 +XXXXXXX XXXXXXXXXXXXXXXXXXXXXXX
  56 + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X
  57 + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  58 + XXX XXXX X XXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  59 + XXXXXXXX
  60 + XXXX XBBB BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB BBBBBBBBBBXX
  61 + XXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  62 + XXXXX XXXXX
  63 + XXXXXX XXXXXX
  64 + XXXXXXXXXXXX XXXXXX
  65 + XXXXXXXXXXXX XXXXXX
  66 + XXXXXXXX XXXXXXXXXXXXXX X
  67 + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  68 + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  69 + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  70 + XXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX XXXXXXXXXX
  71 + XX
  72 + XXXXXX XXXXXXXXXXXXXXX
  73 + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  74 + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  75 + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  76 + XXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXX XXXXXX X XXXXX XXXXXXX
  77 + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  78 + XXXXXXXXXXXXXXXXXXX XX X XXXXXXXXXXXXXXXXXXX XX XXXXXX
  79 + X
  80 + XXX
  81 + XXXXXXXXXXXXXXXXXXXXXXX
  82 + XXX
  83 +XXXXXXXXX
... ...
exercise/templates/exercise/delete_exercise.html.py 0 → 100644
... ... @@ -0,0 +1,66 @@
  1 +BBBB BBBBBB BBBBBBBBBBBBB BBBB
  2 +
  3 +XXXX XXXXX XXXXXX XXXX XXX
  4 +XXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXX XXXXXXBBBBBB BBBBBBBBBBBBBBBBBBXX
  5 +
  6 +XXXX XXXXXXXXXXXXXXXXXXXX
  7 + XXXX XXXXXXXXXXXX XXXXX XXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXX XXXX
  8 + XXXX XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
  9 + XXXX XXXXXXXXXXXXXXXXXXXXXX
  10 + XXXX XXXXXXXXXXXXXXXXXXXXX
  11 + XXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  12 + XXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXX gettext(u'Delete Exercise') XXXXX
  13 + XXXXXX
  14 + XXXX XXXXXXXXXXXXXXXXXXX
  15 + XXXX XXXX XXX
  16 + XXXXX XXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  17 + BBBBBBBBBB
  18 + XXXXXXXXXX
  19 + XXXX XXXXXXXXXXXXXXXXXX
  20 + gettext(u'Are you sure to delete the exercise ') XXXXXXXXXXXXXXXXXXX XXXX XX X
  21 + XXXXXX
  22 + XXXX XXXXXXXXXXXXXXXXXXX
  23 + XXXX XXXXXXXXXXXXXXXXXX
  24 + XXXXXXX XXXXXXXXXXXXX XXXXXXXXXX XXXXXXXXXXX XXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXX gettext(u'Close') XXXXXXXXX
  25 + XXXXXXX XXXXXXXXXX XXXXXXXXXX XXXXXXXXXXXX XXXXXXXXXXXXXX gettext(u'Delete') XXXXXXXXX
  26 + XXXXXX
  27 + XXXXXX
  28 + XXXXXXXXXXX
  29 + XXXXXXX
  30 + XXXX XXXX XXXX XXX
  31 + XXXXXX
  32 + XXXXXX
  33 + XXXXXX
  34 + XXXXXX
  35 +XXXXXX
  36 + XXXXXXX XXXXXBBBBBB BBBBBBBBBBBBBBBBXXXXXXXXXXX
  37 + XXXXXXX XXXXXXXXXXXXXXXXXXXXXXX
  38 + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X
  39 + XXX XXXX X XXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  40 + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  41 + XXXXXXXX
  42 + XXXX XBBB BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB BBBBBBBBBBBBBXX
  43 + XXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  44 + XXXXX XXXXX
  45 + XXXXXX XXXXXX
  46 + XXXXXXXXXXXX XXXXXX
  47 + XXXXXXXXXXXX XXXXXX
  48 + XXXXXXXX XXXXXXXXXXXXXX X
  49 + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  50 + XXXXXXXXXXXXXXXXXXXXXXXXX
  51 + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  52 + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  53 + XXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXX XXXXXXXXXX
  54 + XX
  55 + XXXXXX XXXXXXXXXXXXXXX
  56 + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  57 + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  58 + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  59 + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  60 + XXXXXXXXXXXXXXXXXXXXX XXXX XXXXXX XX XXXXXXXXXX
  61 + X
  62 + XXX
  63 + XXXXXXXXXXXXXXXXXXXXXXX
  64 + XXX
  65 + XXXXXXXXX
  66 +XXXX XXXXXXXX XXX
... ...
exercise/templates/exercise/exercise_edit.html.py 0 → 100644
... ... @@ -0,0 +1,7 @@
  1 +BBBB BBBBBB BBBB BBBBBBBBBBBBBBBBB BBBBBBBBBBBBBBB
  2 +XXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  3 + BBB BBBBBBBB BB BBBBBBBBB
  4 + XXX XXXXXXXXXXXXXXXXXXXXXXXX XX X XXXXXXXXXXXXXXXXXXXXXX XX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXX XXXXXXXXX XXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXX XX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXX XXXXXXXX XXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  5 + XXX XX X XXXXXXXXXXXXXXXXXXX XXXXXXXXX XXXXXXXX XXXXXXXXXXXXXXXXXXXXXXX XX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  6 + BBBBBB
  7 +XXXXXX
... ...
exercise/templates/exercise/exercise_list.html.py 0 → 100644
... ... @@ -0,0 +1,6 @@
  1 +BBBB BBBBBB BBBB BBBBBBBBBBBBBBBBB BBBBBBBBBBBBBBB
  2 +XXXX XXXXXXXXXXXXXXXXXXXXXXXXXX
  3 +BBB BBBBBBBB BB BBBBBBBBB
  4 + XXX XXXXXXXXXXXXXXXXX XXXXXXXXX XXXXXXXX XXXXXXXXXXXXXXXXXXXXXXX XX XXXXXXXXXXXXXXXXX
  5 +BBBBBB
  6 +XXXXXX
... ...
files/migrations/0001_initial.py
1 1 # -*- coding: utf-8 -*-
  2 +
2 3 # Generated by Django 1.10 on 2016-11-16 20:54
  4 +
3 5 from __future__ import unicode_literals
4 6  
5 7 from django.conf import settings
... ... @@ -16,6 +18,7 @@ class Migration(migrations.Migration):
16 18 migrations.swappable_dependency(settings.AUTH_USER_MODEL),
17 19 ('courses', '0001_initial'),
18 20 ('core', '0001_initial'),
  21 + ('courses', '0001_initial'),
19 22 ]
20 23  
21 24 operations = [
... ...
forum/migrations/0001_initial.py
1 1 # -*- coding: utf-8 -*-
  2 +
2 3 # Generated by Django 1.10 on 2016-11-16 20:54
  4 +
3 5 from __future__ import unicode_literals
4 6  
5 7 from django.conf import settings
... ... @@ -26,8 +28,8 @@ class Migration(migrations.Migration):
26 28 ('create_date', models.DateTimeField(auto_now_add=True, verbose_name='Create Date')),
27 29 ],
28 30 options={
29   - 'verbose_name': 'Forum',
30 31 'verbose_name_plural': 'Foruns',
  32 + 'verbose_name': 'Forum',
31 33 },
32 34 bases=('courses.activity',),
33 35 ),
... ... @@ -42,8 +44,8 @@ class Migration(migrations.Migration):
42 44 ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Autor')),
43 45 ],
44 46 options={
45   - 'verbose_name': 'Post',
46 47 'verbose_name_plural': 'Posts',
  48 + 'verbose_name': 'Post',
47 49 },
48 50 ),
49 51 migrations.CreateModel(
... ... @@ -57,8 +59,8 @@ class Migration(migrations.Migration):
57 59 ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Autor')),
58 60 ],
59 61 options={
60   - 'verbose_name': 'Post Answer',
61 62 'verbose_name_plural': 'Post Answers',
  63 + 'verbose_name': 'Post Answer',
62 64 },
63 65 ),
64 66 ]
... ...
links/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: 2016-10-27 23:54-0300\n"
  11 +"POT-Creation-Date: 2016-11-16 13:43-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"
... ... @@ -18,46 +18,79 @@ msgstr &quot;&quot;
18 18 "Content-Transfer-Encoding: 8bit\n"
19 19 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
20 20  
21   -#: .\forms.py:16 .\forms.py:22
  21 +#: .\forms.py:14 .\forms.py:16 .\forms.py:29 .\forms.py:31
22 22 msgid "Invalid url!"
23 23 msgstr "Url inválida!"
24 24  
25   -#: .\templates\links\create_link.html:9
  25 +#: .\models.py:8
  26 +msgid "Link_URL"
  27 +msgstr "URL"
  28 +
  29 +#: .\models.py:9
  30 +msgid "Description"
  31 +msgstr "Descrição"
  32 +
  33 +#: .\templates\links\create_link.html:8
26 34 msgid "Create a New Link"
27 35 msgstr "Criar um novo link"
28 36  
29   -#: .\templates\links\create_link.html:46 .\templates\links\delete_link.html:15
30   -#: .\templates\links\update_link.html:25
  37 +#: .\templates\links\create_link.html:35 .\templates\links\update_link.html:39
31 38 msgid "Cancel"
32 39 msgstr "Cancelar"
33 40  
34   -#: .\templates\links\delete_link.html:11
35   -msgid "Do you really want to delete this link?"
36   -msgstr "Você realmente deseja apagar este link?"
  41 +#: .\templates\links\create_link.html:36 .\templates\links\update_link.html:40
  42 +msgid "Submit"
  43 +msgstr "Enviar"
37 44  
38   -#: .\templates\links\delete_link.html:16
39   -msgid "Confirm"
40   -msgstr "Confirmar"
  45 +#: .\templates\links\create_link.html:61
  46 +#, fuzzy
  47 +#| msgid "Link created successfully!"
  48 +msgid "Link successfully created!"
  49 +msgstr "Link criado com sucesso!"
41 50  
42   -#: .\templates\links\update_link.html:8
43   -msgid "Links"
44   -msgstr "Links"
  51 +#: .\templates\links\create_link.html:68 .\templates\links\update_link.html:73
  52 +msgid "Invalid link, insert a valid one!"
  53 +msgstr "Link inválido, insira um válido! "
45 54  
46   -#: .\templates\links\update_link.html:13
47   -msgid "Name"
48   -msgstr "Nome"
  55 +#: .\templates\links\delete_link.html:12
  56 +msgid "Delete Link"
  57 +msgstr "Apagar Link"
49 58  
50   -#: .\templates\links\update_link.html:17
51   -msgid "URL"
52   -msgstr "URL"
  59 +#: .\templates\links\delete_link.html:20
  60 +#, fuzzy
  61 +#| msgid "Do you really want to delete this link?"
  62 +msgid "Are you sure to delete the link "
  63 +msgstr "Você realmente deseja apagar o link "
53 64  
54   -#: .\templates\links\update_link.html:21
55   -msgid "Description"
56   -msgstr "Descrição"
  65 +#: .\templates\links\delete_link.html:24
  66 +msgid "Close"
  67 +msgstr "Fechar"
57 68  
58   -#: .\templates\links\update_link.html:26
59   -msgid "Submit"
60   -msgstr "Enviar"
  69 +#: .\templates\links\delete_link.html:25
  70 +msgid "Delete"
  71 +msgstr "Apagar"
  72 +
  73 +#: .\templates\links\delete_link.html:56
  74 +#, fuzzy
  75 +#| msgid "Link created successfully!"
  76 +msgid "Link successfully deleted!"
  77 +msgstr "Link criado com sucesso!"
  78 +
  79 +#: .\templates\links\delete_link.html:63
  80 +msgid "Error when trying to delete."
  81 +msgstr "Erro ao tentar apagar."
  82 +
  83 +#: .\templates\links\update_link.html:8
  84 +#, fuzzy
  85 +#| msgid "Link"
  86 +msgid "Edit Link"
  87 +msgstr "Link"
  88 +
  89 +#: .\templates\links\update_link.html:66
  90 +#, fuzzy
  91 +#| msgid "Link deleted Successfully!"
  92 +msgid "Link Sucessfully Updated!"
  93 +msgstr "Link apagado com sucesso!"
61 94  
62 95 #: .\templates\links\view_link.html:8
63 96 msgid "Link"
... ... @@ -67,14 +100,17 @@ msgstr &quot;Link&quot;
67 100 msgid "Read more"
68 101 msgstr "Ler mais"
69 102  
70   -#: .\views.py:28
71   -msgid "Link created successfully!"
72   -msgstr "Link criado com sucesso!"
  103 +#~ msgid "Confirm"
  104 +#~ msgstr "Confirmar"
73 105  
74   -#: .\views.py:50
75   -msgid "Link deleted Successfully!"
76   -msgstr "Link apagado com sucesso!"
  106 +#~ msgid "Links"
  107 +#~ msgstr "Links"
  108 +
  109 +#~ msgid "Name"
  110 +#~ msgstr "Nome"
  111 +
  112 +#~ msgid "URL"
  113 +#~ msgstr "URL"
77 114  
78   -#: .\views.py:69
79   -msgid "Link updated successfully!"
80   -msgstr "Link atualizado com sucesso!"
  115 +#~ msgid "Link updated successfully!"
  116 +#~ msgstr "Link atualizado com sucesso!"
... ...
links/migrations/0001_initial.py
1 1 # -*- coding: utf-8 -*-
  2 +
2 3 # Generated by Django 1.10 on 2016-11-16 20:54
3 4 from __future__ import unicode_literals
4 5  
... ... @@ -24,8 +25,8 @@ class Migration(migrations.Migration):
24 25 ('image', models.ImageField(blank=True, upload_to='links/')),
25 26 ],
26 27 options={
27   - 'verbose_name': 'Link',
28 28 'verbose_name_plural': 'Links',
  29 + 'verbose_name': 'Link',
29 30 },
30 31 bases=('courses.material',),
31 32 ),
... ...
links/migrations/0002_auto_20161116_1804.py 0 → 100644
... ... @@ -0,0 +1,25 @@
  1 +# -*- coding: utf-8 -*-
  2 +# Generated by Django 1.10 on 2016-11-16 21:04
  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 + ('links', '0001_initial'),
  12 + ]
  13 +
  14 + operations = [
  15 + migrations.AlterField(
  16 + model_name='link',
  17 + name='link_description',
  18 + field=models.CharField(max_length=200, verbose_name='Description'),
  19 + ),
  20 + migrations.AlterField(
  21 + model_name='link',
  22 + name='link_url',
  23 + field=models.URLField(verbose_name='Link_URL'),
  24 + ),
  25 + ]
... ...
links/models.py
1 1 from django.db import models
2 2 from courses.models import Material
3 3 from autoslug.fields import AutoSlugField
  4 +from django.utils.translation import ugettext_lazy as _
  5 +
4 6 # Create your models here.
5 7 class Link(Material):
6   - link_url = models.URLField()
7   - link_description = models.CharField(max_length=200)
  8 + link_url = models.URLField(verbose_name = _("Link_URL"))
  9 + link_description = models.CharField(_('Description'),max_length=200)
8 10 image = models.ImageField(upload_to = 'links/',blank = True)
9 11 class Meta:
10 12 verbose_name = 'Link'
... ...
links/templates/links/create_link.html
... ... @@ -58,14 +58,14 @@
58 58 $('#requisicoes_ajax').empty();
59 59 $('#list-topic{{ topic.id }}-links').append(data);
60 60 $('#list-topic{{ topic.id }}-links-edit').append(data);
61   - alertify.alert('Link successfully created!')
  61 + alertify.success(" {% trans 'Link successfully created!' %} ");
62 62 },
63 63 error: function(data){
64 64 $("div.modal-backdrop.fade.in").remove();
65 65 $('#requisicoes_ajax').empty();
66 66 $('#requisicoes_ajax').append(data.responseText);
67 67 $('#createLinksModal').modal('show');
68   - alertify.alert('Invalid link, insert a valid one!');
  68 + alertify.error("{% trans 'Invalid link, insert a valid one!' %}");
69 69 }
70 70 });
71 71 event.preventDefault();
... ...
links/templates/links/create_link.html.py
... ... @@ -1,68 +0,0 @@
1   -BBBB BBBBBBBBBBBBB BBBB
2   -
3   -XXXXXXXXX XXXXXX XXXXXXX
4   -XXXX XXXXXXXXXXXX XXXXX XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5   - XXXX XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
6   - XXXX XXXXXXXXXXXXXXXXXXXXXX
7   - XXXX XXXXXXXXXXXXXXXXXXXXX
8   - XXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
9   - XXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX gettext(u'Create a New Link') XXXXX
10   - XXXXXX
11   - XXXX XXXXXXXXXXXXXXXXXXX
12   - XXXX XXXX XXX
13   - XXXXX XXXXXXXXXXXXX XXXXXXXXX XXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
14   - BBBBBBBBBB
15   - BB BBBBBBBB
16   - BBB BBBBBBB BB BBBBBBBB
17   - XXXX XXXXXXXXXXXX XXXXXX XXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX
18   - XXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX
19   - XXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
20   - XXXXXXXXX
21   - XXXXXXX
22   - XXXXXX
23   - BBBBBB
24   - BBBBB
25   - BBB BBBBB BB BBBB
26   - BB BBBBBBBBBBBBBBBBBBBB
27   - XXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
28   - BBBB
29   - XXXXXX XXXXXXXXXXXXXXX
30   - BBBBB
31   - BBBBBBBBBBBB BBBBB BBBBBBBBBBBBBBBBBBBB
32   - BBBBBB
33   - XXXX XXXXXXXXXXXXXXXXXXX
34   - XX XXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXX XXXXXXXXXX XXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXX gettext(u'Cancel') XXXX
35   - XXXXXXX XXXXXXXXXX XXXXXXXXXX XXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXX XXXXXXXX XXXXXXXXXXX
36   - XXXXXX
37   - XXXX XXXX XXXX XXX
38   - XXXXXX
39   - XXXXXX
40   - XXXXXX
41   -XXXXXX
42   -XXXX XXXXXXXX XXX
43   -
44   -
45   -XXXXXXX XXXXXXXXXXXXXXXXXXXXXXX
46   - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X
47   - XXX XXXX X XXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
48   - XXXXXXXX
49   - XXXX XBBB BBBBBBBBBBBBBBBBBBBBBBBBBB BBBBBBBBBBXX
50   - XXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
51   - XXXXX XXXXX
52   - XXXXXX XXXXXX
53   - XXXXXXXXXXXX XXXXXX
54   - XXXXXXXXXXXX XXXXXX
55   - XXXXXXXX XXXXXXXXXXXXXX X
56   - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
57   - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
58   - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
59   - XX
60   - XXXXXX XXXXXXXXXXXXXXX
61   - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
62   - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
63   - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
64   - X
65   - XXX
66   - XXXXXXXXXXXXXXXXXXXXXXX
67   - XXX
68   -XXXXXXXXX
links/templates/links/delete_link.html
... ... @@ -53,14 +53,14 @@
53 53 $('#link_{{ link.slug }}').remove();
54 54 $('#link_edit_icon_{{ link.slug }}').remove();
55 55 $('#link_edit_{{ link.slug }}').remove();
56   - alertify.alert('Link successfully deleted!')
  56 + alertify.success(" {% trans 'Link successfully deleted!' %} ");
57 57 },
58 58 error: function(data){
59 59 $("div.modal-backdrop.fade.in").remove();
60 60 $('#requisicoes_ajax').empty();
61 61 $('#requisicoes_ajax').append(data.responseText);
62 62 $('#linkDeleteModal').modal('show');
63   - alertify.alert('Error when trying to delete.');
  63 + alertify.error(" {% trans 'Error when trying to delete.' %} ");
64 64 }
65 65 });
66 66 event.preventDefault();
... ...
links/templates/links/delete_link.html.py
... ... @@ -1,22 +0,0 @@
1   -BBBB BBBBBBBBBBBBB BBBB
2   -XXXX XXXXX XXXXXX XXXX XXX
3   -XXXX XXXXXXXXXXXXX XXXXXXXXXXXXXXXX
4   - XXXX XXXXXXXXXXXXXXXXXXXXX
5   - XXXX XXXXXXXXXXXXXXXXXXXXXX
6   - XXXX XXXXXXXXXXXXXXXXXXXXX
7   - XXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
8   - XXX XXXXXXXXXXXXXXXXXXXXXXXXX
9   - XXXXXX
10   - XXXX XXXXXXXXXXXXXXXXXXX
11   - XXX gettext(u'Do you really want to delete this link?') XXXX
12   - XXXXXX
13   - XXXX XXXXXXXXXXXXXXXXXXXXX
14   - XXXX XXX
15   - XXXXXXX XXXXXXXXXXXXX XXXXXXXXXX XXXXXXXXXXX XXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXX gettext(u'Cancel') XXXXXXXXX
16   - XX XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX XXXXXXXXXX XXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX gettext(u'Confirm') XXXXXXXXXXXXX
17   -
18   - XXXXXX
19   - XXXXXX
20   - XXXXXX
21   -XXXXXX
22   -XXXX XXX XXX
links/templates/links/render_link.html.py
... ... @@ -1 +0,0 @@
1   -XXXXXX XXXXXXXXX XXXXXXXX XXXXXXXXXXXXXXXXXXXXXXX XX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXBBB BBBBBBBBBBBBBBBBBBBBBBBB BBBBBBBBBXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
links/templates/links/update_link.html
... ... @@ -63,14 +63,14 @@
63 63 $('#requisicoes_ajax').empty();
64 64 $('#link_edit_{{ link.slug }}').replaceWith(data);
65 65 $('#link_{{ link.slug }}').replaceWith(data);
66   - alertify.alert("Sucessfully Updated!")
  66 + alertify.success(" {% trans 'Link Sucessfully Updated!' %} ");
67 67 },
68 68 error: function(data){
69 69 $("div.modal-backdrop.fade.in").remove();
70 70 $('#requisicoes_ajax').empty();
71 71 $('#requisicoes_ajax').append(data.responseText);
72 72 $('#linksModalEdit').modal();
73   - alertify.alert('Invalid link, insert a valid one!');
  73 + alertify.error("{% trans 'Invalid link, insert a valid one!' %}");
74 74 }
75 75 });
76 76 event.preventDefault();
... ...
links/templates/links/update_link.html.py
... ... @@ -1,33 +0,0 @@
1   -BBBB BBBBBBBBBBBBB BBBB
2   -XXXX XXXXX XXXX XXXXXXX
3   -XXXX XXXXXXXXXXXX XXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
4   - XXXX XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
5   - XXXX XXXXXXXXXXXXXXXXXXXXXX
6   - XXXX XXXXXXXXXXXXXXXXXXXXX
7   - XXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
8   - XXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX gettext(u'Links') XXXXX
9   - XXXXXX
10   - XXXX XXXXXXXXXXXXXXXXXXX
11   - XXXX XXXX XXX
12   - XXXX XXXXXXXXXXXXXXXXXXX
13   - XXXXXX XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX gettext(u'Name') XXXXXXXX
14   - XXXXXX XXXXXXXXXXXXXX XXXXXXXXXXX XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX
15   - XXXXXX
16   - XXXX XXXXXXXXXXXXXXXXXXX
17   - XXXXXX XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX gettext(u'URL') XXXXXXXX
18   - XXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXX XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX
19   - XXXXXX
20   - XXXX XXXXXXXXXXXXXXXXX XXXXXXXXXX
21   - XXXXXX XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX gettext(u'Descrição') XXXXXXXX
22   - XXXXXXXXX XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXX
23   - XXXXXX
24   - XXXX XXXXXXXXXXXXXXXXXXX
25   - XX XXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXX XXXXXXXXXX XXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXX gettext(u'Cancel') XXXX
26   - XX XXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXX XXXXXXXXXX XXXXXXXXXXXXX gettext(u'Submit') XXXX
27   - XXXXXX
28   - XXXX XXXX XXXX XXX
29   - XXXXXX
30   - XXXXXX
31   - XXXXXX
32   -XXXXXX
33   -XXXX XXXXXXXX XXX
links/templates/links/view_link.html.py
... ... @@ -1,32 +0,0 @@
1   -BBBB BBBBBB BBBB BBBBBBBBBBBBBBBBB BBBBBBBBBBBBBBB
2   -XXXXXXXXX XXXX XXXXXXX
3   -XXXX XXXXXXXXXXXX XXXXX XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
4   - XXXX XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
5   - XXXX XXXXXXXXXXXXXXXXXXXXXX
6   - XXXX XXXXXXXXXXXXXXXXXXXXX
7   - XXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
8   - XXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX gettext(u'Link') XXXXX
9   - XXXXXX
10   - XXXX XXXXXXXXXXXXXXXXXXX
11   - XXXX XXXX XXX
12   - XXXXXXXX XXXXXXXXXXX XXXXXXXX XXXXXXXXXXXX
13   - XXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX
14   - XXXX XXXXXXXXXXXXXXXXXXX
15   - XX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
16   - XX XXXXXXXXXXXXXXXXXX XXXXXXXXXXX
17   - XX XXXXXXX XXXXXXXXXX XXXXXXXXXXXXX gettext(u'Read more') XXXX
18   - XXXXXX
19   - XXXXXXXXXX
20   - XXXX XXXX XXXX XXX
21   - XXXXXX
22   - XXXXXX
23   - XXXXXX
24   -XXXXXX
25   -
26   -XXXX XXXXX X XXXXX XX XXXXXXXXXXXXXXXX
27   -
28   -XXXXXX
29   -XXXX XXXXXXXX XXX
30   -XXXXXXX XXXXXXXXXXXXXXXXXXXXXXX
31   -XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
32   -XXXXXXXXX
poll/migrations/0001_initial.py
... ... @@ -25,9 +25,9 @@ class Migration(migrations.Migration):
25 25 ('order', models.PositiveSmallIntegerField(verbose_name='Order')),
26 26 ],
27 27 options={
28   - 'verbose_name': 'Answer',
29 28 'verbose_name_plural': 'Answers',
30 29 'ordering': ('order',),
  30 + 'verbose_name': 'Answer',
31 31 },
32 32 ),
33 33 migrations.CreateModel(
... ... @@ -39,8 +39,8 @@ class Migration(migrations.Migration):
39 39 ('answer', models.ManyToManyField(related_name='answers_stundet', to='poll.Answer', verbose_name='Answers Students')),
40 40 ],
41 41 options={
42   - 'verbose_name': 'Answer Stundent',
43 42 'verbose_name_plural': 'Answers Student',
  43 + 'verbose_name': 'Answer Stundent',
44 44 },
45 45 ),
46 46 migrations.CreateModel(
... ... @@ -49,8 +49,8 @@ class Migration(migrations.Migration):
49 49 ('activity_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='courses.Activity')),
50 50 ],
51 51 options={
52   - 'verbose_name': 'Poll',
53 52 'verbose_name_plural': 'Polls',
  53 + 'verbose_name': 'Poll',
54 54 },
55 55 bases=('courses.activity',),
56 56 ),
... ...
users/migrations/0001_initial.py
... ... @@ -46,8 +46,8 @@ class Migration(migrations.Migration):
46 46 ('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.Permission', verbose_name='user permissions')),
47 47 ],
48 48 options={
49   - 'verbose_name': 'User',
50 49 'verbose_name_plural': 'Users',
  50 + 'verbose_name': 'User',
51 51 },
52 52 managers=[
53 53 ('objects', django.contrib.auth.models.UserManager()),
... ...