Commit b9b059c8bb933cdb609e0624145fa4700bf35bd4

Authored by Zambom
1 parent a16ea53e

Adding subject categories list [Issue: #206]

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>&nbsp; {% 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>&nbsp; {% 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