Commit 82f3a3e4ef877c5f397adbe3c855105891cdae2e

Authored by Matheus Lins
1 parent 2fb52821

filter courses for category

courses/models.py
@@ -31,7 +31,7 @@ class Course(models.Model): @@ -31,7 +31,7 @@ class Course(models.Model):
31 init_date = models.DateField(_('Begin of Course Date')) 31 init_date = models.DateField(_('Begin of Course Date'))
32 end_date = models.DateField(_('End of Course Date')) 32 end_date = models.DateField(_('End of Course Date'))
33 image = models.ImageField(verbose_name = _('Image'), blank = True, upload_to = 'courses/') 33 image = models.ImageField(verbose_name = _('Image'), blank = True, upload_to = 'courses/')
34 - category = models.ForeignKey(CourseCategory, verbose_name = _('Category')) 34 + category = models.ForeignKey(CourseCategory, verbose_name = _('Category'), related_name='course_category')
35 professors = models.ManyToManyField(User,verbose_name=_('Professors'), related_name='courses_professors') 35 professors = models.ManyToManyField(User,verbose_name=_('Professors'), related_name='courses_professors')
36 students = models.ManyToManyField(User,verbose_name=_('Students'), related_name='courses_student') 36 students = models.ManyToManyField(User,verbose_name=_('Students'), related_name='courses_student')
37 37
courses/templates/course/index.html
@@ -63,6 +63,20 @@ @@ -63,6 +63,20 @@
63 </span> 63 </span>
64 </div> 64 </div>
65 </div> 65 </div>
  66 + <div class="col-md-12">
  67 + {% if user|has_role:'professor, system_admin' %}
  68 + {% else%}
  69 +
  70 + <div class="btn-group btn-group-justified btn-group-raised">
  71 + <a href="?category=all" class="btn btn-raised btn-info">Todos</a>
  72 + {% for category_course in categorys_courses %}
  73 + <a href="?category={{category_course.name}}" class="btn btn-raised btn-primary">{{category_course.name}}</a>
  74 + {% endfor %}
  75 + </div>
  76 + {% endif %}
  77 + </div>
  78 +
  79 +</fieldset>
66 {% if user|has_role:'professor, system_admin' %} 80 {% if user|has_role:'professor, system_admin' %}
67 <div class="col-md-12"> 81 <div class="col-md-12">
68 {% if courses|length > 0 %} 82 {% if courses|length > 0 %}
@@ -141,55 +155,107 @@ @@ -141,55 +155,107 @@
141 </div> 155 </div>
142 {% else %} 156 {% else %}
143 {% if courses|length > 0 %} 157 {% if courses|length > 0 %}
144 - {% for course in courses_student %}  
145 - <div class="col-md-12">  
146 - <div class="panel panel-info">  
147 - <!--{% if course.image %}  
148 - <img src="{{ course.image_url }}" class="img-responsive" />  
149 - {% else %}  
150 - <img src="" class="img-responsive" />  
151 - {% endif %} -->  
152 - <div class="panel-heading">  
153 - <div class="row">  
154 - <div class="col-md-9">  
155 - <h3 class="panel-title">{{course.name}}</h3>  
156 - </div>  
157 - <div class="col-md-3">  
158 - <span class="label label-info">{{ course.category }}</span>  
159 - <span class="label label-warning">{{ course.max_students }} {% trans 'students tops' %}</span>  
160 - </div> 158 + {% if request.GET.category == 'all' or none %}
  159 + {% for course in courses_student %}
  160 + <div class="col-md-12">
  161 + <div class="panel panel-info">
  162 + <!--{% if course.image %}
  163 + <img src="{{ course.image_url }}" class="img-responsive" />
  164 + {% else %}
  165 + <img src="" class="img-responsive" />
  166 + {% endif %} -->
  167 + <div class="panel-heading">
  168 + <div class="row">
  169 + <div class="col-md-9">
  170 + <h3 class="panel-title">{{course.name}}</h3>
  171 + </div>
  172 + <div class="col-md-3">
  173 + <span class="label label-info">{{ course.category }}</span>
  174 + <span class="label label-warning">{{ course.max_students }} {% trans 'students tops' %}</span>
  175 + </div>
  176 + </div>
  177 + </div>
  178 + <div class="panel-body">
  179 + <p><b>Course Name: </b>{{ course.name }}</p>
  180 + <p><b>Duration (in semesters): </b>09</p>
  181 + <p><b>Coordinator: </b>{{course.professors}}</p>
  182 + <p>
  183 + <b>Description:</b>
  184 + <i>
  185 + {% if couse.description %}
  186 + {{course.description|linebreaks}}
  187 + {% else %}
  188 + {% trans 'No description' %}
  189 + {% endif %}
  190 + </i>
  191 + </p>
  192 +
  193 + <!--{% if user|has_role:'professor, system_admin' %}
  194 + <a href="{% url 'course:update' course.slug %}" class="btn btn-sm btn-primary">
  195 + <span class="glyphicon glyphicon-edit"></span>
  196 + </a>
  197 + <a href="{% url 'course:delete' course.slug %}" class="btn btn-sm btn-danger">
  198 + <span class="glyphicon glyphicon-trash"></span>
  199 + </a>
  200 + {% endif %}-->
  201 +
  202 + <a href="{% url 'course:view' course.slug %}" class="btn btn-raised btn-default center-block">View Course</a>
161 </div> 203 </div>
162 - </div>  
163 - <div class="panel-body">  
164 - <p><b>Course Name: </b>{{ course.name }}</p>  
165 - <p><b>Duration (in semesters): </b>09</p>  
166 - <p><b>Coordinator: </b>{{course.professors}}</p>  
167 - <p>  
168 - <b>Description:</b>  
169 - <i>  
170 - {% if couse.description %}  
171 - {{course.description|linebreaks}}  
172 - {% else %}  
173 - {% trans 'No description' %}  
174 - {% endif %}  
175 - </i>  
176 - </p>  
177 -  
178 - <!--{% if user|has_role:'professor, system_admin' %}  
179 - <a href="{% url 'course:update' course.slug %}" class="btn btn-sm btn-primary">  
180 - <span class="glyphicon glyphicon-edit"></span>  
181 - </a>  
182 - <a href="{% url 'course:delete' course.slug %}" class="btn btn-sm btn-danger">  
183 - <span class="glyphicon glyphicon-trash"></span>  
184 - </a>  
185 - {% endif %}-->  
186 -  
187 - <a href="{% url 'course:view' course.slug %}" class="btn btn-raised btn-default center-block">View Course</a>  
188 - </div>  
189 - </div>  
190 - </div> 204 + </div>
  205 + </div>
  206 + {% endfor %}
  207 + {% else %}
  208 + {% for course in courses_student %}
  209 + {% if course.category.name == request.GET.category %}
  210 + <div class="col-md-12">
  211 + <div class="panel panel-info">
  212 + <!--{% if course.image %}
  213 + <img src="{{ course.image_url }}" class="img-responsive" />
  214 + {% else %}
  215 + <img src="" class="img-responsive" />
  216 + {% endif %} -->
  217 + <div class="panel-heading">
  218 + <div class="row">
  219 + <div class="col-md-9">
  220 + <h3 class="panel-title">{{course.name}}</h3>
  221 + </div>
  222 + <div class="col-md-3">
  223 + <span class="label label-info">{{ course.category }}</span>
  224 + <span class="label label-warning">{{ course.max_students }} {% trans 'students tops' %}</span>
  225 + </div>
  226 + </div>
  227 + </div>
  228 + <div class="panel-body">
  229 + <p><b>Course Name: </b>{{ course.name }}</p>
  230 + <p><b>Duration (in semesters): </b>09</p>
  231 + <p><b>Coordinator: </b>{{course.professors}}</p>
  232 + <p>
  233 + <b>Description:</b>
  234 + <i>
  235 + {% if couse.description %}
  236 + {{course.description|linebreaks}}
  237 + {% else %}
  238 + {% trans 'No description' %}
  239 + {% endif %}
  240 + </i>
  241 + </p>
  242 +
  243 + <!--{% if user|has_role:'professor, system_admin' %}
  244 + <a href="{% url 'course:update' course.slug %}" class="btn btn-sm btn-primary">
  245 + <span class="glyphicon glyphicon-edit"></span>
  246 + </a>
  247 + <a href="{% url 'course:delete' course.slug %}" class="btn btn-sm btn-danger">
  248 + <span class="glyphicon glyphicon-trash"></span>
  249 + </a>
  250 + {% endif %}-->
191 251
192 - {% endfor %} 252 + <a href="{% url 'course:view' course.slug %}" class="btn btn-raised btn-default center-block">View Course</a>
  253 + </div>
  254 + </div>
  255 + </div>
  256 + {% endif %}
  257 + {% endfor %}
  258 + {% endif %}
193 259
194 <nav aria-label="Page navigation"> 260 <nav aria-label="Page navigation">
195 <ul class="pagination"> 261 <ul class="pagination">
courses/views.py
@@ -32,6 +32,14 @@ class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView): @@ -32,6 +32,14 @@ class IndexView(LoginRequiredMixin, NotificationMixin, generic.ListView):
32 context['categories'] = CourseCategory.objects.all() 32 context['categories'] = CourseCategory.objects.all()
33 context['courses_teacher'] = Course.objects.filter(professors__name = self.request.user.name) 33 context['courses_teacher'] = Course.objects.filter(professors__name = self.request.user.name)
34 context['courses_student'] = Course.objects.filter(students__name = self.request.user.name) 34 context['courses_student'] = Course.objects.filter(students__name = self.request.user.name)
  35 + context['categorys_courses'] = CourseCategory.objects.filter(course_category__students__name = self.request.user.name).distinct()
  36 + courses_category = Course.objects.filter(category__name = self.request.GET.get('category'))
  37 + context['courses_category'] = courses_category
  38 + none = None
  39 + q = self.request.GET.get('category', None)
  40 + if q is None:
  41 + none = True
  42 + context['none'] = none
35 43
36 return context 44 return context
37 45