Commit 7362ac04d99f9e77f8a62f3e3331b8c329a6513f

Authored by Zambom
1 parent 4fb1b007

Adding register page

amadeus/views.py
  1 +from django.http import Http404
1 from django.shortcuts import redirect 2 from django.shortcuts import redirect
2 3
3 def index(request): 4 def index(request):
4 if request.user.is_authenticated: 5 if request.user.is_authenticated:
5 - return Http404('<h1>Page not found</h1>') 6 + raise Http404('<h1>Page not found</h1>')
6 else: 7 else:
7 return redirect('users:login') 8 return redirect('users:login')
8 \ No newline at end of file 9 \ No newline at end of file
users/forms.py
@@ -28,7 +28,7 @@ class Validation(forms.ModelForm): @@ -28,7 +28,7 @@ class Validation(forms.ModelForm):
28 28
29 return password2 29 return password2
30 30
31 -class RegisterUserForm(ValidationRegister): 31 +class RegisterUserForm(Validation):
32 password = forms.CharField(label=_('Password'), widget=forms.PasswordInput) 32 password = forms.CharField(label=_('Password'), widget=forms.PasswordInput)
33 password2 = forms.CharField(label = _('Confirm Password'), widget = forms.PasswordInput) 33 password2 = forms.CharField(label = _('Confirm Password'), widget = forms.PasswordInput)
34 34
@@ -45,4 +45,4 @@ class RegisterUserForm(ValidationRegister): @@ -45,4 +45,4 @@ class RegisterUserForm(ValidationRegister):
45 45
46 class Meta: 46 class Meta:
47 model = User 47 model = User
48 - fields = ['username', 'name', 'last_name', 'social_name',] 48 + fields = ['email', 'username', 'last_name', 'social_name',]
users/templates/users/login.html
@@ -57,7 +57,7 @@ @@ -57,7 +57,7 @@
57 <button type="submite" class="btn btn-success btn-raised btn-block" form="form-login" style="position: initial;"> {% trans 'Log in' %} </button> 57 <button type="submite" class="btn btn-success btn-raised btn-block" form="form-login" style="position: initial;"> {% trans 'Log in' %} </button>
58 </div> 58 </div>
59 <div class="col-md-5 col-xs-6 col-sm-6 col-lg-5 text-center"> 59 <div class="col-md-5 col-xs-6 col-sm-6 col-lg-5 text-center">
60 - <a class="btn btn-default btn-raised btn-block" href="#" formaction="#" style="position: initial;">{% trans 'Sign Up' %}</a> 60 + <a class="btn btn-default btn-raised btn-block" href="{% url 'users:signup' %}" formaction="#" style="position: initial;">{% trans 'Sign Up' %}</a>
61 </div> 61 </div>
62 </div> 62 </div>
63 <div class="row"> 63 <div class="row">
users/templates/users/register.html 0 → 100644
@@ -0,0 +1,88 @@ @@ -0,0 +1,88 @@
  1 +{% extends 'base.html' %}
  2 +
  3 +{% load static i18n %}
  4 +{% load widget_tweaks %}
  5 +
  6 +{% block nav %}
  7 +{% endblock %}
  8 +
  9 +{% block sidebar %}
  10 +{% endblock sidebar %}
  11 +
  12 +{% block content %}
  13 + {% if messages %}
  14 + {% for message in messages %}
  15 + <div class="alert alert-{{ message.tags }} alert-dismissible" role="alert">
  16 + <button type="button" class="close" data-dismiss="alert" aria-label="Close">
  17 + <span aria-hidden="true">&times;</span>
  18 + </button>
  19 + <p>{{ message }}</p>
  20 + </div>
  21 + {% endfor %}
  22 + {% endif %}
  23 +
  24 + <div class="row">
  25 + <div class="col-sm-7 col-sm-offset-4 col-md-6 col-md-offset-4 col-xs-8 col-xs-offset-3 col-lg-6 col-lg-offset-4 col-xl-6 col-xl-offset-4 ">
  26 + <div class="col-sm-9 col-sm-offset-2 col-md-8 col-md-offset-2 col-xs-9 col-xs-offset-2 col-lg-8 col-lg-offset-2 col-xl-8 col-xl-offset-2">
  27 + <img src="{% static 'img/amadeus.png' %}" class="img-responsive center-block logo-login " alt="logo amadeus">
  28 + </div>
  29 + </div>
  30 + </div>
  31 +
  32 + <div class="row">
  33 + <div class="col-lg-8 col-lg-offset-3 col-md-8 col-md-offset-3 col-sm-9 col-sm-offset-3 col-xs-10 col-xs-offset-2">
  34 + <div class="card">
  35 + <div class="card-body">
  36 + <div class="row">
  37 + <div class="col-md-12 text-center">
  38 + <h2 style="color:#43a251"><strong>{% trans "User Register" %}</strong></h2>
  39 + </div>
  40 + </div>
  41 +
  42 + <form class="{% if form.has_error %} has-error {% endif %} is-fileinput" method="post" enctype="multipart/form-data">
  43 + {% csrf_token %}
  44 + {% for field in form %}
  45 + <div class="col-md-10 col-md-offset-1 col-sm-12 col-xs-12 col-lg-10 col-lg-offset-1">
  46 + <div class="row form-group">
  47 + <div class="col-md-3 col-sm-3 col-xs-5 col-lg-3 text-right">
  48 + {% if field.field.required %}
  49 + <label for="{{ field.auto_id }}" class="control-label">{{ field.label }}<span>*</span></label>
  50 + {% else %}
  51 + <label for="{{ field.auto_id }}" class="control-label">{{ field.label }}</label>
  52 + {% endif %}
  53 + </div>
  54 + <div class="col-md-9 col-sm-9 col-xs-7 col-lg-9">
  55 + {% render_field field class='form-control' %}
  56 + <span class="help-block">{{ field.help_text }}</span>
  57 + {% if field.errors %}
  58 + <div class="row">
  59 + <div class="alert alert-danger alert-dismissible" role="alert">
  60 + <button type="button" class="close" data-dismiss="alert" aria-label="Close">
  61 + <span aria-hidden="true">&times;</span>
  62 + </button>
  63 + <ul>
  64 + {% for error in field.errors %}
  65 + <li>{{ error }}</li>
  66 + {% endfor %}
  67 + </ul>
  68 + </div>
  69 + </div>
  70 + {% endif %}
  71 + </div>
  72 + </div>
  73 + </div>
  74 + {% endfor %}
  75 + <div class="row">
  76 + <div class="col-md-5 col-xs-6 col-sm-6 col-lg-5 col-lg-offset-1 col-md-offset-1 text-center">
  77 + <input type="submit" value="{% trans 'Register' %}" class="btn btn-raised btn-primary" />
  78 + </div>
  79 + <div class="col-md-5 col-xs-6 col-sm-6 col-lg-5 text-center">
  80 + <a href="{% url 'users:login' %}" class="btn btn-Success btn-raised" >{% trans 'Login' %}</a>
  81 + </div>
  82 + </div>
  83 + </form>
  84 + </div>
  85 + </div>
  86 + </div>
  87 + </div>
  88 +{% endblock %}
0 \ No newline at end of file 89 \ No newline at end of file
1 from django.conf.urls import url 1 from django.conf.urls import url
  2 +from django.contrib.auth import views as auth_views
2 3
3 from . import views 4 from . import views
4 5
5 urlpatterns = [ 6 urlpatterns = [
6 url(r'^login/$', views.login, name='login'), 7 url(r'^login/$', views.login, name='login'),
7 - 8 + url(r'^logout/$', auth_views.logout, {'next_page': 'users:login'}, name='logout'),
  9 + url(r'^signup/$', views.RegisterUser.as_view(), name = 'signup'),
8 ] 10 ]
users/views.py
  1 +from django.http import Http404
1 from django.shortcuts import get_object_or_404,redirect, render 2 from django.shortcuts import get_object_or_404,redirect, render
2 from django.db.models import Q 3 from django.db.models import Q
3 from django.views import generic 4 from django.views import generic
@@ -13,7 +14,7 @@ from itertools import chain @@ -13,7 +14,7 @@ from itertools import chain
13 from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger 14 from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
14 15
15 from .models import User 16 from .models import User
16 - 17 +from .forms import RegisterUserForm
17 18
18 #API IMPORTS 19 #API IMPORTS
19 from rest_framework import viewsets 20 from rest_framework import viewsets
@@ -220,10 +221,31 @@ from rest_framework.permissions import IsAuthenticated, IsAuthenticatedOrReadOnl @@ -220,10 +221,31 @@ from rest_framework.permissions import IsAuthenticated, IsAuthenticatedOrReadOnl
220 221
221 # return context 222 # return context
222 223
  224 +class RegisterUser(generic.edit.CreateView):
  225 + model = User
  226 + form_class = RegisterUserForm
  227 + template_name = 'users/register.html'
  228 +
  229 + success_url = reverse_lazy('users:login')
  230 +
  231 + def get_context_data(self, **kwargs):
  232 + context = super(RegisterUser, self).get_context_data(**kwargs)
  233 + context['title'] = _('Sign Up')
  234 +
  235 + return context
  236 +
  237 + def form_valid(self, form):
  238 + form.save()
  239 +
  240 + assign_role(form.instance, 'student')
  241 +
  242 + messages.success(self.request, _('User successfully registered!'))
  243 +
  244 + return super(RegisterUser, self).form_valid(form)
223 245
224 def login(request): 246 def login(request):
225 context = {} 247 context = {}
226 - context['title'] = 'Log In' 248 + context['title'] = _('Log In')
227 249
228 if request.POST: 250 if request.POST:
229 username = request.POST['email'] 251 username = request.POST['email']
@@ -236,7 +258,7 @@ def login(request): @@ -236,7 +258,7 @@ def login(request):
236 messages.add_message(request, messages.ERROR, _('E-mail or password are incorrect.')) 258 messages.add_message(request, messages.ERROR, _('E-mail or password are incorrect.'))
237 context["username"] = username 259 context["username"] = username
238 elif request.user.is_authenticated: 260 elif request.user.is_authenticated:
239 - return redirect(reverse('users:login')) 261 + raise Http404('<h1>Page not found</h1>')
240 262
241 return render(request,"users/login.html",context) 263 return render(request,"users/login.html",context)
242 264