#!/usr/bin/python3 """Generar una base de datos trucha para testear programas. """ import struct, sys, random def pack_registro(cliente, causa, pago, mesdepago): """struct Registro { CLIENTE (string DE 20); CAUSA (string de 20); PAGO (float); MESDEPAGO (int); } """ return struct.pack("< 20s 20s f i", cliente.encode('utf-8'), causa.encode('utf-8'), pago, mesdepago) def pack_abogado(causa, abogado): """struct Info_Abogado{ CAUSA (string de 20); ABOGADO (string DE 20); } """ return struct.pack("< 20s 20s", causa.encode('utf-8'), abogado.encode('utf-8')) # Creo que una causa es algo como FSM 14431/2015 lo cual es # . En # # vemos “FSM 14431/2015/CS1-CA2”. Según # FSM es “jurisdicción” y # 14431/2015 es “número/año”. Otros números que saco de fallos # recientes en son “CSJ # 663/2016”, “CSJ 1220/2020/RH1”, y “FPO 733/2020/CS1”. En home.seam # tenemos la lista siguiente: jurisdicciones_lineas = """CSJ - Corte Suprema de Justicia de la Nación CIV - Cámara Nacional de Apelaciones en lo Civil CAF - Cámara Nacional de Apelaciones en lo Contencioso Administrativo Federal CCF - Cámara Nacional de Apelaciones en lo Civil y Comercial Federal CNE - Cámara Nacional Electoral CSS - Camara Federal de la Seguridad Social CPE - Cámara Nacional de Apelaciones en lo Penal Económico CNT - Cámara Nacional de Apelaciones del Trabajo CFP - Camara Criminal y Correccional Federal CCC - Camara Nacional de Apelaciones en lo Criminal y Correccional COM - Camara Nacional de Apelaciones en lo Comercial CPF - Camara Federal de Casación Penal CPN - Camara Nacional Casacion Penal FBB - Justicia Federal de Bahia Blanca FCR - Justicia Federal de Comodoro Rivadavia FCB - Justicia Federal de Córdoba FCT - Justicia Federal de Corrientes FGR - Justicia Federal de General Roca FLP - Justicia Federal de La Plata FMP - Justicia Federal de Mar del Plata FMZ - Justicia Federal de Mendoza FPO - Justicia Federal de Posadas FPA - Justicia Federal de Paraná FRE - Justicia Federal de Resistencia FSA - Justicia Federal de Salta FRO - Justicia Federal de Rosario FSM - Justicia Federal de San Martin FTU - Justicia Federal de Tucuman """ jurisdicciones = [line.split()[0] for line in jurisdicciones_lineas.split('\n') if line] def generar_causa(): numero = random.randrange(20_000) annus = random.randrange(2000, 2024) return f'{random.choice(jurisdicciones)} {numero}/{annus}' # ver nombres.py apellidos = '''González Rodríguez Fernández López Gómez Martínez García Pérez Díaz Sanchez Romero Álvarez Sosa Torres Ruiz Ramírez Benítez Flores Acosta Gutiérrez Giménez Suárez Medina Rojas Castro Aguirre Herrera Molina Pereyra Ortíz Nuñez Silva'''.split() nombres = '''Alberto Daniel Beatriz Alejandro María Jose Alejandra Soledad Luis Javier Antonio Martín Carlos Gabriel Andrés'''.split() def generar_persona(): return f'{random.choice(apellidos)}, {random.choice(nombres)}' class Urna: def __init__(self, generador, crecimiento=1): self.crecimiento = crecimiento self.generador = generador self.items = [] def sacar(self): cual = random.randrange(len(self.items) + self.crecimiento) if cual < len(self.items): return self.items[cual] nuevo = self.generador() self.items.append(nuevo) return nuevo def __iter__(self): return iter(self.items) def generar_base(n, causas_file, pagos_file): causas = Urna(generar_causa) clientes = Urna(generar_persona, crecimiento=5) for i in range(n): pagos_file.write(pack_registro(cliente=clientes.sacar(), causa=causas.sacar(), pago=random.randrange(int(1e9))/100, mesdepago=random.randrange(1, 13))) abogados = Urna(generar_persona) for causa in causas: causas_file.write(pack_abogado(causa, abogados.sacar())) if __name__ == '__main__': if len(sys.argv) != 4: sys.stderr.write(f'''Usage: {sys.argv[0]} 53 archivocausas archivopagos 53 es el número de pagos para generar. archivocausas es el nombre del archivo de causas para sobreescribir. archivopagos es el nombre del archivo de pagos para sobreescribir. ''') sys.exit(1) n = int(sys.argv[1]) generar_base(n, open(sys.argv[2], 'wb'), open(sys.argv[3], 'wb'))