diff --git a/amadeus/settings.py b/amadeus/settings.py
index df078e5..1375de7 100644
--- a/amadeus/settings.py
+++ b/amadeus/settings.py
@@ -55,7 +55,7 @@ INSTALLED_APPS = [
'users',
'notifications',
'log',
- 'courses'
+ 'categories'
]
MIDDLEWARE_CLASSES = [
diff --git a/amadeus/urls.py b/amadeus/urls.py
index 7d46856..47add98 100644
--- a/amadeus/urls.py
+++ b/amadeus/urls.py
@@ -25,7 +25,7 @@ urlpatterns = [
url(r'^users/', include('users.urls', namespace = 'users')),
url(r'^admin/', admin.site.urls),
url(r'^$', index, name = 'home'),
- url(r'^courses/', include('courses.urls', namespace = 'courses')),
+ url(r'^categories/', include('categories.urls', namespace = 'categories')),
#API
url(r'^o/', include('oauth2_provider.urls', namespace='oauth2_provider')),
#S3Direct
diff --git a/amadeus/views.py b/amadeus/views.py
index 1f6b34e..3e5adc9 100644
--- a/amadeus/views.py
+++ b/amadeus/views.py
@@ -3,6 +3,6 @@ from django.shortcuts import redirect
def index(request):
if request.user.is_authenticated:
- return redirect('courses:index')
+ return redirect('categories:index')
else:
return redirect('users:login')
\ No newline at end of file
diff --git a/categories/__init__.py b/categories/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/categories/__init__.py
diff --git a/categories/admin.py b/categories/admin.py
new file mode 100644
index 0000000..8c38f3f
--- /dev/null
+++ b/categories/admin.py
@@ -0,0 +1,3 @@
+from django.contrib import admin
+
+# Register your models here.
diff --git a/categories/apps.py b/categories/apps.py
new file mode 100644
index 0000000..559d48c
--- /dev/null
+++ b/categories/apps.py
@@ -0,0 +1,5 @@
+from django.apps import AppConfig
+
+
+class CourseConfig(AppConfig):
+ name = 'categories'
diff --git a/categories/forms.py b/categories/forms.py
new file mode 100644
index 0000000..f2e13ae
--- /dev/null
+++ b/categories/forms.py
@@ -0,0 +1,7 @@
+from django import forms
+from .models import Category
+
+class CategoryForm(forms.ModelForm):
+ class Meta:
+ model = Category
+ fields = ('category_father', 'name', 'description', 'visible', 'coordinators', )
diff --git a/categories/migrations/0001_initial.py b/categories/migrations/0001_initial.py
new file mode 100644
index 0000000..4a1e5cc
--- /dev/null
+++ b/categories/migrations/0001_initial.py
@@ -0,0 +1,38 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10 on 2016-12-21 03:51
+from __future__ import unicode_literals
+
+import autoslug.fields
+from django.conf import settings
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ initial = True
+
+ dependencies = [
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='Category',
+ 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.CharField(max_length=300, verbose_name='description')),
+ ('visible', models.BooleanField(verbose_name='visible')),
+ ('create_date', models.DateTimeField(auto_now_add=True, verbose_name='Creation Date')),
+ ('modified_date', models.DateTimeField(auto_now_add=True, verbose_name='Modified Date')),
+ ('category_father', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='category_parent', to='categories.Category')),
+ ('coordinators', models.ManyToManyField(related_name='coordinators', to=settings.AUTH_USER_MODEL)),
+ ],
+ options={
+ 'verbose_name_plural': 'Categories',
+ 'verbose_name': 'Category',
+ },
+ ),
+ ]
diff --git a/categories/migrations/__init__.py b/categories/migrations/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/categories/migrations/__init__.py
diff --git a/categories/models.py b/categories/models.py
new file mode 100644
index 0000000..18d9d7c
--- /dev/null
+++ b/categories/models.py
@@ -0,0 +1,23 @@
+from django.db import models
+from autoslug.fields import AutoSlugField
+from django.utils.translation import ugettext_lazy as _
+from users.models import User
+
+class Category(models.Model):
+ """Represents a Course """
+
+ category_father = models.ForeignKey('Category', related_name =_("category_parent"), on_delete = models.CASCADE)
+ name = models.CharField(_("Name"), max_length = 100)
+ slug = AutoSlugField(_("Slug"),populate_from='name',unique=True)
+ description = models.CharField(_("description"), max_length = 300)
+ visible = models.BooleanField(_("visible"))
+ coordinators = models.ManyToManyField(User, related_name = _("coordinators"))
+ create_date = models.DateTimeField(_('Creation Date'), auto_now_add = True)
+ modified_date = models.DateTimeField(_('Modified Date'), auto_now_add = True)
+
+ class Meta:
+ verbose_name = _('Category')
+ verbose_name_plural = _('Categories')
+
+ def __str__(self):
+ return self.name
\ No newline at end of file
diff --git a/categories/runtests.py b/categories/runtests.py
new file mode 100644
index 0000000..6859ee8
--- /dev/null
+++ b/categories/runtests.py
@@ -0,0 +1,14 @@
+import os
+import sys
+
+import django
+from django.conf import settings
+from django.test.utils import get_runner
+
+if __name__ == "__main__":
+ os.environ['DJANGO_SETTINGS_MODULE'] = 'tests.test_settings'
+ django.setup()
+ TestRunner = get_runner(settings)
+ test_runner = TestRunner()
+ failures = test_runner.run_tests(["tests"])
+ sys.exit(bool(failures))
\ No newline at end of file
diff --git a/categories/templates/categories/create.html b/categories/templates/categories/create.html
new file mode 100644
index 0000000..2fc6aa7
--- /dev/null
+++ b/categories/templates/categories/create.html
@@ -0,0 +1,64 @@
+{% extends 'course/index.html' %}
+
+{% load widget_tweaks static i18n permission_tags django_bootstrap_breadcrumbs %}
+
+{% block breadcrumbs %}
+ {{ block.super }}
+ {% breadcrumb 'Create Course' 'course:create' %}
+{% endblock %}
+
+{% block content %}
+
+
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/categories/templates/categories/home.html b/categories/templates/categories/home.html
new file mode 100755
index 0000000..4a28119
--- /dev/null
+++ b/categories/templates/categories/home.html
@@ -0,0 +1,33 @@
+{% extends 'base.html' %}
+
+{% load static i18n django_bootstrap_breadcrumbs permission_tags %}
+
+
+
+{% block breadcrumbs %}
+ {% clear_breadcrumbs %}
+ {% breadcrumb 'Home' 'app:index' %}
+{% endblock %}
+
+
+{% block render_breadcrumbs %}
+ {% render_breadcrumbs %}
+{% endblock %}
+
+{% block content %}
+ {% if user|has_role:'system_admin' %}
+ {% trans 'categories' %}
+
+ {% include page_template %}
+
+ {% else %}
+
+ {% include page_template %}
+
+ {% endif %}
+
+
+
+
+
+{% endblock %}
diff --git a/categories/templates/categories/home_admin_content.html b/categories/templates/categories/home_admin_content.html
new file mode 100755
index 0000000..0ac29ac
--- /dev/null
+++ b/categories/templates/categories/home_admin_content.html
@@ -0,0 +1,8 @@
+{% load static i18n %}
+
+{% for course in objects %}
+
+{% endfor %}
diff --git a/categories/templates/categories/home_teacher_student_content.html b/categories/templates/categories/home_teacher_student_content.html
new file mode 100755
index 0000000..c98ccb3
--- /dev/null
+++ b/categories/templates/categories/home_teacher_student_content.html
@@ -0,0 +1,20 @@
+{% load static i18n %}
+
+{% for notification in objects %}
+
+
+
+
+
+
+

+
+
+
+
+{% endfor %}
+
diff --git a/categories/templates/categories/list.html b/categories/templates/categories/list.html
new file mode 100755
index 0000000..8f55800
--- /dev/null
+++ b/categories/templates/categories/list.html
@@ -0,0 +1,67 @@
+{% extends 'home.html' %}
+
+{% load static i18n permission_tags %}
+{% load django_bootstrap_breadcrumbs %}
+
+{% block javascript%}
+ {{ block.super }}
+{% endblock%}
+
+{% block breadcrumbs %}
+
+{{ block.super }}
+{% breadcrumb 'categories' 'course:manage' %}
+
+{% endblock %}
+
+{% block content %}
+{% if messages %}
+{% for message in messages %}
+
+{% endfor %}
+{% endif %}
+
+
+
+
+ {% for category in categorys_categories %}
+
+
+
+
+ {% for course in category.course_category %}
+ {% include "course/course_card.html" %}
+ {% endfor %}
+
+
+
+ {% endfor %}
+
+
+
+
+
+{% endblock %}
diff --git a/categories/tests/__init__.py b/categories/tests/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/categories/tests/__init__.py
diff --git a/categories/tests/test_views.py b/categories/tests/test_views.py
new file mode 100644
index 0000000..a93c226
--- /dev/null
+++ b/categories/tests/test_views.py
@@ -0,0 +1,29 @@
+from django.test import TestCase, RequestFactory
+from users.models import User
+from django.contrib.auth.models import AnonymousUser
+from .. import views
+
+class Index_Test(TestCase):
+
+ def setUp(self):
+ self.factory = RequestFactory()
+ self.user = User.objects.create(username="felipe", email="felipe.bormann@gmail.com", password="teste")
+
+ def test_index_get_auth(self):
+ request = self.factory.get('categories/')
+
+ request.user = self.user
+
+ response = views.IndexView.as_view()(request)
+
+ self.assertEqual(response.status_code, 200)
+
+ def test_index_get_unauth(self):
+
+ request = self.factory.get('categories/')
+
+ request.user = AnonymousUser()
+
+ response = views.IndexView.as_view()(request)
+
+ self.assertEqual(response.status_code, 302) #Which means it is been redirected to login page
\ No newline at end of file
diff --git a/categories/urls.py b/categories/urls.py
new file mode 100644
index 0000000..c416d2f
--- /dev/null
+++ b/categories/urls.py
@@ -0,0 +1,7 @@
+from django.conf.urls import url
+from . import views
+
+urlpatterns = [
+ url(r'^$', views.IndexView.as_view(), name='index'),
+
+]
\ No newline at end of file
diff --git a/categories/views.py b/categories/views.py
new file mode 100644
index 0000000..e1f1303
--- /dev/null
+++ b/categories/views.py
@@ -0,0 +1,69 @@
+from django.shortcuts import render
+from django.views.generic import ListView, CreateView
+from .models import Category
+from django.core.urlresolvers import reverse_lazy
+from rolepermissions.verifications import has_role
+
+from django.utils.translation import ugettext_lazy as _
+
+from django.contrib.auth.mixins import LoginRequiredMixin
+
+from rolepermissions.mixins import HasRoleMixin
+from .forms import CategoryForm
+
+class IndexView(LoginRequiredMixin, ListView):
+
+ login_url = reverse_lazy("users:login")
+ redirect_field_name = 'next'
+ queryset = Category.objects.all()
+ template_name = 'categories/home.html'
+ context_object_name = 'categories'
+
+
+ def get_queryset(self):
+ result = super(IndexView, self).get_queryset()
+
+
+ return result
+
+ def render_to_response(self, context, **response_kwargs):
+ if self.request.user.is_staff:
+ context['page_template'] = "categories/home_admin_content.html"
+ else:
+ context['page_template'] = "categories/home_teacher_student_content.html"
+
+ context['title'] = _('Home')
+
+ if self.request.is_ajax():
+ if self.request.user.is_staff:
+ self.template_name = "home_admin_content.html"
+ else:
+ self.template_name = "home_teacher_student_content.html"
+
+ return self.response_class(request = self.request, template = self.template_name, context = context, using = self.template_engine, **response_kwargs)
+
+ def get_context_data(self, **kwargs):
+ context = super(IndexView, self).get_context_data(**kwargs)
+ list_categories = None
+ if has_role(self.request.user,'system_admin'):
+ list_categories = self.get_queryset().order_by('name')
+ # categorys_categories = CourseCategory.objects.all()
+ elif has_role(self.request.user,'professor'):
+ pass
+ #list_categories = self.get_queryset().filter(professors__in = [self.request.user]).order_by('name')
+ # categorys_categories = CourseCategory.objects.filter(course_category__professors__name = self.request.user.name).distinct()
+ elif has_role(self.request.user, 'student'):
+ pass
+ #list_categories = self.get_queryset().filter(students__in = [self.request.user]).order_by('name')
+
+
+ context['title'] = _('Categories')
+
+ return context
+
+class createCategory(HasRoleMixin, CreateView):
+
+ allowed_rules = ['system_admin']
+ login_url = reverse_lazy('users:login')
+ form_class = CategoryForm
+ template_name = 'categories/create.html'
diff --git a/courses/__init__.py b/courses/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/courses/__init__.py
+++ /dev/null
diff --git a/courses/admin.py b/courses/admin.py
deleted file mode 100644
index 8c38f3f..0000000
--- a/courses/admin.py
+++ /dev/null
@@ -1,3 +0,0 @@
-from django.contrib import admin
-
-# Register your models here.
diff --git a/courses/apps.py b/courses/apps.py
deleted file mode 100644
index f41d025..0000000
--- a/courses/apps.py
+++ /dev/null
@@ -1,5 +0,0 @@
-from django.apps import AppConfig
-
-
-class CourseConfig(AppConfig):
- name = 'courses'
diff --git a/courses/migrations/0001_initial.py b/courses/migrations/0001_initial.py
deleted file mode 100644
index 62b0ce7..0000000
--- a/courses/migrations/0001_initial.py
+++ /dev/null
@@ -1,38 +0,0 @@
-# -*- coding: utf-8 -*-
-# Generated by Django 1.10 on 2016-12-21 03:51
-from __future__ import unicode_literals
-
-import autoslug.fields
-from django.conf import settings
-from django.db import migrations, models
-import django.db.models.deletion
-
-
-class Migration(migrations.Migration):
-
- initial = True
-
- dependencies = [
- migrations.swappable_dependency(settings.AUTH_USER_MODEL),
- ]
-
- operations = [
- migrations.CreateModel(
- name='Category',
- 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.CharField(max_length=300, verbose_name='description')),
- ('visible', models.BooleanField(verbose_name='visible')),
- ('create_date', models.DateTimeField(auto_now_add=True, verbose_name='Creation Date')),
- ('modified_date', models.DateTimeField(auto_now_add=True, verbose_name='Modified Date')),
- ('category_father', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='category_parent', to='courses.Category')),
- ('coordinators', models.ManyToManyField(related_name='coordinators', to=settings.AUTH_USER_MODEL)),
- ],
- options={
- 'verbose_name_plural': 'Categories',
- 'verbose_name': 'Category',
- },
- ),
- ]
diff --git a/courses/migrations/__init__.py b/courses/migrations/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/courses/migrations/__init__.py
+++ /dev/null
diff --git a/courses/models.py b/courses/models.py
deleted file mode 100644
index 18d9d7c..0000000
--- a/courses/models.py
+++ /dev/null
@@ -1,23 +0,0 @@
-from django.db import models
-from autoslug.fields import AutoSlugField
-from django.utils.translation import ugettext_lazy as _
-from users.models import User
-
-class Category(models.Model):
- """Represents a Course """
-
- category_father = models.ForeignKey('Category', related_name =_("category_parent"), on_delete = models.CASCADE)
- name = models.CharField(_("Name"), max_length = 100)
- slug = AutoSlugField(_("Slug"),populate_from='name',unique=True)
- description = models.CharField(_("description"), max_length = 300)
- visible = models.BooleanField(_("visible"))
- coordinators = models.ManyToManyField(User, related_name = _("coordinators"))
- create_date = models.DateTimeField(_('Creation Date'), auto_now_add = True)
- modified_date = models.DateTimeField(_('Modified Date'), auto_now_add = True)
-
- class Meta:
- verbose_name = _('Category')
- verbose_name_plural = _('Categories')
-
- def __str__(self):
- return self.name
\ No newline at end of file
diff --git a/courses/runtests.py b/courses/runtests.py
deleted file mode 100644
index 6859ee8..0000000
--- a/courses/runtests.py
+++ /dev/null
@@ -1,14 +0,0 @@
-import os
-import sys
-
-import django
-from django.conf import settings
-from django.test.utils import get_runner
-
-if __name__ == "__main__":
- os.environ['DJANGO_SETTINGS_MODULE'] = 'tests.test_settings'
- django.setup()
- TestRunner = get_runner(settings)
- test_runner = TestRunner()
- failures = test_runner.run_tests(["tests"])
- sys.exit(bool(failures))
\ No newline at end of file
diff --git a/courses/templates/courses/home.html b/courses/templates/courses/home.html
deleted file mode 100755
index af0e028..0000000
--- a/courses/templates/courses/home.html
+++ /dev/null
@@ -1,33 +0,0 @@
-{% extends 'base.html' %}
-
-{% load static i18n django_bootstrap_breadcrumbs permission_tags %}
-
-
-
-{% block breadcrumbs %}
- {% clear_breadcrumbs %}
- {% breadcrumb 'Home' 'app:index' %}
-{% endblock %}
-
-
-{% block render_breadcrumbs %}
- {% render_breadcrumbs %}
-{% endblock %}
-
-{% block content %}
- {% if user|has_role:'system_admin' %}
- {% trans 'Courses' %}
-
- {% include page_template %}
-
- {% else %}
-
- {% include page_template %}
-
- {% endif %}
-
-
-
-
-
-{% endblock %}
diff --git a/courses/templates/courses/home_admin_content.html b/courses/templates/courses/home_admin_content.html
deleted file mode 100755
index 0ac29ac..0000000
--- a/courses/templates/courses/home_admin_content.html
+++ /dev/null
@@ -1,8 +0,0 @@
-{% load static i18n %}
-
-{% for course in objects %}
-
-{% endfor %}
diff --git a/courses/templates/courses/home_teacher_student_content.html b/courses/templates/courses/home_teacher_student_content.html
deleted file mode 100755
index c98ccb3..0000000
--- a/courses/templates/courses/home_teacher_student_content.html
+++ /dev/null
@@ -1,20 +0,0 @@
-{% load static i18n %}
-
-{% for notification in objects %}
-
-
-
-
-
-
-

-
-
-
-
-{% endfor %}
-
diff --git a/courses/templates/courses/list.html b/courses/templates/courses/list.html
deleted file mode 100755
index e225fb9..0000000
--- a/courses/templates/courses/list.html
+++ /dev/null
@@ -1,66 +0,0 @@
-{% extends 'home.html' %}
-
-{% load static i18n permission_tags %}
-{% load django_bootstrap_breadcrumbs %}
-
-{% block javascript%}
- {{ block.super }}
-{% endblock%}
-
-{% block breadcrumbs %}
-
-{{ block.super }}
-{% breadcrumb 'Courses' 'course:manage' %}
-
-{% endblock %}
-
-{% block content %}
-{% if messages %}
-{% for message in messages %}
-
-{% endfor %}
-{% endif %}
-
-
-
- {% for category in categorys_courses %}
-
-
-
-
- {% for course in category.course_category %}
- {% include "course/course_card.html" %}
- {% endfor %}
-
-
-
- {% endfor %}
-
-
-
-
-
-{% endblock %}
diff --git a/courses/tests/__init__.py b/courses/tests/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/courses/tests/__init__.py
+++ /dev/null
diff --git a/courses/tests/test_views.py b/courses/tests/test_views.py
deleted file mode 100644
index 7f44af4..0000000
--- a/courses/tests/test_views.py
+++ /dev/null
@@ -1,29 +0,0 @@
-from django.test import TestCase, RequestFactory
-from users.models import User
-from django.contrib.auth.models import AnonymousUser
-from .. import views
-
-class Index_Test(TestCase):
-
- def setUp(self):
- self.factory = RequestFactory()
- self.user = User.objects.create(username="felipe", email="felipe.bormann@gmail.com", password="teste")
-
- def test_index_get_auth(self):
- request = self.factory.get('courses/')
-
- request.user = self.user
-
- response = views.IndexView.as_view()(request)
-
- self.assertEqual(response.status_code, 200)
-
- def test_index_get_unauth(self):
-
- request = self.factory.get('courses/')
-
- request.user = AnonymousUser()
-
- response = views.IndexView.as_view()(request)
-
- self.assertEqual(response.status_code, 302) #Which means it is been redirected to login page
\ No newline at end of file
diff --git a/courses/urls.py b/courses/urls.py
deleted file mode 100644
index c416d2f..0000000
--- a/courses/urls.py
+++ /dev/null
@@ -1,7 +0,0 @@
-from django.conf.urls import url
-from . import views
-
-urlpatterns = [
- url(r'^$', views.IndexView.as_view(), name='index'),
-
-]
\ No newline at end of file
diff --git a/courses/views.py b/courses/views.py
deleted file mode 100644
index 8cdf51d..0000000
--- a/courses/views.py
+++ /dev/null
@@ -1,60 +0,0 @@
-from django.shortcuts import render
-from django.views.generic import ListView
-from .models import Category
-from django.core.urlresolvers import reverse_lazy
-from rolepermissions.verifications import has_role
-
-from django.utils.translation import ugettext_lazy as _
-
-from django.contrib.auth.mixins import LoginRequiredMixin
-
-class IndexView(LoginRequiredMixin, ListView):
-
- login_url = reverse_lazy("users:login")
- redirect_field_name = 'next'
- queryset = Category.objects.all()
- template_name = 'courses/home.html'
- context_object_name = 'categories'
-
-
- def get_queryset(self):
- result = super(IndexView, self).get_queryset()
-
-
- return result
-
- def render_to_response(self, context, **response_kwargs):
- if self.request.user.is_staff:
- context['page_template'] = "courses/home_admin_content.html"
- else:
- context['page_template'] = "courses/home_teacher_student_content.html"
-
- context['title'] = _('Home')
-
- if self.request.is_ajax():
- if self.request.user.is_staff:
- self.template_name = "home_admin_content.html"
- else:
- self.template_name = "home_teacher_student_content.html"
-
- return self.response_class(request = self.request, template = self.template_name, context = context, using = self.template_engine, **response_kwargs)
-
- def get_context_data(self, **kwargs):
- context = super(IndexView, self).get_context_data(**kwargs)
- list_courses = None
- if has_role(self.request.user,'system_admin'):
- list_courses = self.get_queryset().order_by('name')
- # categorys_courses = CourseCategory.objects.all()
- elif has_role(self.request.user,'professor'):
- pass
- #list_courses = self.get_queryset().filter(professors__in = [self.request.user]).order_by('name')
- # categorys_courses = CourseCategory.objects.filter(course_category__professors__name = self.request.user.name).distinct()
- elif has_role(self.request.user, 'student'):
- pass
- #list_courses = self.get_queryset().filter(students__in = [self.request.user]).order_by('name')
-
-
- context['title'] = _('Categories')
-
- return context
-
--
libgit2 0.21.2