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
099e7ff8
Commit
099e7ff8
authored
Jun 26, 2018
by
grisel-davy
Committed by
Maël Kervella
Jul 30, 2018
Browse files
Ajout de l'extension mail dans preference et debut de frontend
parent
7c1a6744
Changes
11
Hide whitespace changes
Inline
Side-by-side
machines/forms.py
View file @
099e7ff8
...
...
@@ -262,7 +262,6 @@ class ExtensionForm(FormRevMixin, ModelForm):
self
.
fields
[
'origin'
].
label
=
'Enregistrement A origin'
self
.
fields
[
'origin_v6'
].
label
=
'Enregistrement AAAA origin'
self
.
fields
[
'soa'
].
label
=
'En-tête SOA à utiliser'
self
.
fielss
[
'mail_extension'
].
label
=
'Utilisable comme extension mail'
class
DelExtensionForm
(
FormRevMixin
,
Form
):
...
...
machines/models.py
View file @
099e7ff8
...
...
@@ -546,10 +546,6 @@ class Extension(RevMixin, AclMixin, models.Model):
'SOA'
,
on_delete
=
models
.
CASCADE
)
mail_extension
=
models
.
BooleanField
(
default
=
False
,
help_text
=
"Determine si l'extension peut être utilisée comme extension mail interne"
)
class
Meta
:
permissions
=
(
...
...
preferences/migrations/0035_optionaluser_mail_extension.py
0 → 100644
View file @
099e7ff8
# -*- coding: utf-8 -*-
# Generated by Django 1.10.7 on 2018-06-26 19:31
from
__future__
import
unicode_literals
from
django.db
import
migrations
,
models
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'preferences'
,
'0034_auto_20180416_1120'
),
]
operations
=
[
migrations
.
AddField
(
model_name
=
'optionaluser'
,
name
=
'mail_extension'
,
field
=
models
.
CharField
(
default
=
'@example.org'
,
help_text
=
'Extension principale pour les mails internes'
,
max_length
=
32
),
),
]
preferences/models.py
View file @
099e7ff8
...
...
@@ -31,6 +31,8 @@ from django.db.models.signals import post_save
from
django.dispatch
import
receiver
from
django.core.cache
import
cache
from
django.forms
import
ValidationError
import
cotisations.models
import
machines.models
from
re2o.mixins
import
AclMixin
...
...
@@ -83,12 +85,25 @@ class OptionalUser(AclMixin, PreferencesModel):
blank
=
True
,
null
=
True
)
mail_extension
=
models
.
CharField
(
max_length
=
32
,
default
=
"@example.org"
,
help_text
=
"Extension principale pour les mails internes"
,
)
class
Meta
:
permissions
=
(
(
"view_optionaluser"
,
"Peut voir les options de l'user"
),
)
def
clean
(
self
):
"""Clean du model:
Creation du mode de paiement par solde
Vérifie que l'extension mail commence bien par @
"""
if
self
.
mail_extension
[
0
]
!=
"@"
:
raise
ValidationError
(
"L'extension mail doit commencer par un @"
)
@
receiver
(
post_save
,
sender
=
OptionalUser
)
def
optionaluser_post_save
(
**
kwargs
):
...
...
preferences/templates/preferences/display_preferences.html
View file @
099e7ff8
...
...
@@ -56,6 +56,10 @@ with this program; if not, write to the Free Software Foundation, Inc.,
<th>
Creations de clubs par tous
</th>
<td>
{{ useroptions.all_can_create_club|tick }}
</td>
</tr>
<tr>
<th>
Extension mail interne
</th>
<td>
{{ useroptions.mail_extension }}
</td>
</tr>
</table>
...
...
users/admin.py
View file @
099e7ff8
...
...
@@ -127,7 +127,6 @@ class UserAdmin(VersionAdmin, BaseUserAdmin):
list_display
=
(
'pseudo'
,
'surname'
,
'email'
,
'school'
,
'is_admin'
,
'shell'
...
...
@@ -141,7 +140,7 @@ class UserAdmin(VersionAdmin, BaseUserAdmin):
'Personal info'
,
{
'fields'
:
(
'surname'
,
'email'
,
'school'
,
'shell'
,
'uid_number'
)
(
'surname'
,
'school'
,
'shell'
,
'uid_number'
)
}
),
(
'Permissions'
,
{
'fields'
:
(
'is_admin'
,
)}),
...
...
@@ -156,7 +155,6 @@ class UserAdmin(VersionAdmin, BaseUserAdmin):
'fields'
:
(
'pseudo'
,
'surname'
,
'email'
,
'school'
,
'is_admin'
,
'password1'
,
...
...
users/forms.py
View file @
099e7ff8
...
...
@@ -140,7 +140,7 @@ class UserCreationForm(FormRevMixin, forms.ModelForm):
class
Meta
:
model
=
Adherent
fields
=
(
'pseudo'
,
'surname'
,
'email'
)
fields
=
(
'pseudo'
,
'surname'
)
def
clean_password2
(
self
):
"""Verifie que password1 et 2 sont identiques"""
...
...
@@ -220,7 +220,7 @@ class UserChangeForm(FormRevMixin, forms.ModelForm):
class
Meta
:
model
=
Adherent
fields
=
(
'pseudo'
,
'password'
,
'surname'
,
'email'
)
fields
=
(
'pseudo'
,
'password'
,
'surname'
)
def
__init__
(
self
,
*
args
,
**
kwargs
):
prefix
=
kwargs
.
pop
(
'prefix'
,
self
.
Meta
.
model
.
__name__
)
...
...
@@ -313,7 +313,6 @@ class AdherentForm(FormRevMixin, FieldPermissionFormMixin, ModelForm):
'name'
,
'surname'
,
'pseudo'
,
'email'
,
'school'
,
'comment'
,
'room'
,
...
...
@@ -365,7 +364,6 @@ class ClubForm(FormRevMixin, FieldPermissionFormMixin, ModelForm):
fields
=
[
'surname'
,
'pseudo'
,
'email'
,
'school'
,
'comment'
,
'room'
,
...
...
users/migrations/0073_mail_mailalias.py
0 → 100644
View file @
099e7ff8
# -*- coding: utf-8 -*-
# Generated by Django 1.10.7 on 2018-06-26 19:07
from
__future__
import
unicode_literals
from
django.conf
import
settings
from
django.db
import
migrations
,
models
import
django.db.models.deletion
import
re2o.mixins
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'users'
,
'0072_auto_20180426_2021'
),
]
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
),
),
]
users/migrations/0074_transfermail.py
0 → 100644
View file @
099e7ff8
# -*- 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 @
099e7ff8
...
...
@@ -79,7 +79,7 @@ from re2o.field_permissions import FieldPermissionModelMixin
from
re2o.mixins
import
AclMixin
,
RevMixin
from
cotisations.models
import
Cotisation
,
Facture
,
Paiement
,
Vente
from
machines.models
import
Domain
,
Interface
,
Machine
,
regen
,
Extension
from
machines.models
import
Domain
,
Interface
,
Machine
,
regen
from
preferences.models
import
GeneralOption
,
AssoOption
,
OptionalUser
from
preferences.models
import
OptionalMachine
,
MailMessageOption
...
...
@@ -134,7 +134,6 @@ class UserManager(BaseUserManager):
self
,
pseudo
,
surname
,
email
,
password
=
None
,
su
=
False
):
...
...
@@ -148,7 +147,6 @@ class UserManager(BaseUserManager):
pseudo
=
pseudo
,
surname
=
surname
,
name
=
surname
,
email
=
self
.
normalize_email
(
email
),
)
user
.
set_password
(
password
)
...
...
@@ -157,19 +155,19 @@ class UserManager(BaseUserManager):
user
.
save
(
using
=
self
.
_db
)
return
user
def
create_user
(
self
,
pseudo
,
surname
,
email
,
password
=
None
):
def
create_user
(
self
,
pseudo
,
surname
,
password
=
None
):
"""
Creates and saves a User with the given pseudo, name, surname, email,
and password.
"""
return
self
.
_create_user
(
pseudo
,
surname
,
email
,
password
,
False
)
return
self
.
_create_user
(
pseudo
,
surname
,
password
,
False
)
def
create_superuser
(
self
,
pseudo
,
surname
,
email
,
password
):
def
create_superuser
(
self
,
pseudo
,
surname
,
password
):
"""
Creates and saves a superuser with the given pseudo, name, surname,
email, and password.
"""
return
self
.
_create_user
(
pseudo
,
surname
,
email
,
password
,
True
)
return
self
.
_create_user
(
pseudo
,
surname
,
password
,
True
)
class
User
(
RevMixin
,
FieldPermissionModelMixin
,
AbstractBaseUser
,
...
...
@@ -188,19 +186,13 @@ 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
]
)
email
=
models
.
EmailField
()
"""
email= models.OneToOneField(
Mail,
on_delete=models.PROTECT
)
"""
school
=
models
.
ForeignKey
(
'School'
,
on_delete
=
models
.
PROTECT
,
...
...
@@ -233,7 +225,7 @@ class User(RevMixin, FieldPermissionModelMixin, AbstractBaseUser,
)
USERNAME_FIELD
=
'pseudo'
REQUIRED_FIELDS
=
[
'surname'
,
'email'
]
REQUIRED_FIELDS
=
[
'surname'
]
objects
=
UserManager
()
...
...
@@ -686,10 +678,10 @@ class User(RevMixin, FieldPermissionModelMixin, AbstractBaseUser,
"""
Return the mail address choosen by the user
"""
if
not
self
.
mail
.
internal_a
ctivated
:
return
(
self
.
mail
.
external
)
if
not
self
.
mail
.
internal_a
ddress
:
return
self
.
mail
.
external
_mail
else
:
return
(
self
.
mail
.
mailalias_set
.
first
()
)
return
self
.
mail
.
mailalias_set
.
get
(
valeur
=
pseudo
)
def
get_next_domain_name
(
self
):
"""Look for an available name for a new interface for
...
...
@@ -1619,7 +1611,7 @@ class Mail(RevMixin, AclMixin, models.Model):
Compte mail d'un utilisateur
"""
external_mail
=
models
.
EmailField
(
help_text
=
"Mail externe"
)
user
=
models
.
ForeignKey
(
user
=
models
.
OneToOneField
(
'User'
,
on_delete
=
models
.
CASCADE
,
help_text
=
"Object mail d'un User"
...
...
@@ -1632,7 +1624,7 @@ class Mail(RevMixin, AclMixin, models.Model):
)
def
__str__
(
self
):
return
self
.
mail
return
self
.
user
.
get_
mail
()
class
MailAlias
(
RevMixin
,
AclMixin
,
models
.
Model
):
...
...
@@ -1647,20 +1639,14 @@ class MailAlias(RevMixin, AclMixin, models.Model):
help_text
=
"Objects Mail associé"
)
valeur
=
models
.
CharField
(
unique
=
True
,
max_length
=
64
,
help_text
=
"username de l'adresse mail"
)
extension
=
models
.
ForeignKey
(
'machines.Extension'
,
on_delete
=
models
.
CASCADE
,
help_text
=
"Extension mail interne"
)
class
Meta
:
unique_together
=
(
'valeur'
,
'extension'
,)
def
__str__
(
self
):
return
self
.
valeur
+
"@"
+
self
.
extension
return
self
.
valeur
+
OptionalUser
.
get_cached_value
(
'mail_
extension
'
)
def
can_view
(
self
,
user_request
,
*
_args
,
**
_kwargs
):
"""
...
...
@@ -1681,7 +1667,7 @@ class MailAlias(RevMixin, AclMixin, models.Model):
return
True
,
None
else
:
if
user_request
==
self
.
mail
.
user
:
if
self
.
id
!=
0
:
if
self
.
valeur
==
self
.
mail
.
user
.
pseudo
:
return
True
,
None
else
:
return
False
,
"Vous ne pouvez pas supprimer l'alias lié à votre pseudo"
...
...
@@ -1697,7 +1683,7 @@ class MailAlias(RevMixin, AclMixin, models.Model):
return
True
,
None
else
:
if
user_request
==
self
.
mail
.
user
:
if
self
.
id
!=
0
:
if
self
.
valeur
==
self
.
mail
.
user
.
pseudo
:
return
True
,
None
else
:
return
False
,
"Vous ne pouvez pas modifier l'alias lié à votre pseudo"
...
...
users/views.py
View file @
099e7ff8
...
...
@@ -81,6 +81,8 @@ from .models import (
Adherent
,
Club
,
ListShell
,
MailAlias
,
Mail
,
)
from
.forms
import
(
BanForm
,
...
...
Write
Preview
Supports
Markdown
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