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
5c04088a
Commit
5c04088a
authored
Dec 24, 2016
by
chirac
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Phase 2 modification domain
parent
4379a4fc
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
103 additions
and
52 deletions
+103
-52
logs/views.py
logs/views.py
+2
-2
machines/admin.py
machines/admin.py
+1
-1
machines/forms.py
machines/forms.py
+10
-11
machines/migrations/0040_remove_interface_dns.py
machines/migrations/0040_remove_interface_dns.py
+18
-0
machines/models.py
machines/models.py
+6
-3
machines/serializers.py
machines/serializers.py
+15
-7
machines/templates/machines/aff_machines.html
machines/templates/machines/aff_machines.html
+4
-4
machines/templates/machines/machine.html
machines/templates/machines/machine.html
+3
-0
machines/views.py
machines/views.py
+43
-23
search/views.py
search/views.py
+1
-1
No files found.
logs/views.py
View file @
5c04088a
...
...
@@ -19,7 +19,7 @@ from reversion.models import Version
from
users.models
import
User
,
ServiceUser
,
Right
,
School
,
ListRight
,
ListShell
,
Ban
,
Whitelist
from
cotisations.models
import
Facture
,
Vente
,
Article
,
Banque
,
Paiement
,
Cotisation
from
machines.models
import
Machine
,
MachineType
,
IpType
,
Extension
,
Interface
,
Alias
,
IpList
from
machines.models
import
Machine
,
MachineType
,
IpType
,
Extension
,
Interface
,
Domain
,
IpList
from
topologie.models
import
Switch
,
Port
,
Room
from
re2o.settings
import
PAGINATION_NUMBER
,
PAGINATION_LARGE_NUMBER
...
...
@@ -99,7 +99,7 @@ def stats_models(request):
'typeip'
:
[
IpType
.
PRETTY_NAME
,
IpType
.
objects
.
count
()],
'extension'
:
[
Extension
.
PRETTY_NAME
,
Extension
.
objects
.
count
()],
'interface'
:
[
Interface
.
PRETTY_NAME
,
Interface
.
objects
.
count
()],
'alias'
:
[
Alias
.
PRETTY_NAME
,
Alias
.
objects
.
count
()],
'alias'
:
[
Domain
.
PRETTY_NAME
,
Domain
.
objects
.
exclude
(
cname
=
None
)
.
count
()],
'iplist'
:
[
IpList
.
PRETTY_NAME
,
IpList
.
objects
.
count
()],
},
'Topologie'
:
{
...
...
machines/admin.py
View file @
5c04088a
...
...
@@ -26,7 +26,7 @@ class IpListAdmin(VersionAdmin):
list_display
=
(
'ipv4'
,
'ip_type'
)
class
InterfaceAdmin
(
VersionAdmin
):
list_display
=
(
'machine'
,
'type'
,
'
dns'
,
'
mac_address'
,
'ipv4'
,
'details'
)
list_display
=
(
'machine'
,
'type'
,
'mac_address'
,
'ipv4'
,
'details'
)
class
DomainAdmin
(
VersionAdmin
):
list_display
=
(
'interface_parent'
,
'name'
,
'extension'
,
'cname'
)
...
...
machines/forms.py
View file @
5c04088a
from
django.forms
import
ModelForm
,
Form
,
ValidationError
from
django
import
forms
from
.models
import
Alias
,
Machine
,
Interface
,
IpList
,
MachineType
,
Extension
,
Mx
,
Ns
,
IpType
from
.models
import
Domain
,
Machine
,
Interface
,
IpList
,
MachineType
,
Extension
,
Mx
,
Ns
,
IpType
from
django.db.models
import
Q
class
EditMachineForm
(
ModelForm
):
...
...
@@ -27,14 +27,13 @@ class EditInterfaceForm(ModelForm):
def
__init__
(
self
,
*
args
,
**
kwargs
):
super
(
EditInterfaceForm
,
self
).
__init__
(
*
args
,
**
kwargs
)
self
.
fields
[
'dns'
].
label
=
'Nom dns de la machine'
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"
class
AddInterfaceForm
(
EditInterfaceForm
):
class
Meta
(
EditInterfaceForm
.
Meta
):
fields
=
[
'ipv4'
,
'mac_address'
,
'
dns'
,
'
type'
,
'details'
]
fields
=
[
'ipv4'
,
'mac_address'
,
'type'
,
'details'
]
def
__init__
(
self
,
*
args
,
**
kwargs
):
infra
=
kwargs
.
pop
(
'infra'
)
...
...
@@ -48,11 +47,11 @@ class AddInterfaceForm(EditInterfaceForm):
class
NewInterfaceForm
(
EditInterfaceForm
):
class
Meta
(
EditInterfaceForm
.
Meta
):
fields
=
[
'mac_address'
,
'
dns'
,
'
type'
,
'details'
]
fields
=
[
'mac_address'
,
'type'
,
'details'
]
class
BaseEditInterfaceForm
(
EditInterfaceForm
):
class
Meta
(
EditInterfaceForm
.
Meta
):
fields
=
[
'ipv4'
,
'mac_address'
,
'
dns'
,
'
type'
,
'details'
]
fields
=
[
'ipv4'
,
'mac_address'
,
'type'
,
'details'
]
def
__init__
(
self
,
*
args
,
**
kwargs
):
infra
=
kwargs
.
pop
(
'infra'
)
...
...
@@ -66,8 +65,8 @@ class BaseEditInterfaceForm(EditInterfaceForm):
class
AliasForm
(
ModelForm
):
class
Meta
:
model
=
Alias
fields
=
[
'
alias
'
,
'extension'
]
model
=
Domain
fields
=
[
'
name
'
,
'extension'
]
def
__init__
(
self
,
*
args
,
**
kwargs
):
infra
=
kwargs
.
pop
(
'infra'
)
...
...
@@ -76,16 +75,16 @@ class AliasForm(ModelForm):
self
.
fields
[
'extension'
].
queryset
=
Extension
.
objects
.
filter
(
need_infra
=
False
)
class
DelAliasForm
(
ModelForm
):
alias
=
forms
.
ModelMultipleChoiceField
(
queryset
=
Alias
.
objects
.
all
(),
label
=
"Alias actuels"
,
widget
=
forms
.
CheckboxSelectMultiple
)
alias
=
forms
.
ModelMultipleChoiceField
(
queryset
=
Domain
.
objects
.
all
(),
label
=
"Alias actuels"
,
widget
=
forms
.
CheckboxSelectMultiple
)
def
__init__
(
self
,
*
args
,
**
kwargs
):
interface
=
kwargs
.
pop
(
'interface'
)
super
(
DelAliasForm
,
self
).
__init__
(
*
args
,
**
kwargs
)
self
.
fields
[
'alias'
].
queryset
=
Alias
.
objects
.
filter
(
interface_parent
=
interface
)
self
.
fields
[
'alias'
].
queryset
=
Domain
.
objects
.
filter
(
cname__in
=
Domain
.
objects
.
filter
(
interface_parent
=
interface
)
)
class
Meta
:
exclude
=
[
'interface_parent'
,
'
alias'
,
'extension
'
]
model
=
Alias
exclude
=
[
'interface_parent'
,
'
name'
,
'extension'
,
'cname
'
]
model
=
Domain
class
MachineTypeForm
(
ModelForm
):
class
Meta
:
...
...
machines/migrations/0040_remove_interface_dns.py
0 → 100644
View file @
5c04088a
# -*- coding: utf-8 -*-
from
__future__
import
unicode_literals
from
django.db
import
migrations
,
models
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'machines'
,
'0039_auto_20161224_1732'
),
]
operations
=
[
migrations
.
RemoveField
(
model_name
=
'interface'
,
name
=
'dns'
,
),
]
machines/models.py
View file @
5c04088a
...
...
@@ -78,7 +78,6 @@ class Interface(models.Model):
machine
=
models
.
ForeignKey
(
'Machine'
,
on_delete
=
models
.
CASCADE
)
type
=
models
.
ForeignKey
(
'MachineType'
,
on_delete
=
models
.
PROTECT
)
details
=
models
.
CharField
(
max_length
=
255
,
blank
=
True
)
dns
=
models
.
CharField
(
help_text
=
"Obligatoire et unique, ne doit pas comporter de points"
,
max_length
=
255
,
unique
=
True
)
def
is_active
(
self
):
""" Renvoie si une interface doit avoir accès ou non """
...
...
@@ -93,7 +92,11 @@ class Interface(models.Model):
self
.
mac_address
=
str
(
EUI
(
self
.
mac_address
))
or
None
def
__str__
(
self
):
return
self
.
domain_set
.
all
().
first
()
try
:
domain
=
self
.
domain
except
:
domain
=
None
return
str
(
domain
)
class
Domain
(
models
.
Model
):
PRETTY_NAME
=
"Domaine dns"
...
...
@@ -109,7 +112,7 @@ class Domain(models.Model):
def
clean
(
self
):
if
self
.
interface_parent
and
self
.
cname
:
raise
ValidationError
(
"On ne peut créer à la fois A et CNAME"
)
if
self
.
related
==
self
:
if
self
.
cname
==
self
:
raise
ValidationError
(
"On ne peut créer un cname sur lui même"
)
def
__str__
(
self
):
...
...
machines/serializers.py
View file @
5c04088a
#Augustin Lemesle
from
rest_framework
import
serializers
from
machines.models
import
Interface
,
IpType
,
Extension
,
IpList
,
MachineType
,
Alias
,
Mx
,
Ns
from
machines.models
import
Interface
,
IpType
,
Extension
,
IpList
,
MachineType
,
Domain
,
Mx
,
Ns
class
IpTypeField
(
serializers
.
RelatedField
):
def
to_representation
(
self
,
value
):
...
...
@@ -16,10 +16,14 @@ class IpListSerializer(serializers.ModelSerializer):
class
InterfaceSerializer
(
serializers
.
ModelSerializer
):
ipv4
=
IpListSerializer
(
read_only
=
True
)
dns
=
serializers
.
SerializerMethodField
(
'get_dns'
)
class
Meta
:
model
=
Interface
fields
=
(
'ipv4'
,
'mac_address'
,
'dns'
)
fields
=
(
'ipv4'
,
'mac_address'
)
def
get_dns
(
self
,
obj
):
return
obj
.
domain_set
.
all
().
first
()
class
ExtensionNameField
(
serializers
.
RelatedField
):
def
to_representation
(
self
,
value
):
...
...
@@ -70,16 +74,20 @@ class NsSerializer(serializers.ModelSerializer):
def
get_interface_name
(
self
,
obj
):
return
obj
.
interface
.
dns
+
obj
.
interface
.
ipv4
.
ip_type
.
extension
.
name
class
Alias
Serializer
(
serializers
.
ModelSerializer
):
class
Domain
Serializer
(
serializers
.
ModelSerializer
):
interface_parent
=
serializers
.
SerializerMethodField
(
'get_interface_name'
)
extension
=
serializers
.
SerializerMethodField
(
'get_zone_name'
)
cname
=
serializers
.
SerializerMethodField
(
'get_cname'
)
class
Meta
:
model
=
Alias
fields
=
(
'interface_parent'
,
'
alias'
,
'extension
'
)
model
=
Domain
fields
=
(
'interface_parent'
,
'
name'
,
'extension'
,
'cname
'
)
def
get_zone_name
(
self
,
obj
):
return
obj
.
extension
.
name
def
get_cname
(
self
,
obj
):
return
obj
.
cname
.
name
+
obj
.
cname
.
extension
.
name
def
get_interface_name
(
self
,
obj
):
return
obj
.
interface_parent
.
dns
+
obj
.
interface_parent
.
ipv4
.
ip_type
.
extension
.
name
return
obj
.
name
+
obj
.
extension
.
name
machines/templates/machines/aff_machines.html
View file @
5c04088a
...
...
@@ -28,13 +28,13 @@
</td>
{% endif %}
<td>
{% if interface.
alias_set
.all %}
{% if interface.
domain.related_domain
.all %}
<div
class=
"dropdown"
>
<button
class=
"btn btn-default dropdown-toggle"
type=
"button"
id=
"editioninterface"
data-toggle=
"dropdown"
aria-haspopup=
"true"
aria-expanded=
"true"
>
{{ interface.d
ns
}}
<span
class=
"caret"
></span>
{{ interface.d
omain
}}
<span
class=
"caret"
></span>
</button>
<ul
class=
"dropdown-menu"
aria-labelledby=
"editioninterface"
>
{% for al in interface.
alias_set
.all %}
{% for al in interface.
domain.related_domain
.all %}
<li>
<a
href=
"http://{{ al }}"
>
{{ al }}
...
...
@@ -45,7 +45,7 @@
</ul>
</div>
{% else %}
{{ interface.d
ns
}}
{{ interface.d
omain
}}
{% endif %}
</td>
<td>
{{ interface.type }}
</td>
...
...
machines/templates/machines/machine.html
View file @
5c04088a
...
...
@@ -19,6 +19,9 @@
{% if interfaceform %}
{% bootstrap_form interfaceform %}
{% endif %}
{% if domainform %}
{% bootstrap_form domainform %}
{% endif %}
{% bootstrap_button "Créer ou modifier" button_type="submit" icon="star" %}
</form>
<br
/>
...
...
machines/views.py
View file @
5c04088a
...
...
@@ -16,21 +16,21 @@ from django.contrib.auth import authenticate, login
from
django.views.decorators.csrf
import
csrf_exempt
from
rest_framework.renderers
import
JSONRenderer
from
machines.serializers
import
InterfaceSerializer
,
TypeSerializer
,
Alias
Serializer
,
MxSerializer
,
ExtensionSerializer
,
NsSerializer
from
machines.serializers
import
InterfaceSerializer
,
TypeSerializer
,
Domain
Serializer
,
MxSerializer
,
ExtensionSerializer
,
NsSerializer
from
reversion
import
revisions
as
reversion
from
reversion.models
import
Version
import
re
from
.forms
import
NewMachineForm
,
EditMachineForm
,
EditInterfaceForm
,
AddInterfaceForm
,
MachineTypeForm
,
DelMachineTypeForm
,
ExtensionForm
,
DelExtensionForm
,
BaseEditInterfaceForm
,
BaseEditMachineForm
from
.forms
import
IpTypeForm
,
DelIpTypeForm
,
AliasForm
,
DelAliasForm
,
NsForm
,
DelNsForm
,
MxForm
,
DelMxForm
from
.models
import
IpType
,
Machine
,
Interface
,
IpList
,
MachineType
,
Extension
,
Mx
,
Ns
,
Alias
from
.models
import
IpType
,
Machine
,
Interface
,
IpList
,
MachineType
,
Extension
,
Mx
,
Ns
,
Domain
from
users.models
import
User
from
re2o.settings
import
PAGINATION_NUMBER
,
PAGINATION_LARGE_NUMBER
,
MAX_INTERFACES
,
MAX_ALIAS
def
full_domain_validator
(
request
,
interface
):
def
full_domain_validator
(
request
,
domain
):
""" Validation du nom de domaine, extensions dans type de machine, prefixe pas plus long que 63 caractères """
HOSTNAME_LABEL_PATTERN
=
re
.
compile
(
"(?!-)[A-Z\d-]+(?<!-)$"
,
re
.
IGNORECASE
)
dns
=
interface
.
dns
.
lower
()
dns
=
domain
.
name
.
lower
()
if
len
(
dns
)
>
63
:
messages
.
error
(
request
,
"Le nom de domaine %s est trop long (maximum de 63 caractères)."
%
dns
)
...
...
@@ -99,11 +99,13 @@ def new_machine(request, userid):
return
redirect
(
"/users/profil/"
+
str
(
request
.
user
.
id
))
machine
=
NewMachineForm
(
request
.
POST
or
None
)
interface
=
AddInterfaceForm
(
request
.
POST
or
None
,
infra
=
request
.
user
.
has_perms
((
'infra'
,)))
domain
=
AliasForm
(
request
.
POST
or
None
,
infra
=
request
.
user
.
has_perms
((
'infra'
,)))
if
machine
.
is_valid
()
and
interface
.
is_valid
():
new_machine
=
machine
.
save
(
commit
=
False
)
new_machine
.
user
=
user
new_interface
=
interface
.
save
(
commit
=
False
)
if
full_domain_validator
(
request
,
new_interface
):
new_domain
=
domain
.
save
(
commit
=
False
)
if
full_domain_validator
(
request
,
new_domain
):
with
transaction
.
atomic
(),
reversion
.
create_revision
():
new_machine
.
save
()
reversion
.
set_user
(
request
.
user
)
...
...
@@ -117,9 +119,14 @@ def new_machine(request, userid):
new_interface
.
save
()
reversion
.
set_user
(
request
.
user
)
reversion
.
set_comment
(
"Création"
)
new_domain
.
interface_parent
=
new_interface
with
transaction
.
atomic
(),
reversion
.
create_revision
():
new_domain
.
save
()
reversion
.
set_user
(
request
.
user
)
reversion
.
set_comment
(
"Création"
)
messages
.
success
(
request
,
"La machine a été crée"
)
return
redirect
(
"/users/profil/"
+
userid
)
return
form
({
'machineform'
:
machine
,
'interfaceform'
:
interface
},
'machines/machine.html'
,
request
)
return
form
({
'machineform'
:
machine
,
'interfaceform'
:
interface
,
'domainform'
:
domain
},
'machines/machine.html'
,
request
)
@
login_required
def
edit_interface
(
request
,
interfaceid
):
...
...
@@ -137,10 +144,12 @@ def edit_interface(request, interfaceid):
else
:
machine_form
=
EditMachineForm
(
request
.
POST
or
None
,
instance
=
interface
.
machine
)
interface_form
=
EditInterfaceForm
(
request
.
POST
or
None
,
instance
=
interface
)
if
machine_form
.
is_valid
()
and
interface_form
.
is_valid
():
domain_form
=
AliasForm
(
request
.
POST
or
None
,
infra
=
request
.
user
.
has_perms
((
'infra'
,)),
instance
=
interface
.
domain
)
if
machine_form
.
is_valid
()
and
interface_form
.
is_valid
()
and
domain_form
.
is_valid
():
new_interface
=
interface_form
.
save
(
commit
=
False
)
new_machine
=
machine_form
.
save
(
commit
=
False
)
if
full_domain_validator
(
request
,
new_interface
):
new_domain
=
domain_form
.
save
(
commit
=
False
)
if
full_domain_validator
(
request
,
new_domain
):
with
transaction
.
atomic
(),
reversion
.
create_revision
():
new_machine
.
save
()
reversion
.
set_user
(
request
.
user
)
...
...
@@ -151,9 +160,13 @@ def edit_interface(request, interfaceid):
new_interface
.
save
()
reversion
.
set_user
(
request
.
user
)
reversion
.
set_comment
(
"Champs modifié(s) : %s"
%
', '
.
join
(
field
for
field
in
interface_form
.
changed_data
))
with
transaction
.
atomic
(),
reversion
.
create_revision
():
new_domain
.
save
()
reversion
.
set_user
(
request
.
user
)
reversion
.
set_comment
(
"Champs modifié(s) : %s"
%
', '
.
join
(
field
for
field
in
domain_form
.
changed_data
))
messages
.
success
(
request
,
"La machine a été modifiée"
)
return
redirect
(
"/users/profil/"
+
str
(
interface
.
machine
.
user
.
id
))
return
form
({
'machineform'
:
machine_form
,
'interfaceform'
:
interface_form
},
'machines/machine.html'
,
request
)
return
form
({
'machineform'
:
machine_form
,
'interfaceform'
:
interface_form
,
'domainform'
:
domain_form
},
'machines/machine.html'
,
request
)
@
login_required
def
del_machine
(
request
,
machineid
):
...
...
@@ -189,10 +202,12 @@ def new_interface(request, machineid):
messages
.
error
(
request
,
"Vous avez atteint le maximum d'interfaces autorisées que vous pouvez créer vous même (%s) "
%
MAX_INTERFACES
)
return
redirect
(
"/users/profil/"
+
str
(
request
.
user
.
id
))
interface_form
=
AddInterfaceForm
(
request
.
POST
or
None
,
infra
=
request
.
user
.
has_perms
((
'infra'
,)))
domain_form
=
AliasForm
(
request
.
POST
or
None
,
infra
=
request
.
user
.
has_perms
((
'infra'
,)))
if
interface_form
.
is_valid
():
new_interface
=
interface_form
.
save
(
commit
=
False
)
new_interface
.
machine
=
machine
if
full_domain_validator
(
request
,
new_interface
):
new_domain
=
domain_form
.
save
(
commit
=
False
)
if
full_domain_validator
(
request
,
new_domain
):
if
free_ip
(
new_interface
.
type
.
ip_type
)
and
not
new_interface
.
ipv4
:
new_interface
=
assign_ipv4
(
new_interface
)
elif
not
new_interface
.
ipv4
:
...
...
@@ -201,9 +216,14 @@ def new_interface(request, machineid):
new_interface
.
save
()
reversion
.
set_user
(
request
.
user
)
reversion
.
set_comment
(
"Création"
)
new_domain
.
interface_parent
=
new_interface
with
transaction
.
atomic
(),
reversion
.
create_revision
():
new_domain
.
save
()
reversion
.
set_user
(
request
.
user
)
reversion
.
set_comment
(
"Création"
)
messages
.
success
(
request
,
"L'interface a été ajoutée"
)
return
redirect
(
"/users/profil/"
+
str
(
machine
.
user
.
id
))
return
form
({
'interfaceform'
:
interface_form
},
'machines/machine.html'
,
request
)
return
form
({
'interfaceform'
:
interface_form
,
'domainform'
:
domain_form
},
'machines/machine.html'
,
request
)
@
login_required
def
del_interface
(
request
,
interfaceid
):
...
...
@@ -478,13 +498,13 @@ def add_alias(request, interfaceid):
if
interface
.
machine
.
user
!=
request
.
user
:
messages
.
error
(
request
,
"Vous ne pouvez pas ajouter un alias à une machine d'un autre user que vous sans droit"
)
return
redirect
(
"/users/profil/"
+
str
(
request
.
user
.
id
))
if
Alias
.
objects
.
filter
(
interface_parent__in
=
interface
.
machine
.
user
.
user_interfaces
(
)).
count
()
>=
MAX_ALIAS
:
if
Domain
.
objects
.
filter
(
cname__in
=
Domain
.
objects
.
filter
(
interface_parent__in
=
interface
.
machine
.
user
.
user_interfaces
()
)).
count
()
>=
MAX_ALIAS
:
messages
.
error
(
request
,
"Vous avez atteint le maximum d'alias autorisées que vous pouvez créer vous même (%s) "
%
MAX_ALIAS
)
return
redirect
(
"/users/profil/"
+
str
(
request
.
user
.
id
))
alias
=
AliasForm
(
request
.
POST
or
None
,
infra
=
request
.
user
.
has_perms
((
'infra'
,)))
if
alias
.
is_valid
():
alias
=
alias
.
save
(
commit
=
False
)
alias
.
interface_parent
=
interface
alias
.
cname
=
interface
.
domain
with
transaction
.
atomic
(),
reversion
.
create_revision
():
alias
.
save
()
reversion
.
set_user
(
request
.
user
)
...
...
@@ -496,11 +516,11 @@ def add_alias(request, interfaceid):
@
login_required
def
edit_alias
(
request
,
aliasid
):
try
:
alias_instance
=
Alias
.
objects
.
get
(
pk
=
aliasid
)
except
Alias
.
DoesNotExist
:
alias_instance
=
Domain
.
objects
.
get
(
pk
=
aliasid
)
except
Domain
.
DoesNotExist
:
messages
.
error
(
request
,
u
"Entrée inexistante"
)
return
redirect
(
"/machines/index_extension/"
)
if
not
request
.
user
.
has_perms
((
'cableur'
,))
and
alias_instance
.
interface_parent
.
machine
.
user
!=
request
.
user
:
if
not
request
.
user
.
has_perms
((
'cableur'
,))
and
alias_instance
.
cname
.
interface_parent
.
machine
.
user
!=
request
.
user
:
messages
.
error
(
request
,
"Vous ne pouvez pas ajouter un alias à une machine d'un autre user que vous sans droit"
)
return
redirect
(
"/users/profil/"
+
str
(
request
.
user
.
id
))
alias
=
AliasForm
(
request
.
POST
or
None
,
instance
=
alias_instance
,
infra
=
request
.
user
.
has_perms
((
'infra'
,)))
...
...
@@ -510,7 +530,7 @@ def edit_alias(request, aliasid):
reversion
.
set_user
(
request
.
user
)
reversion
.
set_comment
(
"Champs modifié(s) : %s"
%
', '
.
join
(
field
for
field
in
alias
.
changed_data
))
messages
.
success
(
request
,
"Alias modifié"
)
return
redirect
(
"/machines/index_alias/"
+
str
(
alias_instance
.
interface_parent
.
id
))
return
redirect
(
"/machines/index_alias/"
+
str
(
alias_instance
.
cname
.
interface_parent
.
id
))
return
form
({
'machineform'
:
alias
},
'machines/machine.html'
,
request
)
@
login_required
...
...
@@ -583,7 +603,7 @@ def index_alias(request, interfaceid):
if
not
request
.
user
.
has_perms
((
'cableur'
,))
and
interface
.
machine
.
user
!=
request
.
user
:
messages
.
error
(
request
,
"Vous ne pouvez pas éditer une machine d'un autre user que vous sans droit"
)
return
redirect
(
"/users/profil/"
+
str
(
request
.
user
.
id
))
alias_list
=
Alias
.
objects
.
filter
(
interface_parent
=
interface
).
order_by
(
'alias
'
)
alias_list
=
Domain
.
objects
.
filter
(
cname
=
Domain
.
objects
.
filter
(
interface_parent
=
interface
)).
order_by
(
'name
'
)
return
render
(
request
,
'machines/index_alias.html'
,
{
'alias_list'
:
alias_list
,
'interface_id'
:
interfaceid
})
@
login_required
...
...
@@ -608,11 +628,11 @@ def history(request, object, id):
return
redirect
(
"/users/profil/"
+
str
(
request
.
user
.
id
))
elif
object
==
'alias'
:
try
:
object_instance
=
Alias
.
objects
.
get
(
pk
=
id
)
except
Alias
.
DoesNotExist
:
object_instance
=
Domain
.
objects
.
get
(
pk
=
id
)
except
Domain
.
DoesNotExist
:
messages
.
error
(
request
,
"Alias inexistant"
)
return
redirect
(
"/machines/"
)
if
not
request
.
user
.
has_perms
((
'cableur'
,))
and
object_instance
.
interface_parent
.
machine
.
user
!=
request
.
user
:
if
not
request
.
user
.
has_perms
((
'cableur'
,))
and
object_instance
.
cname
.
interface_parent
.
machine
.
user
!=
request
.
user
:
messages
.
error
(
request
,
"Vous ne pouvez pas afficher l'historique d'un alias d'un autre user que vous sans droit cableur"
)
return
redirect
(
"/users/profil/"
+
str
(
request
.
user
.
id
))
elif
object
==
'machinetype'
and
request
.
user
.
has_perms
((
'cableur'
,)):
...
...
@@ -686,8 +706,8 @@ def interface_list(request):
@
login_required
@
permission_required
(
'serveur'
)
def
alias
(
request
):
alias
=
Alias
.
objects
.
filter
(
interface_parent__in
=
Interface
.
objects
.
exclude
(
ipv4
=
None
))
seria
=
Alias
Serializer
(
alias
,
many
=
True
)
alias
=
Domain
.
objects
.
filter
(
interface_parent
=
None
).
filter
(
cname
=
Domain
.
objects
.
filter
(
interface_parent__in
=
Interface
.
objects
.
exclude
(
ipv4
=
None
)
))
seria
=
Domain
Serializer
(
alias
,
many
=
True
)
return
JSONResponse
(
seria
.
data
)
@
csrf_exempt
...
...
search/views.py
View file @
5c04088a
...
...
@@ -55,7 +55,7 @@ def search_result(search, type, request):
if
i
==
'0'
:
recherche
[
'users_list'
]
=
User
.
objects
.
filter
((
Q
(
room__name__icontains
=
search
)
|
Q
(
pseudo__icontains
=
search
)
|
Q
(
name__icontains
=
search
)
|
Q
(
surname__icontains
=
search
))
&
query1
).
order_by
(
'state'
,
'surname'
)
if
i
==
'1'
:
data
=
Interface
.
objects
.
filter
(
Q
(
machine__user__pseudo__icontains
=
search
)
|
Q
(
machine__user__name__icontains
=
search
)
|
Q
(
machine__user__surname__icontains
=
search
)
|
Q
(
dns__icontains
=
search
)
|
Q
(
mac_address__icontains
=
search
)
|
Q
(
ipv4__ipv4__icontains
=
search
))
data
=
Interface
.
objects
.
filter
(
Q
(
machine__user__pseudo__icontains
=
search
)
|
Q
(
machine__user__name__icontains
=
search
)
|
Q
(
machine__user__surname__icontains
=
search
)
|
Q
(
mac_address__icontains
=
search
)
|
Q
(
ipv4__ipv4__icontains
=
search
))
for
d
in
data
:
recherche
[
'machines_list'
].
append
(
d
.
machine
)
if
i
==
'2'
:
...
...
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