Commit db1ba29daa7ab502e04aee79779120a55880cee6
Exists in
master
and in
5 other branches
Merge branch 'dev' of https://github.com/amadeusproject/amadeuslms into dev
Showing
5 changed files
with
97 additions
and
68 deletions
Show diff stats
courses/models.py
@@ -116,19 +116,6 @@ class Material(Resource): | @@ -116,19 +116,6 @@ class Material(Resource): | ||
116 | all_students = models.BooleanField(_('All Students'), default=False) | 116 | all_students = models.BooleanField(_('All Students'), default=False) |
117 | 117 | ||
118 | """ | 118 | """ |
119 | -Topic File | ||
120 | -""" | ||
121 | -class File(Material): | ||
122 | - description = models.TextField(_('Description'), blank=True) | ||
123 | - content = models.FileField(upload_to='uploads/courses/subject/topic/%Y/%m/%d/') | ||
124 | - typ = models.ForeignKey(MymeType, verbose_name= _('Type'), related_name='file') | ||
125 | - | ||
126 | - class Meta: | ||
127 | - verbose_name = _('Topic file') | ||
128 | - verbose_name_plural = _('Topic files') | ||
129 | - | ||
130 | - | ||
131 | -""" | ||
132 | It is a category for each subject. | 119 | It is a category for each subject. |
133 | """ | 120 | """ |
134 | class SubjectCategory(models.Model): | 121 | class SubjectCategory(models.Model): |
courses/templates/subject/form_view_teacher.html
@@ -226,62 +226,10 @@ | @@ -226,62 +226,10 @@ | ||
226 | </div> | 226 | </div> |
227 | </div> | 227 | </div> |
228 | </div> | 228 | </div> |
229 | - <!-- EndModal --> | ||
230 | 229 | ||
231 | - <!-- MODAL CREATE FILE --> | ||
232 | - <div class="modal fade" id="createFileModal" tabindex="-1" role="dialog" aria-labelledby="createFileLabel" style="display: none;"> | ||
233 | - <div class="modal-dialog" role="document"> | ||
234 | - <div class="modal-content"> | ||
235 | - <div class="modal-header"> | ||
236 | - <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> | ||
237 | - <h4 class="modal-title" id="createFileLabel">Add File</h4> | ||
238 | - </div> | ||
239 | - <div class="modal-body"> | ||
240 | - <!-- Card --> | ||
241 | - | ||
242 | - <form class="form-horizontal"> | ||
243 | - <fieldset> | ||
244 | - | ||
245 | - <div class="form-group is-empty"> | ||
246 | - <label for="inputName" class="col-md-2 control-label">Name</label> | ||
247 | - | ||
248 | - <div class="col-md-10"> | ||
249 | - <input type="text" class="form-control" id="inputText" placeholder="Name"> | ||
250 | - </div> | ||
251 | - </div> | ||
252 | - | ||
253 | - <div class="form-group is-empty is-fileinput"> | ||
254 | - <label for="inputFile" class="col-md-2 control-label">File</label> | ||
255 | - | ||
256 | - <div class="col-md-10"> | ||
257 | - <input type="text" readonly="" class="form-control" placeholder="Browse..."> | ||
258 | - <input type="file" id="inputFile" multiple=""> | ||
259 | - </div> | ||
260 | - </div> | ||
261 | - | ||
262 | - | ||
263 | - <div class="form-group"> | ||
264 | - <div class="col-md-12 text-center"> | ||
265 | - <p><b>The file size shouldn't exceed 10MB</b></p> | ||
266 | - </div> | ||
267 | - </div> | ||
268 | - | ||
269 | - <div class="form-group"> | ||
270 | - <div class="col-md-12"> | ||
271 | - <a href="javascript:void(0)" class="btn btn-raised btn-default">Cancel<div class="ripple-container"></div></a> | ||
272 | - <a href="javascript:void(0)" class="btn btn-raised btn-primary">Submit</a> | ||
273 | - </div> | ||
274 | - </div> | ||
275 | - </fieldset> | ||
276 | - </form> | ||
277 | - | ||
278 | - | ||
279 | - <!-- .end Card --> | ||
280 | - </div> | ||
281 | - </div> | ||
282 | - </div> | ||
283 | - </div> | ||
284 | - <!-- EndModal --> | 230 | +{% if user|has_role:'system_admin' or topic.owner == user%} |
231 | + {% include "files/create_file.html" %} | ||
232 | +{% endif %} | ||
285 | 233 | ||
286 | <!-- MODAL REMOVE FILE --> | 234 | <!-- MODAL REMOVE FILE --> |
287 | <div class="modal" id="removeFileModal"> | 235 | <div class="modal" id="removeFileModal"> |
courses/views.py
@@ -16,6 +16,7 @@ from .forms import CourseForm, UpdateCourseForm, CategoryCourseForm, SubjectForm | @@ -16,6 +16,7 @@ from .forms import CourseForm, UpdateCourseForm, CategoryCourseForm, SubjectForm | ||
16 | from .models import Course, Subject, CourseCategory,Topic, SubjectCategory,Activity | 16 | from .models import Course, Subject, CourseCategory,Topic, SubjectCategory,Activity |
17 | from core.mixins import NotificationMixin | 17 | from core.mixins import NotificationMixin |
18 | from users.models import User | 18 | from users.models import User |
19 | +from files.forms import FileForm | ||
19 | 20 | ||
20 | from datetime import date | 21 | from datetime import date |
21 | 22 | ||
@@ -303,6 +304,7 @@ class SubjectsView(LoginRequiredMixin, generic.ListView): | @@ -303,6 +304,7 @@ class SubjectsView(LoginRequiredMixin, generic.ListView): | ||
303 | context = super(SubjectsView, self).get_context_data(**kwargs) | 304 | context = super(SubjectsView, self).get_context_data(**kwargs) |
304 | context['course'] = subject.course | 305 | context['course'] = subject.course |
305 | context['subject'] = subject | 306 | context['subject'] = subject |
307 | + context['form_file'] = FileForm | ||
306 | context['topics'] = Topic.objects.filter(subject = subject) | 308 | context['topics'] = Topic.objects.filter(subject = subject) |
307 | return context | 309 | return context |
308 | 310 |
@@ -0,0 +1,9 @@ | @@ -0,0 +1,9 @@ | ||
1 | +from django import forms | ||
2 | +from .models import TopicFile | ||
3 | +from django.utils.translation import ugettext_lazy as _ | ||
4 | + | ||
5 | +class FileForm(forms.ModelForm): | ||
6 | + | ||
7 | + class Meta: | ||
8 | + model = TopicFile | ||
9 | + fields = ['name', 'file_url'] | ||
0 | \ No newline at end of file | 10 | \ No newline at end of file |
@@ -0,0 +1,83 @@ | @@ -0,0 +1,83 @@ | ||
1 | +{% load widget_tweaks i18n %} | ||
2 | +<!-- MODAL CREATE FILE --> | ||
3 | +<div class="modal fade" id="createFileModal" tabindex="-1" role="dialog" aria-labelledby="createFileLabel" style="display: none;"> | ||
4 | + <div class="modal-dialog" role="document"> | ||
5 | + <div class="modal-content"> | ||
6 | + <div class="modal-header"> | ||
7 | + <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> | ||
8 | + <h4 class="modal-title" id="createFileLabel">{% trans 'Add File' %}</h4> | ||
9 | + </div> | ||
10 | + <div class="modal-body"> | ||
11 | + <!-- Card --> | ||
12 | + <form class="form-horizontal"> | ||
13 | + {% csrf_token %} | ||
14 | + {% if messages %} | ||
15 | + {% for message in messages %} | ||
16 | + <div class="alert alert-{{ message.tags }} alert-dismissible" role="alert"> | ||
17 | + <button type="button" class="close" data-dismiss="alert" aria-label="Close"> | ||
18 | + <span aria-hidden="true">×</span> | ||
19 | + </button> | ||
20 | + <p>{{ message }}</p> | ||
21 | + </div> | ||
22 | + {% endfor %} | ||
23 | + {% endif %} | ||
24 | + <fieldset> | ||
25 | + {% for field in form_file %} | ||
26 | + <div class="form-group is-empy{% if form.has_error %} has-error {% endif %} is-fileinput"> | ||
27 | + <div class="col-md-12"> | ||
28 | + {% if field.field.required %} | ||
29 | + <label for="{{ field.auto_id }}" class="control-label">{{ field.label }}<span>*</span></label> | ||
30 | + {% else %} | ||
31 | + <label for="{{ field.auto_id }}" class=" control-label">{{ field.label }}</label> | ||
32 | + {% endif %} | ||
33 | + {% if field.auto_id == 'id_file_url' %} | ||
34 | + {% render_field field class='form-control input-sm' %} | ||
35 | + <div class="input-group"> | ||
36 | + <input type="text" readonly="" class="form-control" placeholder="{% trans 'Choose your file...' %}"> | ||
37 | + <span class="input-group-btn input-group-sm"> | ||
38 | + <button type="button" class="btn btn-fab btn-fab-mini"> | ||
39 | + <i class="material-icons">attach_file</i> | ||
40 | + </button> | ||
41 | + </span> | ||
42 | + </div> | ||
43 | + {% else %} | ||
44 | + {% render_field field class='form-control input-sm' %} | ||
45 | + <span id="helpBlock" class="help-block">{{ field.help_text }}</span> | ||
46 | + {% endif %} | ||
47 | + </div> | ||
48 | + | ||
49 | + {% if field.errors %} | ||
50 | + <div class="alert alert-danger alert-dismissible" role="alert"> | ||
51 | + <button type="button" class="close" data-dismiss="alert" aria-label="Close"> | ||
52 | + <span aria-hidden="true">×</span> | ||
53 | + </button> | ||
54 | + <ul> | ||
55 | + {% for error in field.errors %} | ||
56 | + <li>{{ error }}</li> | ||
57 | + {% endfor %} | ||
58 | + </ul> | ||
59 | + </div> | ||
60 | + {% endif %} | ||
61 | + </div> | ||
62 | + {% endfor %} | ||
63 | + | ||
64 | + <div class="form-group"> | ||
65 | + <div class="col-md-12 text-center"> | ||
66 | + <p><b>The file size shouldn't exceed 10MB</b></p> | ||
67 | + </div> | ||
68 | + </div> | ||
69 | + | ||
70 | + <div class="form-group"> | ||
71 | + <div class="col-md-12"> | ||
72 | + <a href="javascript:void(0)" class="btn btn-raised btn-default">Cancel<div class="ripple-container"></div></a> | ||
73 | + <a href="javascript:void(0)" class="btn btn-raised btn-primary">Submit</a> | ||
74 | + </div> | ||
75 | + </div> | ||
76 | + </fieldset> | ||
77 | + </form> | ||
78 | + <!-- .end Card --> | ||
79 | + </div> | ||
80 | + </div> | ||
81 | + </div> | ||
82 | +</div> | ||
83 | +<!-- EndModal --> | ||
0 | \ No newline at end of file | 84 | \ No newline at end of file |