Commit f909c05997fff46583d9d75f92af0305e6cf8192

Authored by ailsoncgt
2 parents 91c9d65f 415f147d

Merge

courses/migrations/0004_auto_20161020_1808.py 0 → 100644
... ... @@ -0,0 +1,21 @@
  1 +# -*- coding: utf-8 -*-
  2 +# Generated by Django 1.10 on 2016-10-20 21:08
  3 +from __future__ import unicode_literals
  4 +
  5 +from django.conf import settings
  6 +from django.db import migrations, models
  7 +
  8 +
  9 +class Migration(migrations.Migration):
  10 +
  11 + dependencies = [
  12 + ('courses', '0003_course_public'),
  13 + ]
  14 +
  15 + operations = [
  16 + migrations.AlterField(
  17 + model_name='course',
  18 + name='students',
  19 + field=models.ManyToManyField(blank=True, related_name='courses_student', to=settings.AUTH_USER_MODEL, verbose_name='Students'),
  20 + ),
  21 + ]
... ...
courses/models.py
... ... @@ -45,7 +45,7 @@ class Course(models.Model):
45 45 image = models.ImageField(verbose_name = _('Image'), blank = True, upload_to = 'courses/')
46 46 category = models.ForeignKey(CourseCategory, verbose_name = _('Category'), related_name='course_category')
47 47 professors = models.ManyToManyField(User,verbose_name=_('Professors'), related_name='courses_professors')
48   - students = models.ManyToManyField(User,verbose_name=_('Students'), related_name='courses_student')
  48 + students = models.ManyToManyField(User,verbose_name=_('Students'), related_name='courses_student', blank = True)
49 49 public = models.BooleanField(_('Public'))
50 50  
51 51 class Meta:
... ... @@ -69,8 +69,7 @@ class Subject(models.Model):
69 69 course = models.ForeignKey(Course, verbose_name = _('Course'), related_name="subjects")
70 70 category = models.ForeignKey(CategorySubject, verbose_name = _('Category'), related_name='subject_category',null=True)
71 71 professors = models.ManyToManyField(User,verbose_name=_('Professors'), related_name='professors_subjects')
72   - students = models.ManyToManyField(User,verbose_name=_('Students'), related_name='subject_student')
73   -
  72 + students = models.ManyToManyField(User,verbose_name=_('Students'), related_name='subject_student', blank = True)
74 73  
75 74 class Meta:
76 75 ordering = ('create_date','name')
... ...
courses/templates/course/view.html
... ... @@ -28,7 +28,7 @@
28 28 </div>
29 29 </div>
30 30  
31   -{% if user|has_role:'professor' or user|has_role:'system_admin' %}
  31 +{% if user|has_role:'professor' and user in course.professors or user|has_role:'system_admin' %}
32 32  
33 33 <div class="panel panel-primary navigation">
34 34 <div class="panel-heading">
... ... @@ -56,7 +56,7 @@
56 56 <div class="col-xs-8 col-md-10 titleTopic">
57 57 <h4>{{course}}</h4>
58 58 </div>
59   - {% if user|has_role:'professor' or user|has_role:'system_admin' %}
  59 + {% if user|has_role:'professor' and user in course.professors or user|has_role:'system_admin' %}
60 60 <div class="col-xs-4 col-md-2" id="divMoreActions">
61 61 <div class="btn-group">
62 62 <button class="btn btn-default btn-sm dropdown-toggle" type="button" id="moreActions" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
... ... @@ -199,17 +199,19 @@
199 199 <h4 style="color:white">{{subject.name}}</h4>
200 200 </a>
201 201 </div>
202   - <div class="col-xs-3 col-md-2" id="divMoreActions">
203   - <div class="btn-group">
204   - <button class="btn btn-default btn-sm dropdown-toggle" type="button" id="moreActions" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
205   - <i class="fa fa-ellipsis-v fa-2x" aria-hidden="true"></i>
206   - </button>
207   - <ul class="dropdown-menu" aria-labelledby="moreActions">
208   - <li><a href="javascript:void(0)" data-toggle="modal" data-target="#myModal3"><i class="fa fa-pencil fa-fw" aria-hidden="true"></i>&nbsp; Replicate</a></li>
209   - <li><a href="javascript:void(0)" data-toggle="modal" data-target="#removeSubject2"><i class="fa fa-trash fa-fw" aria-hidden="true"></i>&nbsp; Remove</a></li>
210   - </ul>
  202 + {% if user|has_role:'professor' and user in subject.professors or user|has_role:'system_admin' %}
  203 + <div class="col-xs-3 col-md-2" id="divMoreActions">
  204 + <div class="btn-group">
  205 + <button class="btn btn-default btn-sm dropdown-toggle" type="button" id="moreActions" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
  206 + <i class="fa fa-ellipsis-v fa-2x" aria-hidden="true"></i>
  207 + </button>
  208 + <ul class="dropdown-menu" aria-labelledby="moreActions">
  209 + <li><a href="javascript:void(0)" data-toggle="modal" data-target="#myModal3"><i class="fa fa-pencil fa-fw" aria-hidden="true"></i>&nbsp; Replicate</a></li>
  210 + <li><a href="javascript:void(0)" data-toggle="modal" data-target="#removeSubject2"><i class="fa fa-trash fa-fw" aria-hidden="true"></i>&nbsp; Remove</a></li>
  211 + </ul>
  212 + </div>
211 213 </div>
212   - </div>
  214 + {% endif %}
213 215 </div>
214 216 </div>
215 217 <div class="panel-body">
... ... @@ -244,17 +246,19 @@
244 246 <h4 style="color:white">{{subject.name}}</h4>
245 247 </a>
246 248 </div>
247   - <div class="col-xs-3 col-md-2" id="divMoreActions">
248   - <div class="btn-group">
249   - <button class="btn btn-default btn-sm dropdown-toggle" type="button" id="moreActions" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
250   - <i class="fa fa-ellipsis-v fa-2x" aria-hidden="true"></i>
251   - </button>
252   - <ul class="dropdown-menu" aria-labelledby="moreActions">
253   - <li><a href="javascript:void(0)" data-toggle="modal" data-target="#myModal3"><i class="fa fa-pencil fa-fw" aria-hidden="true"></i>&nbsp; Replicate</a></li>
254   - <li><a href="javascript:void(0)" data-toggle="modal" data-target="#removeSubject2"><i class="fa fa-trash fa-fw" aria-hidden="true"></i>&nbsp; Remove</a></li>
255   - </ul>
  249 + {% if user|has_role:'professor' and user in subject.professors or user|has_role:'system_admin' %}
  250 + <div class="col-xs-3 col-md-2" id="divMoreActions">
  251 + <div class="btn-group">
  252 + <button class="btn btn-default btn-sm dropdown-toggle" type="button" id="moreActions" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
  253 + <i class="fa fa-ellipsis-v fa-2x" aria-hidden="true"></i>
  254 + </button>
  255 + <ul class="dropdown-menu" aria-labelledby="moreActions">
  256 + <li><a href="javascript:void(0)" data-toggle="modal" data-target="#myModal3"><i class="fa fa-pencil fa-fw" aria-hidden="true"></i>&nbsp; Replicate</a></li>
  257 + <li><a href="javascript:void(0)" data-toggle="modal" data-target="#removeSubject2"><i class="fa fa-trash fa-fw" aria-hidden="true"></i>&nbsp; Remove</a></li>
  258 + </ul>
  259 + </div>
256 260 </div>
257   - </div>
  261 + {% endif %}
258 262 </div>
259 263 </div>
260 264 <div class="panel-body">
... ... @@ -281,7 +285,7 @@
281 285 {% endfor %}
282 286 {% endif %}
283 287  
284   -{% if user|has_role:'professor' or user|has_role:'system_admin' %}
  288 +{% if user|has_role:'professor' and user in course.professors or user|has_role:'system_admin' %}
285 289  
286 290 <div class="form-group">
287 291 <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>
... ...
courses/views.py
... ... @@ -187,7 +187,7 @@ class CourseView(LoginRequiredMixin, NotificationMixin, generic.DetailView):
187 187 if has_role(self.request.user,'system_admin'):
188 188 courses = Course.objects.all()
189 189 elif has_role(self.request.user,'professor'):
190   - courses = self.request.user.courses.all()
  190 + courses = self.request.user.courses_professors.all()
191 191 elif has_role(self.request.user, 'student'):
192 192 courses = self.request.user.courses_student.all()
193 193  
... ...
exam/migrations/0002_answersstudent.py 0 → 100644
... ... @@ -0,0 +1,33 @@
  1 +# -*- coding: utf-8 -*-
  2 +# Generated by Django 1.10 on 2016-10-20 21:08
  3 +from __future__ import unicode_literals
  4 +
  5 +from django.conf import settings
  6 +from django.db import migrations, models
  7 +import django.db.models.deletion
  8 +
  9 +
  10 +class Migration(migrations.Migration):
  11 +
  12 + dependencies = [
  13 + migrations.swappable_dependency(settings.AUTH_USER_MODEL),
  14 + ('exam', '0001_initial'),
  15 + ]
  16 +
  17 + operations = [
  18 + migrations.CreateModel(
  19 + name='AnswersStudent',
  20 + fields=[
  21 + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
  22 + ('status', models.BooleanField(default=False, verbose_name='Answered')),
  23 + ('answered_in', models.DateTimeField(auto_now=True, verbose_name='Answered Date')),
  24 + ('answer', models.ManyToManyField(related_name='student_answer', to='exam.Answer', verbose_name='Answers Students')),
  25 + ('exam', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='student_exam', to='exam.Exam', verbose_name='Exam')),
  26 + ('student', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='student', to=settings.AUTH_USER_MODEL, verbose_name='Student')),
  27 + ],
  28 + options={
  29 + 'verbose_name': 'Answer Stundent',
  30 + 'verbose_name_plural': 'Answers Student',
  31 + },
  32 + ),
  33 + ]
... ...
users/admin.py
... ... @@ -5,5 +5,6 @@ from .forms import AdminUserForm
5 5 class UserAdmin(admin.ModelAdmin):
6 6 list_display = ['username', 'name', 'email', 'is_staff', 'is_active']
7 7 search_fields = ['username', 'name', 'email']
  8 + form = AdminUserForm
8 9  
9 10 admin.site.register(User, UserAdmin)
... ...