Commit efe9211511b329a0a898abd09abd21a4c91af927
1 parent
b5382624
Exists in
master
and in
5 other branches
Ajustes nos campos da classe Course
Showing
7 changed files
with
9 additions
and
195 deletions
Show diff stats
app/templates/home_admin_content.html
@@ -2,16 +2,7 @@ | @@ -2,16 +2,7 @@ | ||
2 | 2 | ||
3 | {% for course in objects %} | 3 | {% for course in objects %} |
4 | <div class="panel panel-default courseHome"> | 4 | <div class="panel panel-default courseHome"> |
5 | - <div class="panel-body"> | ||
6 | - <p>{{ course }}</p> | ||
7 | - </div> | ||
8 | - <div class="panel-footer"> | ||
9 | - <ul> | ||
10 | - <li>{% trans 'Students' %}: {{ course.max_students }}</li> | ||
11 | - <li>{% trans 'Beginning' %}: {{ course.init_date }}</li> | ||
12 | - <li>{% trans 'End' %}: {{ course.end_date }}</li> | ||
13 | - </ul> | ||
14 | - </div> | 5 | + <br><h4>{{ course }}</h4> |
15 | <a href="{% url 'course:update' course.slug %}" class="btn btn-outline-info">{% trans 'Edit' %}</a> | 6 | <a href="{% url 'course:update' course.slug %}" class="btn btn-outline-info">{% trans 'Edit' %}</a> |
16 | </div> | 7 | </div> |
17 | -{% endfor %} | ||
18 | \ No newline at end of file | 8 | \ No newline at end of file |
9 | +{% endfor %} |
courses/forms.py
@@ -16,60 +16,19 @@ class CategoryCourseForm(forms.ModelForm): | @@ -16,60 +16,19 @@ class CategoryCourseForm(forms.ModelForm): | ||
16 | 'name': _('CourseCategory name') | 16 | 'name': _('CourseCategory name') |
17 | } | 17 | } |
18 | 18 | ||
19 | - | ||
20 | class CourseForm(forms.ModelForm): | 19 | class CourseForm(forms.ModelForm): |
21 | - def clean_end_register_date(self): | ||
22 | - init_register_date = self.cleaned_data['init_register_date'] | ||
23 | - end_register_date = self.cleaned_data['end_register_date'] | ||
24 | - | ||
25 | - if init_register_date and end_register_date and end_register_date < init_register_date: | ||
26 | - raise forms.ValidationError(_('The end date may not be before the start date.')) | ||
27 | - return end_register_date | ||
28 | - | ||
29 | - def clean_init_date(self): | ||
30 | - end_register_date = self.cleaned_data['end_register_date'] | ||
31 | - init_date = self.cleaned_data['init_date'] | ||
32 | - | ||
33 | - if end_register_date and init_date and init_date <= end_register_date: | ||
34 | - raise forms.ValidationError(_('The course start date must be after the end of registration.')) | ||
35 | - return init_date | ||
36 | - | ||
37 | - def clean_end_date(self): | ||
38 | - init_date = self.cleaned_data['init_date'] | ||
39 | - end_date = self.cleaned_data['end_date'] | ||
40 | - | ||
41 | - if init_date and end_date and end_date < init_date: | ||
42 | - raise forms.ValidationError(_('The end date may not be before the start date.')) | ||
43 | - return end_date | ||
44 | - | ||
45 | 20 | ||
46 | class Meta: | 21 | class Meta: |
47 | model = Course | 22 | model = Course |
48 | - fields = ('name', 'objectivies', 'content', 'max_students', 'init_register_date', 'end_register_date', | ||
49 | - 'init_date', 'end_date', 'category', 'coordenator','public') | 23 | + fields = ('name', 'category', 'coordenator','public') |
50 | labels = { | 24 | labels = { |
51 | 'name': _('Name'), | 25 | 'name': _('Name'), |
52 | - 'objectivies': _('Objectives'), | ||
53 | - 'content': _('Content'), | ||
54 | - 'max_students': _('Number of studets maximum'), | ||
55 | - 'init_register_date': _('Course registration start date'), | ||
56 | - 'end_register_date': _('Course registration end date'), | ||
57 | - 'init_date': _('Course start date'), | ||
58 | - 'end_date': _('Course end date'), | ||
59 | 'category': _('Category'), | 26 | 'category': _('Category'), |
60 | 'coordenator': _('Coordenator'), | 27 | 'coordenator': _('Coordenator'), |
61 | 'public':_('Public'), | 28 | 'public':_('Public'), |
62 | } | 29 | } |
63 | help_texts = { | 30 | help_texts = { |
64 | 'name': _('Course name'), | 31 | 'name': _('Course name'), |
65 | - 'objectivies': _('Course objective'), | ||
66 | - 'content': _('Course modules'), | ||
67 | - 'max_students': _('Max number of students that a class can have'), | ||
68 | - 'init_register_date': _('Date that starts the registration period of the course (dd/mm/yyyy)'), | ||
69 | - 'end_register_date': _('Date that ends the registration period of the course (dd/mm/yyyy)'), | ||
70 | - 'init_date': _('Date that the course starts (dd/mm/yyyy)'), | ||
71 | - 'end_date': _('Date that the course ends (dd/mm/yyyy)'), | ||
72 | - 'category': _('CourseCategory which the course belongs'), | ||
73 | 'coordenator': _('Course Coordenator'), | 32 | 'coordenator': _('Course Coordenator'), |
74 | 'public':_('To define if the course can be accessed by people not registered'), | 33 | 'public':_('To define if the course can be accessed by people not registered'), |
75 | } | 34 | } |
@@ -77,77 +36,31 @@ class CourseForm(forms.ModelForm): | @@ -77,77 +36,31 @@ class CourseForm(forms.ModelForm): | ||
77 | widgets = { | 36 | widgets = { |
78 | 'ategoy': forms.Select(), | 37 | 'ategoy': forms.Select(), |
79 | 'coordenator': forms.Select(), | 38 | 'coordenator': forms.Select(), |
80 | - 'content': SummernoteWidget(), | ||
81 | - 'objectivies': SummernoteWidget(), | ||
82 | } | 39 | } |
83 | 40 | ||
84 | class UpdateCourseForm(CourseForm): | 41 | class UpdateCourseForm(CourseForm): |
85 | 42 | ||
86 | - def clean_end_register_date(self): | ||
87 | - init_register_date = self.cleaned_data['init_register_date'] | ||
88 | - end_register_date = self.cleaned_data['end_register_date'] | ||
89 | - | ||
90 | - if init_register_date and end_register_date and end_register_date < init_register_date: | ||
91 | - raise forms.ValidationError(_('The end date may not be before the start date.')) | ||
92 | - return end_register_date | ||
93 | - | ||
94 | - def clean_init_date(self): | ||
95 | - end_register_date = self.cleaned_data['end_register_date'] | ||
96 | - init_date = self.cleaned_data['init_date'] | ||
97 | - | ||
98 | - if end_register_date and init_date and init_date <= end_register_date: | ||
99 | - raise forms.ValidationError(_('The course start date must be after the end of registration.')) | ||
100 | - return init_date | ||
101 | - | ||
102 | - def clean_end_date(self): | ||
103 | - init_date = self.cleaned_data['init_date'] | ||
104 | - end_date = self.cleaned_data['end_date'] | ||
105 | - | ||
106 | - if init_date and end_date and end_date < init_date: | ||
107 | - raise forms.ValidationError(_('The end date may not be before the start date.')) | ||
108 | - return end_date | ||
109 | - | ||
110 | def __init__(self, *args, **kwargs): | 43 | def __init__(self, *args, **kwargs): |
111 | super(UpdateCourseForm, self).__init__(*args, **kwargs) | 44 | super(UpdateCourseForm, self).__init__(*args, **kwargs) |
112 | self.fields["students"].required = False | 45 | self.fields["students"].required = False |
113 | 46 | ||
114 | class Meta: | 47 | class Meta: |
115 | model = Course | 48 | model = Course |
116 | - fields = ('name', 'objectivies', 'content', 'max_students', 'init_register_date', 'end_register_date', | ||
117 | - 'init_date', 'end_date', 'category','students', 'coordenator','public') | 49 | + fields = ('name', 'category', 'coordenator','public') |
118 | labels = { | 50 | labels = { |
119 | 'name': _('Name'), | 51 | 'name': _('Name'), |
120 | - 'objectivies': _('Objectives'), | ||
121 | - 'content': _('Content'), | ||
122 | - 'max_students': _('Number of studets maximum'), | ||
123 | - 'init_register_date': _('Course registration start date'), | ||
124 | - 'end_register_date': _('Course registration end date'), | ||
125 | - 'init_date': _('Course start date'), | ||
126 | - 'end_date': _('Course end date'), | ||
127 | 'category': _('Category'), | 52 | 'category': _('Category'), |
128 | 'coordenator': _('Coordenator'), | 53 | 'coordenator': _('Coordenator'), |
129 | - 'students': _('Student'), | ||
130 | 'public':_('Public'), | 54 | 'public':_('Public'), |
131 | } | 55 | } |
132 | help_texts = { | 56 | help_texts = { |
133 | 'name': _('Course name'), | 57 | 'name': _('Course name'), |
134 | - 'objectivies': _('Course objective'), | ||
135 | - 'content': _('Course modules'), | ||
136 | - 'max_students': _('Max number of students that a class can have'), | ||
137 | - 'init_register_date': _('Date that starts the registration period of the course (dd/mm/yyyy)'), | ||
138 | - 'end_register_date': _('Date that ends the registration period of the course (dd/mm/yyyy)'), | ||
139 | - 'init_date': _('Date that the course starts (dd/mm/yyyy)'), | ||
140 | - 'end_date': _('Date that the course ends (dd/mm/yyyy)'), | ||
141 | - 'category': _('CourseCategory which the course belongs'), | ||
142 | 'coordenator': _('Course Coordenator'), | 58 | 'coordenator': _('Course Coordenator'), |
143 | - 'students': _("Course's Students"), | ||
144 | 'public':_('To define if the course can be accessed by people not registered'), | 59 | 'public':_('To define if the course can be accessed by people not registered'), |
145 | } | 60 | } |
146 | widgets = { | 61 | widgets = { |
147 | 'categoy': forms.Select(), | 62 | 'categoy': forms.Select(), |
148 | 'coordenator': forms.Select(), | 63 | 'coordenator': forms.Select(), |
149 | - 'content': SummernoteWidget(), | ||
150 | - 'objectivies': SummernoteWidget(), | ||
151 | } | 64 | } |
152 | 65 | ||
153 | class SubjectForm(forms.ModelForm): | 66 | class SubjectForm(forms.ModelForm): |
courses/migrations/0001_initial.py
@@ -57,20 +57,13 @@ class Migration(migrations.Migration): | @@ -57,20 +57,13 @@ class Migration(migrations.Migration): | ||
57 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), | 57 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
58 | ('name', models.CharField(max_length=100, verbose_name='Name')), | 58 | ('name', models.CharField(max_length=100, verbose_name='Name')), |
59 | ('slug', autoslug.fields.AutoSlugField(editable=False, populate_from='name', unique=True, verbose_name='Slug')), | 59 | ('slug', autoslug.fields.AutoSlugField(editable=False, populate_from='name', unique=True, verbose_name='Slug')), |
60 | - ('objectivies', models.TextField(blank=True, verbose_name='Objectivies')), | ||
61 | - ('content', models.TextField(blank=True, verbose_name='Content')), | ||
62 | - ('max_students', models.PositiveIntegerField(blank=True, verbose_name='Maximum Students')), | ||
63 | ('create_date', models.DateTimeField(auto_now_add=True, verbose_name='Creation Date')), | 60 | ('create_date', models.DateTimeField(auto_now_add=True, verbose_name='Creation Date')), |
64 | - ('init_register_date', models.DateField(verbose_name='Register Date (Begin)')), | ||
65 | - ('end_register_date', models.DateField(verbose_name='Register Date (End)')), | ||
66 | - ('init_date', models.DateField(verbose_name='Begin of Course Date')), | ||
67 | - ('end_date', models.DateField(verbose_name='End of Course Date')), | ||
68 | ('public', models.BooleanField(default=False, verbose_name='Public')), | 61 | ('public', models.BooleanField(default=False, verbose_name='Public')), |
69 | ], | 62 | ], |
70 | options={ | 63 | options={ |
71 | 'verbose_name_plural': 'Courses', | 64 | 'verbose_name_plural': 'Courses', |
72 | 'verbose_name': 'Course', | 65 | 'verbose_name': 'Course', |
73 | - 'ordering': ('create_date', 'name'), | 66 | + 'ordering': ('create_date', 'name'), |
74 | }, | 67 | }, |
75 | ), | 68 | ), |
76 | migrations.CreateModel( | 69 | migrations.CreateModel( |
courses/models.py
@@ -38,16 +38,9 @@ class Course(models.Model): | @@ -38,16 +38,9 @@ class Course(models.Model): | ||
38 | 38 | ||
39 | name = models.CharField(_('Name'), max_length = 100) | 39 | name = models.CharField(_('Name'), max_length = 100) |
40 | slug = AutoSlugField(_("Slug"),populate_from='name',unique=True) | 40 | slug = AutoSlugField(_("Slug"),populate_from='name',unique=True) |
41 | - objectivies = models.TextField(_('Objectivies'), blank = True) | ||
42 | - content = models.TextField(_('Content'), blank = True) | ||
43 | - max_students = models.PositiveIntegerField(_('Maximum Students'), blank = True) | ||
44 | - create_date = models.DateTimeField(_('Creation Date'), auto_now_add = True) | ||
45 | - init_register_date = models.DateField(_('Register Date (Begin)')) | ||
46 | - end_register_date = models.DateField(_('Register Date (End)')) | ||
47 | - init_date = models.DateField(_('Begin of Course Date')) | ||
48 | - end_date = models.DateField(_('End of Course Date')) | 41 | + create_date = models.DateTimeField(_('Creation Date'), auto_now_add = True, blank = True) |
49 | category = models.ForeignKey(CourseCategory, verbose_name = _('Category'), related_name='course_category') | 42 | category = models.ForeignKey(CourseCategory, verbose_name = _('Category'), related_name='course_category') |
50 | - coordenator = models.ForeignKey(User, verbose_name = _('Coordenator'), related_name ='course_coordenator', null = True) | 43 | + coordenator = models.ForeignKey(User, verbose_name = _('Coordenator'), related_name ='course_coordenator', null = True, blank = True) |
51 | professors = models.ManyToManyField(User,verbose_name=_('Professors'), related_name='courses_professors') | 44 | professors = models.ManyToManyField(User,verbose_name=_('Professors'), related_name='courses_professors') |
52 | students = models.ManyToManyField(User,verbose_name=_('Students'), related_name='courses_student', blank = True) | 45 | students = models.ManyToManyField(User,verbose_name=_('Students'), related_name='courses_student', blank = True) |
53 | public = models.BooleanField(_('Public'), default=False) | 46 | public = models.BooleanField(_('Public'), default=False) |
courses/serializers.py
@@ -6,8 +6,7 @@ class CourseSerializer(serializers.ModelSerializer): | @@ -6,8 +6,7 @@ class CourseSerializer(serializers.ModelSerializer): | ||
6 | #The set comes from the ManyToMany Relationship in django | 6 | #The set comes from the ManyToMany Relationship in django |
7 | class Meta: | 7 | class Meta: |
8 | model = Course | 8 | model = Course |
9 | - fields = ('name', 'slug', 'objectivies', 'content', 'max_students', 'create_date', | ||
10 | - 'init_register_date', 'end_register_date', 'init_date', 'end_date', 'public', 'category' ,'students', 'professors') | 9 | + fields = ('name', 'category', 'coordenator','public') |
11 | 10 | ||
12 | class SubjectSerializer(serializers.ModelSerializer): | 11 | class SubjectSerializer(serializers.ModelSerializer): |
13 | class Meta: | 12 | class Meta: |
@@ -18,5 +17,3 @@ class TopicSerializer(serializers.ModelSerializer): | @@ -18,5 +17,3 @@ class TopicSerializer(serializers.ModelSerializer): | ||
18 | class Meta: | 17 | class Meta: |
19 | model = Topic | 18 | model = Topic |
20 | fields = ('name', 'slug','description','create_date','update_date','visible','owner','subject') | 19 | fields = ('name', 'slug','description','create_date','update_date','visible','owner','subject') |
21 | - | ||
22 | - |
courses/templates/course/course_card.html
@@ -3,9 +3,6 @@ | @@ -3,9 +3,6 @@ | ||
3 | <div class="panel panel-info"> | 3 | <div class="panel panel-info"> |
4 | <div class="panel-heading course"> | 4 | <div class="panel-heading course"> |
5 | <div class="row"> | 5 | <div class="row"> |
6 | - <div class="col-md-1 moreAccordion" data-toggle="collapse" data-parent="#accordion-{{course.slug}}" href=".collapseOne-{{course.slug}}" aria-expanded="false" aria-controls="collapseOne-{{course.slug}}"> | ||
7 | - <button class="btn btn-default btn-sm caret-square"><i class="fa fa-caret-square-o-down fa-2x" aria-hidden="true"></i></button> | ||
8 | - </div> | ||
9 | <div class="col-xs-5 col-md-5 titleTopic"> | 6 | <div class="col-xs-5 col-md-5 titleTopic"> |
10 | <a role="button" href="{% url 'course:view' course.slug %}"> | 7 | <a role="button" href="{% url 'course:view' course.slug %}"> |
11 | <h4>{{course.name}}</h4> | 8 | <h4>{{course.name}}</h4> |
@@ -31,27 +28,6 @@ | @@ -31,27 +28,6 @@ | ||
31 | {% endif %} | 28 | {% endif %} |
32 | </div> | 29 | </div> |
33 | </div> | 30 | </div> |
34 | - <div class="panel-collapse collapseOne-{{course.slug}} collapse in" role="tabpanel" aria-labelledby="headingOne" aria-expanded="true" aria-hidden="false" tabindex="0"> | ||
35 | - <div class="panel-body"> | ||
36 | - <p><b>{% trans 'Course Name' %}: </b>{{course.name}}</p> | ||
37 | - <p><b>{% trans 'Coordenator' %}: </b>{{course.coordenator}}</p> | ||
38 | - <p><b>{% trans 'Professor' %}: </b>{{course.professors.all.0}}</p> | ||
39 | - <p> | ||
40 | - <b>{% trans 'Description' %}:</b> | ||
41 | - <i> | ||
42 | - {{course.content | safe }} | ||
43 | - </i> | ||
44 | - </p> | ||
45 | - <div class="row"> | ||
46 | - <div class="col-xs-6 col-md-6 data_register_course"> | ||
47 | - <p><b>{% trans 'Init register' %}: </b>{{course.init_register_date}}</p> | ||
48 | - </div> | ||
49 | - <div class="col-xs-6 col-md-6 data_register_course"> | ||
50 | - <p><b>{% trans 'End register' %}: </b>{{course.end_register_date}}</p> | ||
51 | - </div> | ||
52 | - </div> | ||
53 | - </div> | ||
54 | - </div> | ||
55 | </div> | 31 | </div> |
56 | </div> | 32 | </div> |
57 | 33 |
courses/templates/course/view.html
@@ -47,21 +47,6 @@ | @@ -47,21 +47,6 @@ | ||
47 | </div> | 47 | </div> |
48 | <div class="panel-body"> | 48 | <div class="panel-body"> |
49 | <p><b>{% trans 'Coordinator' %}: </b>{{course.coordenator}}</p> | 49 | <p><b>{% trans 'Coordinator' %}: </b>{{course.coordenator}}</p> |
50 | - <p><b>{% trans 'Teacher' %}: </b>{{course.professors.all.0}}</p> | ||
51 | - <p> | ||
52 | - <b>{% trans 'Description' %}:</b> | ||
53 | - <i> | ||
54 | - {{ course.objectivies |safe }} | ||
55 | - </i> | ||
56 | - </p> | ||
57 | - <div class="row"> | ||
58 | - <div class="col-xs-6 col-md-6 data_register_course"> | ||
59 | - <p><b>{% trans 'Begin of Course Date' %}: </b>{{course.init_date}}</p> | ||
60 | - </div> | ||
61 | - <div class="col-xs-6 col-md-6 data_register_course"> | ||
62 | - <p><b>{% trans 'End of Course Date' %}: </b>{{course.end_date}}</p> | ||
63 | - </div> | ||
64 | - </div> | ||
65 | </div> | 50 | </div> |
66 | </div> | 51 | </div> |
67 | 52 | ||
@@ -84,20 +69,12 @@ | @@ -84,20 +69,12 @@ | ||
84 | </div> | 69 | </div> |
85 | </div> | 70 | </div> |
86 | 71 | ||
87 | -<div class="panel-group ui-accordion ui-widget ui-helper-reset ui-sortable" id="accordion" role="tablist" aria-multiselectable="false"> | ||
88 | - <div> | ||
89 | - | ||
90 | - <div class="panel panel-info"> | ||
91 | -</div> | ||
92 | -</div> | 72 | +<div class="panel-group ui-accordion ui-widget ui-helper-reset ui-sortable" id="accordion" role="tablist" aria-multiselectable="false"></div> |
93 | <div class="cards-detail"> | 73 | <div class="cards-detail"> |
94 | {% for subject in subjects %} | 74 | {% for subject in subjects %} |
95 | <div class="panel panel-default panel_{{ subject.id }}"> | 75 | <div class="panel panel-default panel_{{ subject.id }}"> |
96 | <div class="panel-heading heading_{{subject.id}} subject ui-sortable-handle"> | 76 | <div class="panel-heading heading_{{subject.id}} subject ui-sortable-handle"> |
97 | <div class="row"> | 77 | <div class="row"> |
98 | - <div class="col-md-1 moreAccordion" data-toggle="collapse" data-parent="#accordion-{{subject.slug}}" href=".collapseSubject-{{subject.slug}}" aria-expanded="false" aria-controls="collapseSubject-{{subject.slug}}"> | ||
99 | - <button class="btn btn-default btn-sm caret-square"><i class="fa fa-caret-square-o-down fa-2x" aria-hidden="true"></i></button> | ||
100 | - </div> | ||
101 | <div class="col-xs-9 col-md-10 titleTopic"> | 78 | <div class="col-xs-9 col-md-10 titleTopic"> |
102 | <a role="button" href="{% url 'course:view_subject' subject.slug %}"> | 79 | <a role="button" href="{% url 'course:view_subject' subject.slug %}"> |
103 | <h4>{{subject.name}}</h4> | 80 | <h4>{{subject.name}}</h4> |
@@ -126,29 +103,6 @@ | @@ -126,29 +103,6 @@ | ||
126 | {% endif %} | 103 | {% endif %} |
127 | </div> | 104 | </div> |
128 | </div> | 105 | </div> |
129 | - <div class="panel-collapse collapseSubject-{{subject.slug}} collapse in" aria-labelledby="heading_{{subject.id}}" aria-expanded="true" aria-hidden="false"> | ||
130 | - <div class="panel-body"> | ||
131 | - <p><b>{% trans "Professor" %}: </b>{% for professor in subject.professors.all %}{% if not forloop.first %},{% endif %} | ||
132 | - {{professor}}{% if forloop.last %}.{% endif %}{% endfor %}</p> | ||
133 | - <p> | ||
134 | - <b>{% trans 'Category' %}: </b><i>{{ subject.category }}</i> | ||
135 | - </p> | ||
136 | - <p> | ||
137 | - <b>{% trans "Description" %}: </b> | ||
138 | - <i> | ||
139 | - {{subject.description | safe}} | ||
140 | - </i> | ||
141 | - </p> | ||
142 | - <div class="row"> | ||
143 | - <div class="col-xs-6 col-md-6"> | ||
144 | - <p><b>{% trans "Begining" %}: </b>{{subject.init_date}}</p> | ||
145 | - </div> | ||
146 | - <div class="col-xs-6 col-md-6"> | ||
147 | - <p><b>{% trans "End" %}: </b>{{subject.end_date}}</p> | ||
148 | - </div> | ||
149 | - </div> | ||
150 | - </div> | ||
151 | - </div> | ||
152 | </div> | 106 | </div> |
153 | {% endfor %} | 107 | {% endfor %} |
154 | 108 | ||
@@ -159,10 +113,7 @@ | @@ -159,10 +113,7 @@ | ||
159 | <a href="{% url 'course:create_subject' course.slug %}" data-toggle="modal" data-target="" class="btn btn-primary btn-lg btn-block btn-raised">{% trans 'Create Subject' %}<div class="ripple-container"></div></a> | 113 | <a href="{% url 'course:create_subject' course.slug %}" data-toggle="modal" data-target="" class="btn btn-primary btn-lg btn-block btn-raised">{% trans 'Create Subject' %}<div class="ripple-container"></div></a> |
160 | </div> | 114 | </div> |
161 | {% endif %} | 115 | {% endif %} |
162 | - | ||
163 | -</div> | ||
164 | </div> | 116 | </div> |
165 | </div> | 117 | </div> |
166 | -<div class="row" id="modal_subject"> | ||
167 | 118 | ||
168 | {% endblock %} | 119 | {% endblock %} |