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
19d984f8
Commit
19d984f8
authored
Dec 14, 2016
by
Gabriel Detraz
Committed by
root
Dec 14, 2016
Browse files
A partir de django 1.9 les filter__in ne sont plus implicites
parent
90df5206
Changes
5
Hide whitespace changes
Inline
Side-by-side
cotisations/models.py
View file @
19d984f8
...
...
@@ -17,14 +17,14 @@ class Facture(models.Model):
control
=
models
.
BooleanField
(
default
=
False
)
def
prix
(
self
):
prix
=
Vente
.
objects
.
all
().
filter
(
facture
=
self
).
aggregate
(
models
.
Sum
(
'prix'
))[
'prix__sum'
]
prix
=
Vente
.
objects
.
filter
(
facture
=
self
).
aggregate
(
models
.
Sum
(
'prix'
))[
'prix__sum'
]
return
prix
def
prix_total
(
self
):
return
Vente
.
objects
.
all
().
filter
(
facture
=
self
).
aggregate
(
total
=
models
.
Sum
(
models
.
F
(
'prix'
)
*
models
.
F
(
'number'
),
output_field
=
models
.
FloatField
()))[
'total'
]
return
Vente
.
objects
.
filter
(
facture
=
self
).
aggregate
(
total
=
models
.
Sum
(
models
.
F
(
'prix'
)
*
models
.
F
(
'number'
),
output_field
=
models
.
FloatField
()))[
'total'
]
def
name
(
self
):
name
=
' - '
.
join
(
vente
.
name
for
vente
in
Vente
.
objects
.
all
().
filter
(
facture
=
self
))
name
=
' - '
.
join
(
vente
.
name
for
vente
in
Vente
.
objects
.
filter
(
facture
=
self
))
return
name
def
__str__
(
self
):
...
...
cotisations/views.py
View file @
19d984f8
...
...
@@ -34,7 +34,7 @@ def create_cotis(vente, user, duration, date_start=False):
""" Update et crée l'objet cotisation associé à une facture, prend en argument l'user, la facture pour la quantitéi, et l'article pour la durée"""
cotisation
=
Cotisation
(
vente
=
vente
)
if
date_start
:
end_adhesion
=
Cotisation
.
objects
.
filter
(
vente
=
Vente
.
objects
.
filter
(
facture
=
Facture
.
objects
.
filter
(
user
=
user
).
exclude
(
valid
=
False
))).
filter
(
date_start__lt
=
date_start
).
aggregate
(
Max
(
'date_end'
))[
'date_end__max'
]
end_adhesion
=
Cotisation
.
objects
.
filter
(
vente
__in
=
Vente
.
objects
.
filter
(
facture
__in
=
Facture
.
objects
.
filter
(
user
=
user
).
exclude
(
valid
=
False
))).
filter
(
date_start__lt
=
date_start
).
aggregate
(
Max
(
'date_end'
))[
'date_end__max'
]
else
:
end_adhesion
=
user
.
end_adhesion
()
date_start
=
date_start
or
timezone
.
now
()
...
...
@@ -330,7 +330,10 @@ def control(request):
page_query
=
Facture
.
objects
.
order_by
(
'date'
).
reverse
().
filter
(
id__in
=
[
facture
.
id
for
facture
in
facture_list
])
controlform
=
controlform_set
(
request
.
POST
or
None
,
queryset
=
page_query
)
if
controlform
.
is_valid
():
controlform
.
save
()
with
transaction
.
atomic
(),
reversion
.
create_revision
():
controlform
.
save
()
reversion
.
set_user
(
request
.
user
)
reversion
.
set_comment
(
"Controle trésorier"
)
return
redirect
(
"/cotisations/control/"
)
return
render
(
request
,
'cotisations/control.html'
,
{
'facture_list'
:
facture_list
,
'controlform'
:
controlform
})
...
...
machines/forms.py
View file @
19d984f8
...
...
@@ -41,8 +41,8 @@ class AddInterfaceForm(EditInterfaceForm):
super
(
AddInterfaceForm
,
self
).
__init__
(
*
args
,
**
kwargs
)
self
.
fields
[
'ipv4'
].
empty_label
=
"Assignation automatique de l'ipv4"
if
not
infra
:
self
.
fields
[
'type'
].
queryset
=
MachineType
.
objects
.
filter
(
ip_type
=
IpType
.
objects
.
filter
(
need_infra
=
False
))
self
.
fields
[
'ipv4'
].
queryset
=
IpList
.
objects
.
filter
(
interface__isnull
=
True
).
filter
(
ip_type
=
IpType
.
objects
.
filter
(
need_infra
=
False
)).
filter
(
need_infra
=
False
)
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
)).
filter
(
need_infra
=
False
)
else
:
self
.
fields
[
'ipv4'
].
queryset
=
IpList
.
objects
.
filter
(
interface__isnull
=
True
)
...
...
@@ -59,8 +59,8 @@ class BaseEditInterfaceForm(EditInterfaceForm):
super
(
BaseEditInterfaceForm
,
self
).
__init__
(
*
args
,
**
kwargs
)
self
.
fields
[
'ipv4'
].
empty_label
=
"Assignation automatique de l'ipv4"
if
not
infra
:
self
.
fields
[
'type'
].
queryset
=
MachineType
.
objects
.
filter
(
ip_type
=
IpType
.
objects
.
filter
(
need_infra
=
False
))
self
.
fields
[
'ipv4'
].
queryset
=
IpList
.
objects
.
filter
(
interface__isnull
=
True
).
filter
(
ip_type
=
IpType
.
objects
.
filter
(
need_infra
=
False
)).
filter
(
need_infra
=
False
)
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
)).
filter
(
need_infra
=
False
)
else
:
self
.
fields
[
'ipv4'
].
queryset
=
IpList
.
objects
.
filter
(
interface__isnull
=
True
)
...
...
machines/views.py
View file @
19d984f8
...
...
@@ -42,14 +42,14 @@ def full_domain_validator(request, interface):
return
True
def
unassign_ips
(
user
):
machines
=
Interface
.
objects
.
filter
(
machine
=
Machine
.
objects
.
filter
(
user
=
user
)
)
machines
=
user
.
user_interfaces
(
)
for
machine
in
machines
:
unassign_ipv4
(
machine
)
return
def
assign_ips
(
user
):
""" Assign une ipv4 aux machines d'un user """
machines
=
Interface
.
objects
.
filter
(
machine
=
Machine
.
objects
.
filter
(
user
=
user
)
)
machines
=
user
.
user_interfaces
(
)
for
machine
in
machines
:
if
not
machine
.
ipv4
:
interface
=
assign_ipv4
(
machine
)
...
...
@@ -475,7 +475,7 @@ 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
=
interface
.
machine
.
user
.
user_interfaces
()).
count
()
>=
MAX_ALIAS
:
if
Alias
.
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'
,)))
...
...
@@ -683,7 +683,7 @@ def interface_list(request):
@
login_required
@
permission_required
(
'serveur'
)
def
alias
(
request
):
alias
=
Alias
.
objects
.
filter
(
interface_parent
=
Interface
.
objects
.
exclude
(
ipv4
=
None
))
alias
=
Alias
.
objects
.
filter
(
interface_parent
__in
=
Interface
.
objects
.
exclude
(
ipv4
=
None
))
seria
=
AliasSerializer
(
alias
,
many
=
True
)
return
JSONResponse
(
seria
.
data
)
...
...
@@ -707,7 +707,7 @@ def mx(request):
@
login_required
@
permission_required
(
'serveur'
)
def
ns
(
request
):
ns
=
Ns
.
objects
.
filter
(
interface
=
Interface
.
objects
.
exclude
(
ipv4
=
None
))
ns
=
Ns
.
objects
.
filter
(
interface
__in
=
Interface
.
objects
.
exclude
(
ipv4
=
None
))
seria
=
NsSerializer
(
ns
,
many
=
True
)
return
JSONResponse
(
seria
.
data
)
...
...
users/models.py
View file @
19d984f8
...
...
@@ -180,7 +180,7 @@ class User(AbstractBaseUser):
return
True
def
end_adhesion
(
self
):
date_max
=
Cotisation
.
objects
.
all
().
filter
(
vente
=
Vente
.
objects
.
all
().
filter
(
facture
=
Facture
.
objects
.
all
().
filter
(
user
=
self
).
exclude
(
valid
=
False
))).
aggregate
(
models
.
Max
(
'date_end'
))[
'date_end__max'
]
date_max
=
Cotisation
.
objects
.
filter
(
vente
__in
=
Vente
.
objects
.
filter
(
facture
__in
=
Facture
.
objects
.
filter
(
user
=
self
).
exclude
(
valid
=
False
))).
aggregate
(
models
.
Max
(
'date_end'
))[
'date_end__max'
]
return
date_max
def
is_adherent
(
self
):
...
...
@@ -194,12 +194,12 @@ class User(AbstractBaseUser):
def
end_ban
(
self
):
""" Renvoie la date de fin de ban d'un user, False sinon """
date_max
=
Ban
.
objects
.
all
().
filter
(
user
=
self
).
aggregate
(
models
.
Max
(
'date_end'
))[
'date_end__max'
]
date_max
=
Ban
.
objects
.
filter
(
user
=
self
).
aggregate
(
models
.
Max
(
'date_end'
))[
'date_end__max'
]
return
date_max
def
end_whitelist
(
self
):
""" Renvoie la date de fin de ban d'un user, False sinon """
date_max
=
Whitelist
.
objects
.
all
().
filter
(
user
=
self
).
aggregate
(
models
.
Max
(
'date_end'
))[
'date_end__max'
]
date_max
=
Whitelist
.
objects
.
filter
(
user
=
self
).
aggregate
(
models
.
Max
(
'date_end'
))[
'date_end__max'
]
return
date_max
def
is_ban
(
self
):
...
...
@@ -228,7 +228,7 @@ class User(AbstractBaseUser):
and
not
self
.
is_ban
()
and
(
self
.
is_adherent
()
or
self
.
is_whitelisted
())
def
user_interfaces
(
self
):
return
Interface
.
objects
.
filter
(
machine
=
Machine
.
objects
.
filter
(
user
=
self
))
return
Interface
.
objects
.
filter
(
machine
__in
=
Machine
.
objects
.
filter
(
user
=
self
))
def
has_module_perms
(
self
,
app_label
):
# Simplest version again
...
...
@@ -267,7 +267,7 @@ class User(AbstractBaseUser):
if
access_refresh
:
user_ldap
.
dialupAccess
=
str
(
self
.
has_access
())
if
mac_refresh
:
user_ldap
.
macs
=
[
inter
.
mac_bare
()
for
inter
in
Interface
.
objects
.
filter
(
machine
=
Machine
.
objects
.
filter
(
user
=
self
))]
user_ldap
.
macs
=
[
inter
.
mac_bare
()
for
inter
in
Interface
.
objects
.
filter
(
machine
__in
=
Machine
.
objects
.
filter
(
user
=
self
))]
user_ldap
.
save
()
def
ldap_del
(
self
):
...
...
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