diff --git a/courses/forms.py b/courses/forms.py index 26e90b6..35d9d51 100644 --- a/courses/forms.py +++ b/courses/forms.py @@ -36,7 +36,7 @@ class CourseForm(forms.ModelForm): help_texts = { 'name': _('Course name'), 'objectivies': _('Course objective'), - 'content': _('COurse modules'), + 'content': _('Course modules'), 'max_students': _('Max number of students that a class can have'), 'init_register_date': _('Date that starts the registration period of the course (dd/mm/yyyy)'), 'end_register_date': _('Date that ends the registration period of the course (dd/mm/yyyy)'), diff --git a/courses/templatetags/custom_filters.py b/courses/templatetags/custom_filters.py deleted file mode 100644 index 27415c9..0000000 --- a/courses/templatetags/custom_filters.py +++ /dev/null @@ -1,15 +0,0 @@ -from django import template -import datetime -from subscriptions.models import Subscribe - -register = template.Library() - -@register.filter(expects_localtime=True) -def show_subscribe(course, user): - actual = datetime.date.today() - - return course.init_register_date <= actual <= course.end_register_date and not Subscribe.objects.filter(user = user, course = course) - -@register.filter -def subscribed(course, user): - return Subscribe.objects.filter(user = user, course = course) \ No newline at end of file diff --git a/courses/views.py b/courses/views.py index c53d76d..521bc74 100644 --- a/courses/views.py +++ b/courses/views.py @@ -9,7 +9,6 @@ from django.core.urlresolvers import reverse_lazy from django.utils.translation import ugettext_lazy as _ from slugify import slugify -from .serializers import CourseSerializer from .forms import CourseForm, CategoryForm, ModuleForm from .models import Course, Module, Category diff --git a/users/forms.py b/users/forms.py index 3d9a63e..3993417 100644 --- a/users/forms.py +++ b/users/forms.py @@ -23,16 +23,6 @@ class ProfileForm(forms.ModelForm): class UserForm(forms.ModelForm): - password = forms.CharField(label=_('Password'), widget=forms.PasswordInput) - - def save(self, commit=True): - super(UserForm, self).save(commit=False) - - self.instance.set_password(self.cleaned_data['password']) - self.instance.save() - - return self.instance - class Meta: model = User - fields = ['username', 'name', 'email', 'password', 'birth_date', 'city', 'state', 'gender', 'type_profile', 'cpf', 'phone', 'image', 'is_staff', 'is_active'] \ No newline at end of file + fields = ['username', 'name', 'email', 'birth_date', 'city', 'state', 'gender', 'type_profile', 'cpf', 'phone', 'image', 'is_staff', 'is_active'] \ No newline at end of file diff --git a/users/templates/users/index.html b/users/templates/users/index.html index dc82435..088a3de 100644 --- a/users/templates/users/index.html +++ b/users/templates/users/index.html @@ -11,10 +11,10 @@ {% block sidebar %}
- + {% trans 'System Users' %} - + {% trans 'New Account' %} diff --git a/users/templates/users/profile.html b/users/templates/users/profile.html index b921cdd..4db1994 100644 --- a/users/templates/users/profile.html +++ b/users/templates/users/profile.html @@ -28,9 +28,9 @@

{{ user }}

- {% if user.type_profile %}{{ user.type_profile }}{% else %} + {% if user.type_profile %}{{ user.get_type_profile_display }}{% else %} {% trans 'Administrator' %} {% endif %} - {{ user.gender }} + {{ user.get_gender_display }} {{ user.city }} / {{ user.state }}

{% trans 'Mail:' %} {{ user.email }} diff --git a/users/templates/users/update.html b/users/templates/users/update.html index 6d49b90..cd37ce1 100644 --- a/users/templates/users/update.html +++ b/users/templates/users/update.html @@ -12,10 +12,10 @@ {% block sidebar %}

- + {% trans 'System Users' %} - + {% trans 'New Account' %} diff --git a/users/templates/users/view.html b/users/templates/users/view.html index d2e7ef4..59ab167 100644 --- a/users/templates/users/view.html +++ b/users/templates/users/view.html @@ -14,9 +14,15 @@ {% trans 'System Users' %} - + {% trans 'New Account' %} + + {% trans 'View User Account' %} + + + {% trans 'Edit User Account' %} + {% trans 'Send Mail' %} diff --git a/users/urls.py b/users/urls.py index 2fb8018..ca8114e 100644 --- a/users/urls.py +++ b/users/urls.py @@ -3,10 +3,10 @@ from django.conf.urls import url from . import views urlpatterns = [ - url(r'^$', views.index, name='manage'), - url(r'^criar/$', views.create, name='create'), - url(r'^editar/([\w_-]+)/$', views.update, name='update'), - url(r'^dados/([\w_-]+)/$', views.view, name='view'), - url(r'^perfil/$', views.profile, name='profile'), - url(r'^perfil/editar/$', views.edit_profile, name='edit_profile'), + url(r'^$', views.Index.as_view(), name='manage'), + url(r'^criar/$', views.Create.as_view(), name='create'), + url(r'^editar/(?P[\w_-]+)/$', views.Update.as_view(), name='update'), + url(r'^dados/(?P[\w_-]+)/$', views.View.as_view(), name='view'), + url(r'^perfil/$', views.Profile.as_view(), name='profile'), + url(r'^perfil/editar/$', views.EditProfile.as_view(), name='edit_profile'), ] \ No newline at end of file diff --git a/users/views.py b/users/views.py index ebea4fa..e6addab 100644 --- a/users/views.py +++ b/users/views.py @@ -1,111 +1,127 @@ -from django.shortcuts import render, get_object_or_404, redirect -from rolepermissions.shortcuts import assign_role +from django.shortcuts import get_object_or_404 +from django.views import generic from django.contrib import messages -from django.contrib.auth.decorators import login_required +from rolepermissions.mixins import HasRoleMixin +from django.contrib.auth.mixins import LoginRequiredMixin +from django.core.urlresolvers import reverse_lazy from django.utils.translation import ugettext_lazy as _ +from rolepermissions.shortcuts import assign_role from .models import User from .forms import UserForm, ProfileForm -@login_required -def index(request): - context = { - 'users': User.objects.exclude(username = request.user.username) - } - - return render(request, "users/index.html", context) - -@login_required -def create(request): - context = {} - - form = UserForm(request.POST or None, request.FILES or None) - - if form.is_valid(): - user = form.save(commit = False) - - if user.type_profile == 2: - assign_role(user, 'student') - elif user.type_profile == 1: - assign_role(user, 'professor') - elif user.is_staff: - assign_role(user, 'system_admin') - - user.save() - - messages.success(request, _('User created successfully!')) - - return redirect('app:users:manage') - - context['form'] = form - - return render(request, "users/create.html", context) - -@login_required -def update(request, login): - context = {} - - user = get_object_or_404(User, username = login) - - form = UserForm(request.POST or None, request.FILES or None, instance = user) +class Index(HasRoleMixin, LoginRequiredMixin, generic.ListView): - if form.is_valid(): - new_user = form.save(commit = False) - - if user.type_profile == 2: - assign_role(user, 'student') - elif user.type_profile == 1: - assign_role(user, 'professor') - elif user.is_staff: - assign_role(user, 'system_admin') - - new_user.save() - - messages.success(request, _('User edited successfully!')) - - return redirect('app:users:manage') + allowed_roles = ['system_admin'] + login_url = '/' + redirect_field_name = 'next' + template_name = 'users/index.html' + context_object_name = 'users' + paginate_by = 10 + + def get_queryset(self): + users = User.objects.exclude(username = self.request.user.username) + return users + +class Create(HasRoleMixin, LoginRequiredMixin, generic.edit.CreateView): + + allowed_roles = ['system_admin'] + login_url = '/' + redirect_field_name = 'next' + template_name = 'users/create.html' + form_class = UserForm + context_object_name = 'acc' + success_url = reverse_lazy('app:user:manage') + + def form_valid(self, form): + self.object = form.save(commit = False) + + if self.object.type_profile == 2: + assign_role(self.object, 'student') + elif self.object.type_profile == 1: + assign_role(self.object, 'professor') + elif self.object.is_staff: + assign_role(self.object, 'system_admin') + + self.object.save() + + messages.success(self.request, _('User created successfully!')) + + return super(Create, self).form_valid(form) + +class Update(HasRoleMixin, LoginRequiredMixin, generic.UpdateView): + + allowed_roles = ['system_admin'] + login_url = '/' + redirect_field_name = 'next' + template_name = 'users/update.html' + slug_field = 'username' + slug_url_kwarg = 'username' + context_object_name = 'acc' + model = User + form_class = UserForm + success_url = reverse_lazy('app:users:manage') + + def form_valid(self, form): + self.object = form.save(commit = False) + + if self.object.type_profile == 2: + assign_role(self.object, 'student') + elif self.object.type_profile == 1: + assign_role(self.object, 'professor') + elif self.object.is_staff: + assign_role(self.object, 'system_admin') + + self.object.save() + + messages.success(self.request, _('User edited successfully!')) + + return super(Update, self).form_valid(form) - context['form'] = form - - return render(request, "users/update.html", context) - -@login_required -def view(request, login): - context = {} - - user = get_object_or_404(User, username = login) - - context['acc'] = user - - return render(request, "users/view.html", context) - -@login_required -def profile(request): - context = { - 'user': request.user - } - - return render(request, "users/profile.html", context) - -@login_required -def edit_profile(request): - form = ProfileForm(request.POST or None, request.FILES or None, instance=request.user) - - context = {} - - if form.is_valid(): - user = form.save(commit = False) - - if user.type_profile == 2: - assign_role(user, 'student') - elif user.type_profile == 1: - assign_role(user, 'professor') - elif user.is_staff: - assign_role(user, 'system_admin') - - user.save() - - messages.success(request, _('Profile edited successfully!')) - - context['form'] = form - - return render(request, "users/edit_profile.html", context) \ No newline at end of file +class View(LoginRequiredMixin, generic.DetailView): + + login_url = '/' + redirect_field_name = 'next' + model = User + context_object_name = 'acc' + template_name = 'users/view.html' + slug_field = 'username' + slug_url_kwarg = 'username' + +class Profile(LoginRequiredMixin, generic.DetailView): + + login_url = '/' + redirect_field_name = 'next' + context_object_name = 'user' + template_name = 'users/profile.html' + + def get_object(self): + user = get_object_or_404(User, username = self.request.user.username) + return user + +class EditProfile(LoginRequiredMixin, generic.UpdateView): + + login_url = '/' + redirect_field_name = 'next' + template_name = 'users/edit_profile.html' + form_class = UserForm + success_url = reverse_lazy('app:users:edit_profile') + + def get_object(self): + user = get_object_or_404(User, username = self.request.user.username) + return user + + def form_valid(self, form): + self.object = form.save(commit = False) + + if self.object.type_profile == 2: + assign_role(self.object, 'student') + elif self.object.type_profile == 1: + assign_role(self.object, 'professor') + elif self.object.is_staff: + assign_role(self.object, 'system_admin') + + self.object.save() + + messages.success(self.request, _('Profile edited successfully!')) + + return super(EditProfile, self).form_valid(form) \ No newline at end of file -- libgit2 0.21.2