TiBillet-Ticket-Nonfree/DjangoFiles/QrcodeCashless/management/commands/load_card.py

84 lines
2.4 KiB
Python

import os
from django.core.exceptions import ValidationError
from django.core.management.base import BaseCommand
from Customers.models import Client, Domain
from QrcodeCashless.models import Detail, CarteCashless
from django.core.validators import URLValidator
import csv, uuid
class Command(BaseCommand):
def is_string_an_url(self, url_string):
validate_url = URLValidator()
try:
validate_url(url_string)
except ValidationError as e:
return False
return True
def handle(self, *args, **options):
for client in Client.objects.all():
print (client.schema_name)
input_client = input('quel client ? \n')
client_tenant = Client.objects.get(schema_name=input_client)
print(' ')
input_generation = input('quelle génération ? \n')
print(' ')
print('url, numéro imprimé len(8), fisrt tag id len(8)')
input_fichier_csv = input('path fichier csv ? \n')
file = open(input_fichier_csv)
# file = open('data/raffinerie_1_RETOUR_USINE.csv')
csv_parser = csv.reader(file)
list_csv = []
for line in csv_parser:
list_csv.append(line)
# on saucissonne l'url d'une ligne au pif :
part = list_csv[10][0].partition('/qr/')
base_url = f"{part[0]}{part[1]}"
if self.is_string_an_url(base_url) :
detail_carte, created = Detail.objects.get_or_create(
base_url=base_url,
origine=client_tenant,
generation=input_generation,
)
numline = 1
for line in list_csv:
print(numline)
part = line[0].partition('/qr/')
try:
uuid_url = uuid.UUID(part[2])
print(f"uuid_url : {uuid_url}")
print(f"number : {line[1]}")
print(f"tag_id : {line[2]}")
if str(uuid_url).partition('-')[0].upper() != line[1]:
print('ERROR PRINT != uuid')
break
carte, created = CarteCashless.objects.get_or_create(
tag_id=line[2],
uuid=uuid_url,
number=line[1],
detail=detail_carte,
)
numline += 1
except:
pass