Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
AE
Sith
Commits
84364d90
Commit
84364d90
authored
Aug 18, 2016
by
Skia
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Improve counter app and migrate products/producttypes/refillings/sellings
parent
d4f87e75
Pipeline
#118
failed with stage
in 3 minutes and 14 seconds
Changes
14
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
337 additions
and
50 deletions
+337
-50
core/templates/core/user_account.jinja
core/templates/core/user_account.jinja
+1
-1
counter/migrations/0004_auto_20160817_1655.py
counter/migrations/0004_auto_20160817_1655.py
+29
-0
counter/migrations/0005_auto_20160817_2251.py
counter/migrations/0005_auto_20160817_2251.py
+24
-0
counter/migrations/0006_auto_20160817_2253.py
counter/migrations/0006_auto_20160817_2253.py
+19
-0
counter/migrations/0007_selling_club.py
counter/migrations/0007_selling_club.py
+21
-0
counter/migrations/0008_auto_20160818_0231.py
counter/migrations/0008_auto_20160818_0231.py
+19
-0
counter/models.py
counter/models.py
+7
-6
counter/templates/counter/counter_edit.jinja
counter/templates/counter/counter_edit.jinja
+0
-13
counter/views.py
counter/views.py
+3
-3
launderette/views.py
launderette/views.py
+1
-1
locale/fr/LC_MESSAGES/django.mo
locale/fr/LC_MESSAGES/django.mo
+0
-0
locale/fr/LC_MESSAGES/django.po
locale/fr/LC_MESSAGES/django.po
+15
-8
migrate.py
migrate.py
+187
-13
sith/settings_sample.py
sith/settings_sample.py
+11
-5
No files found.
core/templates/core/user_account.jinja
View file @
84364d90
...
...
@@ -22,7 +22,7 @@
{%
for
i
in
customer.refillings.all
()
%}
<tr>
<td>
{{
i.date
|
localtime
|
date
(
DATETIME_FORMAT
)
}}
-
{{
i.date
|
localtime
|
time
(
DATETIME_FORMAT
)
}}
</td>
<td>
{{
i.operator
}}
</td>
<td>
<a
href=
"
{{
i.operator
.get_absolute_url
()
}}
"
>
{{
i.operator.get_display_name
()
}}
</a>
</td>
<td>
{{
i.amount
}}
€
</td>
</tr>
{%
endfor
%}
...
...
counter/migrations/0004_auto_20160817_1655.py
0 → 100644
View file @
84364d90
# -*- coding: utf-8 -*-
from
__future__
import
unicode_literals
from
django.db
import
migrations
,
models
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'counter'
,
'0003_auto_20160814_1634'
),
]
operations
=
[
migrations
.
AlterField
(
model_name
=
'counter'
,
name
=
'type'
,
field
=
models
.
CharField
(
choices
=
[(
'BAR'
,
'Bar'
),
(
'OFFICE'
,
'Office'
),
(
'EBOUTIC'
,
'Eboutic'
)],
verbose_name
=
'counter type'
,
max_length
=
255
),
),
migrations
.
AlterField
(
model_name
=
'refilling'
,
name
=
'bank'
,
field
=
models
.
CharField
(
default
=
'OTHER'
,
choices
=
[(
'OTHER'
,
'Autre'
),
(
'SOCIETE-GENERALE'
,
'Société générale'
),
(
'BANQUE-POPULAIRE'
,
'Banque populaire'
),
(
'BNP'
,
'BNP'
),
(
'CAISSE-EPARGNE'
,
"Caisse d'épargne"
),
(
'CIC'
,
'CIC'
),
(
'CREDIT-AGRICOLE'
,
'Crédit Agricole'
),
(
'CREDIT-MUTUEL'
,
'Credit Mutuel'
),
(
'CREDIT-LYONNAIS'
,
'Credit Lyonnais'
),
(
'LA-POSTE'
,
'La Poste'
)],
verbose_name
=
'bank'
,
max_length
=
255
),
),
migrations
.
AlterField
(
model_name
=
'refilling'
,
name
=
'payment_method'
,
field
=
models
.
CharField
(
default
=
'CASH'
,
choices
=
[(
'CHECK'
,
'Check'
),
(
'CASH'
,
'Cash'
)],
verbose_name
=
'payment method'
,
max_length
=
255
),
),
]
counter/migrations/0005_auto_20160817_2251.py
0 → 100644
View file @
84364d90
# -*- coding: utf-8 -*-
from
__future__
import
unicode_literals
from
django.db
import
migrations
,
models
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'counter'
,
'0004_auto_20160817_1655'
),
]
operations
=
[
migrations
.
AlterField
(
model_name
=
'product'
,
name
=
'code'
,
field
=
models
.
CharField
(
verbose_name
=
'code'
,
max_length
=
10
,
blank
=
True
),
),
migrations
.
AlterField
(
model_name
=
'product'
,
name
=
'name'
,
field
=
models
.
CharField
(
verbose_name
=
'name'
,
max_length
=
64
),
),
]
counter/migrations/0006_auto_20160817_2253.py
0 → 100644
View file @
84364d90
# -*- coding: utf-8 -*-
from
__future__
import
unicode_literals
from
django.db
import
migrations
,
models
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'counter'
,
'0005_auto_20160817_2251'
),
]
operations
=
[
migrations
.
AlterField
(
model_name
=
'product'
,
name
=
'code'
,
field
=
models
.
CharField
(
blank
=
True
,
max_length
=
16
,
verbose_name
=
'code'
),
),
]
counter/migrations/0007_selling_club.py
0 → 100644
View file @
84364d90
# -*- coding: utf-8 -*-
from
__future__
import
unicode_literals
from
django.db
import
migrations
,
models
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'club'
,
'0004_auto_20160813_1551'
),
(
'counter'
,
'0006_auto_20160817_2253'
),
]
operations
=
[
migrations
.
AddField
(
model_name
=
'selling'
,
name
=
'club'
,
field
=
models
.
ForeignKey
(
default
=
1
,
related_name
=
'sellings'
,
to
=
'club.Club'
),
preserve_default
=
False
,
),
]
counter/migrations/0008_auto_20160818_0231.py
0 → 100644
View file @
84364d90
# -*- coding: utf-8 -*-
from
__future__
import
unicode_literals
from
django.db
import
migrations
,
models
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'counter'
,
'0007_selling_club'
),
]
operations
=
[
migrations
.
AlterField
(
model_name
=
'selling'
,
name
=
'label'
,
field
=
models
.
CharField
(
max_length
=
64
,
verbose_name
=
'label'
),
),
]
counter/models.py
View file @
84364d90
...
...
@@ -74,10 +74,10 @@ class Product(models.Model):
"""
This describes a product, with all its related informations
"""
name
=
models
.
CharField
(
_
(
'name'
),
max_length
=
30
)
name
=
models
.
CharField
(
_
(
'name'
),
max_length
=
64
)
description
=
models
.
TextField
(
_
(
'description'
),
blank
=
True
)
product_type
=
models
.
ForeignKey
(
ProductType
,
related_name
=
'products'
,
null
=
True
,
blank
=
True
)
code
=
models
.
CharField
(
_
(
'code'
),
max_length
=
1
0
)
code
=
models
.
CharField
(
_
(
'code'
),
max_length
=
1
6
,
blank
=
True
)
purchase_price
=
CurrencyField
(
_
(
'purchase price'
))
selling_price
=
CurrencyField
(
_
(
'selling price'
))
special_selling_price
=
CurrencyField
(
_
(
'special selling price'
))
...
...
@@ -105,7 +105,7 @@ class Counter(models.Model):
name
=
models
.
CharField
(
_
(
'name'
),
max_length
=
30
)
club
=
models
.
ForeignKey
(
Club
,
related_name
=
"counters"
)
products
=
models
.
ManyToManyField
(
Product
,
related_name
=
"counters"
,
blank
=
True
)
type
=
models
.
CharField
(
_
(
'
subscription
type'
),
type
=
models
.
CharField
(
_
(
'
counter
type'
),
max_length
=
255
,
choices
=
[(
'BAR'
,
_
(
'Bar'
)),
(
'OFFICE'
,
_
(
'Office'
)),
(
'EBOUTIC'
,
_
(
'Eboutic'
))])
sellers
=
models
.
ManyToManyField
(
Subscriber
,
verbose_name
=
_
(
'sellers'
),
related_name
=
'counters'
,
blank
=
True
)
...
...
@@ -208,9 +208,9 @@ class Refilling(models.Model):
customer
=
models
.
ForeignKey
(
Customer
,
related_name
=
"refillings"
,
blank
=
False
)
date
=
models
.
DateTimeField
(
_
(
'date'
),
auto_now
=
True
)
payment_method
=
models
.
CharField
(
_
(
'payment method'
),
max_length
=
255
,
choices
=
settings
.
SITH_COUNTER_PAYMENT_METHOD
,
default
=
'
cash
'
)
choices
=
settings
.
SITH_COUNTER_PAYMENT_METHOD
,
default
=
'
CASH
'
)
bank
=
models
.
CharField
(
_
(
'bank'
),
max_length
=
255
,
choices
=
settings
.
SITH_COUNTER_BANK
,
default
=
'
other
'
)
choices
=
settings
.
SITH_COUNTER_BANK
,
default
=
'
OTHER
'
)
is_validated
=
models
.
BooleanField
(
_
(
'is validated'
),
default
=
False
)
class
Meta
:
...
...
@@ -234,9 +234,10 @@ class Selling(models.Model):
"""
Handle the sellings
"""
label
=
models
.
CharField
(
_
(
"label"
),
max_length
=
30
)
label
=
models
.
CharField
(
_
(
"label"
),
max_length
=
64
)
product
=
models
.
ForeignKey
(
Product
,
related_name
=
"sellings"
,
null
=
True
,
blank
=
True
)
counter
=
models
.
ForeignKey
(
Counter
,
related_name
=
"sellings"
,
blank
=
False
)
club
=
models
.
ForeignKey
(
Club
,
related_name
=
"sellings"
,
blank
=
False
)
unit_price
=
CurrencyField
(
_
(
'unit price'
))
quantity
=
models
.
IntegerField
(
_
(
'quantity'
))
seller
=
models
.
ForeignKey
(
User
,
related_name
=
"sellings_as_operator"
,
blank
=
False
)
...
...
counter/templates/counter/counter_edit.jinja
deleted
100644 → 0
View file @
d4f87e75
{%
extends
"core/base.jinja"
%}
{%
block
content
%}
<h2>
{%
trans
%}
Edit counter
{%
endtrans
%}
</h2>
<form
action=
""
method=
"post"
>
{%
csrf_token
%}
{{
form.as_p
()
}}
<p><input
type=
"submit"
value=
"
{%
trans
%}
Save
{%
endtrans
%}
"
/></p>
</form>
{%
endblock
%}
counter/views.py
View file @
84364d90
...
...
@@ -242,7 +242,7 @@ class CounterClick(DetailView):
if
uprice
*
infos
[
'qty'
]
>
self
.
customer
.
amount
:
raise
DataError
(
_
(
"You have not enough money to buy all the basket"
))
request
.
session
[
'last_basket'
].
append
(
"%d x %s"
%
(
infos
[
'qty'
],
p
.
name
))
s
=
Selling
(
label
=
p
.
name
,
product
=
p
,
counter
=
self
.
object
,
unit_price
=
uprice
,
s
=
Selling
(
label
=
p
.
name
,
product
=
p
,
club
=
p
.
club
,
counter
=
self
.
object
,
unit_price
=
uprice
,
quantity
=
infos
[
'qty'
],
seller
=
self
.
operator
,
customer
=
self
.
customer
)
s
.
save
()
request
.
session
[
'last_customer'
]
=
self
.
customer
.
user
.
get_display_name
()
...
...
@@ -336,7 +336,7 @@ class CounterEditView(CanEditPropMixin, UpdateView):
'products'
:
CheckboxSelectMultiple
,
'sellers'
:
CheckboxSelectMultiple
})
pk_url_kwarg
=
"counter_id"
template_name
=
'co
unter/counter_
edit.jinja'
template_name
=
'co
re/
edit.jinja'
class
CounterCreateView
(
CanEditMixin
,
CreateView
):
"""
...
...
@@ -345,7 +345,7 @@ class CounterCreateView(CanEditMixin, CreateView):
model
=
Counter
form_class
=
modelform_factory
(
Counter
,
fields
=
[
'name'
,
'club'
,
'type'
,
'products'
],
widgets
=
{
'products'
:
CheckboxSelectMultiple
})
template_name
=
'co
unter/counter_edit
.jinja'
template_name
=
'co
re/create
.jinja'
class
CounterDeleteView
(
CanEditMixin
,
DeleteView
):
"""
...
...
launderette/views.py
View file @
84364d90
...
...
@@ -291,7 +291,7 @@ class ClickTokenForm(forms.BaseForm):
t
.
borrow_date
=
datetime
.
now
().
replace
(
tzinfo
=
pytz
.
UTC
)
t
.
save
()
price
=
settings
.
SITH_LAUNDERETTE_PRICES
[
t
.
type
]
s
=
Selling
(
label
=
"Jeton "
+
t
.
get_type_display
()
+
" N°"
+
t
.
name
,
product
=
None
,
counter
=
counter
,
unit_price
=
price
,
s
=
Selling
(
label
=
"Jeton "
+
t
.
get_type_display
()
+
" N°"
+
t
.
name
,
club
=
counter
.
club
,
product
=
None
,
counter
=
counter
,
unit_price
=
price
,
quantity
=
1
,
seller
=
operator
,
customer
=
customer
)
s
.
save
()
total
+=
price
...
...
locale/fr/LC_MESSAGES/django.mo
View file @
84364d90
No preview for this file type
locale/fr/LC_MESSAGES/django.po
View file @
84364d90
...
...
@@ -6,7 +6,7 @@
msgid
""
msgstr
""
"Report-Msgid-Bugs-To:
\n
"
"POT-Creation-Date: 2016-08-1
4 16:36
+0200
\n
"
"POT-Creation-Date: 2016-08-1
5 21:41
+0200
\n
"
"PO-Revision-Date: 2016-07-18
\n
"
"Last-Translator: Skia <skia@libskia.so>
\n
"
"Language-Team: AE info <ae.info@utbm.fr>
\n
"
...
...
@@ -444,11 +444,11 @@ msgstr "Éditer le club"
#: club/templates/club/club_edit.jinja:8
#: club/templates/club/club_edit_prop.jinja:8
#: core/templates/core/create.jinja:
8
core/templates/core/edit.jinja:12
#: core/templates/core/create.jinja:
12
core/templates/core/edit.jinja:12
#: core/templates/core/file_edit.jinja:8 core/templates/core/page_prop.jinja:8
#: core/templates/core/pagerev_edit.jinja:24
#: counter/templates/counter/counter_edit.jinja:8
#: subscription/templates/subscription/subscription.jinja:
1
2
#: subscription/templates/subscription/subscription.jinja:
2
2
msgid
"Save"
msgstr
"Sauver"
...
...
@@ -929,11 +929,11 @@ msgstr "Clubs"
msgid
"Services"
msgstr
"Services"
#: core/templates/core/base.jinja:5
5
#: core/templates/core/base.jinja:5
6
msgid
"Site made by good people"
msgstr
"Site réalisé par des gens bons"
#: core/templates/core/create.jinja:4
#: core/templates/core/create.jinja:4
core/templates/core/create.jinja.py:8
#, python-format
msgid
"Create %(name)s"
msgstr
"Créer %(name)s"
...
...
@@ -1274,10 +1274,12 @@ msgstr "Profil de %(user_name)s"
#: core/templates/core/user_detail.jinja:12
#: core/templates/core/user_edit.jinja:15
#: core/templates/core/user_mini.jinja:4
msgid
"Profile"
msgstr
"Profil"
#: core/templates/core/user_detail.jinja:21
#: core/templates/core/user_mini.jinja:12
msgid
"Born: "
msgstr
"Né le : "
...
...
@@ -1286,6 +1288,7 @@ msgid "Option: "
msgstr
"Filière : "
#: core/templates/core/user_detail.jinja:32
#: core/templates/core/user_mini.jinja:16
msgid
"Promo: "
msgstr
"Promo : "
...
...
@@ -1476,9 +1479,9 @@ msgstr "prix de vente spécial"
msgid
"product"
msgstr
"produit"
#: counter/models.py:108
subscription/models.py:29
msgid
"
subscription
type"
msgstr
"type d
'inscription
"
#: counter/models.py:108
msgid
"
counter
type"
msgstr
"type d
e comptoir
"
#: counter/models.py:110
msgid
"Bar"
...
...
@@ -1999,6 +2002,10 @@ msgstr "Mauvais type de cotisation"
msgid
"Bad payment method"
msgstr
"Mauvais type de paiement"
#: subscription/models.py:29
msgid
"subscription type"
msgstr
"type d'inscription"
#: subscription/models.py:32
msgid
"subscription start"
msgstr
"début de la cotisation"
...
...
migrate.py
View file @
84364d90
...
...
@@ -3,6 +3,7 @@ import os
import
django
import
random
from
io
import
StringIO
from
pytz
import
timezone
os
.
environ
[
"DJANGO_SETTINGS_MODULE"
]
=
"sith.settings"
os
.
environ
[
'DJANGO_COLORS'
]
=
'nocolor'
...
...
@@ -12,11 +13,12 @@ from django.db import IntegrityError
from
django.conf
import
settings
from
django.core.management
import
call_command
from
django.db
import
connection
from
django.forms
import
ValidationError
from
core.models
import
User
,
SithFile
from
club.models
import
Club
,
Membership
from
counter.models
import
Customer
from
counter.models
import
Customer
,
Counter
,
Selling
,
Refilling
,
Product
,
ProductType
from
subscription.models
import
Subscription
,
Subscriber
db
=
MySQLdb
.
connect
(
...
...
@@ -85,7 +87,7 @@ def migrate_users():
email
=
"no_email_%s@git.an"
%
random
.
randrange
(
4000
,
40000
)
return
email
c
=
db
.
cursor
(
MySQLdb
.
cursors
.
DictCursor
)
c
=
db
.
cursor
(
MySQLdb
.
cursors
.
SS
DictCursor
)
c
.
execute
(
"""
SELECT *
FROM utilisateurs utl
...
...
@@ -97,7 +99,7 @@ def migrate_users():
ON uxtra.id_utilisateur = utl.id_utilisateur
LEFT JOIN loc_ville ville
ON utl.id_ville = ville.id_ville
-- WHERE utl.id_utilisateur = 9
248
-- WHERE utl.id_utilisateur = 9
360
"""
)
User
.
objects
.
filter
(
id__gt
=
0
).
delete
()
print
(
"Users deleted"
)
...
...
@@ -178,7 +180,7 @@ def migrate_profile_pict():
print
(
repr
(
e
))
def
migrate_clubs
():
cur
=
db
.
cursor
(
MySQLdb
.
cursors
.
DictCursor
)
cur
=
db
.
cursor
(
MySQLdb
.
cursors
.
SS
DictCursor
)
cur
.
execute
(
"""
SELECT *
FROM asso asso
...
...
@@ -213,7 +215,7 @@ def migrate_clubs():
cur
.
close
()
def
migrate_club_memberships
():
cur
=
db
.
cursor
(
MySQLdb
.
cursors
.
DictCursor
)
cur
=
db
.
cursor
(
MySQLdb
.
cursors
.
SS
DictCursor
)
cur
.
execute
(
"""
SELECT *
FROM asso_membre
...
...
@@ -268,7 +270,7 @@ def migrate_subscriptions():
5
:
"EBOUTIC"
,
0
:
"OTHER"
,
}
cur
=
db
.
cursor
(
MySQLdb
.
cursors
.
DictCursor
)
cur
=
db
.
cursor
(
MySQLdb
.
cursors
.
SS
DictCursor
)
cur
.
execute
(
"""
SELECT *
FROM ae_cotisations
...
...
@@ -297,7 +299,7 @@ def migrate_subscriptions():
cur
.
close
()
def
update_customer_account
():
cur
=
db
.
cursor
(
MySQLdb
.
cursors
.
DictCursor
)
cur
=
db
.
cursor
(
MySQLdb
.
cursors
.
SS
DictCursor
)
cur
.
execute
(
"""
SELECT *
FROM ae_carte carte
...
...
@@ -314,13 +316,185 @@ def update_customer_account():
print
(
"FAIL to update customer account for %s: %s"
%
(
r
[
'id_cotisation'
],
repr
(
e
)))
cur
.
close
()
def
migrate_counters
():
cur
=
db
.
cursor
(
MySQLdb
.
cursors
.
SSDictCursor
)
cur
.
execute
(
"""
SELECT *
FROM cpt_comptoir
"""
)
Counter
.
objects
.
all
().
delete
()
for
r
in
cur
.
fetchall
():
try
:
club
=
Club
.
objects
.
filter
(
id
=
r
[
'id_assocpt'
]).
first
()
new
=
Counter
(
id
=
r
[
'id_comptoir'
],
name
=
to_unicode
(
r
[
'nom_cpt'
]),
club
=
club
,
type
=
"OFFICE"
,
)
new
.
save
()
except
Exception
as
e
:
print
(
"FAIL to migrate counter %s: %s"
%
(
r
[
'id_comptoir'
],
repr
(
e
)))
cur
.
close
()
def
migrate_refillings
():
BANK
=
{
0
:
"OTHER"
,
1
:
"SOCIETE-GENERALE"
,
2
:
"BANQUE-POPULAIRE"
,
3
:
"BNP"
,
4
:
"CAISSE-EPARGNE"
,
5
:
"CIC"
,
6
:
"CREDIT-AGRICOLE"
,
7
:
"CREDIT-MUTUEL"
,
8
:
"CREDIT-LYONNAIS"
,
9
:
"LA-POSTE"
,
100
:
"OTHER"
,
None
:
"OTHER"
,
}
cur
=
db
.
cursor
(
MySQLdb
.
cursors
.
SSDictCursor
)
cur
.
execute
(
"""
SELECT *
FROM cpt_rechargements
"""
)
Refilling
.
objects
.
all
().
delete
()
print
(
"Refillings deleted"
)
for
c
in
Customer
.
objects
.
all
():
c
.
amount
=
0
c
.
save
()
print
(
"Customer amount reset"
)
fail
=
100
root_cust
=
Customer
.
objects
.
filter
(
user__id
=
0
).
first
()
mde
=
Counter
.
objects
.
filter
(
id
=
1
).
first
()
for
r
in
cur
.
fetchall
():
try
:
cust
=
Customer
.
objects
.
filter
(
user__id
=
r
[
'id_utilisateur'
]).
first
()
user
=
User
.
objects
.
filter
(
id
=
r
[
'id_utilisateur'
]).
first
()
if
not
cust
:
if
not
user
:
cust
=
root_cust
else
:
cust
=
Customer
(
user
=
user
,
amount
=
0
,
account_id
=
Customer
.
generate_account_id
(
fail
))
cust
.
save
()
fail
+=
1
op
=
User
.
objects
.
filter
(
id
=
r
[
'id_utilisateur_operateur'
]).
first
()
counter
=
Counter
.
objects
.
filter
(
id
=
r
[
'id_comptoir'
]).
first
()
new
=
Refilling
(
id
=
r
[
'id_rechargement'
],
counter
=
counter
or
mde
,
customer
=
cust
,
operator
=
op
or
root_cust
.
user
,
amount
=
r
[
'montant_rech'
]
/
100
,
bank
=
BANK
[
r
[
'banque_rech'
]],
)
for
f
in
new
.
_meta
.
local_fields
:
if
f
.
name
==
"date"
:
f
.
auto_now
=
False
new
.
date
=
r
[
'date_rech'
].
replace
(
tzinfo
=
timezone
(
'Europe/Paris'
))
new
.
save
()
except
Exception
as
e
:
print
(
"FAIL to migrate refilling %s for %s: %s"
%
(
r
[
'id_rechargement'
],
r
[
'id_utilisateur'
],
repr
(
e
)))
cur
.
close
()
def
migrate_typeproducts
():
cur
=
db
.
cursor
(
MySQLdb
.
cursors
.
SSDictCursor
)
cur
.
execute
(
"""
SELECT *
FROM cpt_type_produit
"""
)
ProductType
.
objects
.
all
().
delete
()
print
(
"Product types deleted"
)
for
r
in
cur
.
fetchall
():
try
:
new
=
ProductType
(
id
=
r
[
'id_typeprod'
],
name
=
to_unicode
(
r
[
'nom_typeprod'
]),
description
=
to_unicode
(
r
[
'description_typeprod'
]),
)
new
.
save
()
except
Exception
as
e
:
print
(
"FAIL to migrate product type %s: %s"
%
(
r
[
'nom_typeprod'
],
repr
(
e
)))
cur
.
close
()
def
migrate_products
():
cur
=
db
.
cursor
(
MySQLdb
.
cursors
.
SSDictCursor
)
cur
.
execute
(
"""
SELECT *
FROM cpt_produits
"""
)
Product
.
objects
.
all
().
delete
()
print
(
"Product deleted"
)
for
r
in
cur
.
fetchall
():
try
:
type
=
ProductType
.
objects
.
filter
(
id
=
r
[
'id_typeprod'
]).
first
()
club
=
Club
.
objects
.
filter
(
id
=
r
[
'id_assocpt'
]).
first
()
new
=
Product
(
id
=
r
[
'id_produit'
],
product_type
=
type
,
name
=
to_unicode
(
r
[
'nom_prod'
]),
description
=
to_unicode
(
r
[
'description_prod'
]),
code
=
to_unicode
(
r
[
'cbarre_prod'
]),
purchase_price
=
r
[
'prix_achat_prod'
],
selling_price
=
r
[
'prix_vente_prod'
],
special_selling_price
=
r
[
'prix_vente_barman_prod'
],
club
=
club
,
)
new
.
save
()
except
Exception
as
e
:
print
(
"FAIL to migrate product %s: %s"
%
(
r
[
'nom_prod'
],
repr
(
e
)))
cur
.
close
()
def
migrate_sellings
():
cur
=
db
.
cursor
(
MySQLdb
.
cursors
.
SSDictCursor
)
cur
.
execute
(
"""
SELECT *
FROM cpt_vendu ven
LEFT JOIN cpt_debitfacture fac
ON ven.id_facture = fac.id_facture
WHERE fac.mode_paiement = 'AE'
"""
)
Selling
.
objects
.
all
().
delete
()
print
(
"Selling deleted"
)
for
r
in
cur
:
try
:
product
=
Product
.
objects
.
filter
(
id
=
r
[
'id_produit'
]).
first
()
club
=
Club
.
objects
.
filter
(
id
=
r
[
'id_assocpt'
]).
first
()
counter
=
Counter
.
objects
.
filter
(
id
=
r
[
'id_comptoir'
]).
first
()
op
=
User
.
objects
.
filter
(
id
=
r
[
'id_utilisateur'
]).
first
()
customer
=
Customer
.
objects
.
filter
(
user__id
=
r
[
'id_utilisateur_client'
]).
first
()
new
=
Selling
(
label
=
product
.
name
,
counter
=
counter
,
club
=
club
,
product
=
product
,
seller
=
op
,
customer
=
customer
,
unit_price
=
r
[
'prix_unit'
]
/
100
,
quantity
=
r
[
'quantite'
],
)
for
f
in
new
.
_meta
.
local_fields
:
if
f
.
name
==
"date"
:
f
.
auto_now
=
False
new
.
date
=
r
[
'date_facture'
].
replace
(
tzinfo
=
timezone
(
'Europe/Paris'
))
new
.
save
()
except
ValidationError
as
e
:
print
(
repr
(
e
)
+
" for %s (%s)"
%
(
customer
,
customer
.
user
.
id
))
except
Exception
as
e
:
print
(
"FAIL to migrate selling %s: %s"
%
(
r
[
'id_facture'
],
repr
(
e
)))
cur
.
close
()
def
main
():
migrate_users
()
migrate_profile_pict
()
migrate_clubs
()
migrate_club_memberships
()
migrate_subscriptions
()
update_customer_account
()
# migrate_users()
# migrate_profile_pict()
# migrate_clubs()
# migrate_club_memberships()
# migrate_subscriptions()
# update_customer_account()
# migrate_counters()
migrate_refillings
()
migrate_typeproducts
()
migrate_products
()
migrate_sellings
()
if
__name__
==
"__main__"
:
main
()
sith/settings_sample.py
View file @
84364d90
...
...
@@ -273,9 +273,9 @@ SITH_SUBSCRIPTION_LOCATIONS = [
]
SITH_COUNTER_BARS
=
[
(
1
,
"
Foyer
"
),
(
2
,
"
MDE
"
),
(
3
,
"La Gommette"
),
(
1
,
"
MDE
"
),
(
2
,
"
Foyer
"
),
(
3
5
,
"La Gommette"
),
]
SITH_COUNTER_PAYMENT_METHOD
=
[
...
...
@@ -285,9 +285,15 @@ SITH_COUNTER_PAYMENT_METHOD = [
SITH_COUNTER_BANK
=
[
(
'OTHER'
,
'Autre'
),
(
'LA-POSTE'
,
'La Poste'
),
(
'CREDIT-AGRICOLE'
,
'Credit Agricole'
),
(
'SOCIETE-GENERALE'
,
'Société générale'
),
(
'BANQUE-POPULAIRE'
,
'Banque populaire'
),
(
'BNP'
,
'BNP'
),
(
'CAISSE-EPARGNE'
,
'Caisse d
\'
épargne'
),
(
'CIC'
,
'CIC'
),
(
'CREDIT-AGRICOLE'
,
'Crédit Agricole'
),
(
'CREDIT-MUTUEL'
,
'Credit Mutuel'
),
(
'CREDIT-LYONNAIS'
,
'Credit Lyonnais'
),
(
'LA-POSTE'
,
'La Poste'
),
]
# Subscription durations are in semestres
...
...
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