diff --git a/amadeus/settings.py b/amadeus/settings.py index 53fc272..31f2a5e 100644 --- a/amadeus/settings.py +++ b/amadeus/settings.py @@ -52,15 +52,7 @@ INSTALLED_APPS = [ 'django_summernote', 'users', - 'core', - 'app', - 'courses', - 'forum', - 'poll', - 'exam', - 'links', - 'files', - + ] MIDDLEWARE_CLASSES = [ @@ -75,7 +67,7 @@ MIDDLEWARE_CLASSES = [ 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.locale.LocaleMiddleware', - 'core.middleware.TimeSpentMiddleware', + #'core.middleware.TimeSpentMiddleware', #libs-middleware ] diff --git a/amadeus/urls.py b/amadeus/urls.py index 84ba7f7..b437abb 100644 --- a/amadeus/urls.py +++ b/amadeus/urls.py @@ -20,11 +20,8 @@ from django.conf.urls.static import static from django.contrib import admin urlpatterns = [ - url(r'^home/', include('app.urls', namespace = 'app')), - url(r'^courses/', include('courses.urls', namespace = 'course')), url(r'^users/', include('users.urls', namespace = 'users')), url(r'^admin/', admin.site.urls), - url(r'^', include('core.urls', namespace = 'core')), #API url(r'^o/', include('oauth2_provider.urls', namespace='oauth2_provider')), #S3Direct diff --git a/users/forms.py b/users/forms.py index d5e811a..1e59bf6 100644 --- a/users/forms.py +++ b/users/forms.py @@ -7,7 +7,6 @@ from django import forms from django.utils.translation import ugettext_lazy as _ from rolepermissions.shortcuts import assign_role from django.contrib.auth.forms import UserCreationForm -from core.forms import RegisterUserForm from .models import User class AdminUserForm(forms.ModelForm): @@ -37,6 +36,79 @@ class AdminUserForm(forms.ModelForm): 'password':forms.PasswordInput } +class RegisterUserForm(forms.ModelForm): + + password = forms.CharField(label=_('Password'), widget=forms.PasswordInput) + password2 = forms.CharField(label = _('Confirm Password'), widget = forms.PasswordInput) + # birth_date = forms.DateField(widget=forms.SelectDateWidget()) + MIN_LENGTH = 8 + + def validate_cpf(self, cpf): + cpf = ''.join(re.findall('\d', str(cpf))) + + if cpfcnpj.validate(cpf): + return True + return False + + def clean_email(self): + email = self.cleaned_data['email'] + if User.objects.filter(email = email).exists(): + raise forms.ValidationError(_('There is already a registered User with this e-mail')) + return email + + def clean_birth_date(self): + birth_date = self.cleaned_data['birth_date'] + if birth_date >= date.today(): + raise forms.ValidationError(_('Please enter a valid date')) + return birth_date + + + def clean_cpf(self): + cpf = self.cleaned_data['cpf'] + if (cpf == ""): + return cpf + if User.objects.filter(cpf = cpf).exists(): + raise forms.ValidationError(_('There is already a registered User with this CPF')) + if not self.validate_cpf(cpf): + raise forms.ValidationError(_('Please enter a valid CPF')) + return cpf + + def clean_password(self): + password = self.cleaned_data.get('password') + + # At least MIN_LENGTH long + if len(password) < self.MIN_LENGTH: + raise forms.ValidationError(_("The password must contain at least % d characters." % self.MIN_LENGTH)) + + # At least one letter and one non-letter + first_isalpha = password[0].isalpha() + if all(c.isalpha() == first_isalpha for c in password): + raise forms.ValidationError(_('The password must contain at least one letter and at least one digit or '\ + "a punctuation character.")) + + return password + + def clean_password2(self): + password = self.cleaned_data.get("password") + password2 = self.cleaned_data.get("password2") + + if password and password2 and password != password2: + raise forms.ValidationError(_('The confirmation password is incorrect.')) + return password2 + + def save(self, commit=True): + super(RegisterUserForm, self).save(commit=False) + self.instance.set_password(self.cleaned_data['password']) + + self.instance.save() + return self.instance + + class Meta: + model = User + # exclude = ['is_staff', 'is_active'] + fields = ['username', 'name', 'email', 'city', 'state', 'gender', 'cpf', 'birth_date', 'phone', 'image', 'titration', + 'year_titration', 'institution', 'curriculum',] + class UserForm(RegisterUserForm): class Meta: @@ -71,6 +143,8 @@ class UpdateUserForm(forms.ModelForm): fields = ['username', 'name', 'email', 'birth_date', 'city', 'state', 'gender', 'type_profile', 'cpf', 'phone', 'image', 'titration', 'year_titration', 'institution', 'curriculum', 'is_staff', 'is_active'] + + class UpdateProfileFormAdmin(UpdateUserForm): diff --git a/users/views.py b/users/views.py index ffb147a..e0647c0 100644 --- a/users/views.py +++ b/users/views.py @@ -13,12 +13,7 @@ from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from .models import User from .forms import UserForm, UpdateProfileForm, UpdateUserForm, UpdateProfileFormAdmin -from links.models import Link -from poll.models import * -from forum.models import * -from files.models import * -from exam.models import * -from courses.models import * + #API IMPORTS from rest_framework import viewsets @@ -214,61 +209,14 @@ class SearchView(LoginRequiredMixin, generic.ListView): login_url = reverse_lazy("core:home") redirect_field_name = 'next' - queryset = Material.objects.all() + queryset = None template_name = 'users/search.html' paginate_by = 10 def get_context_data(self, **kwargs): context = super(SearchView, self).get_context_data(**kwargs) search = self.request.GET.get('search', None) - link_list = [] - file_list = [] - poll_list = [] - exam_list = [] - forum_list = [] - qtd = 0 - - if has_role(self.request.user,'system_admin'): - if search != '': - link_list = Link.objects.filter( Q(name__icontains=search)).order_by('name') - file_list = TopicFile.objects.filter(Q(name__icontains=search)).order_by('name') - poll_list = Poll.objects.filter(Q(name__icontains=search)).order_by('name') - exam_list = Exam.objects.filter(Q(name__icontains=search)).order_by('name') - forum_list = Forum.objects.filter(Q(name__icontains=search)).order_by('name') - qtd = len(link_list) + len(file_list) + len(poll_list) + len(exam_list) + len(forum_list) - - elif has_role(self.request.user,'professor'): - topics = Topic.objects.filter(owner = self.request.user) - links = Link.objects.all() - files = TopicFile.objects.all() - polls = Poll.objects.all() - exams = Exam.objects.all() - forums = Forum.objects.all() - if search != '': - link_list = sorted([link for link in links for topic in topics if (link.topic == topic) and ( search in link.name ) ],key = lambda x:x.name) - exam_list = sorted([exam for exam in exams for topic in topics if (exam.topic == topic) and ( search in exam.name ) ],key = lambda x:x.name) - file_list = sorted([arquivo for arquivo in files for topic in topics if (arquivo.topic == topic) and (search in arquivo.name ) ],key = lambda x:x.name) - poll_list = sorted([poll for poll in polls for topic in topics if (poll.topic == topic) and ( search in poll.name ) ],key = lambda x:x.name) - forum_list = sorted([forum for forum in forums for topic in topics if (forum.topic == topic) and ( search in forum.name ) ],key = lambda x:x.name) - qtd = len(link_list) + len(file_list) + len(poll_list) + len(exam_list) + len(forum_list) - - elif has_role(self.request.user, 'student'): - if search != '': - link_list = Link.objects.filter( Q(name__icontains=search) and Q(students__name = self.request.user.name)).order_by('name') - file_list = TopicFile.objects.filter(Q(name__icontains=search) and Q(students__name = self.request.user.name)).order_by('name') - poll_list = Poll.objects.filter(Q(name__icontains=search)and Q(students__name = self.request.user.name)).order_by('name') - exam_list = Exam.objects.filter(Q(name__icontains=search)and Q(students__name = self.request.user.name)).order_by('name') - forum_list = Forum.objects.filter(Q(name__icontains=search)and Q(students__name = self.request.user.name)).order_by('name') - qtd = len(link_list) + len(file_list) + len(poll_list) + len(exam_list) + len(forum_list) - - translated = _('You searched for... ') - context['link_list'] = link_list - context['file_list'] = file_list - context['poll_list'] = poll_list - context['exam_list'] = exam_list - context['forum_list'] = forum_list - context['qtd'] = qtd - context['search'] = translated + search + return context -- libgit2 0.21.2