Commit f909c05997fff46583d9d75f92af0305e6cf8192

Authored by ailsoncgt
2 parents 91c9d65f 415f147d

Merge

courses/migrations/0004_auto_20161020_1808.py 0 → 100644
@@ -0,0 +1,21 @@ @@ -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,7 +45,7 @@ class Course(models.Model):
45 image = models.ImageField(verbose_name = _('Image'), blank = True, upload_to = 'courses/') 45 image = models.ImageField(verbose_name = _('Image'), blank = True, upload_to = 'courses/')
46 category = models.ForeignKey(CourseCategory, verbose_name = _('Category'), related_name='course_category') 46 category = models.ForeignKey(CourseCategory, verbose_name = _('Category'), related_name='course_category')
47 professors = models.ManyToManyField(User,verbose_name=_('Professors'), related_name='courses_professors') 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 public = models.BooleanField(_('Public')) 49 public = models.BooleanField(_('Public'))
50 50
51 class Meta: 51 class Meta:
@@ -69,8 +69,7 @@ class Subject(models.Model): @@ -69,8 +69,7 @@ class Subject(models.Model):
69 course = models.ForeignKey(Course, verbose_name = _('Course'), related_name="subjects") 69 course = models.ForeignKey(Course, verbose_name = _('Course'), related_name="subjects")
70 category = models.ForeignKey(CategorySubject, verbose_name = _('Category'), related_name='subject_category',null=True) 70 category = models.ForeignKey(CategorySubject, verbose_name = _('Category'), related_name='subject_category',null=True)
71 professors = models.ManyToManyField(User,verbose_name=_('Professors'), related_name='professors_subjects') 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 class Meta: 74 class Meta:
76 ordering = ('create_date','name') 75 ordering = ('create_date','name')
courses/templates/course/view.html
@@ -28,7 +28,7 @@ @@ -28,7 +28,7 @@
28 </div> 28 </div>
29 </div> 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 <div class="panel panel-primary navigation"> 33 <div class="panel panel-primary navigation">
34 <div class="panel-heading"> 34 <div class="panel-heading">
@@ -56,7 +56,7 @@ @@ -56,7 +56,7 @@
56 <div class="col-xs-8 col-md-10 titleTopic"> 56 <div class="col-xs-8 col-md-10 titleTopic">
57 <h4>{{course}}</h4> 57 <h4>{{course}}</h4>
58 </div> 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 <div class="col-xs-4 col-md-2" id="divMoreActions"> 60 <div class="col-xs-4 col-md-2" id="divMoreActions">
61 <div class="btn-group"> 61 <div class="btn-group">
62 <button class="btn btn-default btn-sm dropdown-toggle" type="button" id="moreActions" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 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,17 +199,19 @@
199 <h4 style="color:white">{{subject.name}}</h4> 199 <h4 style="color:white">{{subject.name}}</h4>
200 </a> 200 </a>
201 </div> 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 </div> 213 </div>
212 - </div> 214 + {% endif %}
213 </div> 215 </div>
214 </div> 216 </div>
215 <div class="panel-body"> 217 <div class="panel-body">
@@ -244,17 +246,19 @@ @@ -244,17 +246,19 @@
244 <h4 style="color:white">{{subject.name}}</h4> 246 <h4 style="color:white">{{subject.name}}</h4>
245 </a> 247 </a>
246 </div> 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 </div> 260 </div>
257 - </div> 261 + {% endif %}
258 </div> 262 </div>
259 </div> 263 </div>
260 <div class="panel-body"> 264 <div class="panel-body">
@@ -281,7 +285,7 @@ @@ -281,7 +285,7 @@
281 {% endfor %} 285 {% endfor %}
282 {% endif %} 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 <div class="form-group"> 290 <div class="form-group">
287 <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> 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,7 +187,7 @@ class CourseView(LoginRequiredMixin, NotificationMixin, generic.DetailView):
187 if has_role(self.request.user,'system_admin'): 187 if has_role(self.request.user,'system_admin'):
188 courses = Course.objects.all() 188 courses = Course.objects.all()
189 elif has_role(self.request.user,'professor'): 189 elif has_role(self.request.user,'professor'):
190 - courses = self.request.user.courses.all() 190 + courses = self.request.user.courses_professors.all()
191 elif has_role(self.request.user, 'student'): 191 elif has_role(self.request.user, 'student'):
192 courses = self.request.user.courses_student.all() 192 courses = self.request.user.courses_student.all()
193 193
exam/migrations/0002_answersstudent.py 0 → 100644
@@ -0,0 +1,33 @@ @@ -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 +5,6 @@ from .forms import AdminUserForm
5 class UserAdmin(admin.ModelAdmin): 5 class UserAdmin(admin.ModelAdmin):
6 list_display = ['username', 'name', 'email', 'is_staff', 'is_active'] 6 list_display = ['username', 'name', 'email', 'is_staff', 'is_active']
7 search_fields = ['username', 'name', 'email'] 7 search_fields = ['username', 'name', 'email']
  8 + form = AdminUserForm
8 9
9 admin.site.register(User, UserAdmin) 10 admin.site.register(User, UserAdmin)