Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
R
re2o
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Nounous
re2o
Commits
da87579f
Commit
da87579f
authored
Jun 29, 2018
by
chirac
Committed by
Maël Kervella
Jul 30, 2018
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Les champs mails sont dans users
parent
04de9db6
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
75 additions
and
91 deletions
+75
-91
users/admin.py
users/admin.py
+3
-2
users/forms.py
users/forms.py
+3
-5
users/migrations/0073_auto_20180629_1614.py
users/migrations/0073_auto_20180629_1614.py
+46
-0
users/migrations/0074_transfermail.py
users/migrations/0074_transfermail.py
+0
-36
users/models.py
users/models.py
+20
-44
users/views.py
users/views.py
+3
-4
No files found.
users/admin.py
View file @
da87579f
...
...
@@ -34,7 +34,6 @@ from reversion.admin import VersionAdmin
from
.models
import
(
User
,
Mail
,
MailAlias
,
ServiceUser
,
School
,
...
...
@@ -132,6 +131,7 @@ class UserAdmin(VersionAdmin, BaseUserAdmin):
list_display
=
(
'pseudo'
,
'surname'
,
'external_mail'
,
'school'
,
'is_admin'
,
'shell'
...
...
@@ -145,7 +145,7 @@ class UserAdmin(VersionAdmin, BaseUserAdmin):
'Personal info'
,
{
'fields'
:
(
'surname'
,
'school'
,
'shell'
,
'uid_number'
)
(
'surname'
,
'
external_mail'
,
'
school'
,
'shell'
,
'uid_number'
)
}
),
(
'Permissions'
,
{
'fields'
:
(
'is_admin'
,
)}),
...
...
@@ -160,6 +160,7 @@ class UserAdmin(VersionAdmin, BaseUserAdmin):
'fields'
:
(
'pseudo'
,
'surname'
,
'external_mail'
,
'school'
,
'is_admin'
,
'password1'
,
...
...
users/forms.py
View file @
da87579f
...
...
@@ -53,7 +53,6 @@ from .models import (
School
,
ListRight
,
Whitelist
,
Mail
,
MailAlias
,
ListShell
,
Ban
,
...
...
@@ -307,7 +306,6 @@ class AdherentForm(FormRevMixin, FieldPermissionFormMixin, ModelForm):
self
.
fields
[
'room'
].
label
=
'Chambre'
self
.
fields
[
'room'
].
empty_label
=
"Pas de chambre"
self
.
fields
[
'school'
].
empty_label
=
"Séléctionner un établissement"
class
Meta
:
model
=
Adherent
fields
=
[
...
...
@@ -601,7 +599,7 @@ class MailAliasForm(FormRevMixin, ModelForm):
class
Meta
:
model
=
MailAlias
exclude
=
[
'
mail
'
]
exclude
=
[
'
user
'
]
class
MailForm
(
FormRevMixin
,
FieldPermissionFormMixin
,
ModelForm
):
"""Creation, edition des paramètres mail"""
...
...
@@ -615,5 +613,5 @@ class MailForm(FormRevMixin, FieldPermissionFormMixin, ModelForm):
self
.
fields
[
'internal_address'
].
label
=
'Adresse mail interne'
class
Meta
:
model
=
Mail
exclude
=
[
'user
'
]
model
=
User
fields
=
[
'external_mail'
,
'redirection'
,
'internal_address
'
]
users/migrations/0073_
mail_mailalias
.py
→
users/migrations/0073_
auto_20180629_1614
.py
View file @
da87579f
# -*- coding: utf-8 -*-
# Generated by Django 1.10.7 on 2018-06-2
6 19:07
# Generated by Django 1.10.7 on 2018-06-2
9 14:14
from
__future__
import
unicode_literals
from
django.conf
import
settings
...
...
@@ -15,24 +15,32 @@ class Migration(migrations.Migration):
]
operations
=
[
migrations
.
CreateModel
(
name
=
'Mail'
,
fields
=
[
(
'id'
,
models
.
AutoField
(
auto_created
=
True
,
primary_key
=
True
,
serialize
=
False
,
verbose_name
=
'ID'
)),
(
'external_mail'
,
models
.
EmailField
(
help_text
=
'Mail externe'
,
max_length
=
254
)),
(
'redirection'
,
models
.
BooleanField
(
default
=
False
)),
(
'internal_address'
,
models
.
BooleanField
(
default
=
False
)),
(
'user'
,
models
.
OneToOneField
(
help_text
=
"Object mail d'un User"
,
on_delete
=
django
.
db
.
models
.
deletion
.
CASCADE
,
to
=
settings
.
AUTH_USER_MODEL
)),
],
bases
=
(
re2o
.
mixins
.
RevMixin
,
re2o
.
mixins
.
AclMixin
,
models
.
Model
),
),
migrations
.
CreateModel
(
name
=
'MailAlias'
,
fields
=
[
(
'id'
,
models
.
AutoField
(
auto_created
=
True
,
primary_key
=
True
,
serialize
=
False
,
verbose_name
=
'ID'
)),
(
'valeur'
,
models
.
CharField
(
help_text
=
"username de l'adresse mail"
,
max_length
=
64
,
unique
=
True
)),
(
'mail'
,
models
.
ForeignKey
(
help_text
=
'Objects Mail associé'
,
on_delete
=
django
.
db
.
models
.
deletion
.
CASCADE
,
to
=
'users.Mail'
)),
],
bases
=
(
re2o
.
mixins
.
RevMixin
,
re2o
.
mixins
.
AclMixin
,
models
.
Model
),
),
migrations
.
RenameField
(
model_name
=
'user'
,
old_name
=
'email'
,
new_name
=
'external_mail'
,
),
migrations
.
AddField
(
model_name
=
'user'
,
name
=
'internal_address'
,
field
=
models
.
BooleanField
(
default
=
False
,
help_text
=
"Activer ou non l'utilisation de l'adresse mail interne"
),
),
migrations
.
AddField
(
model_name
=
'user'
,
name
=
'redirection'
,
field
=
models
.
BooleanField
(
default
=
False
,
help_text
=
'Activer ou non la redirection du mail interne vers le mail externe'
),
),
migrations
.
AddField
(
model_name
=
'mailalias'
,
name
=
'user'
,
field
=
models
.
ForeignKey
(
blank
=
True
,
help_text
=
'Utilisateur associé'
,
null
=
True
,
on_delete
=
django
.
db
.
models
.
deletion
.
CASCADE
,
to
=
settings
.
AUTH_USER_MODEL
),
),
]
users/migrations/0074_transfermail.py
deleted
100644 → 0
View file @
04de9db6
# -*- coding: utf-8 -*-
# Generated by Django 1.10.7 on 2018-06-26 18:34
from
__future__
import
unicode_literals
from
django.db
import
migrations
,
models
import
django.db.models.deletion
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'users'
,
'0073_mail_mailalias'
),
]
def
create_mail
(
apps
,
schema_editor
):
db_alias
=
schema_editor
.
connection
.
alias
user
=
apps
.
get_model
(
'users'
,
'User'
)
mail
=
apps
.
get_model
(
'users'
,
'Mail'
)
mailalias
=
apps
.
get_model
(
'users'
,
'MailAlias'
)
users
=
user
.
objects
.
using
(
db_alias
).
all
()
for
us
in
users
:
ma
=
mail
()
ma
.
user
=
us
ma
.
external_mail
=
us
.
email
ma
.
save
()
al
=
mailalias
()
al
.
mail
=
ma
al
.
valeur
=
us
.
pseudo
al
.
save
()
def
uncreatemail
(
apps
,
schema_editor
):
pass
operations
=
[
migrations
.
RunPython
(
create_mail
,
uncreatemail
)
]
users/models.py
View file @
da87579f
...
...
@@ -135,6 +135,7 @@ class UserManager(BaseUserManager):
self
,
pseudo
,
surname
,
external_mail
,
password
=
None
,
su
=
False
):
...
...
@@ -148,6 +149,7 @@ class UserManager(BaseUserManager):
pseudo
=
pseudo
,
surname
=
surname
,
name
=
surname
,
external_mail
=
external_mail
,
)
user
.
set_password
(
password
)
...
...
@@ -156,19 +158,19 @@ class UserManager(BaseUserManager):
user
.
save
(
using
=
self
.
_db
)
return
user
def
create_user
(
self
,
pseudo
,
surname
,
password
=
None
):
def
create_user
(
self
,
pseudo
,
surname
,
external_mail
,
password
=
None
):
"""
Creates and saves a User with the given pseudo, name, surname, email,
and password.
"""
return
self
.
_create_user
(
pseudo
,
surname
,
password
,
False
)
return
self
.
_create_user
(
pseudo
,
surname
,
external_mail
,
password
,
False
)
def
create_superuser
(
self
,
pseudo
,
surname
,
password
):
def
create_superuser
(
self
,
pseudo
,
surname
,
external_mail
,
password
):
"""
Creates and saves a superuser with the given pseudo, name, surname,
email, and password.
"""
return
self
.
_create_user
(
pseudo
,
surname
,
password
,
True
)
return
self
.
_create_user
(
pseudo
,
surname
,
external_mail
,
password
,
True
)
class
User
(
RevMixin
,
FieldPermissionModelMixin
,
AbstractBaseUser
,
...
...
@@ -187,13 +189,21 @@ class User(RevMixin, FieldPermissionModelMixin, AbstractBaseUser,
)
surname
=
models
.
CharField
(
max_length
=
255
)
email
=
models
.
EmailField
()
pseudo
=
models
.
CharField
(
max_length
=
32
,
unique
=
True
,
help_text
=
"Doit contenir uniquement des lettres, chiffres, ou tirets"
,
validators
=
[
linux_user_validator
]
)
external_mail
=
models
.
EmailField
()
redirection
=
models
.
BooleanField
(
default
=
False
,
help_text
=
'Activer ou non la redirection du mail interne vers le mail externe'
)
internal_address
=
models
.
BooleanField
(
default
=
False
,
help_text
=
'Activer ou non l
\'
utilisation de l
\'
adresse mail interne'
)
school
=
models
.
ForeignKey
(
'School'
,
on_delete
=
models
.
PROTECT
,
...
...
@@ -226,7 +236,7 @@ class User(RevMixin, FieldPermissionModelMixin, AbstractBaseUser,
)
USERNAME_FIELD
=
'pseudo'
REQUIRED_FIELDS
=
[
'surname'
]
REQUIRED_FIELDS
=
[
'surname'
,
'external_mail'
]
objects
=
UserManager
()
...
...
@@ -526,7 +536,7 @@ class User(RevMixin, FieldPermissionModelMixin, AbstractBaseUser,
user_ldap
.
sn
=
self
.
pseudo
user_ldap
.
dialupAccess
=
str
(
self
.
has_access
())
user_ldap
.
home_directory
=
'/home/'
+
self
.
pseudo
user_ldap
.
mail
=
self
.
email
user_ldap
.
mail
=
self
.
get_mail
()
user_ldap
.
given_name
=
self
.
surname
.
lower
()
+
'_'
\
+
self
.
name
.
lower
()[:
3
]
user_ldap
.
gid
=
LDAP
[
'user_gid'
]
...
...
@@ -1646,49 +1656,16 @@ class LdapServiceUserGroup(ldapdb.models.Model):
return
self
.
name
class
Mail
(
RevMixin
,
AclMixin
,
models
.
Model
):
"""
Mail account of a user
Compte mail d'un utilisateur
"""
external_mail
=
models
.
EmailField
(
help_text
=
"Mail externe"
)
user
=
models
.
OneToOneField
(
'User'
,
on_delete
=
models
.
CASCADE
,
help_text
=
"Object mail d'un User"
)
redirection
=
models
.
BooleanField
(
default
=
False
)
internal_address
=
models
.
BooleanField
(
default
=
False
)
def
__str__
(
self
):
return
self
.
user
.
get_mail
()
def
can_edit
(
self
,
user_request
,
*
_args
,
**
_kwargs
):
"""
Check if the user can edit the mail
"""
if
user_request
.
has_perm
(
'users.change_mail'
)
or
user_request
==
self
.
user
:
return
True
,
None
else
:
return
False
,
"Vous n'avez pas les droits suffisants et n'êtes pas propriétairs de cet alias"
class
MailAlias
(
RevMixin
,
AclMixin
,
models
.
Model
):
"""
Define a alias for a user Mail
Définit un alias pour un Mail d'utilisateur
"""
mail
=
models
.
ForeignKey
(
'Mail'
,
user
=
models
.
ForeignKey
(
User
,
on_delete
=
models
.
CASCADE
,
help_text
=
"
Compte mail
"
,
help_text
=
"
Utilisateur associé
"
,
)
valeur
=
models
.
CharField
(
unique
=
True
,
...
...
@@ -1696,7 +1673,6 @@ class MailAlias(RevMixin, AclMixin, models.Model):
help_text
=
"Valeur de l'alias mail"
)
def
__str__
(
self
):
return
self
.
valeur
+
OptionalUser
.
get_cached_value
(
'mail_extension'
)
...
...
users/views.py
View file @
da87579f
...
...
@@ -82,7 +82,6 @@ from .models import (
Club
,
ListShell
,
MailAlias
,
Mail
,
)
from
.forms
import
(
BanForm
,
...
...
@@ -501,7 +500,7 @@ def del_whitelist(request, whitelist, **_kwargs):
@
can_edit
(
User
)
def
add_mailalias
(
request
,
user
,
userid
):
""" Créer un alias """
mailalias_instance
=
MailAlias
(
mail
=
user
.
mail
)
mailalias_instance
=
MailAlias
(
user
=
user
)
mailalias
=
MailAliasForm
(
request
.
POST
or
None
,
instance
=
mailalias_instance
...
...
@@ -559,8 +558,8 @@ def del_mailalias(request, mailalias, **_kwargs):
)
@
login_required
@
can_edit
(
Mail
)
def
edit_mail
(
request
,
mail
_instance
,
**
_kwargs
):
@
can_edit
(
User
)
def
edit_mail
(
request
,
user
_instance
,
**
_kwargs
):
""" Editer un compte mail"""
mail
=
MailForm
(
request
.
POST
or
None
,
...
...
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