diff --git a/amadeus/settings.py b/amadeus/settings.py index c1852f7..4a6da4b 100644 --- a/amadeus/settings.py +++ b/amadeus/settings.py @@ -48,6 +48,7 @@ INSTALLED_APPS = [ 'courses', 'users', 'forum', + 'poll', ] MIDDLEWARE_CLASSES = [ diff --git a/core/templates/base.html b/core/templates/base.html index 1bdcc33..a5b4c8c 100644 --- a/core/templates/base.html +++ b/core/templates/base.html @@ -8,7 +8,7 @@ - + @@ -18,11 +18,11 @@ - + - - + + @@ -141,8 +141,6 @@ - - diff --git a/courses/migrations/0001_initial.py b/courses/migrations/0001_initial.py index 7c059b8..380cf31 100644 --- a/courses/migrations/0001_initial.py +++ b/courses/migrations/0001_initial.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-09-22 05:46 +# Generated by Django 1.10 on 2016-09-28 20:27 from __future__ import unicode_literals import autoslug.fields @@ -22,7 +22,6 @@ class Migration(migrations.Migration): 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')), ('student', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='student')), ], @@ -37,8 +36,8 @@ class Migration(migrations.Migration): ('create_date', models.DateField(auto_now_add=True, verbose_name='Creation Date')), ], options={ - 'verbose_name_plural': 'Categories', 'verbose_name': 'Category', + 'verbose_name_plural': 'Categories', }, ), migrations.CreateModel( @@ -57,20 +56,19 @@ class Migration(migrations.Migration): ('end_date', models.DateField(verbose_name='End of Course Date')), ('image', models.ImageField(blank=True, upload_to='courses/', verbose_name='Image')), ('category', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Category', verbose_name='Category')), - ('professors', models.ManyToManyField(related_name='courses', to=settings.AUTH_USER_MODEL, verbose_name='Professors')), + ('professors', models.ManyToManyField(related_name='courses_professors', to=settings.AUTH_USER_MODEL, verbose_name='Professors')), ('students', models.ManyToManyField(related_name='courses_student', to=settings.AUTH_USER_MODEL, verbose_name='Students')), ], options={ + 'verbose_name': 'Course', 'verbose_name_plural': 'Courses', 'ordering': ('create_date', 'name'), - 'verbose_name': 'Course', }, ), migrations.CreateModel( name='Material', 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')), ('student', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='student')), ], bases=('core.resource',), @@ -91,9 +89,23 @@ class Migration(migrations.Migration): ('professors', models.ManyToManyField(related_name='subjects', to=settings.AUTH_USER_MODEL, verbose_name='Professors')), ], options={ + 'verbose_name': 'Subject', 'verbose_name_plural': 'Subjects', 'ordering': ('create_date', 'name'), - 'verbose_name': 'Subject', + }, + ), + migrations.CreateModel( + name='SubjectCategory', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=100, verbose_name='Name')), + ('slug', autoslug.fields.AutoSlugField(editable=False, populate_from='name', unique=True, verbose_name='Slug')), + ('description', models.TextField(blank=True, verbose_name='Description')), + ('subjects', models.ManyToManyField(to='courses.Subject')), + ], + options={ + 'verbose_name': 'subject category', + 'verbose_name_plural': 'subject categories', }, ), migrations.CreateModel( @@ -110,9 +122,9 @@ class Migration(migrations.Migration): ('subject', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Subject', verbose_name='Subject')), ], options={ + 'verbose_name': 'Topic', 'verbose_name_plural': 'Topics', 'ordering': ('create_date', 'name'), - 'verbose_name': 'Topic', }, ), migrations.AddField( diff --git a/courses/migrations/0002_auto_20160926_0026.py b/courses/migrations/0002_auto_20160926_0026.py deleted file mode 100644 index 06cd315..0000000 --- a/courses/migrations/0002_auto_20160926_0026.py +++ /dev/null @@ -1,38 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-09-26 03:26 -from __future__ import unicode_literals - -import autoslug.fields -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('courses', '0001_initial'), - ] - - operations = [ - migrations.CreateModel( - name='SubjectCategory', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=100, verbose_name='Name')), - ('slug', autoslug.fields.AutoSlugField(editable=False, populate_from='name', unique=True, verbose_name='Slug')), - ('description', models.TextField(blank=True, verbose_name='Description')), - ('subjects', models.ManyToManyField(to='courses.Subject')), - ], - options={ - 'verbose_name_plural': 'subject categories', - 'verbose_name': 'subject category', - }, - ), - migrations.RemoveField( - model_name='activity', - name='create_date', - ), - migrations.RemoveField( - model_name='material', - name='create_date', - ), - ] diff --git a/courses/migrations/0003_auto_20160927_1945.py b/courses/migrations/0003_auto_20160927_1945.py deleted file mode 100644 index e443918..0000000 --- a/courses/migrations/0003_auto_20160927_1945.py +++ /dev/null @@ -1,52 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-09-27 22:45 -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 = [ - ('courses', '0002_auto_20160926_0026'), - ] - - operations = [ - migrations.CreateModel( - name='Answer', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('answer', models.CharField(max_length=200, verbose_name='Answer')), - ('order', models.PositiveSmallIntegerField(verbose_name='Order')), - ], - options={ - 'verbose_name_plural': 'Answers', - 'verbose_name': 'Answer', - 'ordering': ('order',), - }, - ), - migrations.CreateModel( - name='Poll', - fields=[ - ('activity_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='courses.Activity')), - ('question', models.CharField(max_length=300, verbose_name='Question')), - ], - options={ - 'verbose_name_plural': 'Polls', - 'verbose_name': 'Poll', - }, - bases=('courses.activity',), - ), - migrations.AlterField( - model_name='course', - name='professors', - field=models.ManyToManyField(related_name='courses_professors', to=settings.AUTH_USER_MODEL, verbose_name='Professors'), - ), - migrations.AddField( - model_name='answer', - name='poll', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='answers', to='courses.Poll', verbose_name='Answers'), - ), - ] diff --git a/courses/models.py b/courses/models.py index 4b490ab..3bce277 100644 --- a/courses/models.py +++ b/courses/models.py @@ -105,35 +105,11 @@ It is a category for each subject. """ class SubjectCategory(models.Model): name = models.CharField(_('Name'), max_length= 100) - slug = AutoSlugField(_("Slug"),populate_from='name',unique=True) + slug = AutoSlugField(_("Slug"),populate_from='name',unique=True) description = models.TextField(_('Description'), blank = True) subjects = models.ManyToManyField(Subject) class Meta: verbose_name = _('subject category') verbose_name_plural = _('subject categories') - -class Poll(Activity): - question = models.CharField(_('Question'), max_length = 300) - - class Meta: - #ordering = ('create_date','name') - verbose_name = _('Poll') - verbose_name_plural = _('Polls') - - def __str__(self): - return str(self.question) + str("/") + str(self.topic) - -class Answer(models.Model): - answer = models.CharField(_("Answer"), max_length = 200) - order = models.PositiveSmallIntegerField(_("Order")) - poll = models.ForeignKey(Poll, verbose_name = _('Answers'), related_name='answers') - - class Meta: - ordering = ('order',) - verbose_name = _('Answer') - verbose_name_plural = _('Answers') - - def __str__(self): - return str(self.question) + str("/") + str(self.topic) - + diff --git a/courses/templates/poll/poll.html b/courses/templates/poll/poll.html deleted file mode 100644 index 4aa8460..0000000 --- a/courses/templates/poll/poll.html +++ /dev/null @@ -1,53 +0,0 @@ -{% extends "topic/index.html" %} - -{% load i18n %} - -{% block style %} - -{% endblock %} - -{% block content %} -
-
-
-

- Question?

-
-
-
-
-
-
- -
-
-
- - Please enter a valid email address -
-
-
-
- -
-
-
-
-
- -
- -
- -{% endblock content %} diff --git a/courses/urls.py b/courses/urls.py index 7a7e050..06bf5dd 100644 --- a/courses/urls.py +++ b/courses/urls.py @@ -1,4 +1,4 @@ -from django.conf.urls import url +from django.conf.urls import url, include from . import views @@ -22,6 +22,8 @@ urlpatterns = [ 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'), url(r'^subjects/categories$',views.IndexSubjectCategoryView.as_view(), name='subject_category_index'), - url(r'^to/poll/to/$', views.Poll.as_view(), name='poll'), + + + url(r'^poll/', include('poll.urls', namespace = 'poll')) ] diff --git a/courses/views.py b/courses/views.py index 2f68edd..0cb496a 100644 --- a/courses/views.py +++ b/courses/views.py @@ -455,27 +455,3 @@ class IndexSubjectCategoryView(LoginRequiredMixin, generic.ListView): context = super(IndexSubjectCategoryView, self).get_context_data(**kwargs) context['subject_categories'] = SubjectCategory.objects.all() return context - - -class Poll(generic.TemplateView): - - # login_url = reverse_lazy("core:home") - # redirect_field_name = 'next' - # model = Course - # context_object_name = 'course' - template_name = 'poll/poll.html' - # queryset = Course.objects.all() - - # def get_queryset(self): - # return Course.objects.all()[0] - - def get_context_data(self, **kwargs): - context = super(Poll, self).get_context_data(**kwargs) - course = Course.objects.all()[0] - context['course'] = course - context['subject'] = course.subjects.all()[0] - context['subjects'] = course.subjects.all() - # if (has_role(self.request.user,'system_admin')): - # context['subjects'] = self.object.course.subjects.all() - return context - diff --git a/forum/migrations/0001_initial.py b/forum/migrations/0001_initial.py index 8b1e26b..e8416c0 100644 --- a/forum/migrations/0001_initial.py +++ b/forum/migrations/0001_initial.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-09-22 20:41 +# Generated by Django 1.10 on 2016-09-28 20:27 from __future__ import unicode_literals from django.conf import settings @@ -21,8 +21,9 @@ class Migration(migrations.Migration): name='Forum', fields=[ ('activity_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='courses.Activity')), - ('title', models.CharField(max_length=100, verbose_name='Title')), ('description', models.TextField(blank=True, verbose_name='Description')), + ('modification_date', models.DateTimeField(auto_now=True, verbose_name='Modification Date')), + ('create_date', models.DateTimeField(auto_now_add=True, verbose_name='Create Date')), ], options={ 'verbose_name': 'Forum', @@ -35,6 +36,7 @@ class Migration(migrations.Migration): fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('message', models.TextField(verbose_name='Post message')), + ('modification_date', models.DateTimeField(auto_now=True, verbose_name='Modification Date')), ('post_date', models.DateTimeField(auto_now_add=True, verbose_name='Post Date')), ('forum', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='forum.Forum', verbose_name='Forum')), ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Autor')), @@ -49,6 +51,7 @@ class Migration(migrations.Migration): fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('message', models.TextField(verbose_name='Answer message')), + ('modification_date', models.DateTimeField(auto_now=True, verbose_name='Modification Date')), ('answer_date', models.DateTimeField(auto_now_add=True, verbose_name='Answer Date')), ('post', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='forum.Post', verbose_name='Post')), ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Autor')), diff --git a/forum/migrations/0002_remove_forum_title.py b/forum/migrations/0002_remove_forum_title.py deleted file mode 100644 index 9194c4d..0000000 --- a/forum/migrations/0002_remove_forum_title.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-09-22 20:43 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('forum', '0001_initial'), - ] - - operations = [ - migrations.RemoveField( - model_name='forum', - name='title', - ), - ] diff --git a/forum/migrations/0003_forum_create_date.py b/forum/migrations/0003_forum_create_date.py deleted file mode 100644 index 9970a9e..0000000 --- a/forum/migrations/0003_forum_create_date.py +++ /dev/null @@ -1,22 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-09-28 02:17 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.utils.timezone - - -class Migration(migrations.Migration): - - dependencies = [ - ('forum', '0002_remove_forum_title'), - ] - - operations = [ - migrations.AddField( - model_name='forum', - name='create_date', - field=models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now, verbose_name='Create Date'), - preserve_default=False, - ), - ] diff --git a/forum/migrations/0004_auto_20160928_1558.py b/forum/migrations/0004_auto_20160928_1558.py deleted file mode 100644 index 8b01d64..0000000 --- a/forum/migrations/0004_auto_20160928_1558.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-09-28 18:58 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('forum', '0003_forum_create_date'), - ] - - operations = [ - migrations.AddField( - model_name='forum', - name='modification_date', - field=models.DateTimeField(auto_now=True, verbose_name='Modification Date'), - ), - migrations.AddField( - model_name='post', - name='modification_date', - field=models.DateTimeField(auto_now=True, verbose_name='Modification Date'), - ), - migrations.AddField( - model_name='postanswer', - name='modification_date', - field=models.DateTimeField(auto_now=True, verbose_name='Modification Date'), - ), - ] diff --git a/poll/__init__.py b/poll/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/poll/__init__.py diff --git a/poll/admin.py b/poll/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/poll/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/poll/apps.py b/poll/apps.py new file mode 100644 index 0000000..37c595a --- /dev/null +++ b/poll/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class PollConfig(AppConfig): + name = 'poll' diff --git a/poll/migrations/0001_initial.py b/poll/migrations/0001_initial.py new file mode 100644 index 0000000..0e22711 --- /dev/null +++ b/poll/migrations/0001_initial.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10 on 2016-09-28 20:27 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('courses', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='Answer', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('answer', models.CharField(max_length=200, verbose_name='Answer')), + ('order', models.PositiveSmallIntegerField(verbose_name='Order')), + ], + options={ + 'verbose_name': 'Answer', + 'verbose_name_plural': 'Answers', + 'ordering': ('order',), + }, + ), + migrations.CreateModel( + name='Poll', + fields=[ + ('activity_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='courses.Activity')), + ('question', models.CharField(max_length=300, verbose_name='Question')), + ], + options={ + 'verbose_name': 'Poll', + 'verbose_name_plural': 'Polls', + }, + bases=('courses.activity',), + ), + migrations.AddField( + model_name='answer', + name='poll', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='answers', to='poll.Poll', verbose_name='Answers'), + ), + ] diff --git a/poll/migrations/__init__.py b/poll/migrations/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/poll/migrations/__init__.py diff --git a/poll/models.py b/poll/models.py new file mode 100644 index 0000000..d7b8336 --- /dev/null +++ b/poll/models.py @@ -0,0 +1,30 @@ +from django.utils.translation import ugettext_lazy as _ +from django.db import models +from autoslug.fields import AutoSlugField +from users.models import User +from core.models import Resource +from courses.models import Activity + +class Poll(Activity): + question = models.CharField(_('Question'), max_length = 300) + + class Meta: + #ordering = ('create_date','name') + verbose_name = _('Poll') + verbose_name_plural = _('Polls') + + def __str__(self): + return str(self.question) + str("/") + str(self.topic) + +class Answer(models.Model): + answer = models.CharField(_("Answer"), max_length = 200) + order = models.PositiveSmallIntegerField(_("Order")) + poll = models.ForeignKey(Poll, verbose_name = _('Answers'), related_name='answers') + + class Meta: + ordering = ('order',) + verbose_name = _('Answer') + verbose_name_plural = _('Answers') + + def __str__(self): + return str(self.question) + str("/") + str(self.topic) diff --git a/poll/templates/poll/poll.html b/poll/templates/poll/poll.html new file mode 100644 index 0000000..b2794de --- /dev/null +++ b/poll/templates/poll/poll.html @@ -0,0 +1,52 @@ +{% extends "topic/index.html" %} + +{% load i18n %} + +{% block style %} + +{% endblock %} + +{% block content %} +
+
+
+

+ Question?

+
+
+
+
+
+
+ +
+
+
+ + {% trans "Possible Answer" %} +
+
+
+
+ +
+
+
+
+
+ +
+ +
+ +{% endblock content %} diff --git a/poll/tests.py b/poll/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/poll/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/poll/urls.py b/poll/urls.py new file mode 100644 index 0000000..58cc8f9 --- /dev/null +++ b/poll/urls.py @@ -0,0 +1,8 @@ +from django.conf.urls import url + +from . import views + +urlpatterns = [ + url(r'^to/poll/to/$', views.Poll.as_view(), name='poll'), + +] diff --git a/poll/views.py b/poll/views.py new file mode 100644 index 0000000..59d7ce6 --- /dev/null +++ b/poll/views.py @@ -0,0 +1,38 @@ +from django.shortcuts import render, get_object_or_404, redirect +from django.views import generic +from django.contrib.auth.decorators import login_required +from django.core.paginator import Paginator, EmptyPage +from django.contrib.auth.mixins import LoginRequiredMixin +from rolepermissions.mixins import HasRoleMixin +from django.core.urlresolvers import reverse_lazy +from django.utils.translation import ugettext_lazy as _ +from rolepermissions.verifications import has_role +from rolepermissions.verifications import has_object_permission + +# from .forms import CourseForm, UpdateCourseForm, CategoryForm, SubjectForm,TopicForm +# from .models import Course, Subject, Category,Topic, SubjectCategory +from core.mixins import NotificationMixin +from users.models import User +from courses.models import Course + +class Poll(generic.TemplateView): + + # login_url = reverse_lazy("core:home") + # redirect_field_name = 'next' + # model = Course + # context_object_name = 'course' + template_name = 'poll/poll.html' + # queryset = Course.objects.all() + + # def get_queryset(self): + # return Course.objects.all()[0] + + def get_context_data(self, **kwargs): + context = super(Poll, self).get_context_data(**kwargs) + course = Course.objects.all()[0] + context['course'] = course + context['subject'] = course.subjects.all()[0] + context['subjects'] = course.subjects.all() + # if (has_role(self.request.user,'system_admin')): + # context['subjects'] = self.object.course.subjects.all() + return context -- libgit2 0.21.2