Update users app, add login/registser/profile template

This commit is contained in:
Krzysztof 2021-02-05 18:05:47 +01:00
parent c1721595ee
commit 7de2d58b80
28 changed files with 305 additions and 229 deletions

View File

@ -10,6 +10,7 @@
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
</head>
<body>
<div class='header-smart-baner'> <!-- TOP HEADER SMART BANER-->
@ -21,9 +22,7 @@
<div class='header-logo'> <a href='{{ request.scheme }}://{{ request.META.HTTP_HOST }}/'> vagus </a> </div>
<div class='header-nav'>
<a href='{{ request.scheme }}://{{ request.META.HTTP_HOST }}/offers'>KAMPERY </a>
<a href='#'>O NAS </a>
<a href='#'>FAQ</a>
<a href='#'>KONTAKT </a>
<a href='{{ request.scheme }}://{{ request.META.HTTP_HOST }}/add-offer'>DODAJ OFERTĘ </a>
<div class='header-nav-bar'>
<div class='header-nav-bar-container'>
@ -36,7 +35,7 @@
<a href='{{ request.scheme }}://{{ request.META.HTTP_HOST }}/profile'>Witaj, Adminie </a>
{% endif %}
{% else %}
<a href='{{ request.scheme }}://{{ request.META.HTTP_HOST }}/signup'>Witaj, nieznajomy </a>
<a href='{{ request.scheme }}://{{ request.META.HTTP_HOST }}/login'>Witaj, nieznajomy </a>
{% endif %}
</div>
<div class='header-nav-bar-avatar'>

View File

@ -13,18 +13,20 @@
</div>
{% endfor %}
<button id="add-form" type="button">Dodaj kolejne zdjęcie</button>
<button id="add-form" type="button">Dodaj kolejne zdjęcie</button> <button id="delete-form" type="button">Usuń pole</button>
<div> <button style="background-color:black; color:white" class="btn btn-outline-info" type="submit">Create Offer </button></div>
</form>
<script>
let imageForm = document.querySelectorAll(".image-form")
let container = document.querySelector("#form-container")
let addButton = document.querySelector("#add-form")
let deleteButton = document.querySelector("#delete-form")
let totalForms = document.querySelector("#id_form-TOTAL_FORMS")
let formNum = imageForm .length-1
addButton.addEventListener('click', addForm)
deleteButton.addEventListener('click', removeForm)
function addForm(e){
e.preventDefault()
@ -37,5 +39,6 @@
totalForms.setAttribute('value', `${formNum+1}`)
}
</script>
{% endblock content %}

View File

@ -1,26 +0,0 @@
{% extends 'index.html' %}
{% load static %}
{% block content %}
<form action=""" method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ form.as_p}}
{{ formset.management_form }}
{% for photo in formset %}
<div class="form-cotainer">
<div class="image-form">
<label> {{photo.image}} {{photo.main_image}} </label>
</div>
</div>
{% endfor %}
<button id="add-form" type="button">Dodaj kolejne zdjęcie</button>
<button style="background-color:black; color:white" class="btn btn-outline-info" type="submit">Create Offer </button>
</form>
{% endblock content %}

View File

@ -1,39 +1,79 @@
{% extends 'index.html' %}
{% load static %}
{% block content %}
<div class="offer-detail-wrapper">
<div class='offer-detail-row'>
<div class='offer-detail-content'>
<div class='offer-detail-stauts'>
{% if offer.status != 'Active'%}
<span class='offer-detail-status-info'> OFERTA NIEAKTYWNA </span>
{% endif %}
</div>
<div class='offer-detail-title'>
<span class='offer-detail-title-text'> {{offer.title}} </span>
</div>
<div class='offer-detail-images'>
<div class='offer-detail-images-img-thumbnail'>
{% if offer.images.all %}
{% for photo in offer.images.all %}
{% if photo.main_image == True%}
<img src="{{ photo.image.url }}" width = 600px>
{% endif %}
{% endfor %}
{%endif%}
</div>
<div class='offer-detail-images-gallery'>
{% if offer.images.all %}
{% for photo in offer.images.all %}
<img src="{{ photo.image.url }}" width = 300px>
{% endfor %}
{% endif %}
</div>
<div class='offer-detail-description'>
<span class='offer-detail-description-text'> {{offer.description}} </span>
</div>
<div class='offer-detail-parameters'>
<ul>
<li> 'DMC' <b> {{offer.DMC}} </b> </li>
<li> 'Places_to_sleep' <b> {{offer.Places_to_sleep}} </b></li>
<li> 'cooker' <b> {{offer.cooker}} </b></li>
<li> 'fridge' <b> {{offer.fridge}} </b></li>
<li> 'microwave' <b> {{offer.microwave}} </b></li>
<li> 'Webasto' <b> {{offer.Webasto}} </b></li>
<li> 'auto_temp_control' <b> {{offer.auto_temp_control}} </b></li>
<li> 'water_level_indicator' <b> {{offer.water_level_indicator}} </b> </li>
<li> 'battery_level'<b> {{offer.battery_level}} </b> </li>
<li> 'photovoltaic_panels' <b> {{offer.photovoltaic_panels}} </b> </li>
<li> 'gearbox <b> {{offer.gearbox}} </b> </li>
<li> 'tempomat' <b> {{offer.tempomat}} </b> </li>
</ul>
</div>
</div>
</div>
<div class='offer-reservation'>
<form id="form-container" method="POST" class="reservation-form">
{% csrf_token %}
{{ form.media }}
{{form.as_p}}
<button style="background-color:black; color:white" class="btn btn-outline-info" type="submit">Wyślij zapytanie</button>
</form>
<div>
</div>
</div>
</div>
</div>
{% endblock content %}
{% if offer.status != 'Active'%}
<h1> OFERTA NIEKATYWNA </h1>
{% endif %}
<h1> {{ offer.title }} </h1>
{{offer.created_by}}
<p> {{ offer.price }} PLN / dzień</p>
<ul>
<li> 'DMC' <b> {{offer.DMC}} </b> </li>
<li> 'Places_to_sleep' <b> {{offer.Places_to_sleep}} </b></li>
<li> 'cooker' <b> {{offer.cooker}} </b></li>
<li> 'fridge' <b> {{offer.fridge}} </b></li>
<li> 'microwave' <b> {{offer.microwave}} </b></li>
<li> 'Webasto' <b> {{offer.Webasto}} </b></li>
<li> 'auto_temp_control' <b> {{offer.auto_temp_control}} </b></li>
<li> 'water_level_indicator' <b> {{offer.water_level_indicator}} </b> </li>
<li> 'battery_level'<b> {{offer.battery_level}} </b> </li>
<li> 'photovoltaic_panels' <b> {{offer.photovoltaic_panels}} </b> </li>
<li> 'gearbox <b> {{offer.gearbox}} </b> </li>
<li> 'tempomat' <b> {{offer.tempomat}} </b> </li>
</ul>
<h2> THUMBNAIL </h2>
<h2> GALLERY </h2>
{% for photo in offer.images.all %}
<img src="{{ photo.image.url }}" width = 600px>
{% endfor %}

41
vagus/template/users/login.html Executable file
View File

@ -0,0 +1,41 @@
{% extends 'index.html' %}
{% load static %}
{% block content %}
<main class="login-form">
<div class="cotainer">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">Login</div>
<div class="card-body">
<form action="" method="POST">
{% csrf_token %}
{% for field in form %}
<div class="form-group row">
<label for="email_address" class="col-md-4 col-form-label text-md-right">{{field.label_tag}}</label>
<div class="col-md-6">
{{field}}
{% for error in field.errors %}
<p style="color: red">{{ error }}</p>
{% endfor %}
</div>
</div>
{% endfor %}
<div class="col-md-6 offset-md-4">
<button type="submit" class="btn btn-primary">
Login
</button>
<a href='{{ request.scheme }}://{{ request.META.HTTP_HOST }}/register'>Nie masz konta? Zarejestruj się!</a>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</main>
{% endblock %}

View File

@ -21,9 +21,60 @@
</div>
</div>
<div class='profile-wrapper-row-content'>
{% for offer in offers%}
{{offer.id}}
{% endfor %}
{% if user_offers %}
<h4> Moje oferty </h4>
<table class="table ">
<thead>
<tr>
<th scope="col">Tytuł oferty</th>
<th scope="col">Data Dodania</th>
<th scope="col">Kategoria</th>
<th scope="col">Cena</th>
<th scope="col">Status</th>
</tr>
</thead>
<tbody>
{% for offer in user_offers %}
<tr>
<td>
<a href="{{ offer.get_absolute_url }}">{{ offer.title }}</a>
</td>
<td title="{{ offer.date_added}}">{{ offer.date_added }}</td>
<td>{{ offer.category }}</td>
<td>{{ offer.price|capfirst }}</td>
<td> {{offer.status}} </td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif%}
{% if user_reservations %}
<h4> Moje rezerwacje </h4>
<table class="table ">
<thead>
<tr>
<th scope="col">Tytuł oferty</th>
<th scope="col">Data rezerwacji</th>
<th scope="col">Początek rezerwacji</th>
<th scope="col">Koniec rezerwacji</th>
<th scope="col">Status</th>
</tr>
</thead>
<tbody>
{% for reservation in user_reservations %}
<tr>
<td>
<a href="{{ reservation.offer.get_absolute_url }}">{{ reservation.offer.title }}</a>
</td>
<td title="{{ reservation.created_date}}">{{ reservation.created_date }}</td>
<td>{{ reservation.reservation_start_date }}</td>
<td>{{ reservation.reservation_end_date }}</td>
<td> {{reservation.status}} </td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
</div>
</div>
</div>

View File

@ -0,0 +1,41 @@
{% extends 'index.html' %}
{% load static %}
{% block content %}
<main class="my-form">
<div class="cotainer">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">Register</div>
<div class="card-body">
<form name="my-form" method="POST">
{% csrf_token %}
{% for field in form %}
<div class="form-group row">
<label for="email_address" class="col-md-4 col-form-label text-md-right">{{field.label_tag}}</label>
<div class="col-md-6">
{{field}}
{% for error in field.errors %}
<p style="color: red">{{ error }}</p>
{% endfor %}
</div>
</div>
{% endfor %}
<div class="col-md-6 offset-md-4">
<button type="submit" class="btn btn-primary">
Register
</button>
<a href='{{ request.scheme }}://{{ request.META.HTTP_HOST }}/login'>Masz ju konto? Zaloguj się!</a>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</main>
{% endblock %}

View File

@ -1,13 +1,10 @@
from django.contrib import admin
from .models import Base_User, OwnerUser, NormalUser
from .models import Base_User, OwnerUser
from .forms import CustomUserCreationForm, CustomUserChangeForm
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import Group
class NormalUserInline(admin.StackedInline):
model = NormalUser
can_delete = False
verbose_name_plural = 'Normal user'
class OwnerUserInLine(admin.StackedInline):
model = OwnerUser
@ -20,17 +17,17 @@ class CustomUserAdmin(UserAdmin):
form = CustomUserChangeForm
model = Base_User
inlines = (NormalUserInline,OwnerUserInLine)
inlines = [OwnerUserInLine,]
list_display = ('id','email', "is_staff", "is_active","is_superuser",'status')
fieldsets = (
(None, {'fields': ('email','phone','first_name','last_name', 'password','status','avatar')}),
(None, {'fields': ('email','first_name','last_name', 'password','status','avatar')}),
('Permissions', {'fields': ('is_staff', 'is_active',)}),
)
add_fieldsets = (
(None, {
'classes': ('wide',),
'fields': ('email','phone','first_name','last_name', 'password1', 'password2', 'is_staff', 'is_active','status','avatar')}
'fields': ('email','first_name','last_name', 'password1', 'password2', 'is_staff', 'is_active','status','avatar')}
),
)
ordering = ('email',)

View File

@ -6,17 +6,20 @@ from .models import Base_User
class CustomUserCreationForm(UserCreationForm):
phone = PhoneNumberField()
email = forms.EmailField(max_length=254,)
class Meta(UserCreationForm):
model = Base_User
fields =['email','password','phone']
fields =['email','first_name','last_name','avatar']
class CustomUserChangeForm(UserChangeForm):
phone = PhoneNumberField()
class Meta:
model = Base_User
fields = ['email','password','phone']
fields = ['email','first_name','last_name','avatar']
class LoginForm(forms.Form):
class Meta:
model = Base_User
fields = ['email','password']

View File

@ -1,4 +1,4 @@
# Generated by Django 3.1.3 on 2021-01-09 19:40
# Generated by Django 3.1.3 on 2021-02-05 14:58
from django.conf import settings
from django.db import migrations, models
@ -22,10 +22,13 @@ class Migration(migrations.Migration):
('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')),
('id', models.AutoField(primary_key=True, serialize=False)),
('email', models.EmailField(max_length=254, unique=True, verbose_name='Email')),
('first_name', models.CharField(default='', max_length=30, verbose_name='First Name')),
('last_name', models.CharField(default='', max_length=30, verbose_name='Last name')),
('avatar', models.ImageField(blank=True, null=True, upload_to='media/avatars')),
('is_staff', models.BooleanField(default=False)),
('is_active', models.BooleanField(default=True)),
('date_joined', models.DateTimeField(auto_now_add=True, verbose_name='Date joined')),
('status', models.CharField(choices=[('Company_Account', 'Company account'), ('Regular_Account', 'Regular account'), ('Need_verification', 'Wait for verification'), ('BaseAcc', 'Base account'), ('Moderaotr', 'Moderator')], default='BaseAcc', max_length=32)),
('status', models.CharField(choices=[('Company_Account', 'Company account'), ('Regular_Account', 'Regular account'), ('Need_verification', 'Wait for verification'), ('BaseAcc', 'Base account'), ('Moderator', 'Moderator')], default='BaseAcc', max_length=32)),
('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.Group', verbose_name='groups')),
('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.Permission', verbose_name='user permissions')),
],
@ -38,8 +41,6 @@ class Migration(migrations.Migration):
name='OwnerUser',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('first_name', models.CharField(max_length=30, verbose_name='First Name')),
('last_name', models.CharField(max_length=30, verbose_name='Last name')),
('company_name', models.CharField(blank=True, max_length=30, verbose_name='Company name')),
('user', models.OneToOneField(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
],
@ -48,8 +49,6 @@ class Migration(migrations.Migration):
name='NormalUser',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('first_name', models.CharField(max_length=30, verbose_name='First Name')),
('last_name', models.CharField(max_length=30, verbose_name='Last name')),
('birth_date', models.DateField(blank=True, null=True, verbose_name='Birth date')),
('user', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
],

View File

@ -1,39 +0,0 @@
# Generated by Django 3.1.3 on 2021-01-14 11:36
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('users', '0001_initial'),
]
operations = [
migrations.RemoveField(
model_name='normaluser',
name='first_name',
),
migrations.RemoveField(
model_name='normaluser',
name='last_name',
),
migrations.RemoveField(
model_name='owneruser',
name='first_name',
),
migrations.RemoveField(
model_name='owneruser',
name='last_name',
),
migrations.AddField(
model_name='base_user',
name='first_name',
field=models.CharField(default='', max_length=30, verbose_name='First Name'),
),
migrations.AddField(
model_name='base_user',
name='last_name',
field=models.CharField(default='', max_length=30, verbose_name='Last name'),
),
]

View File

@ -0,0 +1,21 @@
# Generated by Django 3.1.3 on 2021-02-05 15:12
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('users', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='base_user',
name='status',
field=models.CharField(choices=[('Company_Account', 'Company account'), ('Need_verification', 'Wait for verification'), ('BaseAcc', 'Base account'), ('Moderator', 'Moderator')], default='BaseAcc', max_length=32),
),
migrations.DeleteModel(
name='NormalUser',
),
]

View File

@ -1,18 +0,0 @@
# Generated by Django 3.1.3 on 2021-01-14 11:37
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('users', '0002_auto_20210114_1136'),
]
operations = [
migrations.AddField(
model_name='base_user',
name='avatar',
field=models.ImageField(blank=True, null=True, upload_to='media/avatars'),
),
]

View File

@ -1,18 +0,0 @@
# Generated by Django 3.1.3 on 2021-01-14 20:51
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('users', '0003_base_user_avatar'),
]
operations = [
migrations.AlterField(
model_name='base_user',
name='status',
field=models.CharField(choices=[('Company_Account', 'Company account'), ('Regular_Account', 'Regular account'), ('Need_verification', 'Wait for verification'), ('BaseAcc', 'Base account'), ('Moderator', 'Moderator')], default='BaseAcc', max_length=32),
),
]

View File

@ -1,19 +0,0 @@
# Generated by Django 3.1.3 on 2021-01-26 19:13
from django.db import migrations
import phonenumber_field.modelfields
class Migration(migrations.Migration):
dependencies = [
('users', '0004_auto_20210114_2051'),
]
operations = [
migrations.AddField(
model_name='base_user',
name='phone',
field=phonenumber_field.modelfields.PhoneNumberField(blank=True, default='', max_length=128, null=True, region=None, unique=True),
),
]

View File

@ -1,19 +0,0 @@
# Generated by Django 3.1.3 on 2021-01-28 13:55
from django.db import migrations
import phonenumber_field.modelfields
class Migration(migrations.Migration):
dependencies = [
('users', '0005_base_user_phone'),
]
operations = [
migrations.AlterField(
model_name='base_user',
name='phone',
field=phonenumber_field.modelfields.PhoneNumberField(default='', max_length=128, region=None, unique=True),
),
]

View File

@ -6,7 +6,6 @@ from django.utils.translation import gettext_lazy as _
STATUS =(
('Company_Account', _('Company account')),
('Regular_Account',_('Regular account')),
('Need_verification', _("Wait for verification")),
('BaseAcc',_('Base account')),
('Moderator',_('Moderator')),
@ -42,7 +41,6 @@ class UserManager(BaseUserManager):
class Base_User(AbstractBaseUser,PermissionsMixin):
id = models.AutoField(primary_key= True)
email = models.EmailField(_('Email'), unique= True)
phone = PhoneNumberField(null = False, blank = False, unique = True, default = '')
avatar = models.ImageField(upload_to='media/avatars', null = True, blank = True,default='media/avatars/default.png')
first_name = models.CharField(_('First Name'), max_length=30, blank = False, default = '')
@ -54,7 +52,6 @@ class Base_User(AbstractBaseUser,PermissionsMixin):
is_active = models.BooleanField(default=True)
date_joined = models.DateTimeField(_('Date joined'),auto_now_add=True)
#last_login = models.DateTimeField(_("Last Login"),auto_now_add= Tr )
status = models.CharField(max_length=32, choices=STATUS, default='BaseAcc')
USERNAME_FIELD = 'email'
@ -67,13 +64,6 @@ class Base_User(AbstractBaseUser,PermissionsMixin):
class Meta:
verbose_name = "User"
verbose_name_plural = "Users"
class NormalUser(models.Model):
user = models.OneToOneField(Base_User, on_delete=models.CASCADE, blank= True,null = True )
birth_date = models.DateField(_('Birth date'),null=True, blank=True)
#add fields Country, state, postal code, city, address1, address2
class OwnerUser(models.Model):

View File

@ -2,9 +2,12 @@ from django.conf.urls import url
from django.urls import path
from django.conf.urls.static import static
from . import views
from django.contrib.auth.decorators import login_required
urlpatterns = [
path('profile', views.ProfileView.as_view(), name = 'profile_view'),
path('profile', login_required(views.user_profile), name = 'profile_view'),
path('logout', views.logout_view, name ='logout_user'),
path('register',views.Register_View.as_view(), name = 'register'),
path('login',views.Login_View.as_view(),name = 'login'),
]

View File

@ -1,38 +1,27 @@
from django.shortcuts import render
from .forms import CustomUserCreationForm
from .forms import CustomUserCreationForm, LoginForm
from django.shortcuts import render, redirect
from django.contrib.auth.decorators import login_required
from django.utils.decorators import method_decorator
from .models import Base_User, NormalUser, OwnerUser
from .models import Base_User,OwnerUser
from django.views.generic import (
View,
CreateView,
FormView
)
from django.contrib.auth import logout
from django.contrib.auth import authenticate,login,logout
from django.conf import settings
from django.http import HttpResponseRedirect
from django.contrib import messages
from camper.models import Offer
from reservation.models import Reservation
from django.contrib.auth import views as auth_views
# Create your views here.
#REJESTRACJA BASE USERA NASTĘPNIE WYBOR JAKI RODZAJ KONTA UZYTKOWNIK CCHE ZALOZYC
# * W PRZYPADKU Klikniecia 'Wynajmij swoj kamper' autoatmtycznie wybierz rodzaj konta na OwnerUser
class RegisterBaseUser(): # tworzy BaseUsera ze statusem BaseACC dla NormalUser i OwnerUser
def register_create_base_user(self,request):
pass
def register_auth_email(self):
pass
class UserPickAccStatus(): #uzytkownik wybiera swoj rodzaj konta i uzuieplnia danymi
pass
class UpgradeProfileToOwnerUser(): #uzytkownik moze w kazdej cwhili zmienic swoje konto na konto firmowe
pass
class DowngradeProfileToNormalUser(): #uzytkownik moze zawieisc swoje konto firmowa wracajac na status konta NormalUser
pass
class ProfileView(View):
@ -40,19 +29,57 @@ class ProfileView(View):
context = super().get_context_data(**kwargs)
context["offers"] = Offer.objects.filter(created_by = self.Base_User)
return context
@method_decorator(login_required,name='dispatch')
@method_decorator(login_required)
def get(self,request):
self.Base_User = request.user
return render(request,'users/profile.html', {'Base_User':Base_User})
def user_profile(request):
user = request.user
template_name = 'users/profile.html'
if user.status == ' Company_Account' or user.status =='Moderator':
user_offers = Offer.objects.filter(created_by = request.user).order_by('-date_added')
user_reservations = Reservation.objects.filter(user = request.user).order_by('-reservation_start_date')
return render(request,template_name, {'user':user, 'user_offers':user_offers, 'user_reservations':user_reservations})
if user.status == 'BaseAcc':
user_reservations = Reservation.objects.filter(user = request.user).order_by('-reservation_start_date')
return render(request,template_name, {'user':user,'user_reservation':user_reservations})
class EditProfile(): #edycja danych w profilu - zmiana hasłą + zmiana danych
pass
class Register_View(FormView):
def get(self,request,*args,**kwargs):
if request.user.is_authenticated:
return redirect('/profile')
else:
context = {}
form = CustomUserCreationForm()
context['form'] = form
return render(request,'users/register.html',context)
def post(self,request,*args,**kwargs):
context = {}
if request.POST:
form = CustomUserCreationForm(request.POST)
if form.is_valid():
form.save()
email = form.cleaned_data.get('email')
raw_password = form.cleaned_data.get('password1')
account = authenticate(email = email, password = raw_password)
login(request,account)
return redirect('/')
else:
context['form'] = form
else:
form = CustomUserCreationForm()
context['form'] = form
return render(request,'users/register.html', context)
class Login_View(auth_views.LoginView):
template_name = 'users/login.html'
success_url = '/profile'
def logout_view(request):
logout(request)
messages.success(request,'Zostałeś poprawnie wylogowany')