Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Nounous
re2o
Commits
81087672
Commit
81087672
authored
Aug 28, 2017
by
Gabriel Detraz
Committed by
root
Aug 28, 2017
Browse files
Deplace les methodes d'envoie de mail dans models
parent
742969b3
Changes
3
Hide whitespace changes
Inline
Side-by-side
users/models.py
View file @
81087672
...
...
@@ -26,6 +26,9 @@ from django import forms
from
django.db.models.signals
import
post_save
,
post_delete
from
django.dispatch
import
receiver
from
django.utils.functional
import
cached_property
from
django.template
import
Context
,
RequestContext
,
loader
from
django.core.mail
import
send_mail
from
django.core.urlresolvers
import
reverse
from
reversion
import
revisions
as
reversion
from
django.db
import
transaction
...
...
@@ -44,7 +47,7 @@ from django.core.validators import MinLengthValidator
from
topologie.models
import
Room
from
cotisations.models
import
Cotisation
,
Facture
,
Paiement
,
Vente
from
machines.models
import
Interface
,
Machine
from
preferences.models
import
GeneralOption
,
OptionalUser
from
preferences.models
import
GeneralOption
,
AssoOption
,
OptionalUser
now
=
timezone
.
now
()
...
...
@@ -409,12 +412,52 @@ class User(AbstractBaseUser):
except
LdapUser
.
DoesNotExist
:
pass
def
notif_inscription
(
self
):
""" Prend en argument un objet user, envoie un mail de bienvenue """
t
=
loader
.
get_template
(
'users/email_welcome'
)
options
,
created
=
AssoOption
.
objects
.
get_or_create
()
general_options
,
created
=
GeneralOption
.
objects
.
get_or_create
()
c
=
Context
({
'nom'
:
str
(
self
.
name
)
+
' '
+
str
(
self
.
surname
),
'asso_name'
:
options
.
name
,
'asso_email'
:
options
.
contact
,
'pseudo'
:
self
.
pseudo
,
})
send_mail
(
'Bienvenue au %(name)s / Welcome to %(name)s'
%
{
'name'
:
options
.
name
},
''
,
general_options
.
email_from
,
[
self
.
email
],
html_message
=
t
.
render
(
c
))
return
def
reset_passwd_mail
(
self
,
request
):
""" Prend en argument un request, envoie un mail de réinitialisation de mot de pass """
req
=
Request
()
req
.
type
=
Request
.
PASSWD
req
.
user
=
self
req
.
save
()
t
=
loader
.
get_template
(
'users/email_passwd_request'
)
options
,
created
=
AssoOption
.
objects
.
get_or_create
()
general_options
,
created
=
GeneralOption
.
objects
.
get_or_create
()
c
=
{
'name'
:
str
(
req
.
user
.
name
)
+
' '
+
str
(
req
.
user
.
surname
),
'asso'
:
options
.
name
,
'asso_mail'
:
options
.
contact
,
'site_name'
:
general_options
.
site_name
,
'url'
:
request
.
build_absolute_uri
(
reverse
(
'users:process'
,
kwargs
=
{
'token'
:
req
.
token
})),
'expire_in'
:
str
(
general_options
.
req_expire_hrs
)
+
' heures'
,
}
send_mail
(
'Changement de mot de passe du %(name)s / Password renewal for %(name)s'
%
{
'name'
:
options
.
name
},
t
.
render
(
c
),
general_options
.
email_from
,
[
req
.
user
.
email
],
fail_silently
=
False
)
return
def
__str__
(
self
):
return
self
.
pseudo
@
receiver
(
post_save
,
sender
=
User
)
def
user_post_save
(
sender
,
**
kwargs
):
is_created
=
kwargs
[
'created'
]
user
=
kwargs
[
'instance'
]
if
is_created
:
user
.
notif_inscription
()
user
.
ldap_sync
(
base
=
True
,
access_refresh
=
True
,
mac_refresh
=
False
)
@
receiver
(
post_delete
,
sender
=
User
)
...
...
@@ -571,14 +614,32 @@ class Ban(models.Model):
date_end
=
models
.
DateTimeField
(
help_text
=
'%d/%m/%y %H:%M:%S'
)
state
=
models
.
IntegerField
(
choices
=
STATES
,
default
=
STATE_HARD
)
def
notif_ban
(
self
):
""" Prend en argument un objet ban, envoie un mail de notification """
general_options
,
created
=
GeneralOption
.
objects
.
get_or_create
()
t
=
loader
.
get_template
(
'users/email_ban_notif'
)
options
,
created
=
AssoOption
.
objects
.
get_or_create
()
c
=
Context
({
'name'
:
str
(
self
.
user
.
name
)
+
' '
+
str
(
self
.
user
.
surname
),
'raison'
:
self
.
raison
,
'date_end'
:
self
.
date_end
,
'asso_name'
:
options
.
name
,
})
send_mail
(
'Deconnexion disciplinaire'
,
t
.
render
(
c
),
general_options
.
email_from
,
[
self
.
user
.
email
],
fail_silently
=
False
)
return
def
__str__
(
self
):
return
str
(
self
.
user
)
+
' '
+
str
(
self
.
raison
)
@
receiver
(
post_save
,
sender
=
Ban
)
def
ban_post_save
(
sender
,
**
kwargs
):
ban
=
kwargs
[
'instance'
]
is_created
=
kwargs
[
'created'
]
user
=
ban
.
user
user
.
ldap_sync
(
base
=
False
,
access_refresh
=
True
,
mac_refresh
=
False
)
if
is_created
:
ban
.
notif_ban
()
@
receiver
(
post_delete
,
sender
=
Ban
)
def
ban_post_delete
(
sender
,
**
kwargs
):
...
...
users/templates/users/email_ban_notif
View file @
81087672
Bonjour {{name}},
Vous avez été banni par un administrateur du {{ name }} en raison de {{raison}}. Vous n'avez plus accès au réseau jusqu'au {{date_end}}.
Vous avez été banni par un administrateur du {{
asso_
name }} en raison de {{raison}}. Vous n'avez plus accès au réseau jusqu'au {{date_end}}.
Pour de plus amples informations, rendez-vous à l'accueil du {{ name }}.
Pour de plus amples informations, rendez-vous à l'accueil du {{
asso_
name }}.
Cordialement,
L'équipe du {{ name }}.
L'équipe du {{
asso_
name }}.
users/views.py
View file @
81087672
...
...
@@ -70,55 +70,6 @@ def password_change_action(u_form, user, request, req=False):
return
redirect
(
"/"
)
return
redirect
(
"/users/profil/"
+
str
(
user
.
id
))
def
reset_passwd_mail
(
req
,
request
):
""" Prend en argument un request, envoie un mail de réinitialisation de mot de pass """
t
=
loader
.
get_template
(
'users/email_passwd_request'
)
options
,
created
=
AssoOption
.
objects
.
get_or_create
()
general_options
,
created
=
GeneralOption
.
objects
.
get_or_create
()
c
=
{
'name'
:
str
(
req
.
user
.
name
)
+
' '
+
str
(
req
.
user
.
surname
),
'asso'
:
options
.
name
,
'asso_mail'
:
options
.
contact
,
'site_name'
:
general_options
.
site_name
,
'url'
:
request
.
build_absolute_uri
(
reverse
(
'users:process'
,
kwargs
=
{
'token'
:
req
.
token
})),
'expire_in'
:
str
(
general_options
.
req_expire_hrs
)
+
' heures'
,
}
send_mail
(
'Changement de mot de passe du %(name)s / Password renewal for %(name)s'
%
{
'name'
:
options
.
name
},
t
.
render
(
c
),
general_options
.
email_from
,
[
req
.
user
.
email
],
fail_silently
=
False
)
return
def
notif_ban
(
ban
):
general_options
,
created
=
GeneralOption
.
objects
.
get_or_create
()
""" Prend en argument un objet ban, envoie un mail de notification """
t
=
loader
.
get_template
(
'users/email_ban_notif'
)
options
,
created
=
AssoOption
.
objects
.
get_or_create
()
c
=
Context
({
'name'
:
str
(
ban
.
user
.
name
)
+
' '
+
str
(
ban
.
user
.
surname
),
'raison'
:
ban
.
raison
,
'date_end'
:
ban
.
date_end
,
'name'
:
options
.
name
,
})
send_mail
(
'Deconnexion disciplinaire'
,
t
.
render
(
c
),
general_options
.
email_from
,
[
ban
.
user
.
email
],
fail_silently
=
False
)
return
def
notif_inscription
(
user
):
""" Prend en argument un objet user, envoie un mail de bienvenue """
t
=
loader
.
get_template
(
'users/email_welcome'
)
options
,
created
=
AssoOption
.
objects
.
get_or_create
()
general_options
,
created
=
GeneralOption
.
objects
.
get_or_create
()
c
=
Context
({
'nom'
:
str
(
user
.
name
)
+
' '
+
str
(
user
.
surname
),
'asso_name'
:
options
.
name
,
'asso_email'
:
options
.
contact
,
'pseudo'
:
user
.
pseudo
,
})
send_mail
(
'Bienvenue au %(name)s / Welcome to %(name)s'
%
{
'name'
:
options
.
name
},
''
,
general_options
.
email_from
,
[
user
.
email
],
html_message
=
t
.
render
(
c
))
return
@
login_required
@
permission_required
(
'cableur'
)
def
new_user
(
request
):
...
...
@@ -130,12 +81,7 @@ def new_user(request):
user
.
save
()
reversion
.
set_user
(
request
.
user
)
reversion
.
set_comment
(
"Création"
)
req
=
Request
()
req
.
type
=
Request
.
PASSWD
req
.
user
=
user
req
.
save
()
reset_passwd_mail
(
req
,
request
)
notif_inscription
(
user
)
user
.
reset_passwd_mail
(
request
)
messages
.
success
(
request
,
"L'utilisateur %s a été crée, un mail pour l'initialisation du mot de passe a été envoyé"
%
user
.
pseudo
)
return
redirect
(
"/users/profil/"
+
str
(
user
.
id
))
return
form
({
'userform'
:
user
},
'users/user.html'
,
request
)
...
...
@@ -323,7 +269,6 @@ def add_ban(request, userid):
if
ban
.
is_valid
():
with
transaction
.
atomic
(),
reversion
.
create_revision
():
ban_object
=
ban
.
save
()
notif_ban
(
ban_object
)
reversion
.
set_user
(
request
.
user
)
reversion
.
set_comment
(
"Création"
)
messages
.
success
(
request
,
"Bannissement ajouté"
)
...
...
@@ -718,12 +663,8 @@ def reset_password(request):
user
=
User
.
objects
.
get
(
pseudo
=
userform
.
cleaned_data
[
'pseudo'
],
email
=
userform
.
cleaned_data
[
'email'
])
except
User
.
DoesNotExist
:
messages
.
error
(
request
,
"Cet utilisateur n'existe pas"
)
return
form
({
'userform'
:
userform
},
'users/user.html'
,
request
)
req
=
Request
()
req
.
type
=
Request
.
PASSWD
req
.
user
=
user
req
.
save
()
reset_passwd_mail
(
req
,
request
)
return
form
({
'userform'
:
userform
},
'users/user.html'
,
request
)
user
.
reset_passwd_mail
(
request
)
messages
.
success
(
request
,
"Un mail pour l'initialisation du mot de passe a été envoyé"
)
redirect
(
"/"
)
return
form
({
'userform'
:
userform
},
'users/user.html'
,
request
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment