Fix activities import
This commit is contained in:
parent
ee54fca89e
commit
4839b2deb8
|
@ -50,8 +50,8 @@ class ImportCommand(BaseCommand):
|
||||||
parser = super().create_parser(prog_name, subcommand, **kwargs)
|
parser = super().create_parser(prog_name, subcommand, **kwargs)
|
||||||
parser.add_argument('--nk15db', action='store', default='nk15', help='NK15 database name')
|
parser.add_argument('--nk15db', action='store', default='nk15', help='NK15 database name')
|
||||||
parser.add_argument('--nk15user', action='store', default='nk15_user', help='NK15 database owner')
|
parser.add_argument('--nk15user', action='store', default='nk15_user', help='NK15 database owner')
|
||||||
parser.add_argument('-s', '--save', action='store', help="save mapping of idbde")
|
parser.add_argument('-s', '--save', default='map.json', action='store', help="save mapping of idbde")
|
||||||
parser.add_argument('-m', '--map', action='store', help="import mapping of idbde")
|
parser.add_argument('-m', '--map', default='map.json', action='store', help="import mapping of idbde")
|
||||||
parser.add_argument('-c', '--chunk', type=int, default=100, help="chunk size for bulk_create")
|
parser.add_argument('-c', '--chunk', type=int, default=100, help="chunk size for bulk_create")
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
|
|
|
@ -82,7 +82,7 @@ class Command(ImportCommand):
|
||||||
"balance": row['solde'],
|
"balance": row['solde'],
|
||||||
"last_negative": None,
|
"last_negative": None,
|
||||||
"is_active": True,
|
"is_active": True,
|
||||||
"display_image": "",
|
"display_image": "pic/default.png",
|
||||||
"created_at": now()
|
"created_at": now()
|
||||||
}
|
}
|
||||||
if row["last_negatif"] is not None:
|
if row["last_negatif"] is not None:
|
||||||
|
|
|
@ -10,7 +10,7 @@ from django.db import transaction
|
||||||
|
|
||||||
from activity.models import ActivityType, Activity, Guest, Entry
|
from activity.models import ActivityType, Activity, Guest, Entry
|
||||||
from member.models import Club
|
from member.models import Club
|
||||||
from note.models import Note
|
from note.models import Note, NoteUser
|
||||||
from ._import_utils import ImportCommand, BulkCreateManager, timed
|
from ._import_utils import ImportCommand, BulkCreateManager, timed
|
||||||
|
|
||||||
MAP_ACTIVITY = dict()
|
MAP_ACTIVITY = dict()
|
||||||
|
@ -19,9 +19,13 @@ CLUB_RELOU = [
|
||||||
0, # BDE
|
0, # BDE
|
||||||
4771, # Kataclist
|
4771, # Kataclist
|
||||||
5162, # Assurance BDE ?!
|
5162, # Assurance BDE ?!
|
||||||
5164, #S & L
|
5164, # S & L
|
||||||
625, #Aspique
|
625, # Aspique
|
||||||
5154, #Frekens
|
5154, # Frekens
|
||||||
|
3944, # DiskJok[ENS]
|
||||||
|
5153, # Monopo[list]
|
||||||
|
2351, # JdRM
|
||||||
|
2365, # Pot Vieux
|
||||||
]
|
]
|
||||||
|
|
||||||
class Command(ImportCommand):
|
class Command(ImportCommand):
|
||||||
|
@ -40,11 +44,13 @@ class Command(ImportCommand):
|
||||||
pk_activity = 1
|
pk_activity = 1
|
||||||
for idx, row in enumerate(cur):
|
for idx, row in enumerate(cur):
|
||||||
self.update_line(idx, n, row["titre"])
|
self.update_line(idx, n, row["titre"])
|
||||||
|
if row["responsable"] in CLUB_RELOU:
|
||||||
|
row["responsable"] = 3508
|
||||||
note = self.MAP_IDBDE[row["responsable"]]
|
note = self.MAP_IDBDE[row["responsable"]]
|
||||||
if note == 6244:
|
if note == 6244:
|
||||||
# Licorne magique ne doit pas utiliser son compte club pour proposer des activités
|
# Licorne magique ne doit pas utiliser son compte club pour proposer des activités
|
||||||
note = Note.objects.get(pk=self.MAP_IDBDE[6524])
|
note = Note.objects.get(pk=self.MAP_IDBDE[6524])
|
||||||
note = note.user_id
|
note = note.id
|
||||||
organizer = Club.objects.filter(name=row["signature"])
|
organizer = Club.objects.filter(name=row["signature"])
|
||||||
if organizer.exists():
|
if organizer.exists():
|
||||||
# Try to find the club that organizes the activity.
|
# Try to find the club that organizes the activity.
|
||||||
|
@ -57,7 +63,7 @@ class Command(ImportCommand):
|
||||||
"name": row["titre"],
|
"name": row["titre"],
|
||||||
"description": row["description"],
|
"description": row["description"],
|
||||||
"activity_type_id": activity_type_id, # By default Pot
|
"activity_type_id": activity_type_id, # By default Pot
|
||||||
"creater_id": note,
|
"creater_id": NoteUser.objects.get(pk=note).user.id,
|
||||||
"organizer_id": organizer.pk,
|
"organizer_id": organizer.pk,
|
||||||
"attendees_club_id": kfet.pk, # Maybe fix manually
|
"attendees_club_id": kfet.pk, # Maybe fix manually
|
||||||
"date_start": make_aware(row["debut"]),
|
"date_start": make_aware(row["debut"]),
|
||||||
|
|
|
@ -4,7 +4,9 @@ import subprocess
|
||||||
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
|
||||||
|
|
||||||
class Command(BaseCommand):
|
from ._import_utils import ImportCommand
|
||||||
|
|
||||||
|
class Command(ImportCommand):
|
||||||
"""
|
"""
|
||||||
Command for importing the database of NK15.
|
Command for importing the database of NK15.
|
||||||
Need to be run by a user with a registered role in postgres for the database nk15.
|
Need to be run by a user with a registered role in postgres for the database nk15.
|
||||||
|
@ -12,7 +14,20 @@ class Command(BaseCommand):
|
||||||
|
|
||||||
def handle(self, *args, **kwargs):
|
def handle(self, *args, **kwargs):
|
||||||
subprocess.call("./apps/scripts/shell/tabularasa")
|
subprocess.call("./apps/scripts/shell/tabularasa")
|
||||||
call_command('import_account', alias=True, chunk=1000, save = "map.json")
|
|
||||||
call_command('import_activities', chunk=100, map="map.json")
|
kwargs["alias"] = True
|
||||||
call_command('import_transaction', chunk=10000, buttons=True, map="map.json")
|
kwargs["chunk"] = 1000
|
||||||
|
kwargs["save"] = "map.json"
|
||||||
|
call_command('import_account', **kwargs)
|
||||||
|
|
||||||
|
del kwargs["alias"]
|
||||||
|
del kwargs["save"]
|
||||||
|
kwargs["chunk"] = 100
|
||||||
|
kwargs["map"] = "map.json"
|
||||||
|
call_command('import_activities', **kwargs)
|
||||||
|
|
||||||
|
kwargs["chunk"] = 10000
|
||||||
|
kwargs["map"] = "map.json"
|
||||||
|
kwargs["buttons"] = True
|
||||||
|
call_command('import_transaction', **kwargs)
|
||||||
#
|
#
|
||||||
|
|
|
@ -18,7 +18,7 @@ from note.models import (TemplateCategory,
|
||||||
from note.models import Note, NoteClub
|
from note.models import Note, NoteClub
|
||||||
from activity.models import Guest, GuestTransaction
|
from activity.models import Guest, GuestTransaction
|
||||||
|
|
||||||
from member.models import Membership, MembershipTransaction
|
from member.models import Membership, MembershipTransaction, Role
|
||||||
from ._import_utils import ImportCommand, BulkCreateManager, timed
|
from ._import_utils import ImportCommand, BulkCreateManager, timed
|
||||||
|
|
||||||
BDE_PK = 1
|
BDE_PK = 1
|
||||||
|
@ -49,7 +49,7 @@ class Command(ImportCommand):
|
||||||
parser.add_argument('-t', '--transactions', action='store', default=0, help="start id for transaction import")
|
parser.add_argument('-t', '--transactions', action='store', default=0, help="start id for transaction import")
|
||||||
|
|
||||||
@timed
|
@timed
|
||||||
def import_buttons(self, cur, chunk_size):
|
def import_buttons(self, cur, chunk_size, import_buttons):
|
||||||
self.categories = dict()
|
self.categories = dict()
|
||||||
self.buttons = dict()
|
self.buttons = dict()
|
||||||
bulk_mgr = BulkCreateManager(chunk_size=chunk_size)
|
bulk_mgr = BulkCreateManager(chunk_size=chunk_size)
|
||||||
|
@ -58,7 +58,7 @@ class Command(ImportCommand):
|
||||||
for idx, row in enumerate(cur):
|
for idx, row in enumerate(cur):
|
||||||
self.update_line(idx, n, row["label"])
|
self.update_line(idx, n, row["label"])
|
||||||
if row["categorie"] not in self.categories:
|
if row["categorie"] not in self.categories:
|
||||||
cat = TemplateCategory.objects.create(name=row["categorie"])
|
cat = TemplateCategory.objects.get_or_create(name=row["categorie"])[0]
|
||||||
cat.save()
|
cat.save()
|
||||||
self.categories[row["categorie"]] = cat.pk
|
self.categories[row["categorie"]] = cat.pk
|
||||||
obj_dict = {
|
obj_dict = {
|
||||||
|
@ -72,6 +72,7 @@ class Command(ImportCommand):
|
||||||
}
|
}
|
||||||
if row["label"] in self.buttons:
|
if row["label"] in self.buttons:
|
||||||
obj_dict["name"] = f"{obj_dict['name']}_{obj_dict['destination_id']}"
|
obj_dict["name"] = f"{obj_dict['name']}_{obj_dict['destination_id']}"
|
||||||
|
if import_buttons:
|
||||||
bulk_mgr.add(TransactionTemplate(**obj_dict))
|
bulk_mgr.add(TransactionTemplate(**obj_dict))
|
||||||
self.buttons[obj_dict["name"]] = (row["id"], self.categories[row["categorie"]])
|
self.buttons[obj_dict["name"]] = (row["id"], self.categories[row["categorie"]])
|
||||||
bulk_mgr.done()
|
bulk_mgr.done()
|
||||||
|
@ -130,6 +131,8 @@ class Command(ImportCommand):
|
||||||
m = re.search(r"Invitation (.*?)(?:\s\()(.*?)\s(.*?)\)", row["description"])
|
m = re.search(r"Invitation (.*?)(?:\s\()(.*?)\s(.*?)\)", row["description"])
|
||||||
if m:
|
if m:
|
||||||
first_name, last_name = m.group(2), m.group(3)
|
first_name, last_name = m.group(2), m.group(3)
|
||||||
|
if first_name == "Marion" and last_name == "Bizu Pose":
|
||||||
|
first_name, last_name = "Marion Bizu", "Pose"
|
||||||
guest_id = Guest.objects.filter(first_name__iexact=first_name,
|
guest_id = Guest.objects.filter(first_name__iexact=first_name,
|
||||||
last_name__iexact=last_name).first().pk
|
last_name__iexact=last_name).first().pk
|
||||||
child_dict["guest_id"] = guest_id
|
child_dict["guest_id"] = guest_id
|
||||||
|
@ -161,6 +164,9 @@ class Command(ImportCommand):
|
||||||
except (pytz.NonExistentTimeError, pytz.AmbiguousTimeError):
|
except (pytz.NonExistentTimeError, pytz.AmbiguousTimeError):
|
||||||
date = make_aware(row["transac_date"] + datetime.timedelta(hours=1))
|
date = make_aware(row["transac_date"] + datetime.timedelta(hours=1))
|
||||||
|
|
||||||
|
if len(row["description"]) > 255:
|
||||||
|
row["description"] = row["description"][:252] + "..."
|
||||||
|
|
||||||
# standart transaction object
|
# standart transaction object
|
||||||
obj_dict = {
|
obj_dict = {
|
||||||
"pk": pk_transaction,
|
"pk": pk_transaction,
|
||||||
|
@ -236,6 +242,20 @@ class Command(ImportCommand):
|
||||||
bulk_mgr.add(child_transaction(**child_dict))
|
bulk_mgr.add(child_transaction(**child_dict))
|
||||||
pk_transaction += 1
|
pk_transaction += 1
|
||||||
bulk_mgr.done()
|
bulk_mgr.done()
|
||||||
|
|
||||||
|
@timed
|
||||||
|
def adjust_roles(self):
|
||||||
|
bdeRole = Role.objects.get(name="Adhérent BDE")
|
||||||
|
kfetRole = Role.objects.get(name="Adhérent Kfet")
|
||||||
|
memberships = Membership.objects.all()
|
||||||
|
n = len(memberships)
|
||||||
|
for idx, membership in enumerate(memberships):
|
||||||
|
self.update_line(idx, n, membership.user.username)
|
||||||
|
if membership.club.name == "BDE":
|
||||||
|
membership.roles.set([bdeRole])
|
||||||
|
elif membership.club.name == "Kfet":
|
||||||
|
membership.roles.set([kfetRole])
|
||||||
|
|
||||||
@timed
|
@timed
|
||||||
def handle(self, *args, **kwargs):
|
def handle(self, *args, **kwargs):
|
||||||
# default args, provided by ImportCommand.
|
# default args, provided by ImportCommand.
|
||||||
|
@ -246,5 +266,6 @@ class Command(ImportCommand):
|
||||||
|
|
||||||
if kwargs["map"]:
|
if kwargs["map"]:
|
||||||
self.load_map(kwargs["map"])
|
self.load_map(kwargs["map"])
|
||||||
self.import_buttons(cur, kwargs["chunk"])
|
self.import_buttons(cur, kwargs["chunk"], kwargs["buttons"])
|
||||||
self.import_transaction(cur, kwargs["chunk"], 0)
|
self.import_transaction(cur, kwargs["chunk"], kwargs["transactions"])
|
||||||
|
self.adjust_roles()
|
||||||
|
|
Loading…
Reference in New Issue