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
d8dbf46d
Commit
d8dbf46d
authored
Sep 29, 2017
by
Maël Kervella
Committed by
Pierre Cadart
Sep 29, 2017
Browse files
Fonction pour proposer un nom non-existant pour une nouvelle interface
parent
edca49dc
Changes
3
Hide whitespace changes
Inline
Side-by-side
machines/forms.py
View file @
d8dbf46d
...
...
@@ -107,11 +107,11 @@ class DomainForm(AliasForm):
fields
=
[
'name'
]
def
__init__
(
self
,
*
args
,
**
kwargs
):
if
'
name_
user'
in
kwargs
:
name_
user
=
kwargs
.
pop
(
'
name_
user'
)
if
'user'
in
kwargs
:
user
=
kwargs
.
pop
(
'user'
)
nb_machine
=
kwargs
.
pop
(
'nb_machine'
)
initial
=
kwargs
.
get
(
'initial'
,
{})
initial
[
'name'
]
=
name_user
.
lower
()
+
str
(
nb_machine
)
initial
[
'name'
]
=
user
.
get_next_domain_name
(
)
kwargs
[
'initial'
]
=
initial
super
(
DomainForm
,
self
).
__init__
(
*
args
,
**
kwargs
)
...
...
machines/views.py
View file @
d8dbf46d
...
...
@@ -93,7 +93,7 @@ def new_machine(request, userid):
machine
=
NewMachineForm
(
request
.
POST
or
None
)
interface
=
AddInterfaceForm
(
request
.
POST
or
None
,
infra
=
request
.
user
.
has_perms
((
'infra'
,)))
nb_machine
=
Interface
.
objects
.
filter
(
machine__user
=
userid
).
count
()
domain
=
DomainForm
(
request
.
POST
or
None
,
name_
user
=
user
.
pseudo
.
replace
(
'_'
,
'-'
)
,
nb_machine
=
nb_machine
)
domain
=
DomainForm
(
request
.
POST
or
None
,
user
=
user
,
nb_machine
=
nb_machine
)
if
machine
.
is_valid
()
and
interface
.
is_valid
():
new_machine
=
machine
.
save
(
commit
=
False
)
new_machine
.
user
=
user
...
...
users/models.py
View file @
d8dbf46d
...
...
@@ -50,7 +50,7 @@ from django.contrib.auth.models import AbstractBaseUser, BaseUserManager
from
django.core.validators
import
MinLengthValidator
from
topologie.models
import
Room
from
cotisations.models
import
Cotisation
,
Facture
,
Paiement
,
Vente
from
machines.models
import
Domain
,
Interface
,
MachineType
,
Machine
,
Nas
,
MachineType
,
regen
from
machines.models
import
Domain
,
Interface
,
MachineType
,
Machine
,
Nas
,
MachineType
,
Extension
,
regen
from
preferences.models
import
GeneralOption
,
AssoOption
,
OptionalUser
,
OptionalMachine
,
MailMessageOption
now
=
timezone
.
now
()
...
...
@@ -473,7 +473,7 @@ class User(AbstractBaseUser):
interface_cible
.
clean
()
machine_parent
.
clean
()
domain
=
Domain
()
domain
.
name
=
self
.
pseudo
.
replace
(
'_'
,
'-'
).
lower
()
+
str
(
all_machines
.
count
()
)
domain
.
name
=
self
.
get_next_domain_name
()
domain
.
interface_parent
=
interface_cible
domain
.
clean
()
machine_parent
.
save
()
...
...
@@ -494,6 +494,23 @@ class User(AbstractBaseUser):
self
.
pwd_ntlm
=
hashNT
(
password
)
return
def
get_next_domain_name
(
self
):
"""Look for an available name for a new interface for
this user by trying "pseudo0", "pseudo1", "pseudo2", ...
"""
def
simple_pseudo
():
return
self
.
pseudo
.
replace
(
'_'
,
'-'
).
lower
()
def
composed_pseudo
(
n
):
return
simple_pseudo
()
+
str
(
n
)
num
=
0
while
Domain
.
objects
.
filter
(
name
=
composed_pseudo
(
num
))
:
num
+=
1
return
composed_pseudo
(
num
)
def
__str__
(
self
):
return
self
.
pseudo
...
...
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