diff --git a/accounting/migrations/0002_auto_20160814_1634.py b/accounting/migrations/0002_auto_20160814_1634.py
new file mode 100644
index 00000000..6a281517
--- /dev/null
+++ b/accounting/migrations/0002_auto_20160814_1634.py
@@ -0,0 +1,19 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('accounting', '0001_initial'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='operation',
+ name='mode',
+ field=models.CharField(verbose_name='payment method', max_length=255, choices=[('CHECK', 'Check'), ('CASH', 'Cash'), ('TRANSFERT', 'Transfert'), ('CARD', 'Credit card')]),
+ ),
+ ]
diff --git a/core/templates/core/user_account.jinja b/core/templates/core/user_account.jinja
index c36440fb..d3c94889 100644
--- a/core/templates/core/user_account.jinja
+++ b/core/templates/core/user_account.jinja
@@ -71,7 +71,7 @@
{% for it in i.items.all() %}
- - {{ it.product_name }} - {{ it.product_unit_price }} €
+ - {{ it.quantity }} x {{ it.product_name }} - {{ it.product_unit_price }} €
{% endfor %}
|
diff --git a/core/templates/core/user_edit.jinja b/core/templates/core/user_edit.jinja
index 2969f985..4135376a 100644
--- a/core/templates/core/user_edit.jinja
+++ b/core/templates/core/user_edit.jinja
@@ -28,7 +28,7 @@
{% endif %}
{% if form.instance == user %}
{% trans %}Change my password{% endtrans %}
- {% elif user.is_root() %}
+ {% elif user.is_root %}
{% trans %}Change user password{% endtrans %}
{% endif %}
diff --git a/core/templates/core/user_mini.jinja b/core/templates/core/user_mini.jinja
new file mode 100644
index 00000000..1dcfacec
--- /dev/null
+++ b/core/templates/core/user_mini.jinja
@@ -0,0 +1,19 @@
+
+
+ {% if profile.profile_pict %}
+
+ {% endif %}
+
+
{{ profile.get_full_name() }}
+ {% if profile.nick_name %}
+
« {{ profile.nick_name }} »
+ {% endif %}
+ {% if profile.date_of_birth %}
+
{% trans %}Born: {% endtrans %}{{ profile.date_of_birth|date("d/m/Y") }}
+ {% endif %}
+ {% if profile.promo %}
+
+ {% trans %}Promo: {% endtrans %}{{ profile.promo }}
+ {% endif %}
+
+
diff --git a/core/urls.py b/core/urls.py
index e3a2331b..14aedbc2 100644
--- a/core/urls.py
+++ b/core/urls.py
@@ -25,6 +25,7 @@ urlpatterns = [
# User views
url(r'^user/$', UserListView.as_view(), name='user_list'),
+ url(r'^user/(?P[0-9]+)/mini$', UserMiniView.as_view(), name='user_profile_mini'),
url(r'^user/(?P[0-9]+)/$', UserView.as_view(), name='user_profile'),
url(r'^user/(?P[0-9]+)/edit$', UserUpdateProfileView.as_view(), name='user_edit'),
url(r'^user/(?P[0-9]+)/groups$', UserUpdateGroupView.as_view(), name='user_groups'),
diff --git a/core/views/forms.py b/core/views/forms.py
index 92254d67..56a14425 100644
--- a/core/views/forms.py
+++ b/core/views/forms.py
@@ -50,7 +50,6 @@ class SelectFile(TextInput):
'name': name,
}
output += '' + _("Choose file") + ''
- print(output)
return output
# Forms
diff --git a/core/views/user.py b/core/views/user.py
index 3bff6535..b45f25fd 100644
--- a/core/views/user.py
+++ b/core/views/user.py
@@ -121,6 +121,15 @@ class UserView(CanViewMixin, DetailView):
context_object_name = "profile"
template_name = "core/user_detail.jinja"
+class UserMiniView(CanViewMixin, DetailView):
+ """
+ Display a user's profile
+ """
+ model = User
+ pk_url_kwarg = "user_id"
+ context_object_name = "profile"
+ template_name = "core/user_mini.jinja"
+
class UserListView(ListView):
"""
Displays the user list
diff --git a/counter/migrations/0003_auto_20160814_1634.py b/counter/migrations/0003_auto_20160814_1634.py
new file mode 100644
index 00000000..7f0f86f0
--- /dev/null
+++ b/counter/migrations/0003_auto_20160814_1634.py
@@ -0,0 +1,19 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('counter', '0002_auto_20160810_1348'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='refilling',
+ name='payment_method',
+ field=models.CharField(verbose_name='payment method', default='cash', max_length=255, choices=[('CHECK', 'Check'), ('CASH', 'Cash')]),
+ ),
+ ]
diff --git a/counter/models.py b/counter/models.py
index dcc950b6..c9fa9829 100644
--- a/counter/models.py
+++ b/counter/models.py
@@ -30,7 +30,7 @@ class Customer(models.Model):
ordering = ['account_id',]
def __str__(self):
- return self.user.username
+ return "%s - %s" % (self.user.username, self.account_id)
def generate_account_id(number):
number = str(number)
diff --git a/launderette/templates/launderette/launderette_main.jinja b/launderette/templates/launderette/launderette_main.jinja
index d3f7653e..6075cc31 100644
--- a/launderette/templates/launderette/launderette_main.jinja
+++ b/launderette/templates/launderette/launderette_main.jinja
@@ -5,7 +5,7 @@
{% endblock %}
{% block content %}
-{% if request.user.is_in_group(settings.SITH_GROUPS['launderette-admin']['name']) %}
+{% if request.user.is_root %}
{% trans %}Edit presentation page{% endtrans %}
{% endif %}
{% if request.user.is_in_group(settings.SITH_MAIN_MEMBERS_GROUP) %}
diff --git a/locale/fr/LC_MESSAGES/django.mo b/locale/fr/LC_MESSAGES/django.mo
index a21daa90..f33d73d1 100644
Binary files a/locale/fr/LC_MESSAGES/django.mo and b/locale/fr/LC_MESSAGES/django.mo differ
diff --git a/locale/fr/LC_MESSAGES/django.po b/locale/fr/LC_MESSAGES/django.po
index 57a9d329..95ba7aad 100644
--- a/locale/fr/LC_MESSAGES/django.po
+++ b/locale/fr/LC_MESSAGES/django.po
@@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-08-13 17:14+0200\n"
+"POT-Creation-Date: 2016-08-14 16:36+0200\n"
"PO-Revision-Date: 2016-07-18\n"
"Last-Translator: Skia \n"
"Language-Team: AE info \n"
@@ -66,7 +66,7 @@ msgstr "montant effectif"
msgid "number"
msgstr "numéro"
-#: accounting/models.py:154 core/models.py:403 core/models.py:679
+#: accounting/models.py:154 core/models.py:404 core/models.py:680
#: counter/models.py:209 counter/models.py:244 eboutic/models.py:13
#: eboutic/models.py:46
msgid "date"
@@ -122,7 +122,7 @@ msgstr "Compte"
msgid "Company"
msgstr "Entreprise"
-#: accounting/models.py:163 sith/settings.py:278 sith/settings_sample.py:268
+#: accounting/models.py:163 sith/settings.py:280 sith/settings_sample.py:266
msgid "Other"
msgstr "Autre"
@@ -766,113 +766,113 @@ msgstr "téléphone des parents"
msgid "parent address"
msgstr "adresse des parents"
-#: core/models.py:253
+#: core/models.py:254
msgid "A user with that username already exists"
msgstr "Un utilisateur de ce nom d'utilisateur existe déjà"
-#: core/models.py:380
+#: core/models.py:381
msgid "Visitor"
msgstr "Visiteur"
-#: core/models.py:385
+#: core/models.py:386
msgid "define if we show a users stats"
msgstr "Definit si l'on montre les statistiques de l'utilisateur"
-#: core/models.py:387
+#: core/models.py:388
msgid "Show your account statistics to others"
msgstr "Montrez vos statistiques de compte aux autres"
-#: core/models.py:394
+#: core/models.py:395
msgid "file name"
msgstr "nom du fichier"
-#: core/models.py:395 core/models.py:528
+#: core/models.py:396 core/models.py:529
msgid "parent"
msgstr "parent"
-#: core/models.py:396 core/models.py:406
+#: core/models.py:397 core/models.py:407
msgid "file"
msgstr "fichier"
-#: core/models.py:397
+#: core/models.py:398
msgid "owner"
msgstr "propriétaire"
-#: core/models.py:398 core/models.py:534
+#: core/models.py:399 core/models.py:535
msgid "edit group"
msgstr "groupe d'édition"
-#: core/models.py:399 core/models.py:535
+#: core/models.py:400 core/models.py:536
msgid "view group"
msgstr "groupe de vue"
-#: core/models.py:400
+#: core/models.py:401
msgid "is folder"
msgstr "est un dossier"
-#: core/models.py:401
+#: core/models.py:402
msgid "mime type"
msgstr "type mime"
-#: core/models.py:402
+#: core/models.py:403
msgid "size"
msgstr "taille"
-#: core/models.py:432
+#: core/models.py:433
msgid "Character '/' not authorized in name"
msgstr "Le caractère '/' n'est pas autorisé dans les noms de fichier"
-#: core/models.py:435 core/models.py:440
+#: core/models.py:436 core/models.py:441
msgid "Loop in folder tree"
msgstr "Boucle dans l'arborescence des dossiers"
-#: core/models.py:444
+#: core/models.py:445
msgid "You can not make a file be a children of a non folder file"
msgstr ""
"Vous ne pouvez pas mettre un fichier enfant de quelque chose qui n'est pas "
"un dossier"
-#: core/models.py:448
+#: core/models.py:449
msgid "Duplicate file"
msgstr "Un fichier de ce nom existe déjà"
-#: core/models.py:458
+#: core/models.py:459
msgid "You must provide a file"
msgstr "Vous devez fournir un fichier"
-#: core/models.py:483
+#: core/models.py:484
msgid "Folder: "
msgstr "Dossier : "
-#: core/models.py:485
+#: core/models.py:486
msgid "File: "
msgstr "Fichier : "
-#: core/models.py:527 core/models.py:531
+#: core/models.py:528 core/models.py:532
msgid "page name"
msgstr "nom de la page"
-#: core/models.py:532
+#: core/models.py:533
msgid "owner group"
msgstr "groupe propriétaire"
-#: core/models.py:563
+#: core/models.py:564
msgid "Duplicate page"
msgstr "Une page de ce nom existe déjà"
-#: core/models.py:569
+#: core/models.py:570
msgid "Loop in page tree"
msgstr "Boucle dans l'arborescence des pages"
-#: core/models.py:676
+#: core/models.py:677
msgid "revision"
msgstr "révision"
-#: core/models.py:677
+#: core/models.py:678
msgid "page title"
msgstr "titre de la page"
-#: core/models.py:678
+#: core/models.py:679
msgid "page content"
msgstr "contenu de la page"
@@ -931,7 +931,7 @@ msgstr "Services"
#: core/templates/core/base.jinja:55
msgid "Site made by good people"
-msgstr "Site réalisé par des gens biens"
+msgstr "Site réalisé par des gens bons"
#: core/templates/core/create.jinja:4
#, python-format
@@ -1411,7 +1411,7 @@ msgstr "Ajouter un nouveau dossier"
msgid "Error creating folder %(folder_name)s: %(msg)s"
msgstr "Erreur de création du dossier %(folder_name)s : %(msg)s"
-#: core/views/files.py:62 core/views/forms.py:155 core/views/forms.py:159
+#: core/views/files.py:62 core/views/forms.py:154 core/views/forms.py:158
#, python-format
msgid "Error uploading file %(file_name)s: %(msg)s"
msgstr "Erreur d'envoie du fichier %(file_name)s : %(msg)s"
@@ -1420,7 +1420,7 @@ msgstr "Erreur d'envoie du fichier %(file_name)s : %(msg)s"
msgid "Choose file"
msgstr "Choisir un fichier"
-#: core/views/forms.py:114
+#: core/views/forms.py:113
msgid ""
"Profile: you need to be visible on the picture, in order to be recognized (e."
"g. by the barmen)"
@@ -1428,15 +1428,15 @@ msgstr ""
"Photo de profil: vous devez être visible sur la photo afin d'être reconnu "
"(par exemple par les barmen)"
-#: core/views/forms.py:115
+#: core/views/forms.py:114
msgid "Avatar: used on the forum"
msgstr "Avatar : utilisé sur le forum"
-#: core/views/forms.py:116
+#: core/views/forms.py:115
msgid "Scrub: let other know how your scrub looks like!"
msgstr "Blouse : montrez aux autres à quoi ressemble votre blouse !"
-#: core/views/forms.py:160
+#: core/views/forms.py:159
msgid "Bad image format, only jpeg, png, and gif are accepted"
msgstr "Mauvais format d'image, seuls les jpeg, png, et gif sont acceptés"
@@ -1491,6 +1491,7 @@ msgstr "Bureau"
#: counter/models.py:110 eboutic/templates/eboutic/eboutic_main.jinja:20
#: eboutic/templates/eboutic/eboutic_makecommand.jinja:4
#: eboutic/templates/eboutic/eboutic_payment_result.jinja:4
+#: sith/settings.py:279 sith/settings_sample.py:265
msgid "Eboutic"
msgstr "Eboutic"
@@ -1676,7 +1677,8 @@ msgstr "ANN"
msgid "You have not enough money to buy all the basket"
msgstr "Vous n'avez pas assez d'argent pour acheter le panier"
-#: eboutic/models.py:47 sith/settings.py:272 sith/settings_sample.py:262
+#: eboutic/models.py:47 sith/settings.py:272 sith/settings.py:277
+#: sith/settings_sample.py:258 sith/settings_sample.py:263
msgid "Credit card"
msgstr "Carte banquaire"
@@ -1824,12 +1826,12 @@ msgid "Washing and drying"
msgstr "Lavage et séchage"
#: launderette/templates/launderette/launderette_book.jinja:26
-#: sith/settings.py:360 sith/settings_sample.py:350
+#: sith/settings.py:398 sith/settings_sample.py:384
msgid "Washing"
msgstr "Lavage"
#: launderette/templates/launderette/launderette_book.jinja:30
-#: sith/settings.py:360 sith/settings_sample.py:350
+#: sith/settings.py:398 sith/settings_sample.py:384
msgid "Drying"
msgstr "Séchage"
@@ -1884,83 +1886,108 @@ msgstr "L'utilisateur n'a pas réservé de créneau"
msgid "Token not found"
msgstr "Jeton non trouvé"
-#: sith/settings.py:269 sith/settings.py:276 sith/settings.py:294
-#: sith/settings_sample.py:259 sith/settings_sample.py:266
-#: sith/settings_sample.py:284
+#: sith/settings.py:269 sith/settings.py:276 sith/settings.py:296
+#: sith/settings_sample.py:255 sith/settings_sample.py:262
+#: sith/settings_sample.py:282
msgid "Check"
msgstr "Chèque"
-#: sith/settings.py:270 sith/settings.py:277 sith/settings.py:295
-#: sith/settings_sample.py:260 sith/settings_sample.py:267
-#: sith/settings_sample.py:285
+#: sith/settings.py:270 sith/settings.py:278 sith/settings.py:297
+#: sith/settings_sample.py:256 sith/settings_sample.py:264
+#: sith/settings_sample.py:283
msgid "Cash"
msgstr "Espèces"
-#: sith/settings.py:271 sith/settings_sample.py:261
+#: sith/settings.py:271 sith/settings_sample.py:257
msgid "Transfert"
msgstr "Virement"
-#: sith/settings.py:282 sith/settings_sample.py:272
+#: sith/settings.py:284 sith/settings_sample.py:270
msgid "Belfort"
msgstr "Belfort"
-#: sith/settings.py:283 sith/settings_sample.py:273
+#: sith/settings.py:285 sith/settings_sample.py:271
msgid "Sevenans"
msgstr "Sevenans"
-#: sith/settings.py:284 sith/settings_sample.py:274
+#: sith/settings.py:286 sith/settings_sample.py:272
msgid "Montbéliard"
msgstr "Montbéliard"
-#: sith/settings.py:308 sith/settings_sample.py:298
+#: sith/settings.py:311 sith/settings_sample.py:297
msgid "One semester"
msgstr "Un semestre"
-#: sith/settings.py:313 sith/settings_sample.py:303
+#: sith/settings.py:316 sith/settings_sample.py:302
msgid "Two semesters"
msgstr "Deux semestres"
-#: sith/settings.py:318 sith/settings_sample.py:308
+#: sith/settings.py:321 sith/settings_sample.py:307
msgid "Common core cursus"
msgstr "Cursus tronc commun"
-#: sith/settings.py:323 sith/settings_sample.py:313
+#: sith/settings.py:326 sith/settings.py:331 sith/settings_sample.py:312
+#: sith/settings_sample.py:317
msgid "Branch cursus"
msgstr "Cursus branche"
-#: sith/settings.py:331 sith/settings_sample.py:321
+#: sith/settings.py:336 sith/settings_sample.py:322
+msgid "Honorary member"
+msgstr "Membre honoraire"
+
+#: sith/settings.py:341 sith/settings_sample.py:327
+msgid "Assidu member"
+msgstr "Membre d'Assidu"
+
+#: sith/settings.py:346 sith/settings_sample.py:332
+msgid "Amicale/DOCEO member"
+msgstr "Membre de l'Amicale/DOCEO"
+
+#: sith/settings.py:351 sith/settings_sample.py:337
+msgid "UT network member"
+msgstr "Cotisant du réseau UT"
+
+#: sith/settings.py:356 sith/settings_sample.py:342
+msgid "CROUS member"
+msgstr "Membres du CROUS"
+
+#: sith/settings.py:361 sith/settings_sample.py:347
+msgid "Sbarro/ESTA member"
+msgstr "Membre de Sbarro ou de l'ESTA"
+
+#: sith/settings.py:369 sith/settings_sample.py:355
msgid "President"
msgstr "Président"
-#: sith/settings.py:332 sith/settings_sample.py:322
+#: sith/settings.py:370 sith/settings_sample.py:356
msgid "Vice-President"
msgstr "Vice-Président"
-#: sith/settings.py:333 sith/settings_sample.py:323
+#: sith/settings.py:371 sith/settings_sample.py:357
msgid "Treasurer"
msgstr "Trésorier"
-#: sith/settings.py:334 sith/settings_sample.py:324
+#: sith/settings.py:372 sith/settings_sample.py:358
msgid "Communication supervisor"
msgstr "Responsable com"
-#: sith/settings.py:335 sith/settings_sample.py:325
+#: sith/settings.py:373 sith/settings_sample.py:359
msgid "Secretary"
msgstr "Secrétaire"
-#: sith/settings.py:336 sith/settings_sample.py:326
+#: sith/settings.py:374 sith/settings_sample.py:360
msgid "IT supervisor"
msgstr "Responsable info"
-#: sith/settings.py:337 sith/settings_sample.py:327
+#: sith/settings.py:375 sith/settings_sample.py:361
msgid "Board member"
msgstr "Membre du bureau"
-#: sith/settings.py:338 sith/settings_sample.py:328
+#: sith/settings.py:376 sith/settings_sample.py:362
msgid "Active member"
msgstr "Membre actif"
-#: sith/settings.py:339 sith/settings_sample.py:329
+#: sith/settings.py:377 sith/settings_sample.py:363
msgid "Curious"
msgstr "Curieux"
diff --git a/migrate.py b/migrate.py
index d110ef9e..dd615028 100644
--- a/migrate.py
+++ b/migrate.py
@@ -16,6 +16,8 @@ from django.db import connection
from core.models import User, SithFile
from club.models import Club, Membership
+from counter.models import Customer
+from subscription.models import Subscription, Subscriber
db = MySQLdb.connect(
host="ae-db",
@@ -87,15 +89,15 @@ def migrate_users():
c.execute("""
SELECT *
FROM utilisateurs utl
- JOIN utl_etu ue
+ LEFT JOIN utl_etu ue
ON ue.id_utilisateur = utl.id_utilisateur
- JOIN utl_etu_utbm ueu
+ LEFT JOIN utl_etu_utbm ueu
ON ueu.id_utilisateur = utl.id_utilisateur
- JOIN utl_extra uxtra
+ LEFT JOIN utl_extra uxtra
ON uxtra.id_utilisateur = utl.id_utilisateur
- JOIN loc_ville ville
+ LEFT JOIN loc_ville ville
ON utl.id_ville = ville.id_ville
- -- WHERE utl.id_utilisateur > 9000
+ -- WHERE utl.id_utilisateur = 9248
""")
User.objects.filter(id__gt=0).delete()
print("Users deleted")
@@ -237,12 +239,88 @@ def migrate_club_memberships():
print("FAIL for club membership %s: %s" % (m['id_asso'], repr(e)))
cur.close()
+def migrate_subscriptions():
+ LOCATION = {
+ 5: "SEVENANS",
+ 6: "BELFORT",
+ 9: "MONTBELIARD",
+ None: "SEVENANS",
+ }
+ TYPE = {
+ 0: 'un-semestre',
+ 1: 'deux-semestres',
+ 2: 'cursus-tronc-commun',
+ 3: 'cursus-branche',
+ 4: 'membre-honoraire',
+ 5: 'assidu',
+ 6: 'amicale/doceo',
+ 7: 'reseau-ut',
+ 8: 'crous',
+ 9: 'sbarro/esta',
+ 10: 'cursus-alternant',
+ None: 'un-semestre',
+ }
+ PAYMENT = {
+ 1: "CHECK",
+ 2: "CARD",
+ 3: "CASH",
+ 4: "OTHER",
+ 5: "EBOUTIC",
+ 0: "OTHER",
+ }
+ cur = db.cursor(MySQLdb.cursors.DictCursor)
+ cur.execute("""
+ SELECT *
+ FROM ae_cotisations
+ """)
+
+ Subscription.objects.all().delete()
+ print("Subscriptions deleted")
+ Customer.objects.all().delete()
+ print("Customers deleted")
+ for r in cur.fetchall():
+ try:
+ user = Subscriber.objects.filter(id=r['id_utilisateur']).first()
+ if user:
+ new = Subscription(
+ id=r['id_cotisation'],
+ member=user,
+ subscription_start=r['date_cotis'],
+ subscription_end=r['date_fin_cotis'],
+ subscription_type=TYPE[r['type_cotis']],
+ payment_method=PAYMENT[r['mode_paiement_cotis']],
+ location=LOCATION[r['id_comptoir']],
+ )
+ new.save()
+ except Exception as e:
+ print("FAIL for subscription %s: %s" % (r['id_cotisation'], repr(e)))
+ cur.close()
+
+def update_customer_account():
+ cur = db.cursor(MySQLdb.cursors.DictCursor)
+ cur.execute("""
+ SELECT *
+ FROM ae_carte carte
+ JOIN ae_cotisations cotis
+ ON carte.id_cotisation = cotis.id_cotisation
+ """)
+ for r in cur.fetchall():
+ try:
+ user = Customer.objects.filter(user_id=r['id_utilisateur']).first()
+ if user:
+ user.account_id = str(r['id_carte_ae']) + r['cle_carteae'].lower()
+ user.save()
+ except Exception as e:
+ print("FAIL to update customer account for %s: %s" % (r['id_cotisation'], repr(e)))
+ cur.close()
def main():
- # migrate_users()
- # migrate_profile_pict()
- # migrate_clubs()
+ migrate_users()
+ migrate_profile_pict()
+ migrate_clubs()
migrate_club_memberships()
+ migrate_subscriptions()
+ update_customer_account()
if __name__ == "__main__":
main()
diff --git a/sith/settings_sample.py b/sith/settings_sample.py
index 4c2f5708..29ff73e3 100644
--- a/sith/settings_sample.py
+++ b/sith/settings_sample.py
@@ -243,10 +243,6 @@ SITH_GROUPS = {
'id': 5,
'name': "Counter admin",
},
- 'launderette-admin': {
- 'id': 6,
- 'name': "Launderette admin",
- },
}
SITH_BOARD_SUFFIX="-bureau"
@@ -256,15 +252,17 @@ SITH_MAIN_BOARD_GROUP=SITH_MAIN_CLUB['unix_name']+SITH_BOARD_SUFFIX
SITH_MAIN_MEMBERS_GROUP=SITH_MAIN_CLUB['unix_name']+SITH_MEMBER_SUFFIX
SITH_ACCOUNTING_PAYMENT_METHOD = [
- ('CHEQUE', _('Check')),
+ ('CHECK', _('Check')),
('CASH', _('Cash')),
- ('TRANSFert', _('Transfert')),
+ ('TRANSFERT', _('Transfert')),
('CARD', _('Credit card')),
]
SITH_SUBSCRIPTION_PAYMENT_METHOD = [
- ('CHEQUE', _('Check')),
+ ('CHECK', _('Check')),
+ ('CARD', _('Credit card')),
('CASH', _('Cash')),
+ ('EBOUTIC', _('Eboutic')),
('OTHER', _('Other')),
]
@@ -281,7 +279,7 @@ SITH_COUNTER_BARS = [
]
SITH_COUNTER_PAYMENT_METHOD = [
- ('CHEQUE', _('Check')),
+ ('CHECK', _('Check')),
('CASH', _('Cash')),
]
@@ -292,7 +290,8 @@ SITH_COUNTER_BANK = [
('CREDIT-MUTUEL', 'Credit Mutuel'),
]
-# Subscription durations are in semestres (should be settingized)
+# Subscription durations are in semestres
+# Be careful, modifying this parameter will need a migration to be applied
SITH_SUBSCRIPTIONS = {
'un-semestre': {
'name': _('One semester'),
@@ -314,6 +313,41 @@ SITH_SUBSCRIPTIONS = {
'price': 45,
'duration': 6,
},
+ 'cursus-alternant': {
+ 'name': _('Branch cursus'),
+ 'price': 30,
+ 'duration': 6,
+ },
+ 'membre-honoraire': {
+ 'name': _('Honorary member'),
+ 'price': 0,
+ 'duration': 666,
+ },
+ 'assidu': {
+ 'name': _('Assidu member'),
+ 'price': 0,
+ 'duration': 2,
+ },
+ 'amicale/doceo': {
+ 'name': _('Amicale/DOCEO member'),
+ 'price': 0,
+ 'duration': 2,
+ },
+ 'reseau-ut': {
+ 'name': _('UT network member'),
+ 'price': 0,
+ 'duration': 1,
+ },
+ 'crous': {
+ 'name': _('CROUS member'),
+ 'price': 0,
+ 'duration': 2,
+ },
+ 'sbarro/esta': {
+ 'name': _('Sbarro/ESTA member'),
+ 'price': 15,
+ 'duration': 2,
+ },
# To be completed....
}
diff --git a/subscription/migrations/0002_auto_20160814_1634.py b/subscription/migrations/0002_auto_20160814_1634.py
new file mode 100644
index 00000000..0c82cd2b
--- /dev/null
+++ b/subscription/migrations/0002_auto_20160814_1634.py
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('subscription', '0001_initial'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='subscription',
+ name='payment_method',
+ field=models.CharField(verbose_name='payment method', max_length=255, choices=[('CHECK', 'Check'), ('CARD', 'Credit card'), ('CASH', 'Cash'), ('EBOUTIC', 'Eboutic'), ('OTHER', 'Other')]),
+ ),
+ migrations.AlterField(
+ model_name='subscription',
+ name='subscription_type',
+ field=models.CharField(verbose_name='subscription type', max_length=255, choices=[('amicale/doceo', 'Amicale/DOCEO member'), ('assidu', 'Assidu member'), ('crous', 'CROUS member'), ('cursus-alternant', 'Branch cursus'), ('cursus-branche', 'Branch cursus'), ('cursus-tronc-commun', 'Common core cursus'), ('deux-semestres', 'Two semesters'), ('membre-honoraire', 'Honorary member'), ('reseau-ut', 'UT network member'), ('sbarro/esta', 'Sbarro/ESTA member'), ('un-semestre', 'One semester')]),
+ ),
+ ]
diff --git a/subscription/models.py b/subscription/models.py
index 034dae81..8ed0f555 100644
--- a/subscription/models.py
+++ b/subscription/models.py
@@ -53,7 +53,8 @@ class Subscription(models.Model):
super(Subscription, self).save()
from counter.models import Customer
if not Customer.objects.filter(user=self.member).exists():
- Customer(user=self.member, account_id=Customer.generate_account_id(self.id), amount=0).save()
+ last_id = Customer.objects.count() + 5195 # Number to keep a continuity with the old site
+ Customer(user=self.member, account_id=Customer.generate_account_id(last_id+1), amount=0).save()
self.member.make_home()
def get_absolute_url(self):
diff --git a/subscription/templates/subscription/subscription.jinja b/subscription/templates/subscription/subscription.jinja
index c68c0d2a..f0cb1173 100644
--- a/subscription/templates/subscription/subscription.jinja
+++ b/subscription/templates/subscription/subscription.jinja
@@ -6,9 +6,41 @@
{% block content %}
{% trans %}New subscription{% endtrans %}
-
{% endblock %}
+
+{% block script %}
+ {{ super() }}
+
+{% endblock %}
diff --git a/subscription/views.py b/subscription/views.py
index f9c1af45..2a681c42 100644
--- a/subscription/views.py
+++ b/subscription/views.py
@@ -63,8 +63,8 @@ class NewSubscription(CanEditMixin, CreateView):
def get_initial(self):
if 'member' in self.request.GET.keys():
- return {'member': self.request.GET['member']}
- return {}
+ return {'member': self.request.GET['member'], 'subscription_type': 'deux-semestres'}
+ return {'subscription_type': 'deux-semestres'}
def form_valid(self, form):
form.instance.subscription_start = Subscription.compute_start(