diff --git a/core/migrations/0009_auto_20160916_0126.py b/core/migrations/0009_auto_20160916_0126.py new file mode 100644 index 0000000..40bfc5b --- /dev/null +++ b/core/migrations/0009_auto_20160916_0126.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10 on 2016-09-16 04:26 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0008_resource_link'), + ] + + operations = [ + migrations.RenameField( + model_name='resource', + old_name='link', + new_name='url', + ), + ] diff --git a/courses/migrations/0013_auto_20160916_0126.py b/courses/migrations/0013_auto_20160916_0126.py new file mode 100644 index 0000000..aad2dba --- /dev/null +++ b/courses/migrations/0013_auto_20160916_0126.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10 on 2016-09-16 04:26 +from __future__ import unicode_literals + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('core', '0009_auto_20160916_0126'), + ('courses', '0012_course_students'), + ] + + operations = [ + migrations.CreateModel( + name='Activity', + fields=[ + ('resource_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='core.Resource')), + ('create_date', models.DateTimeField(auto_now_add=True, verbose_name='Creation Date')), + ('limit_date', models.DateTimeField(verbose_name='Deliver Date')), + ('grade', models.IntegerField(verbose_name='grade')), + ('student', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='student', to=settings.AUTH_USER_MODEL, verbose_name='student')), + ], + bases=('core.resource',), + ), + migrations.CreateModel( + name='Link', + fields=[ + ('resource_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='core.Resource')), + ('url_field', models.CharField(max_length=300, verbose_name='url')), + ], + bases=('core.resource',), + ), + migrations.AddField( + model_name='topic', + name='visible', + field=models.BooleanField(default=False, verbose_name='Visible'), + ), + migrations.AddField( + model_name='activity', + name='topic', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='topic', to='courses.Topic', verbose_name='Topic'), + ), + ] diff --git a/courses/templates/course/index.html b/courses/templates/course/index.html index a160744..4075662 100644 --- a/courses/templates/course/index.html +++ b/courses/templates/course/index.html @@ -54,7 +54,9 @@ {% for course in courses %}
- + {% if course.image %} + + {% endif %}
diff --git a/courses/templates/course/view.html b/courses/templates/course/view.html index 513e5c8..ea575cf 100644 --- a/courses/templates/course/view.html +++ b/courses/templates/course/view.html @@ -64,22 +64,24 @@
-
+ +
-

{{subject}}

+

{{subject}}

-
-
- {% if user|has_role:'professor, system_admin' %} - - - - - - - {% endif %} -
-
+
+ +
+ {% if user|has_role:'professor, system_admin' %} + + + + + + + {% endif %} +
+

{% trans "Professor" %}: {% for professor in subject.professors.all %}{% if not forloop.first %},{% endif %} diff --git a/courses/templates/subject/index.html b/courses/templates/subject/index.html index f536060..c794f4d 100644 --- a/courses/templates/subject/index.html +++ b/courses/templates/subject/index.html @@ -7,7 +7,12 @@

{% endblock %} @@ -67,8 +72,10 @@ {% include "subject/form_view_student.html" %} {% endif %} {% endfor %} + {% if user|has_role:'system_admin' or topic.owner == user%} + {% trans "Create Topic" %} + {% endif %} - {% trans "Create Topic" %} {% endblock %} {% block rightbar %} diff --git a/courses/templates/topic/index.html b/courses/templates/topic/index.html new file mode 100644 index 0000000..178de28 --- /dev/null +++ b/courses/templates/topic/index.html @@ -0,0 +1,89 @@ +{% extends 'base.html' %} + +{% load static i18n permission_tags %} + +{% block breadcrumbs %} + + +{% endblock %} + +{% block sidebar %} + +
+ +
+

{{course}}

+
+ +
+ +
+
+ + +{% endblock %} + +{% block content %} +
+
+
+
+

{{subject}}

+
+
+ {% if user|has_role:'system_admin' or user in subject.professors %} + {% trans "edit" %} + {% endif %} +
+
+ {% if user|has_role:'system_admin' or user in subject.professors %} + {% trans "delete" %} + {% endif %} +
+
+
+
+

+ {{subject.description|linebreaks}} +

+
+
+ + +{% block rightbar %} + +
+
+

{% trans "Pending Stuffs" %}

+
+
+ +
+
+{% endblock rightbar %} diff --git a/courses/urls.py b/courses/urls.py index 3b9f18d..7d27141 100644 --- a/courses/urls.py +++ b/courses/urls.py @@ -15,9 +15,10 @@ urlpatterns = [ url(r'^categories/(?P[\w_-]+)/$', views.ViewCat.as_view(), name='view_cat'), url(r'^categories/delete/(?P[\w_-]+)/$', views.DeleteCatView.as_view(), name='delete_cat'), url(r'^subjects/(?P[\w_-]+)/$', views.SubjectsView.as_view(), name='view_subject'), - url(r'^topics/create/(?P[\w_-]+)/$', views.CreateTopicView.as_view(), name='create_topic'), - url(r'^topics/update/(?P[\w_-]+)/$', views.UpdateTopicView.as_view(), name='update_topic'), url(r'^subjects/create/(?P[\w_-]+)/$', views.CreateSubjectView.as_view(), name='create_subject'), url(r'^subjects/update/(?P[\w_-]+)/$', views.UpdateSubjectView.as_view(), name='update_subject'), url(r'^subjects/delete/(?P[\w_-]+)/$', views.DeleteSubjectView.as_view(), name='delete_subject'), + url(r'^topics/create/(?P[\w_-]+)/$', views.CreateTopicView.as_view(), name='create_topic'), + url(r'^topics/update/(?P[\w_-]+)/$', views.UpdateTopicView.as_view(), name='update_topic'), + url(r'^topics/(?P[\w_-]+)/$', views.TopicsView.as_view(), name='view_topic') ] diff --git a/courses/views.py b/courses/views.py index a79e497..e5674e0 100644 --- a/courses/views.py +++ b/courses/views.py @@ -236,6 +236,29 @@ class SubjectsView(LoginRequiredMixin, generic.ListView): context['topics'] = subject.topics.all() return context +class TopicsView(LoginRequiredMixin, generic.ListView): + + login_url = reverse_lazy("core:home") + redirect_field_name = 'next' + template_name = 'topic/index.html' + context_object_name = 'topics' + model = Topic + + def get_queryset(self): + topic = get_object_or_404(Topic, slug = self.kwargs.get('slug')) + subject = topic.subject + context = subject.topics.filter(visible=True) + #if (self.request.user in subject.professors.all() or has_role(self.request.user,'system_admin')): + #context = subject.topics.all() <- Change it By Activities + return context + + def get_context_data(self, **kwargs): + topic = get_object_or_404(Topic, slug = self.kwargs.get('slug')) + context = super(TopicsView, self).get_context_data(**kwargs) + context['topic'] = topic + context['subject'] = topic.subject + return context + class CreateTopicView(LoginRequiredMixin, HasRoleMixin, NotificationMixin, generic.edit.CreateView): allowed_roles = ['professor', 'system_admin'] @@ -384,3 +407,5 @@ class DeleteSubjectView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView): def get_success_url(self): return reverse_lazy('course:view_subject', kwargs={'slug' : self.object.course.subjects.all()[0].slug}) + + -- libgit2 0.21.2