Commit b9b059c8bb933cdb609e0624145fa4700bf35bd4
1 parent
a16ea53e
Exists in
master
and in
5 other branches
Adding subject categories list [Issue: #206]
Showing
3 changed files
with
33 additions
and
74 deletions
Show diff stats
courses/templates/course/view.html
@@ -19,7 +19,7 @@ | @@ -19,7 +19,7 @@ | ||
19 | {% endblock %} | 19 | {% endblock %} |
20 | 20 | ||
21 | {% block sidebar %} | 21 | {% block sidebar %} |
22 | - <div class="panel panel-primary"> | 22 | + <div class="panel panel-primary"> |
23 | <div class="panel-heading"> | 23 | <div class="panel-heading"> |
24 | <h5>{% trans 'Menu' %}</h5> | 24 | <h5>{% trans 'Menu' %}</h5> |
25 | </div> | 25 | </div> |
@@ -33,7 +33,19 @@ | @@ -33,7 +33,19 @@ | ||
33 | </div> | 33 | </div> |
34 | </div> | 34 | </div> |
35 | 35 | ||
36 | - | 36 | + <div class="panel panel-primary"> |
37 | + <div class="panel-heading"> | ||
38 | + <h5>{% trans 'Categories' %}</h5> | ||
39 | + </div> | ||
40 | + <div class="panel-body"> | ||
41 | + <ul class="nav nav-pills nav-stacked"> | ||
42 | + <li {% if category is None %}class="active"{% endif %}><a href="{% url 'course:view' course.slug %}">{% trans 'All' %}</a></li> | ||
43 | + {% for cat in categorys_subjects %} | ||
44 | + <li {% if category == cat.slug %}class="active"{% endif %}><a href="{% url 'course:view_filter' course.slug cat.slug %}">{{ cat }}</a></li> | ||
45 | + {% endfor %} | ||
46 | + </ul> | ||
47 | + </div> | ||
48 | + </div> | ||
37 | {% endblock %} | 49 | {% endblock %} |
38 | 50 | ||
39 | {% block content %} | 51 | {% block content %} |
@@ -63,12 +75,13 @@ | @@ -63,12 +75,13 @@ | ||
63 | </div> | 75 | </div> |
64 | </div> | 76 | </div> |
65 | <div class="panel-body"> | 77 | <div class="panel-body"> |
66 | - <p><b>{% trans 'Course Name' %}: </b>{{course.name}}</p> | ||
67 | - <p><b>{% trans 'Coordinator' %}: </b>{{course.professors}}</p> | 78 | + <p><b>{% trans 'Course Name' %}: </b>{{ course.name }}</p> |
79 | + <p><b>{% trans 'Coordinator' %}: </b>{% for professor in course.professors.all %}{% if not forloop.first %},{% endif %} | ||
80 | + {{professor}}{% if forloop.last %}.{% endif %}{% endfor %}</p> | ||
68 | <p> | 81 | <p> |
69 | <b>{% trans 'Description' %}:</b> | 82 | <b>{% trans 'Description' %}:</b> |
70 | <i> | 83 | <i> |
71 | - {{course.description}} | 84 | + {{ course.objectivies }} |
72 | </i> | 85 | </i> |
73 | </p> | 86 | </p> |
74 | 87 | ||
@@ -122,8 +135,7 @@ | @@ -122,8 +135,7 @@ | ||
122 | </div> | 135 | </div> |
123 | </div> | 136 | </div> |
124 | <div class="cards-detail"> | 137 | <div class="cards-detail"> |
125 | - {% if request.GET.category == 'all' or none or request.GET.category == '' %} | ||
126 | - {% for subject in subjects %} | 138 | + {% for subject in subjects %} |
127 | <div class="panel panel-default panel_{{ subject.id }}"> | 139 | <div class="panel panel-default panel_{{ subject.id }}"> |
128 | <div class="panel-heading heading_{{subject.id}} subject ui-sortable-handle"> | 140 | <div class="panel-heading heading_{{subject.id}} subject ui-sortable-handle"> |
129 | <div class="row"> | 141 | <div class="row"> |
@@ -177,65 +189,8 @@ | @@ -177,65 +189,8 @@ | ||
177 | </div> | 189 | </div> |
178 | </div> | 190 | </div> |
179 | </div> | 191 | </div> |
180 | - {% endfor %} | ||
181 | - {% else %} | ||
182 | - {% for subject in subjects_category %} | ||
183 | - {% if subject.category.name == request.GET.category %} | ||
184 | - <div class="panel panel-info panel_{{ subject.id }}"> | ||
185 | - <div class="panel-heading heading_{{subject.id}} subject ui-sortable-handle" role="tab"> | ||
186 | - <div class="row"> | ||
187 | - <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}}"> | ||
188 | - <button class="btn btn-default btn-sm caret-square"><i class="fa fa-caret-square-o-down fa-2x" aria-hidden="true"></i></button> | ||
189 | - </div> | ||
190 | - <div class="col-xs-9 col-md-4 titleTopic"> | ||
191 | - <a role="button" href="{% url 'course:view_subject' subject.slug %}"> | ||
192 | - <h4>{{subject.name}}</h4> | ||
193 | - </a> | ||
194 | - </div> | ||
195 | - {% if user|has_role:'professor' and user in subject.professors or user|has_role:'system_admin' %} | ||
196 | - <div class="col-xs-3 col-md-6" id="divMoreActions"> | ||
197 | - <div class="btn-group"> | ||
198 | - <button class="btn btn-default btn-sm dropdown-toggle" type="button" id="moreActions" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> | ||
199 | - <i class="fa fa-ellipsis-v fa-2x" aria-hidden="true"></i> | ||
200 | - </button> | ||
201 | - <ul class="dropdown-menu" aria-labelledby="moreActions"> | ||
202 | - <li><a href="javascript:void(0)" data-toggle="modal" data-target="#myModal3"><i class="fa fa-pencil fa-fw" aria-hidden="true"></i> {% trans 'Replicate' %}</a></li> | ||
203 | - <li><a href="javascript:void(0)" data-toggle="modal" data-target="#removeSubject2"><i class="fa fa-trash fa-fw" aria-hidden="true"></i> {% trans 'Remove' %}</a></li> | ||
204 | - </ul> | ||
205 | - </div> | ||
206 | - </div> | ||
207 | - {% endif %} | ||
208 | - {% if user|show_subject_subscribe:subject %} | ||
209 | - <div class="col-xs-3 col-md-2"> | ||
210 | - <a onclick="subscribe($(this), '{% url 'course:subscribe_subject' subject.slug %}', {{ subject.id }}, '{% trans 'Are you sure you want to subscribe to this subject?' %}')" class="btn btn-sm btn-primary btn-raised">{% trans 'Subscribe' %}</a> | ||
211 | - </div> | ||
212 | - {% endif %} | ||
213 | - </div> | ||
214 | - </div> | ||
215 | - <div class="panel-collapse collapseSubject-{{subject.slug}} collapse in" aria-labelledby="heading_{{subject.id}}" aria-expanded="true" aria-hidden="false"> | ||
216 | - <div class="panel-body"> | ||
217 | - <p><b>{% trans "Professor" %}: </b>{% for professor in subject.professors.all %}{% if not forloop.first %},{% endif %} | ||
218 | - {{professor}}{% if forloop.last %}.{% endif %}{% endfor %}</p> | ||
219 | - <p> | ||
220 | - <b>{% trans "Description" %}: </b> | ||
221 | - <i> | ||
222 | - {{subject.description}} | ||
223 | - </i> | ||
224 | - </p> | ||
225 | - <div class="row"> | ||
226 | - <div class="col-xs-6 col-md-6"> | ||
227 | - <p><b>{% trans "Begining" %}: </b>{{subject.init_date}}</p> | ||
228 | - </div> | ||
229 | - <div class="col-xs-6 col-md-6"> | ||
230 | - <p><b>{% trans "End" %}: </b>{{subject.end_date}}</p> | ||
231 | - </div> | ||
232 | - </div> | ||
233 | - </div> | ||
234 | - </div> | ||
235 | - </div> | ||
236 | - {% endif %} | ||
237 | - {% endfor %} | ||
238 | - {% endif %} | 192 | + {% endfor %} |
193 | + | ||
239 | 194 | ||
240 | {% if user|has_role:'professor' and user in course.professors.all or user|has_role:'system_admin' %} | 195 | {% if user|has_role:'professor' and user in course.professors.all or user|has_role:'system_admin' %} |
241 | 196 |
courses/urls.py
@@ -6,7 +6,10 @@ urlpatterns = [ | @@ -6,7 +6,10 @@ urlpatterns = [ | ||
6 | url(r'^create/$', views.CreateCourseView.as_view(), name='create'), | 6 | url(r'^create/$', views.CreateCourseView.as_view(), name='create'), |
7 | url(r'^replicate_course/(?P<slug>[\w_-]+)/$', views.ReplicateCourseView.as_view(), name='replicate_course'), | 7 | url(r'^replicate_course/(?P<slug>[\w_-]+)/$', views.ReplicateCourseView.as_view(), name='replicate_course'), |
8 | url(r'^edit/(?P<slug>[\w_-]+)/$', views.UpdateCourseView.as_view(), name='update'), | 8 | url(r'^edit/(?P<slug>[\w_-]+)/$', views.UpdateCourseView.as_view(), name='update'), |
9 | - url(r'^(?P<slug>[\w_-]+)/$', views.CourseView.as_view(), name='view'), | 9 | + url(r'^(?P<slug>[\w_-]+)/', include([ |
10 | + url(r'^$', views.CourseView.as_view(), name='view'), | ||
11 | + url(r'^(?P<category>[\w_-]+)/$', views.CourseView.as_view(), name='view_filter') | ||
12 | + ])), | ||
10 | url(r'^delete/(?P<slug>[\w_-]+)/$', views.DeleteCourseView.as_view(), name='delete'), | 13 | url(r'^delete/(?P<slug>[\w_-]+)/$', views.DeleteCourseView.as_view(), name='delete'), |
11 | url(r'^subscribe/(?P<slug>[\w_-]+)/$', views.subscribe_course, name='subscribe'), | 14 | url(r'^subscribe/(?P<slug>[\w_-]+)/$', views.subscribe_course, name='subscribe'), |
12 | url(r'^category/(?P<slug>[\w_-]+)/$', views.FilteredView.as_view(), name='filter'), | 15 | url(r'^category/(?P<slug>[\w_-]+)/$', views.FilteredView.as_view(), name='filter'), |
courses/views.py
@@ -211,12 +211,19 @@ class CourseView( NotificationMixin, generic.DetailView): | @@ -211,12 +211,19 @@ class CourseView( NotificationMixin, generic.DetailView): | ||
211 | context = super(CourseView, self).get_context_data(**kwargs) | 211 | context = super(CourseView, self).get_context_data(**kwargs) |
212 | course = get_object_or_404(Course, slug = self.kwargs.get('slug')) | 212 | course = get_object_or_404(Course, slug = self.kwargs.get('slug')) |
213 | 213 | ||
214 | + category_sub = self.kwargs.get('category', None) | ||
215 | + | ||
214 | if has_role(self.request.user,'system_admin'): | 216 | if has_role(self.request.user,'system_admin'): |
215 | subjects = course.subjects.all() | 217 | subjects = course.subjects.all() |
216 | elif has_role(self.request.user,'professor'): | 218 | elif has_role(self.request.user,'professor'): |
217 | subjects = course.subjects.filter(professors__in=[self.request.user]) | 219 | subjects = course.subjects.filter(professors__in=[self.request.user]) |
218 | elif has_role(self.request.user, 'student') or self.request.user is None: | 220 | elif has_role(self.request.user, 'student') or self.request.user is None: |
219 | subjects = course.subjects.filter(visible=True) | 221 | subjects = course.subjects.filter(visible=True) |
222 | + | ||
223 | + if not category_sub is None: | ||
224 | + cat = get_object_or_404(CategorySubject, slug = category_sub) | ||
225 | + subjects = subjects.filter(category = cat) | ||
226 | + | ||
220 | context['subjects'] = subjects | 227 | context['subjects'] = subjects |
221 | 228 | ||
222 | if has_role(self.request.user,'system_admin'): | 229 | if has_role(self.request.user,'system_admin'): |
@@ -238,13 +245,7 @@ class CourseView( NotificationMixin, generic.DetailView): | @@ -238,13 +245,7 @@ class CourseView( NotificationMixin, generic.DetailView): | ||
238 | 245 | ||
239 | subjects_category = Subject.objects.filter(category__name = self.request.GET.get('category')) | 246 | subjects_category = Subject.objects.filter(category__name = self.request.GET.get('category')) |
240 | 247 | ||
241 | - none = None | ||
242 | - q = self.request.GET.get('category', None) | ||
243 | - if q is None: | ||
244 | - none = True | ||
245 | - context['none'] = none | ||
246 | - | ||
247 | - context['subjects_category'] = subjects_category | 248 | + context['category'] = category_sub |
248 | context['categorys_subjects'] = categorys_subjects | 249 | context['categorys_subjects'] = categorys_subjects |
249 | context['courses'] = courses | 250 | context['courses'] = courses |
250 | context['course'] = course | 251 | context['course'] = course |