@ -78,14 +78,7 @@ class NewMachineForm(EditMachineForm):
fields = [ ' name ' ]
class BaseEditMachineForm ( EditMachineForm ) :
""" Edition basique, ne permet que de changer le nom et le statut.
Réservé aux users sans droits spécifiques """
class Meta ( EditMachineForm . Meta ) :
fields = [ ' name ' , ' active ' ]
class EditInterfaceForm ( ModelForm ) :
class EditInterfaceForm ( FieldPermissionFormMixin , ModelForm ) :
""" Edition d ' une interface. Edition complète """
class Meta :
model = Interface
@ -93,16 +86,24 @@ class EditInterfaceForm(ModelForm):
def __init__ ( self , * args , * * kwargs ) :
prefix = kwargs . pop ( ' prefix ' , self . Meta . model . __name__ )
user = kwargs . get ( ' user ' )
super ( EditInterfaceForm , self ) . __init__ ( * args , prefix = prefix , * * kwargs )
self . fields [ ' mac_address ' ] . label = ' Adresse mac '
self . fields [ ' type ' ] . label = ' Type de machine '
self . fields [ ' type ' ] . empty_label = " Séléctionner un type de machine "
if " ipv4 " in self . fields :
self . fields [ ' ipv4 ' ] . empty_label = " Assignation automatique \
de l ' ipv4 "
self . fields [ ' ipv4 ' ] . empty_label = " Assignation automatique de l ' ipv4 "
self . fields [ ' ipv4 ' ] . queryset = IpList . objects . filter (
interface__isnull = True
)
if not IpType . can_use_all ( user ) :
self . fields [ ' ipv4 ' ] . queryset = IpList . objects . filter (
interface__isnull = True
) . filter ( ip_type__in = IpType . objects . filter ( need_infra = False ) )
else :
self . fields [ ' ipv4 ' ] . queryset = IpList . objects . filter (
interface__isnull = True
)
# Add it's own address
self . fields [ ' ipv4 ' ] . queryset | = IpList . objects . filter (
interface = self . instance
@ -110,67 +111,18 @@ class EditInterfaceForm(ModelForm):
if " machine " in self . fields :
self . fields [ ' machine ' ] . queryset = Machine . objects . all ( ) \
. select_related ( ' user ' )
class AddInterfaceForm ( EditInterfaceForm ) :
""" Ajout d ' une interface à une machine. En fonction des droits,
affiche ou non l ' ensemble des ip disponibles " " "
class Meta ( EditInterfaceForm . Meta ) :
fields = [ ' type ' , ' ipv4 ' , ' mac_address ' , ' details ' ]
def __init__ ( self , * args , * * kwargs ) :
user = kwargs . pop ( ' user ' )
super ( AddInterfaceForm , self ) . __init__ ( * args , * * kwargs )
self . fields [ ' ipv4 ' ] . empty_label = " Assignation automatique de l ' ipv4 "
if not IpType . can_use_all ( user ) :
if not MachineType . can_use_all ( user ) :
self . fields [ ' type ' ] . queryset = MachineType . objects . filter (
ip_type__in = IpType . objects . filter ( need_infra = False )
)
self . fields [ ' ipv4 ' ] . queryset = IpList . objects . filter (
interface__isnull = True
) . filter ( ip_type__in = IpType . objects . filter ( need_infra = False ) )
else :
self . fields [ ' ipv4 ' ] . queryset = IpList . objects . filter (
interface__isnull = True
)
class NewInterfaceForm ( EditInterfaceForm ) :
""" Formulaire light, sans choix de l ' ipv4; d ' ajout d ' une interface """
class Meta ( EditInterfaceForm . Meta ) :
fields = [ ' type ' , ' mac_address ' , ' details ' ]
class BaseEdit InterfaceForm( EditInterfaceForm ) :
""" Edition basique d' une interface. En fonction des droits,
ajout e ou non l ' ensemble des ipv4 disponibles (infra) " " "
class AddInterfaceForm ( EditInterfaceForm ) :
""" Ajout d ' une interface à une machine. En fonction des droits,
affiche ou non l ' ensemble des ip disponibles " " "
class Meta ( EditInterfaceForm . Meta ) :
fields = [ ' type ' , ' ipv4 ' , ' mac_address ' , ' details ' ]
def __init__ ( self , * args , * * kwargs ) :
user = kwargs . pop ( ' user ' )
super ( BaseEditInterfaceForm , self ) . __init__ ( * args , * * kwargs )
self . fields [ ' ipv4 ' ] . empty_label = " Assignation automatique de l ' ipv4 "
if not MachineType . can_use_all ( user ) :
self . fields [ ' type ' ] . queryset = MachineType . objects . filter (
ip_type__in = IpType . objects . filter ( need_infra = False )
)
if not IpType . can_use_all ( user ) :
self . fields [ ' ipv4 ' ] . queryset = IpList . objects . filter (
interface__isnull = True
) . filter ( ip_type__in = IpType . objects . filter ( need_infra = False ) )
# Add it's own address
self . fields [ ' ipv4 ' ] . queryset | = IpList . objects . filter (
interface = self . instance
)
else :
self . fields [ ' ipv4 ' ] . queryset = IpList . objects . filter (
interface__isnull = True
)
self . fields [ ' ipv4 ' ] . queryset | = IpList . objects . filter (
interface = self . instance
)
class AliasForm ( ModelForm ) :
""" Ajout d ' un alias (et edition), CNAME, contenant nom et extension """