Import memberships

This commit is contained in:
Yohann D'ANELLO 2020-04-27 01:52:06 +02:00
parent 4ce9aa0d4a
commit 60a6b3c704
1 changed files with 45 additions and 7 deletions

View File

@ -1,15 +1,14 @@
#!/usr/env/bin python3 #!/usr/env/bin python3
import json
import datetime
import re
from django.core.management.base import BaseCommand from django.core.management.base import BaseCommand
from django.core.management import call_command from django.core.management import call_command
import psycopg2 as pg import psycopg2 as pg
import psycopg2.extras as pge import psycopg2.extras as pge
from django.db import transaction from django.db import transaction
import json
import datetime
import re
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from django.utils.timezone import make_aware from django.utils.timezone import make_aware
from django.db import IntegrityError from django.db import IntegrityError
@ -19,7 +18,7 @@ from note.models import Note
from note.models import Alias from note.models import Alias
from note.models import TemplateCategory, TransactionTemplate, \ from note.models import TemplateCategory, TransactionTemplate, \
Transaction, RecurrentTransaction, SpecialTransaction Transaction, RecurrentTransaction, SpecialTransaction
from member.models import Club from member.models import Club, Membership
""" """
Script d'import de la nk15: Script d'import de la nk15:
@ -213,7 +212,8 @@ def import_transaction(cur):
raise Exception("You should'nt be there") raise Exception("You should'nt be there")
SpecialTransaction.objects.create(**obj_dict) SpecialTransaction.objects.create(**obj_dict)
elif ttype == "adhésion": elif ttype == "adhésion":
print("adhesion not supported yet") # Since BDE and Kfet are distinct, don't import membership transaction and use our custom transactions.
pass
elif ttype == "invitation": elif ttype == "invitation":
m = re.search("Invitation (.*?) \((.*?)\)", row["description"]) m = re.search("Invitation (.*?) \((.*?)\)", row["description"])
if m is None: if m is None:
@ -357,6 +357,38 @@ def import_activity_entries(cur):
raise e raise e
@transaction.atomic
def import_memberships(cur):
cur.execute("SELECT * FROM adhesions ORDER by id")
n = cur.rowcount
bde = Club.objects.get(name="BDE")
kfet = Club.objects.get(name="Kfet")
for idx, row in enumerate(cur):
update_line(idx, n, MAP_IDBDE[row["idbde"]].username)
bde_dict = {
"user": MAP_IDBDE[row["idbde"]],
"club": bde,
"date_start": row["date"][10:], # Only date, not time
"fee": 500,
}
kfet_dict = {
"user": MAP_IDBDE[row["idbde"]],
"club": kfet,
"date_start": row["date"][:10], # Only date, not time
"fee": 1500 if row["date"].month in [3, 4, 5, 6, 7] else 3500,
}
try:
with transaction.atomic():
bde_membership = Membership.objects.get_or_create(**bde_dict)
kfet_membership = Membership.objects.get_or_create(**kfet_dict)
bde_membership.transaction.created_at = row["date"]
bde_membership.transaction.save()
kfet_membership.transaction.created_at = row["date"]
kfet_membership.transaction.save()
except IntegrityError as e:
raise e
class Command(BaseCommand): class Command(BaseCommand):
""" """
Command for importing the database of NK15. Command for importing the database of NK15.
@ -372,6 +404,7 @@ class Command(BaseCommand):
parser.add_argument('-t', '--transactions', action='store_true', help="import transaction") parser.add_argument('-t', '--transactions', action='store_true', help="import transaction")
parser.add_argument('-al', '--aliases', action='store_true', help="import aliases") parser.add_argument('-al', '--aliases', action='store_true', help="import aliases")
parser.add_argument('-ac', '--activities', action='store_true', help="import activities") parser.add_argument('-ac', '--activities', action='store_true', help="import activities")
parser.add_argument('-M', '--memberships', action='store_true', help="import memberships")
parser.add_argument('-s', '--save', action='store', help="save mapping of idbde") parser.add_argument('-s', '--save', action='store', help="save mapping of idbde")
parser.add_argument('-m', '--map', action='store', help="import mapping of idbde") parser.add_argument('-m', '--map', action='store', help="import mapping of idbde")
parser.add_argument('-d', '--nk15db', action='store', default='nk15', help='NK15 database name') parser.add_argument('-d', '--nk15db', action='store', default='nk15', help='NK15 database name')
@ -408,9 +441,14 @@ class Command(BaseCommand):
if kwargs["activities"]: if kwargs["activities"]:
import_activities(cur) import_activities(cur)
self.print_success("activities imported\n") self.print_success("activities imported\n")
import_activity_entries(cur)
self.print_success("activity entries imported\n")
if kwargs["aliases"]: if kwargs["aliases"]:
import_aliases(cur) import_aliases(cur)
self.print_success("aliases imported\n") self.print_success("aliases imported\n")
if kwargs["transactions"]: if kwargs["transactions"]:
import_transaction(cur) import_transaction(cur)
self.print_success("transaction imported\n") self.print_success("transaction imported\n")
if kwargs["memberships"]:
import_memberships(cur)
self.print_success("memberships imported\n")