From 6ad7974612641156197b4c66c21781b102bd9ab3 Mon Sep 17 00:00:00 2001 From: Pierre-antoine Comby Date: Mon, 24 Feb 2020 14:17:48 +0100 Subject: [PATCH] import script is move to new repository --- apps/member/management/__init__.py | 0 apps/member/management/commands/__init__.py | 0 .../member/management/commands/import_nk15.py | 216 ------------------ 3 files changed, 216 deletions(-) delete mode 100644 apps/member/management/__init__.py delete mode 100644 apps/member/management/commands/__init__.py delete mode 100644 apps/member/management/commands/import_nk15.py diff --git a/apps/member/management/__init__.py b/apps/member/management/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/member/management/commands/__init__.py b/apps/member/management/commands/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/member/management/commands/import_nk15.py b/apps/member/management/commands/import_nk15.py deleted file mode 100644 index 4b8d57aa..00000000 --- a/apps/member/management/commands/import_nk15.py +++ /dev/null @@ -1,216 +0,0 @@ -#!/usr/env/bin python3 - -from django.core.management.base import BaseCommand -from django.utils import timezone -import psycopg2 as pg -import psycopg2.extras as pge -from django.db import transaction - -import collections - -from django.core.exceptions import ValidationError -from django.db import IntegrityError -from django.contrib.auth.models import User -from note.models import Note, NoteSpecial, NoteUser, NoteClub -from note.models import Alias -from note.models import Transaction, TransactionTemplate, TemplateCategory, TransactionType -from member.models import Profile, Club - -""" -Script d'import de la nk15: -TODO: import aliases -TODO: import transactions -TODO: import adhesion -TODO: import activite -TODO: import - -""" -@transaction.atomic -def import_special(cur): - cur.execute("SELECT * FROM comptes WHERE idbde <0 ORDER BY idbde;") - map_idbde = dict() - for row in cur: - obj,created = NoteSpecial.objects.get_or_create(special_type = row["pseudo"], - balance = row["solde"], - is_active =True) - if created: - obj.save() - map_idbde[row["idbde"]] = obj.pk - - cur.execute("SELECT * FROM comptes WHERE idbde=0;") - res = cur.fetchone() - clubBde, c = Club.objects.get_or_create(pk = 1, - name = "Bde", - email = "bureau.bde@lists.crans.org", - membership_duration = "396 00:00:00", - membership_start = "213 00:00:00", - membership_end = "273 00:00:00", - membership_fee = 5, - ) - clubKfet, c = Club.objects.get_or_create(pk = 2, - name = "Kfet", - email = "tresorerie.bde@lists.crans.org", - membership_duration = "396 00:00:00", - membership_start = "213 00:00:00", - membership_end = "273 00:00:00", - membership_fee = 35, - ) - clubBde.save() - clubKfet.save() - clubBde.note.solde=res["solde"] - map_idbde[0] = clubKfet.note.pk - return map_idbde - - -@transaction.atomic -def import_comptes(cur,map_idbde): - cur.execute("SELECT * FROM comptes WHERE idbde > 0 ORDER BY idbde;") - pkclub = 3 - for row in cur: - if row["type"] == "personne": - #sanitize password - if row["passwd"] != "*|*": - passwd_nk15 = "$".join(["custom_nk15","1",row["passwd"]]) - else: - passwd_nk15 = '' - try: - obj_dict = { - "username": row["pseudo"], - "password": passwd_nk15, - "first_name": row["nom"], - "last_name": row["prenom"], - "email": row["mail"], - "is_active" : False, # temporary - } - user = User.objects.create(**obj_dict) - #sanitize duplicate aliases (nk12) - except ValidationError as e: - if e.code == 'same_alias': - obj_dict["username"] = row["pseudo"]+str(row["idbde"]) - user = User.objects.create(**obj_dict) - else: - raise(e) - else: - pass - obj_dict ={ - "phone_number": row["tel"], - "address": row["adresse"], - "paid": row["normalien"], - "user": user, - } - profile = Profile.objects.create(**obj_dict) - note = user.note - note.balance = row["solde"] - obj_list =[user, profile, note] - else: # club - obj_dict = { - "pk":pkclub, - "name": row["pseudo"], - "email": row["mail"], - "membership_duration": "396 00:00:00", - "membership_start": "213 00:00:00", - "membership_end": "273 00:00:00", - "membership_fee": 0, - } - club,c = Club.objects.get_or_create(**obj_dict) - pkclub +=1 - note = club.note - note.balance = row["solde"] - obj_list = [club,note] - for obj in obj_list: - obj.save() - map_idbde[row["idbde"]] = note.pk - return map_idbde - - -@transaction.atomic -def import_boutons(cur,map_idbde): - cur.execute("SELECT * FROM boutons;") - for row in cur: - cat, created = TemplateCategory.objects.get_or_create(name=row["categorie"]) - obj_dict = { - "pk": row["id"], - "name": row["label"], - "amount": row["montant"], - "destination_id": map_idbde[row["destinataire"]], - "category": cat, - "display" : row["affiche"], - "description": row["description"], - } - try: - with transaction.atomic(): # required for error management - button = TransactionTemplate.objects.create(**obj_dict) - except IntegrityError as e: - if "unique" in e.args[0]: - qs = Club.objects.filter(note__id=map_idbde[row["destinataire"]]).values('name') - note_name = qs[0]["name"] - obj_dict["name"] = ' '.join([obj_dict["name"],note_name]) - button = TransactionTemplate.objects.create(**obj_dict) - else: - raise(e) - if created: - cat.save() - button.save() - - -@transaction.atomic -def import_transaction(cur, map_idbde): - cur.execute("SELECT * FROM transactions;") - for row in cur: - obj_dict = { - "pk":row["id"], - } - -@transaction.atomic -def import_aliases(cur,map_idbde): - cur.execute("SELECT * FROM aliases ORDER by id") - for row in cur: - alias_name = row["alias"] - alias_name_good = (alias_name[:252]+'...') if len(alias_name) > 255 else alias_name - obj_dict = { - "note_id":map_idbde[row["idbde"]], - "name":alias_name_good, - } - try: - with transaction.atomic(): - alias = Alias.objects.create(**obj_dict) - except IntegrityError as e: - if "unique" in e.args[0]: - continue - else: - raise(e) - alias.save() - - -class Command(BaseCommand): - """ - Command for importing the database of NK15. - Need to be run by a user with a registered role in postgres for the database nk15. - """ - def add_arguments(self,parser): - parser.add_argument('-s', '--special', action = 'store_true') - parser.add_argument('-c', '--comptes', action = 'store_true') - parser.add_argument('-b', '--boutons', action = 'store_true') - parser.add_argument('-t', '--transactions', action = 'store_true') - parser.add_argument('-a', '--aliases', action = 'store_true') - - def handle(self, *args, **kwargs): - conn = pg.connect(database="nk15",user="nk15_user") - cur = conn.cursor(cursor_factory = pge.DictCursor) - - if kwargs["special"]: - map_idbde = import_special(cur) - print("Minimal setup created") - - if kwargs["comptes"]: - map_idbde = import_comptes(cur,map_idbde) - print("comptes table imported") - - if kwargs["boutons"]: - import_boutons(cur,map_idbde) - print("boutons table imported") - if kwargs["transactions"]: - import_transaction(cur) - if kwargs["aliases"]: - import_aliases(cur,map_idbde) - print("aliases imported")