Environnement de dev++ #16
34 changed files with 73 additions and 183 deletions
|
@ -47,7 +47,7 @@ class EquipmentAttribution(models.Model):
|
||||||
equipment = models.ForeignKey(AbstractEquipment)
|
equipment = models.ForeignKey(AbstractEquipment)
|
||||||
activity = models.ForeignKey(Activity)
|
activity = models.ForeignKey(Activity)
|
||||||
amount = models.PositiveSmallIntegerField(_("Quantité attribuée"))
|
amount = models.PositiveSmallIntegerField(_("Quantité attribuée"))
|
||||||
remarks = models.TextField("Remarques concernant l'attribution")
|
remarks = models.TextField(_("Remarques concernant l'attribution"))
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = _("attribution de matériel")
|
verbose_name = _("attribution de matériel")
|
||||||
|
@ -60,7 +60,7 @@ class EquipmentAttribution(models.Model):
|
||||||
|
|
||||||
|
|
||||||
class EquipmentRemark(models.Model):
|
class EquipmentRemark(models.Model):
|
||||||
remark = models.TextField("Remarque sur le matériel")
|
remark = models.TextField(_("Remarque sur le matériel"))
|
||||||
equipment = models.ForeignKey(
|
equipment = models.ForeignKey(
|
||||||
AbstractEquipment,
|
AbstractEquipment,
|
||||||
related_name="remarks",
|
related_name="remarks",
|
||||||
|
|
|
@ -44,7 +44,7 @@ BASE_DIR = os.path.dirname(
|
||||||
INSTALLED_APPS = [
|
INSTALLED_APPS = [
|
||||||
'equipment.apps.EquipmentConfig',
|
'equipment.apps.EquipmentConfig',
|
||||||
'event.apps.EventConfig',
|
'event.apps.EventConfig',
|
||||||
'user.apps.UserConfig',
|
'users.apps.UsersConfig',
|
||||||
'shared.apps.SharedConfig',
|
'shared.apps.SharedConfig',
|
||||||
'django.contrib.admin',
|
'django.contrib.admin',
|
||||||
'django.contrib.auth',
|
'django.contrib.auth',
|
||||||
|
|
|
@ -8,7 +8,7 @@ from django.contrib import admin
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
url(r'^admin/', admin.site.urls),
|
url(r'^admin/', admin.site.urls),
|
||||||
url(r'^event/', include('event.urls')),
|
url(r'^event/', include('event.urls')),
|
||||||
url(r'^user/', include('user.urls')),
|
url(r'^user/', include('users.urls')),
|
||||||
url(r'^', include('shared.urls')),
|
url(r'^', include('shared.urls')),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
@ -66,14 +66,14 @@ class ActivityTag(models.Model):
|
||||||
)
|
)
|
||||||
color_regex = RegexValidator(
|
color_regex = RegexValidator(
|
||||||
regex=r'^#(?:[0-9a-fA-F]{3}){1,2}$',
|
regex=r'^#(?:[0-9a-fA-F]{3}){1,2}$',
|
||||||
message="La chaîne de caractère rentrée n'est pas"
|
message=_("La chaîne de caractère rentrée n'est pas"
|
||||||
"une couleur en hexadécimal.",
|
" une couleur en hexadécimal."),
|
||||||
)
|
)
|
||||||
color = models.CharField(
|
color = models.CharField(
|
||||||
_('Couleur'),
|
_('Couleur'),
|
||||||
max_length=7,
|
max_length=7,
|
||||||
validators=[color_regex],
|
validators=[color_regex],
|
||||||
help_text="Rentrer une couleur en hexadécimal",
|
help_text=_("Rentrer une couleur en hexadécimal"),
|
||||||
)
|
)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
|
@ -28,7 +28,7 @@ function fill_template {
|
||||||
# ---
|
# ---
|
||||||
|
|
||||||
# System packages
|
# System packages
|
||||||
apt-get update && apt-get upgrade
|
apt-get update && apt-get upgrade -y
|
||||||
apt-get install -y python3-pip python3-dev python3-venv libpq-dev postgresql \
|
apt-get install -y python3-pip python3-dev python3-venv libpq-dev postgresql \
|
||||||
postgresql-contrib libjpeg-dev nginx redis-server
|
postgresql-contrib libjpeg-dev nginx redis-server
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
{% extends "base_html.html" %}
|
{% extends "base_html.html" %}
|
||||||
{% load staticfiles %}
|
{% load staticfiles %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block title %}GestionÉvènementiel{% block sub_title %}{% endblock %}{% endblock %}
|
{% block title %}GestionÉvènementiel{% block sub_title %}{% endblock %}{% endblock %}
|
||||||
|
|
||||||
|
@ -12,7 +13,7 @@
|
||||||
{% if user.is_authenticated %}
|
{% if user.is_authenticated %}
|
||||||
<h5 class="centered username">{{ user.username }}</h5>
|
<h5 class="centered username">{{ user.username }}</h5>
|
||||||
{% else %}
|
{% else %}
|
||||||
<h5 class="centered username">non connecté·e</h5>
|
<h5 class="centered username">{% trans "non connecté·e" %}</h5>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<hr/>
|
<hr/>
|
||||||
|
@ -20,35 +21,35 @@
|
||||||
{% block sidenav %}
|
{% block sidenav %}
|
||||||
{% if not user.is_authenticated %}
|
{% if not user.is_authenticated %}
|
||||||
<li>
|
<li>
|
||||||
<a href="{% url "user:login" %}">
|
<a href="{% url "users:login" %}">
|
||||||
<i class="fa fa-sign-in"></i>
|
<i class="fa fa-sign-in"></i>
|
||||||
<span>Se connecter</span>
|
<span>{% trans "Se connecter" %}</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="{% url "user:create_user" %}">
|
<a href="{% url "users:create_user" %}">
|
||||||
<i class="fa fa-user"></i>
|
<i class="fa fa-user"></i>
|
||||||
<span>Créer un compte</span>
|
<span>{% trans "Créer un compte" %}</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="{% url "user:password_reset" %}">
|
<a href="{% url "users:password_reset" %}">
|
||||||
<i class="fa fa-question"></i>
|
<i class="fa fa-question"></i>
|
||||||
<span>Mot de passe oublié</span>
|
<span>{% trans "Mot de passe oublié" %}</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if user.is_authenticated %}
|
{% if user.is_authenticated %}
|
||||||
<li>
|
<li>
|
||||||
<a href="{% url "user:password_change" %}">
|
<a href="{% url "users:password_change" %}">
|
||||||
<i class="fa fa-unlock-alt"></i>
|
<i class="fa fa-unlock-alt"></i>
|
||||||
<span>Changer de mot de passe</span>
|
<span>{% trans "Changer de mot de passe" %}</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="{% url "user:logout"%}">
|
<a href="{% url "users:logout"%}">
|
||||||
<i class="fa fa-sign-out"></i>
|
<i class="fa fa-sign-out"></i>
|
||||||
<span>Se déconnecter</span>
|
<span>{% trans "Se déconnecter" %}</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -66,4 +67,3 @@
|
||||||
</div>
|
</div>
|
||||||
<!-- /.row -->
|
<!-- /.row -->
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
|
|
||||||
{% block page_title %}Erreur !{% endblock %}
|
{% block page_title %}{% trans "Erreur !" %}{% endblock %}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
|
{% load i18n %}
|
||||||
<footer class="site-footer">
|
<footer class="site-footer">
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
|
{% blocktrans %}
|
||||||
en cas de problème : <tt>cof-geek@ens.fr</tt>.
|
en cas de problème : <tt>cof-geek@ens.fr</tt>.
|
||||||
|
{% endblocktrans %}
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
{% load i18n %}
|
||||||
<ul class="nav navbar-top-links pull-right">
|
<ul class="nav navbar-top-links pull-right">
|
||||||
{% if user.is_authenticated %}
|
{% if user.is_authenticated %}
|
||||||
<li class="dropdown">
|
<li class="dropdown">
|
||||||
|
@ -67,12 +68,12 @@
|
||||||
<i class="fa fa-user fa-fw fa-lg"></i> <i class="fa fa-caret-down"></i>
|
<i class="fa fa-user fa-fw fa-lg"></i> <i class="fa fa-caret-down"></i>
|
||||||
</a>
|
</a>
|
||||||
<ul class="dropdown-menu dropdown-user">
|
<ul class="dropdown-menu dropdown-user">
|
||||||
<li><a href="#"><i class="fa fa-user fa-fw"></i>Mon profile</a>
|
<li><a href="#"><i class="fa fa-user fa-fw"></i>{% trans "Mon profil" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="{% url "user:password_change" %}"><i class="fa fa-unlock-alt fa-fw"></i>Changer de mot de passe</a>
|
<li><a href="{% url "users:password_change" %}"><i class="fa fa-unlock-alt fa-fw"></i>{% trans "Changer de mot de passe" %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="divider"></li>
|
<li class="divider"></li>
|
||||||
<li><a href="{% url "user:logout" %}"><i class="fa fa-sign-out fa-fw"></i>Se déconnecter</a>
|
<li><a href="{% url "users:logout" %}"><i class="fa fa-sign-out fa-fw"></i>{% trans "Se déconnecter" %}</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<!-- /.dropdown-user -->
|
<!-- /.dropdown-user -->
|
||||||
|
@ -80,7 +81,7 @@
|
||||||
<!-- /.dropdown -->
|
<!-- /.dropdown -->
|
||||||
{% else %}
|
{% else %}
|
||||||
<li>
|
<li>
|
||||||
<a href="{% url "user:login" %}">
|
<a href="{% url "users:login" %}">
|
||||||
<i class="fa fa-sign-in fa-fw fa-lg"></i></a>
|
<i class="fa fa-sign-in fa-fw fa-lg"></i></a>
|
||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block page_title %}Acceuil{% endblock %}
|
{% block page_title %}{% trans "Accueil" %}{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<h2>Bonjours, je suis une maison</h2>
|
<h2>Bonjours, je suis une maison</h2>
|
||||||
|
|
|
@ -3,5 +3,5 @@ from .views import Home
|
||||||
|
|
||||||
app_name = 'shared'
|
app_name = 'shared'
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
url(r'$', Home.as_view(), name='home'),
|
url(r'^$', Home.as_view(), name='home'),
|
||||||
]
|
]
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
from django.apps import AppConfig
|
|
||||||
|
|
||||||
|
|
||||||
class UserConfig(AppConfig):
|
|
||||||
name = 'user'
|
|
|
@ -1,26 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
# Generated by Django 1.9.6 on 2016-06-14 22:17
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
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='Profil',
|
|
||||||
fields=[
|
|
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
||||||
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
]
|
|
|
@ -1,35 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
# Generated by Django 1.9.6 on 2016-06-16 16:03
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('user', '0001_initial'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='profil',
|
|
||||||
name='modif_pad',
|
|
||||||
field=models.BooleanField(default=False, verbose_name='Modifier tous les pads'),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='profil',
|
|
||||||
name='read_kholle',
|
|
||||||
field=models.BooleanField(default=False, verbose_name='Lecture de khôlles'),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='profil',
|
|
||||||
name='write_kholle',
|
|
||||||
field=models.BooleanField(default=False, verbose_name='Écriture de khôlles'),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='profil',
|
|
||||||
name='write_pad',
|
|
||||||
field=models.BooleanField(default=False, verbose_name='Écrire des pads'),
|
|
||||||
),
|
|
||||||
]
|
|
|
@ -1,31 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
# Generated by Django 1.9.6 on 2016-06-23 14:03
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import migrations
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('user', '0002_auto_20160616_1803'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name='profil',
|
|
||||||
name='modif_pad',
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name='profil',
|
|
||||||
name='read_kholle',
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name='profil',
|
|
||||||
name='write_kholle',
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name='profil',
|
|
||||||
name='write_pad',
|
|
||||||
),
|
|
||||||
]
|
|
|
@ -1,22 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
# Generated by Django 1.9.6 on 2016-06-23 16:08
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import migrations
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('user', '0003_auto_20160623_1603'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name='profil',
|
|
||||||
name='user',
|
|
||||||
),
|
|
||||||
migrations.DeleteModel(
|
|
||||||
name='Profil',
|
|
||||||
),
|
|
||||||
]
|
|
|
@ -1,4 +0,0 @@
|
||||||
{% extends "user/user_form.html" %}
|
|
||||||
|
|
||||||
{% block action_name %}{% url 'user:password_change' %}{% endblock %}
|
|
||||||
{% block user_error %}Une erreur s'est produite, veuillez réessayer.{% endblock %}
|
|
|
@ -1,4 +0,0 @@
|
||||||
{% extends "user/user_form.html" %}
|
|
||||||
|
|
||||||
{% block action_name %}{% url 'user:password_reset' %}{% endblock %}
|
|
||||||
{% block user_error %}L'identitfiant et le mot de passe ne correspondent pas !{% endblock %}
|
|
|
@ -1 +0,0 @@
|
||||||
[Qwann.fr] Réinitialisation du mot de passe
|
|
5
users/apps.py
Normal file
5
users/apps.py
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
from django.apps import AppConfig
|
||||||
|
|
||||||
|
|
||||||
|
class UsersConfig(AppConfig):
|
||||||
|
name = 'users'
|
4
users/templates/users/change_pass.html
Normal file
4
users/templates/users/change_pass.html
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
{% extends "users/user_form.html" %}
|
||||||
|
|
||||||
|
{% block action_name %}{% url 'users:password_change' %}{% endblock %}
|
||||||
|
{% block user_error %}Une erreur s'est produite, veuillez réessayer.{% endblock %}
|
|
@ -1,6 +1,6 @@
|
||||||
Bonjour,
|
Bonjour,
|
||||||
|
|
||||||
Quelqu'un a demandé à réinitialiser le mot de passe pour le compte utilisateur de qwann.fr utilisant l'adresse mail : {{ email }}. Pour réinitialiser le mot de passe, veuillez suivre le lien suivant :
|
Quelqu'un a demandé à réinitialiser le mot de passe pour le compte utilisateur de qwann.fr utilisant l'adresse mail : {{ email }}. Pour réinitialiser le mot de passe, veuillez suivre le lien suivant :
|
||||||
{{ protocol}}://qwann.fr{% url 'user:password_reset_confirm' uidb64=uid token=token %}
|
{{ protocol}}://qwann.fr{% url 'users:password_reset_confirm' uidb64=uid token=token %}
|
||||||
|
|
||||||
Merci de ne pas répondre à ce mail.
|
Merci de ne pas répondre à ce mail.
|
|
@ -1,6 +1,6 @@
|
||||||
{% extends "user/user_form.html" %}
|
{% extends "users/user_form.html" %}
|
||||||
|
|
||||||
{% block action_name %}{% url 'user:login' %}{% endblock %}
|
{% block action_name %}{% url 'users:login' %}{% endblock %}
|
||||||
{% block user_error %}L'identitfiant et le mot de passe ne correspondent pas !{% endblock %}
|
{% block user_error %}L'identitfiant et le mot de passe ne correspondent pas !{% endblock %}
|
||||||
|
|
||||||
{% block extra_form_input %}
|
{% block extra_form_input %}
|
4
users/templates/users/password_reset.html
Normal file
4
users/templates/users/password_reset.html
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
{% extends "users/user_form.html" %}
|
||||||
|
|
||||||
|
{% block action_name %}{% url 'users:password_reset' %}{% endblock %}
|
||||||
|
{% block user_error %}L'identitfiant et le mot de passe ne correspondent pas !{% endblock %}
|
1
users/templates/users/subject_password_reset.txt
Normal file
1
users/templates/users/subject_password_reset.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
[Évenementiel] Réinitialisation du mot de passe
|
|
@ -1,55 +1,56 @@
|
||||||
from django.conf.urls import url
|
from django.conf.urls import url
|
||||||
from django.contrib.auth import views as auth_views
|
from django.contrib.auth import views as auth_views
|
||||||
from django.core.urlresolvers import reverse_lazy
|
from django.core.urlresolvers import reverse_lazy
|
||||||
|
from django.utils.translation import ugettext_lazy as _
|
||||||
from shared.views import Home
|
from shared.views import Home
|
||||||
from user.views import CreateUser
|
from users.views import CreateUser
|
||||||
|
|
||||||
app_name = 'user'
|
app_name = 'users'
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
# CREATE USER
|
# CREATE USER
|
||||||
url('^create/$', CreateUser.as_view(), name='create_user'),
|
url(r'^create/$', CreateUser.as_view(), name='create_user'),
|
||||||
# LOGIN
|
# LOGIN
|
||||||
url('^login/$',
|
url(r'^login/$',
|
||||||
auth_views.login,
|
auth_views.login,
|
||||||
{'template_name': 'user/login.html',
|
{'template_name': 'users/login.html',
|
||||||
'extra_context': {
|
'extra_context': {
|
||||||
'page_title': 'Connexion',
|
'page_title': _('Connexion'),
|
||||||
'button': 'Se connecter',
|
'button': _('Se connecter'),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
name='login',
|
name='login',
|
||||||
),
|
),
|
||||||
# LOGOUT
|
# LOGOUT
|
||||||
url('^logout/$',
|
url(r'^logout/$',
|
||||||
auth_views.logout,
|
auth_views.logout,
|
||||||
name='logout',),
|
name='logout',),
|
||||||
# PASSWORD_CHANGE
|
# PASSWORD_CHANGE
|
||||||
url('^password_change/$',
|
url(r'^password_change/$',
|
||||||
auth_views.password_change,
|
auth_views.password_change,
|
||||||
{'template_name': 'user/change_pass.html',
|
{'template_name': 'users/change_pass.html',
|
||||||
'post_change_redirect': reverse_lazy('shared:home'),
|
'post_change_redirect': reverse_lazy('shared:home'),
|
||||||
'extra_context': {
|
'extra_context': {
|
||||||
'page_title': 'Changement de mot de passe',
|
'page_title': _('Changement de mot de passe'),
|
||||||
'button': 'Modifier',
|
'button': _('Modifier'),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
name='password_change'),
|
name='password_change'),
|
||||||
# url('^password_change/done/$', name='password_change_done'),
|
# url('^password_change/done/$', name='password_change_done'),
|
||||||
# RESET PASSWORD
|
# RESET PASSWORD
|
||||||
url('^password_reset/$',
|
url(r'^password_reset/$',
|
||||||
auth_views.password_reset,
|
auth_views.password_reset,
|
||||||
{'template_name': 'user/password_reset.html',
|
{'template_name': 'users/password_reset.html',
|
||||||
'email_template_name': 'email_password_reset.html',
|
'email_template_name': 'email_password_reset.html',
|
||||||
'subject_template_name': 'subject_password_reset.txt',
|
'subject_template_name': 'subject_password_reset.txt',
|
||||||
'post_reset_redirect': reverse_lazy('user:password_reset_done'),
|
'post_reset_redirect': reverse_lazy('users:password_reset_done'),
|
||||||
'extra_context': {
|
'extra_context': {
|
||||||
'page_title': 'Demander un nouveau mot de passe',
|
'page_title': _('Demander un nouveau mot de passe'),
|
||||||
'button': 'Envoyer'
|
'button': _('Envoyer')
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
name='password_reset'),
|
name='password_reset'),
|
||||||
# PASS RESET DONE
|
# PASS RESET DONE
|
||||||
url('^password_reset/done/$',
|
url(r'^password_reset/done/$',
|
||||||
Home.as_view(),
|
Home.as_view(),
|
||||||
name='password_reset_done'),
|
name='password_reset_done'),
|
||||||
# PASS RESET CONFIRM
|
# PASS RESET CONFIRM
|
||||||
|
@ -62,13 +63,13 @@ urlpatterns = [
|
||||||
'user:password_reset_complete'
|
'user:password_reset_complete'
|
||||||
),
|
),
|
||||||
'extra_context': {
|
'extra_context': {
|
||||||
'page_title': 'Changer de mot de passe',
|
'page_title': _('Changer de mot de passe'),
|
||||||
'button': 'Changer'
|
'button': _('Changer')
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
name='password_reset_confirm'),
|
name='password_reset_confirm'),
|
||||||
# PASS RESET COMPLETE
|
# PASS RESET COMPLETE
|
||||||
url('^reset/done/$',
|
url(r'^reset/done/$',
|
||||||
Home.as_view(),
|
Home.as_view(),
|
||||||
name='password_reset_complete'),
|
name='password_reset_complete'),
|
||||||
]
|
]
|
|
@ -1,11 +1,11 @@
|
||||||
from user.forms import CreateUserForm
|
from .forms import CreateUserForm
|
||||||
from django.views.generic.edit import CreateView
|
from django.views.generic.edit import CreateView
|
||||||
from django.contrib.messages.views import SuccessMessageMixin
|
from django.contrib.messages.views import SuccessMessageMixin
|
||||||
from django.core.urlresolvers import reverse_lazy
|
from django.core.urlresolvers import reverse_lazy
|
||||||
|
|
||||||
|
|
||||||
class CreateUser(SuccessMessageMixin, CreateView):
|
class CreateUser(SuccessMessageMixin, CreateView):
|
||||||
template_name = 'user/user_form.html'
|
template_name = 'users/user_form.html'
|
||||||
form_class = CreateUserForm
|
form_class = CreateUserForm
|
||||||
success_url = reverse_lazy('shared:home')
|
success_url = reverse_lazy('shared:home')
|
||||||
success_message = "Votre compte utilisateur a été correctement créé !"
|
success_message = "Votre compte utilisateur a été correctement créé !"
|
Loading…
Reference in a new issue