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
3eda283f
Commit
3eda283f
authored
Aug 26, 2018
by
Gabriel Detraz
Committed by
chirac
Aug 26, 2018
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Correction du problème de vente d'articles + simplification views et forms
parent
48be064b
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
30 additions
and
56 deletions
+30
-56
cotisations/forms.py
cotisations/forms.py
+5
-29
cotisations/models.py
cotisations/models.py
+14
-5
cotisations/views.py
cotisations/views.py
+11
-22
No files found.
cotisations/forms.py
View file @
3eda283f
...
...
@@ -84,15 +84,13 @@ class FactureForm(FieldPermissionFormMixin, FormRevMixin, ModelForm):
return
cleaned_data
class
Select
User
ArticleForm
(
FormRevMixin
,
Form
):
class
SelectArticleForm
(
FormRevMixin
,
Form
):
"""
Form used to select an article during the creation of an invoice for a
member.
"""
article
=
forms
.
ModelChoiceField
(
queryset
=
Article
.
objects
.
filter
(
Q
(
type_user
=
'All'
)
|
Q
(
type_user
=
'Adherent'
)
),
queryset
=
Article
.
objects
.
none
(),
label
=
_
(
"Article"
),
required
=
True
)
...
...
@@ -104,31 +102,9 @@ class SelectUserArticleForm(FormRevMixin, Form):
def
__init__
(
self
,
*
args
,
**
kwargs
):
user
=
kwargs
.
pop
(
'user'
)
super
(
SelectUserArticleForm
,
self
).
__init__
(
*
args
,
**
kwargs
)
self
.
fields
[
'article'
].
queryset
=
Article
.
find_allowed_articles
(
user
)
class
SelectClubArticleForm
(
Form
):
"""
Form used to select an article during the creation of an invoice for a
club.
"""
article
=
forms
.
ModelChoiceField
(
queryset
=
Article
.
objects
.
filter
(
Q
(
type_user
=
'All'
)
|
Q
(
type_user
=
'Club'
)
),
label
=
_
(
"Article"
),
required
=
True
)
quantity
=
forms
.
IntegerField
(
label
=
_
(
"Quantity"
),
validators
=
[
MinValueValidator
(
1
)],
required
=
True
)
def
__init__
(
self
,
user
,
*
args
,
**
kwargs
):
super
(
SelectClubArticleForm
,
self
).
__init__
(
*
args
,
**
kwargs
)
self
.
fields
[
'article'
].
queryset
=
Article
.
find_allowed_articles
(
user
)
target_user
=
kwargs
.
pop
(
'target_user'
)
super
(
SelectArticleForm
,
self
).
__init__
(
*
args
,
**
kwargs
)
self
.
fields
[
'article'
].
queryset
=
Article
.
find_allowed_articles
(
user
,
target_user
)
class
CustomInvoiceForm
(
FormRevMixin
,
ModelForm
):
...
...
cotisations/models.py
View file @
3eda283f
...
...
@@ -222,7 +222,7 @@ class Facture(BaseInvoice):
return
True
,
None
if
len
(
Paiement
.
find_allowed_payments
(
user_request
))
<=
0
:
return
False
,
_
(
"There are no payment method which you can use."
)
if
len
(
Article
.
find_allowed_articles
(
user_request
))
<=
0
:
if
len
(
Article
.
find_allowed_articles
(
user_request
,
user_request
))
<=
0
:
return
False
,
_
(
"There are no article that you can buy."
)
return
True
,
None
...
...
@@ -595,15 +595,24 @@ class Article(RevMixin, AclMixin, models.Model):
)
@
classmethod
def
find_allowed_articles
(
cls
,
user
):
"""Finds every allowed articles for an user.
def
find_allowed_articles
(
cls
,
user
,
target_user
):
"""Finds every allowed articles for an user
, on a target user
.
Args:
user: The user requesting articles.
target_user: The user to sell articles
"""
if
target_user
.
is_class_club
:
objects_pool
=
cls
.
objects
.
filter
(
Q
(
type_user
=
'All'
)
|
Q
(
type_user
=
'Club'
)
)
else
:
objects_pool
=
cls
.
objects
.
filter
(
Q
(
type_user
=
'All'
)
|
Q
(
type_user
=
'Adherent'
)
)
if
user
.
has_perm
(
'cotisations.buy_every_article'
):
return
cls
.
objects
.
all
()
return
cls
.
objects
.
filter
(
available_for_everyone
=
True
)
return
objects_pool
return
objects_pool
.
filter
(
available_for_everyone
=
True
)
class
Banque
(
RevMixin
,
AclMixin
,
models
.
Model
):
...
...
cotisations/views.py
View file @
3eda283f
...
...
@@ -75,8 +75,7 @@ from .forms import (
DelPaiementForm
,
BanqueForm
,
DelBanqueForm
,
SelectUserArticleForm
,
SelectClubArticleForm
,
SelectArticleForm
,
RechargeForm
,
CustomInvoiceForm
)
...
...
@@ -110,16 +109,10 @@ def new_facture(request, user, userid):
creation
=
True
)
if
request
.
user
.
is_class_club
:
article_formset
=
formset_factory
(
SelectClubArticleForm
)(
request
.
POST
or
None
,
form_kwargs
=
{
'user'
:
request
.
user
}
)
else
:
article_formset
=
formset_factory
(
SelectUserArticleForm
)(
request
.
POST
or
None
,
form_kwargs
=
{
'user'
:
request
.
user
}
)
article_formset
=
formset_factory
(
SelectArticleForm
)(
request
.
POST
or
None
,
form_kwargs
=
{
'user'
:
request
.
user
,
'target_user'
:
user
}
)
if
invoice_form
.
is_valid
()
and
article_formset
.
is_valid
():
new_invoice_instance
=
invoice_form
.
save
(
commit
=
False
)
...
...
@@ -199,16 +192,12 @@ def new_custom_invoice(request):
)
# Building the invocie form and the article formset
invoice_form
=
CustomInvoiceForm
(
request
.
POST
or
None
)
if
request
.
user
.
is_class_club
:
articles_formset
=
formset_factory
(
SelectClubArticleForm
)(
request
.
POST
or
None
,
form_kwargs
=
{
'user'
:
request
.
user
}
)
else
:
articles_formset
=
formset_factory
(
SelectUserArticleForm
)(
request
.
POST
or
None
,
form_kwargs
=
{
'user'
:
request
.
user
}
)
article_formset
=
formset_factory
(
SelectArticleForm
)(
request
.
POST
or
None
,
form_kwargs
=
{
'user'
:
request
.
user
,
'target_user'
:
user
}
)
if
invoice_form
.
is_valid
()
and
articles_formset
.
is_valid
():
new_invoice_instance
=
invoice_form
.
save
()
for
art_item
in
articles_formset
:
...
...
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