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
1795d26c
Commit
1795d26c
authored
Mar 31, 2018
by
Gabriel Detraz
Committed by
chirac
Mar 31, 2018
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Gestion de l'historique avec un mixin forms et model
parent
8fe0c877
Changes
14
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
271 additions
and
647 deletions
+271
-647
cotisations/forms.py
cotisations/forms.py
+10
-10
cotisations/models.py
cotisations/models.py
+8
-7
cotisations/views.py
cotisations/views.py
+20
-88
machines/forms.py
machines/forms.py
+31
-30
machines/models.py
machines/models.py
+20
-20
machines/views.py
machines/views.py
+51
-184
re2o/mixins.py
re2o/mixins.py
+24
-0
re2o/settings.py
re2o/settings.py
+1
-0
topologie/forms.py
topologie/forms.py
+6
-6
topologie/models.py
topologie/models.py
+6
-6
topologie/views.py
topologie/views.py
+33
-144
users/forms.py
users/forms.py
+19
-21
users/models.py
users/models.py
+8
-8
users/views.py
users/views.py
+34
-123
No files found.
cotisations/forms.py
View file @
1795d26c
...
...
@@ -45,9 +45,9 @@ from preferences.models import OptionalUser
from
users.models
import
User
from
re2o.field_permissions
import
FieldPermissionFormMixin
from
re2o.mixins
import
FormRevMixin
class
NewFactureForm
(
ModelForm
):
class
NewFactureForm
(
FormRevMixin
,
ModelForm
):
"""Creation d'une facture, moyen de paiement, banque et numero
de cheque"""
def
__init__
(
self
,
*
args
,
**
kwargs
):
...
...
@@ -96,7 +96,7 @@ class CreditSoldeForm(NewFactureForm):
montant
=
forms
.
DecimalField
(
max_digits
=
5
,
decimal_places
=
2
,
required
=
True
)
class
SelectUserArticleForm
(
Form
):
class
SelectUserArticleForm
(
Form
RevMixin
,
Form
):
"""Selection d'un article lors de la creation d'une facture"""
article
=
forms
.
ModelChoiceField
(
queryset
=
Article
.
objects
.
filter
(
Q
(
type_user
=
'All'
)
|
Q
(
type_user
=
'Adherent'
)),
...
...
@@ -158,7 +158,7 @@ class EditFactureForm(FieldPermissionFormMixin, NewFactureForm):
self
.
fields
[
'valid'
].
label
=
'Validité de la facture'
class
ArticleForm
(
ModelForm
):
class
ArticleForm
(
FormRevMixin
,
ModelForm
):
"""Creation d'un article. Champs : nom, cotisation, durée"""
class
Meta
:
model
=
Article
...
...
@@ -170,7 +170,7 @@ class ArticleForm(ModelForm):
self
.
fields
[
'name'
].
label
=
"Désignation de l'article"
class
DelArticleForm
(
Form
):
class
DelArticleForm
(
Form
RevMixin
,
Form
):
"""Suppression d'un ou plusieurs articles en vente. Choix
parmis les modèles"""
articles
=
forms
.
ModelMultipleChoiceField
(
...
...
@@ -188,7 +188,7 @@ class DelArticleForm(Form):
self
.
fields
[
'articles'
].
queryset
=
Article
.
objects
.
all
()
class
PaiementForm
(
ModelForm
):
class
PaiementForm
(
FormRevMixin
,
ModelForm
):
"""Creation d'un moyen de paiement, champ text moyen et type
permettant d'indiquer si il s'agit d'un chèque ou non pour le form"""
class
Meta
:
...
...
@@ -202,7 +202,7 @@ class PaiementForm(ModelForm):
self
.
fields
[
'type_paiement'
].
label
=
'Type de paiement à ajouter'
class
DelPaiementForm
(
Form
):
class
DelPaiementForm
(
Form
RevMixin
,
Form
):
"""Suppression d'un ou plusieurs moyens de paiements, selection
parmis les models"""
paiements
=
forms
.
ModelMultipleChoiceField
(
...
...
@@ -220,7 +220,7 @@ class DelPaiementForm(Form):
self
.
fields
[
'paiements'
].
queryset
=
Paiement
.
objects
.
all
()
class
BanqueForm
(
ModelForm
):
class
BanqueForm
(
FormRevMixin
,
ModelForm
):
"""Creation d'une banque, field name"""
class
Meta
:
model
=
Banque
...
...
@@ -232,7 +232,7 @@ class BanqueForm(ModelForm):
self
.
fields
[
'name'
].
label
=
'Banque à ajouter'
class
DelBanqueForm
(
Form
):
class
DelBanqueForm
(
Form
RevMixin
,
Form
):
"""Selection d'une ou plusieurs banques, pour suppression"""
banques
=
forms
.
ModelMultipleChoiceField
(
queryset
=
Banque
.
objects
.
none
(),
...
...
@@ -283,7 +283,7 @@ class NewFactureSoldeForm(NewFactureForm):
return
cleaned_data
class
RechargeForm
(
Form
):
class
RechargeForm
(
Form
RevMixin
,
Form
):
value
=
forms
.
FloatField
(
label
=
'Valeur'
,
min_value
=
0.01
,
...
...
cotisations/models.py
View file @
1795d26c
...
...
@@ -57,9 +57,10 @@ from django.utils import timezone
from
machines.models
import
regen
from
re2o.field_permissions
import
FieldPermissionModelMixin
from
re2o.mixins
import
AclMixin
from
re2o.mixins
import
AclMixin
,
RevMixin
class
Facture
(
AclMixin
,
FieldPermissionModelMixin
,
models
.
Model
):
class
Facture
(
RevMixin
,
AclMixin
,
FieldPermissionModelMixin
,
models
.
Model
):
""" Définition du modèle des factures. Une facture regroupe une ou
plusieurs ventes, rattachée à un user, et reliée à un moyen de paiement
et si il y a lieu un numero pour les chèques. Possède les valeurs
...
...
@@ -180,7 +181,7 @@ def facture_post_delete(sender, **kwargs):
user
.
ldap_sync
(
base
=
False
,
access_refresh
=
True
,
mac_refresh
=
False
)
class
Vente
(
AclMixin
,
models
.
Model
):
class
Vente
(
RevMixin
,
AclMixin
,
models
.
Model
):
"""Objet vente, contient une quantité, une facture parente, un nom,
un prix. Peut-être relié à un objet cotisation, via le boolean
iscotisation"""
...
...
@@ -325,7 +326,7 @@ def vente_post_delete(sender, **kwargs):
user
.
ldap_sync
(
base
=
False
,
access_refresh
=
True
,
mac_refresh
=
False
)
class
Article
(
AclMixin
,
models
.
Model
):
class
Article
(
RevMixin
,
AclMixin
,
models
.
Model
):
"""Liste des articles en vente : prix, nom, et attribut iscotisation
et duree si c'est une cotisation"""
PRETTY_NAME
=
"Articles en vente"
...
...
@@ -381,7 +382,7 @@ class Article(AclMixin, models.Model):
return
self
.
name
class
Banque
(
AclMixin
,
models
.
Model
):
class
Banque
(
RevMixin
,
AclMixin
,
models
.
Model
):
"""Liste des banques"""
PRETTY_NAME
=
"Banques enregistrées"
...
...
@@ -396,7 +397,7 @@ class Banque(AclMixin, models.Model):
return
self
.
name
class
Paiement
(
AclMixin
,
models
.
Model
):
class
Paiement
(
RevMixin
,
AclMixin
,
models
.
Model
):
"""Moyens de paiement"""
PRETTY_NAME
=
"Moyens de paiement"
PAYMENT_TYPES
=
(
...
...
@@ -426,7 +427,7 @@ class Paiement(AclMixin, models.Model):
super
(
Paiement
,
self
).
save
(
*
args
,
**
kwargs
)
class
Cotisation
(
AclMixin
,
models
.
Model
):
class
Cotisation
(
RevMixin
,
AclMixin
,
models
.
Model
):
"""Objet cotisation, debut et fin, relié en onetoone à une vente"""
PRETTY_NAME
=
"Cotisations"
...
...
cotisations/views.py
View file @
1795d26c
...
...
@@ -39,8 +39,6 @@ from django.forms import modelformset_factory, formset_factory
from
django.utils
import
timezone
from
django.views.decorators.csrf
import
csrf_exempt
from
django.views.decorators.debug
import
sensitive_variables
from
reversion
import
revisions
as
reversion
from
reversion.models
import
Version
# Import des models, forms et fonctions re2o
from
users.models
import
User
from
re2o.settings
import
LOGO_PATH
...
...
@@ -126,10 +124,7 @@ def new_facture(request, user, userid):
'users:profil'
,
kwargs
=
{
'userid'
:
userid
}
))
with
transaction
.
atomic
(),
reversion
.
create_revision
():
new_facture_instance
.
save
()
reversion
.
set_user
(
request
.
user
)
reversion
.
set_comment
(
"Création"
)
new_facture_instance
.
save
()
for
art_item
in
articles
:
if
art_item
.
cleaned_data
:
article
=
art_item
.
cleaned_data
[
'article'
]
...
...
@@ -142,10 +137,7 @@ def new_facture(request, user, userid):
duration
=
article
.
duration
,
number
=
quantity
)
with
transaction
.
atomic
(),
reversion
.
create_revision
():
new_vente
.
save
()
reversion
.
set_user
(
request
.
user
)
reversion
.
set_comment
(
"Création"
)
new_vente
.
save
()
if
any
(
art_item
.
cleaned_data
[
'article'
].
type_cotisation
for
art_item
in
articles
if
art_item
.
cleaned_data
):
messages
.
success
(
...
...
@@ -257,13 +249,8 @@ def edit_facture(request, facture, factureid):
)
vente_form
=
vente_form_set
(
request
.
POST
or
None
,
queryset
=
ventes_objects
)
if
facture_form
.
is_valid
()
and
vente_form
.
is_valid
():
with
transaction
.
atomic
(),
reversion
.
create_revision
():
facture_form
.
save
()
vente_form
.
save
()
reversion
.
set_user
(
request
.
user
)
reversion
.
set_comment
(
"Champs modifié(s) : %s"
%
', '
.
join
(
field
for
form
in
vente_form
for
field
in
facture_form
.
changed_data
+
form
.
changed_data
))
facture_form
.
save
()
vente_form
.
save
()
messages
.
success
(
request
,
"La facture a bien été modifiée"
)
return
redirect
(
reverse
(
'cotisations:index'
))
return
form
({
...
...
@@ -278,9 +265,7 @@ def del_facture(request, facture, factureid):
"""Suppression d'une facture. Supprime en cascade les ventes
et cotisations filles"""
if
request
.
method
==
"POST"
:
with
transaction
.
atomic
(),
reversion
.
create_revision
():
facture
.
delete
()
reversion
.
set_user
(
request
.
user
)
facture
.
delete
()
messages
.
success
(
request
,
"La facture a été détruite"
)
return
redirect
(
reverse
(
'cotisations:index'
))
return
form
({
...
...
@@ -297,21 +282,15 @@ def credit_solde(request, user, userid):
facture
=
CreditSoldeForm
(
request
.
POST
or
None
)
if
facture
.
is_valid
():
facture_instance
=
facture
.
save
(
commit
=
False
)
with
transaction
.
atomic
(),
reversion
.
create_revision
():
facture_instance
.
user
=
user
facture_instance
.
save
()
reversion
.
set_user
(
request
.
user
)
reversion
.
set_comment
(
"Création"
)
facture_instance
.
user
=
user
facture_instance
.
save
()
new_vente
=
Vente
.
objects
.
create
(
facture
=
facture_instance
,
name
=
"solde"
,
prix
=
facture
.
cleaned_data
[
'montant'
],
number
=
1
)
with
transaction
.
atomic
(),
reversion
.
create_revision
():
new_vente
.
save
()
reversion
.
set_user
(
request
.
user
)
reversion
.
set_comment
(
"Création"
)
new_vente
.
save
()
messages
.
success
(
request
,
"Solde modifié"
)
return
redirect
(
reverse
(
'cotisations:index'
))
return
form
({
'factureform'
:
facture
,
'action_name'
:
'Créditer'
},
'cotisations/facture.html'
,
request
)
...
...
@@ -329,10 +308,7 @@ def add_article(request):
PAS de conséquence sur les ventes déjà faites"""
article
=
ArticleForm
(
request
.
POST
or
None
)
if
article
.
is_valid
():
with
transaction
.
atomic
(),
reversion
.
create_revision
():
article
.
save
()
reversion
.
set_user
(
request
.
user
)
reversion
.
set_comment
(
"Création"
)
article
.
save
()
messages
.
success
(
request
,
"L'article a été ajouté"
)
return
redirect
(
reverse
(
'cotisations:index-article'
))
return
form
({
'factureform'
:
article
,
'action_name'
:
'Ajouter'
},
'cotisations/facture.html'
,
request
)
...
...
@@ -345,14 +321,7 @@ def edit_article(request, article_instance, articleid):
Réservé au trésorier"""
article
=
ArticleForm
(
request
.
POST
or
None
,
instance
=
article_instance
)
if
article
.
is_valid
():
with
transaction
.
atomic
(),
reversion
.
create_revision
():
article
.
save
()
reversion
.
set_user
(
request
.
user
)
reversion
.
set_comment
(
"Champs modifié(s) : %s"
%
', '
.
join
(
field
for
field
in
article
.
changed_data
)
)
article
.
save
()
messages
.
success
(
request
,
"Type d'article modifié"
)
return
redirect
(
reverse
(
'cotisations:index-article'
))
return
form
({
'factureform'
:
article
,
'action_name'
:
'Editer'
},
'cotisations/facture.html'
,
request
)
...
...
@@ -365,9 +334,7 @@ def del_article(request, instances):
article
=
DelArticleForm
(
request
.
POST
or
None
,
instances
=
instances
)
if
article
.
is_valid
():
article_del
=
article
.
cleaned_data
[
'articles'
]
with
transaction
.
atomic
(),
reversion
.
create_revision
():
article_del
.
delete
()
reversion
.
set_user
(
request
.
user
)
article_del
.
delete
()
messages
.
success
(
request
,
"Le/les articles ont été supprimé"
)
return
redirect
(
reverse
(
'cotisations:index-article'
))
return
form
({
'factureform'
:
article
,
'action_name'
:
'Supprimer'
},
'cotisations/facture.html'
,
request
)
...
...
@@ -380,10 +347,7 @@ def add_paiement(request):
via foreign key"""
paiement
=
PaiementForm
(
request
.
POST
or
None
)
if
paiement
.
is_valid
():
with
transaction
.
atomic
(),
reversion
.
create_revision
():
paiement
.
save
()
reversion
.
set_user
(
request
.
user
)
reversion
.
set_comment
(
"Création"
)
paiement
.
save
()
messages
.
success
(
request
,
"Le moyen de paiement a été ajouté"
)
return
redirect
(
reverse
(
'cotisations:index-paiement'
))
return
form
({
'factureform'
:
paiement
,
'action_name'
:
'Ajouter'
},
'cotisations/facture.html'
,
request
)
...
...
@@ -395,14 +359,7 @@ def edit_paiement(request, paiement_instance, paiementid):
"""Edition d'un moyen de paiement"""
paiement
=
PaiementForm
(
request
.
POST
or
None
,
instance
=
paiement_instance
)
if
paiement
.
is_valid
():
with
transaction
.
atomic
(),
reversion
.
create_revision
():
paiement
.
save
()
reversion
.
set_user
(
request
.
user
)
reversion
.
set_comment
(
"Champs modifié(s) : %s"
%
', '
.
join
(
field
for
field
in
paiement
.
changed_data
)
)
paiement
.
save
()
messages
.
success
(
request
,
"Type de paiement modifié"
)
return
redirect
(
reverse
(
'cotisations:index-paiement'
))
return
form
({
'factureform'
:
paiement
,
'action_name'
:
'Editer'
},
'cotisations/facture.html'
,
request
)
...
...
@@ -417,10 +374,7 @@ def del_paiement(request, instances):
paiement_dels
=
paiement
.
cleaned_data
[
'paiements'
]
for
paiement_del
in
paiement_dels
:
try
:
with
transaction
.
atomic
(),
reversion
.
create_revision
():
paiement_del
.
delete
()
reversion
.
set_user
(
request
.
user
)
reversion
.
set_comment
(
"Destruction"
)
paiement_del
.
delete
()
messages
.
success
(
request
,
"Le moyen de paiement a été supprimé"
...
...
@@ -441,10 +395,7 @@ def add_banque(request):
"""Ajoute une banque à la liste des banques"""
banque
=
BanqueForm
(
request
.
POST
or
None
)
if
banque
.
is_valid
():
with
transaction
.
atomic
(),
reversion
.
create_revision
():
banque
.
save
()
reversion
.
set_user
(
request
.
user
)
reversion
.
set_comment
(
"Création"
)
banque
.
save
()
messages
.
success
(
request
,
"La banque a été ajoutée"
)
return
redirect
(
reverse
(
'cotisations:index-banque'
))
return
form
({
'factureform'
:
banque
,
'action_name'
:
'Ajouter'
},
'cotisations/facture.html'
,
request
)
...
...
@@ -456,14 +407,7 @@ def edit_banque(request, banque_instance, banqueid):
"""Edite le nom d'une banque"""
banque
=
BanqueForm
(
request
.
POST
or
None
,
instance
=
banque_instance
)
if
banque
.
is_valid
():
with
transaction
.
atomic
(),
reversion
.
create_revision
():
banque
.
save
()
reversion
.
set_user
(
request
.
user
)
reversion
.
set_comment
(
"Champs modifié(s) : %s"
%
', '
.
join
(
field
for
field
in
banque
.
changed_data
)
)
banque
.
save
()
messages
.
success
(
request
,
"Banque modifiée"
)
return
redirect
(
reverse
(
'cotisations:index-banque'
))
return
form
({
'factureform'
:
banque
,
'action_name'
:
'Editer'
},
'cotisations/facture.html'
,
request
)
...
...
@@ -478,10 +422,7 @@ def del_banque(request, instances):
banque_dels
=
banque
.
cleaned_data
[
'banques'
]
for
banque_del
in
banque_dels
:
try
:
with
transaction
.
atomic
(),
reversion
.
create_revision
():
banque_del
.
delete
()
reversion
.
set_user
(
request
.
user
)
reversion
.
set_comment
(
"Destruction"
)
banque_del
.
delete
()
messages
.
success
(
request
,
"La banque a été supprimée"
)
except
ProtectedError
:
messages
.
error
(
request
,
"La banque %s est affectée à au moins
\
...
...
@@ -519,10 +460,7 @@ def control(request):
facture_list
=
paginator
.
page
(
paginator
.
num
.
pages
)
controlform
=
controlform_set
(
request
.
POST
or
None
,
queryset
=
facture_list
.
object_list
)
if
controlform
.
is_valid
():
with
transaction
.
atomic
(),
reversion
.
create_revision
():
controlform
.
save
()
reversion
.
set_user
(
request
.
user
)
reversion
.
set_comment
(
"Controle trésorier"
)
controlform
.
save
()
return
redirect
(
reverse
(
'cotisations:control'
))
return
render
(
request
,
'cotisations/control.html'
,
{
'facture_list'
:
facture_list
,
...
...
@@ -630,10 +568,7 @@ def new_facture_solde(request, userid):
'users:profil'
,
kwargs
=
{
'userid'
:
userid
}
))
with
transaction
.
atomic
(),
reversion
.
create_revision
():
facture
.
save
()
reversion
.
set_user
(
request
.
user
)
reversion
.
set_comment
(
"Création"
)
facture
.
save
()
for
art_item
in
articles
:
if
art_item
.
cleaned_data
:
article
=
art_item
.
cleaned_data
[
'article'
]
...
...
@@ -646,10 +581,7 @@ def new_facture_solde(request, userid):
duration
=
article
.
duration
,
number
=
quantity
)
with
transaction
.
atomic
(),
reversion
.
create_revision
():
new_vente
.
save
()
reversion
.
set_user
(
request
.
user
)
reversion
.
set_comment
(
"Création"
)
new_vente
.
save
()
if
any
(
art_item
.
cleaned_data
[
'article'
].
type_cotisation
for
art_item
in
articles
if
art_item
.
cleaned_data
):
messages
.
success
(
...
...
machines/forms.py
View file @
1795d26c
...
...
@@ -39,6 +39,7 @@ from django.forms import ModelForm, Form
from
django
import
forms
from
re2o.field_permissions
import
FieldPermissionFormMixin
from
re2o.mixins
import
FormRevMixin
from
.models
import
(
Domain
,
...
...
@@ -61,7 +62,7 @@ from .models import (
)
class
EditMachineForm
(
FieldPermissionFormMixin
,
ModelForm
):
class
EditMachineForm
(
F
ormRevMixin
,
F
ieldPermissionFormMixin
,
ModelForm
):
"""Formulaire d'édition d'une machine"""
class
Meta
:
model
=
Machine
...
...
@@ -79,7 +80,7 @@ class NewMachineForm(EditMachineForm):
fields
=
[
'name'
]
class
EditInterfaceForm
(
FieldPermissionFormMixin
,
ModelForm
):
class
EditInterfaceForm
(
F
ormRevMixin
,
F
ieldPermissionFormMixin
,
ModelForm
):
"""Edition d'une interface. Edition complète"""
class
Meta
:
model
=
Interface
...
...
@@ -125,7 +126,7 @@ class AddInterfaceForm(EditInterfaceForm):
fields
=
[
'type'
,
'ipv4'
,
'mac_address'
,
'details'
]
class
AliasForm
(
ModelForm
):
class
AliasForm
(
FormRevMixin
,
ModelForm
):
"""Ajout d'un alias (et edition), CNAME, contenant nom et extension"""
class
Meta
:
model
=
Domain
...
...
@@ -142,7 +143,7 @@ class AliasForm(ModelForm):
)
class
DomainForm
(
ModelForm
):
class
DomainForm
(
FormRevMixin
,
ModelForm
):
"""Ajout et edition d'un enregistrement de nom, relié à interface"""
class
Meta
:
model
=
Domain
...
...
@@ -158,7 +159,7 @@ class DomainForm(ModelForm):
super
(
DomainForm
,
self
).
__init__
(
*
args
,
prefix
=
prefix
,
**
kwargs
)
class
DelAliasForm
(
Form
):
class
DelAliasForm
(
Form
RevMixin
,
Form
):
"""Suppression d'un ou plusieurs objets alias"""
alias
=
forms
.
ModelMultipleChoiceField
(
queryset
=
Domain
.
objects
.
all
(),
...
...
@@ -174,7 +175,7 @@ class DelAliasForm(Form):
)
class
MachineTypeForm
(
ModelForm
):
class
MachineTypeForm
(
FormRevMixin
,
ModelForm
):
"""Ajout et edition d'un machinetype, relié à un iptype"""
class
Meta
:
model
=
MachineType
...
...
@@ -187,7 +188,7 @@ class MachineTypeForm(ModelForm):
self
.
fields
[
'ip_type'
].
label
=
"Type d'ip relié"
class
DelMachineTypeForm
(
Form
):
class
DelMachineTypeForm
(
Form
RevMixin
,
Form
):
"""Suppression d'un ou plusieurs machinetype"""
machinetypes
=
forms
.
ModelMultipleChoiceField
(
queryset
=
MachineType
.
objects
.
none
(),
...
...
@@ -204,7 +205,7 @@ class DelMachineTypeForm(Form):
self
.
fields
[
'machinetypes'
].
queryset
=
MachineType
.
objects
.
all
()
class
IpTypeForm
(
ModelForm
):
class
IpTypeForm
(
FormRevMixin
,
ModelForm
):
"""Formulaire d'ajout d'un iptype. Pas d'edition de l'ip de start et de
stop après creation"""
class
Meta
:
...
...
@@ -226,7 +227,7 @@ class EditIpTypeForm(IpTypeForm):
'ouverture_ports'
]
class
DelIpTypeForm
(
Form
):
class
DelIpTypeForm
(
Form
RevMixin
,
Form
):
"""Suppression d'un ou plusieurs iptype"""
iptypes
=
forms
.
ModelMultipleChoiceField
(
queryset
=
IpType
.
objects
.
none
(),
...
...
@@ -243,7 +244,7 @@ class DelIpTypeForm(Form):
self
.
fields
[
'iptypes'
].
queryset
=
IpType
.
objects
.
all
()
class
ExtensionForm
(
ModelForm
):
class
ExtensionForm
(
FormRevMixin
,
ModelForm
):
"""Formulaire d'ajout et edition d'une extension"""
class
Meta
:
model
=
Extension
...
...
@@ -258,7 +259,7 @@ class ExtensionForm(ModelForm):
self
.
fields
[
'soa'
].
label
=
'En-tête SOA à utiliser'
class
DelExtensionForm
(
Form
):
class
DelExtensionForm
(
Form
RevMixin
,
Form
):
"""Suppression d'une ou plusieurs extensions"""
extensions
=
forms
.
ModelMultipleChoiceField
(
queryset
=
Extension
.
objects
.
none
(),
...
...
@@ -275,7 +276,7 @@ class DelExtensionForm(Form):
self
.
fields
[
'extensions'
].
queryset
=
Extension
.
objects
.
all
()
class
Ipv6ListForm
(
FieldPermissionFormMixin
,
ModelForm
):
class
Ipv6ListForm
(
F
ormRevMixin
,
F
ieldPermissionFormMixin
,
ModelForm
):
"""Gestion des ipv6 d'une machine"""
class
Meta
:
model
=
Ipv6List
...
...
@@ -286,7 +287,7 @@ class Ipv6ListForm(FieldPermissionFormMixin, ModelForm):
super
(
Ipv6ListForm
,
self
).
__init__
(
*
args
,
prefix
=
prefix
,
**
kwargs
)
class
SOAForm
(
ModelForm
):
class
SOAForm
(
FormRevMixin
,
ModelForm
):
"""Ajout et edition d'un SOA"""
class
Meta
:
model
=
SOA
...
...
@@ -297,7 +298,7 @@ class SOAForm(ModelForm):
super
(
SOAForm
,
self
).
__init__
(
*
args
,
prefix
=
prefix
,
**
kwargs
)
class
DelSOAForm
(
Form
):
class
DelSOAForm
(
Form
RevMixin
,
Form
):
"""Suppression d'un ou plusieurs SOA"""
soa
=
forms
.
ModelMultipleChoiceField
(
queryset
=
SOA
.
objects
.
none
(),
...
...
@@ -314,7 +315,7 @@ class DelSOAForm(Form):
self
.
fields
[
'soa'
].
queryset
=
SOA
.
objects
.
all
()
class
MxForm
(
ModelForm
):
class
MxForm
(
FormRevMixin
,
ModelForm
):
"""Ajout et edition d'un MX"""
class
Meta
:
model
=
Mx
...
...
@@ -327,7 +328,7 @@ class MxForm(ModelForm):
interface_parent
=
None
).
select_related
(
'extension'
)
class
DelMxForm
(
Form
):
class
DelMxForm
(
Form
RevMixin
,
Form
):
"""Suppression d'un ou plusieurs MX"""
mx
=
forms
.
ModelMultipleChoiceField
(
queryset
=
Mx
.
objects
.
none
(),
...
...
@@ -344,7 +345,7 @@ class DelMxForm(Form):
self
.
fields
[
'mx'
].
queryset
=
Mx
.
objects
.
all
()
class
NsForm
(
ModelForm
):
class
NsForm
(
FormRevMixin
,
ModelForm
):
"""Ajout d'un NS pour une zone
On exclue les CNAME dans les objets domain (interdit par la rfc)
donc on prend uniquemet """
...
...
@@ -360,7 +361,7 @@ class NsForm(ModelForm):
).
select_related
(
'extension'
)
class
DelNsForm
(
Form
):
class
DelNsForm
(
Form
RevMixin
,
Form
):
"""Suppresion d'un ou plusieurs NS"""
ns
=
forms
.
ModelMultipleChoiceField
(
queryset
=
Ns
.
objects
.
none
(),
...
...
@@ -377,7 +378,7 @@ class DelNsForm(Form):
self
.
fields
[
'ns'
].
queryset
=
Ns
.
objects
.
all
()
class
TxtForm
(
ModelForm
):
class
TxtForm
(
FormRevMixin
,
ModelForm
):
"""Ajout d'un txt pour une zone"""
class
Meta
:
model
=
Txt
...
...
@@ -388,7 +389,7 @@ class TxtForm(ModelForm):
super
(
TxtForm
,
self
).
__init__
(
*
args
,
prefix
=
prefix
,
**
kwargs
)
class
DelTxtForm
(
Form
):
class
DelTxtForm
(
Form
RevMixin
,
Form
):
"""Suppression d'un ou plusieurs TXT"""
txt
=
forms
.
ModelMultipleChoiceField
(
queryset
=
Txt
.
objects
.
none
(),
...
...
@@ -405,7 +406,7 @@ class DelTxtForm(Form):
self
.
fields
[
'txt'
].
queryset
=
Txt
.
objects
.
all
()
class
SrvForm
(
ModelForm
):
class
SrvForm
(
FormRevMixin
,
ModelForm
):
"""Ajout d'un srv pour une zone"""
class
Meta
:
model
=
Srv
...
...
@@ -416,7 +417,7 @@ class SrvForm(ModelForm):
super
(
SrvForm
,
self
).
__init__
(
*
args
,
prefix
=
prefix
,
**
kwargs
)
class
DelSrvForm
(
Form
):
class
DelSrvForm
(
Form
RevMixin
,
Form
):
"""Suppression d'un ou plusieurs Srv"""
srv
=
forms
.
ModelMultipleChoiceField
(
queryset
=
Srv
.
objects
.
none
(),
...
...
@@ -433,7 +434,7 @@ class DelSrvForm(Form):
self
.
fields
[
'srv'
].
queryset
=
Srv
.
objects
.
all
()
class
NasForm
(
ModelForm
):
class
NasForm
(
FormRevMixin
,
ModelForm
):
"""Ajout d'un type de nas (machine d'authentification,
swicths, bornes...)"""
class
Meta
:
...
...
@@ -445,7 +446,7 @@ class NasForm(ModelForm):
super
(
NasForm
,
self
).
__init__
(
*
args
,
prefix
=
prefix
,
**
kwargs
)
class
DelNasForm
(
Form
):
class
DelNasForm
(
Form
RevMixin
,
Form
):
"""Suppression d'un ou plusieurs nas"""
nas
=
forms
.
ModelMultipleChoiceField
(
queryset
=
Nas
.
objects
.
none
(),
...
...
@@ -462,7 +463,7 @@ class DelNasForm(Form):
self
.
fields
[
'nas'
].
queryset
=
Nas
.
objects
.
all
()
class
ServiceForm
(
ModelForm
):
class
ServiceForm
(
FormRevMixin
,
ModelForm
):
"""Ajout et edition d'une classe de service : dns, dhcp, etc"""
class
Meta
:
model
=
Service
...
...
@@ -482,7 +483,7 @@ class ServiceForm(ModelForm):
return
instance
class
DelServiceForm
(
Form
):
class
DelServiceForm
(
Form
RevMixin
,
Form
):
"""Suppression d'un ou plusieurs service"""
service
=
forms
.
ModelMultipleChoiceField
(
queryset
=
Service
.
objects
.
none
(),
...
...
@@ -499,7 +500,7 @@ class DelServiceForm(Form):
self
.
fields
[
'service'
].
queryset
=
Service
.
objects
.
all
()
class
VlanForm
(
ModelForm
):
class
VlanForm
(
FormRevMixin
,
ModelForm
):
"""Ajout d'un vlan : id, nom"""
class
Meta
:
model
=
Vlan
...
...
@@ -510,7 +511,7 @@ class VlanForm(ModelForm):
super
(
VlanForm
,
self
).
__init__
(
*
args
,
prefix
=
prefix
,
**
kwargs
)
class
DelVlanForm
(
Form
):
class
DelVlanForm
(
Form
RevMixin
,
Form
):
"""Suppression d'un ou plusieurs vlans"""
vlan
=
forms
.
ModelMultipleChoiceField
(
queryset
=
Vlan
.
objects
.
none
(),
...
...
@@ -527,7 +528,7 @@ class DelVlanForm(Form):
self
.
fields
[
'vlan'
].
queryset
=
Vlan
.
objects
.
all
()
class
EditOuverturePortConfigForm
(
ModelForm
):
class
EditOuverturePortConfigForm
(
FormRevMixin
,
ModelForm
):
"""Edition de la liste des profils d'ouverture de ports
pour l'interface"""
class
Meta
:
...
...
@@ -543,7 +544,7 @@ class EditOuverturePortConfigForm(ModelForm):
)
class
EditOuverturePortListForm
(
ModelForm
):
class
EditOuverturePortListForm
(
FormRevMixin
,
ModelForm
):
"""Edition de la liste des ports et profils d'ouverture
des ports"""
class
Meta
:
...
...
machines/models.py
View file @
1795d26c
...
...
@@ -39,13 +39,13 @@ from django.core.validators import MaxValueValidator
from
macaddress.fields
import
MACAddressField
from
re2o.field_permissions
import
FieldPermissionModelMixin
from
re2o.mixins
import
AclMixin
from
re2o.mixins
import
AclMixin
,
RevMixin
import
users.models
import
preferences.models
class
Machine
(
FieldPermissionModelMixin
,
models
.
Model
):
class
Machine
(
RevMixin
,
FieldPermissionModelMixin
,
models
.
Model
):
""" Class définissant une machine, object parent user, objets fils
interfaces"""
PRETTY_NAME
=
"Machine"
...
...
@@ -163,7 +163,7 @@ class Machine(FieldPermissionModelMixin, models.Model):
return
str
(
self
.
user
)
+
' - '
+
str
(
self
.
id
)
+
' - '
+
str
(
self
.
name
)
class
MachineType
(
AclMixin
,
models
.
Model
):
class
MachineType
(
RevMixin
,
AclMixin
,
models
.
Model
):