def import_inscriptos(): # Listo para las jornadas ... # Modificar para el sistema del Consejo response.view = 'curso/import_inscriptos.html' curso = Curso(request.args(0, cast=int)) rows = [] form = SQLFORM.factory( Field('csv_inscriptos', 'upload', label='Archivo CSV', uploadfolder='uploads/csv/'), formstyle='bootstrap3_stacked') if form.process().accepted: csvfile = request.vars.csv_inscriptos.file csvfile.seek(0) # jump_first_iteration = False for line in csv.DictReader(csvfile): persona = db(Persona.dni == line['inscripcion.dni']).select() if not persona: # Agregamos una nueva persona persona = Persona.validate_and_insert( profesion=line['inscripcion.profesion'], nombre_apellido='%(inscripcion.apellido)s, %(inscripcion.nombre)s' % line, dni=curso_aux.sanitize_dni(line['inscripcion.dni']), email=line['inscripcion.email'], matricula=line['inscripcion.matricula'], telefono=line['inscripcion.telefono'], domicilio=line['consejo.nombre'] ) if persona.errors: # control de personas con errores al importar. pass persona = [persona] if db((Inscripto.curso == curso) & (Inscripto.persona == persona[0].id)).isempty(): inscripto = Inscripto.insert(curso=curso, persona=persona[0].id, fecha_inscripcion=request.now) session.flash = 'Se importó con éxitos!' csvfile.close() redirect(URL(c='curso', f='index', args=('view', 'curso', curso.id), user_signature=True)) return dict(form=form, curso=curso, rows=rows)
def import_pagos(): # Importar Pagos desde csv [Exclusivo para XIJORNADAS SECTOR PUBLICO] curso_id = request.args(0, cast=int) fields = (Inscripto.id, Inscripto.persona, Persona.dni) inscriptos = db(Inscripto.curso == curso_id).select( *fields, left=Inscripto.on(Inscripto.persona==Persona.id)) rows = [] form = SQLFORM.factory( Field('csv_pagos', 'upload', label='Archivo CSV PAGOS', uploadfolder='uploads/csv/'), formstyle='bootstrap3_stacked') if form.process().accepted: csvfile = request.vars.csv_pagos.file csvfile.seek(0) for line in csv.DictReader(csvfile, delimiter=';'): row = inscriptos.find( lambda r: r['persona']['dni'] == curso_aux.sanitize_dni(line['dni'])) msg = '0' * 15 permitir_acreditacion = False if row: row = row[0] if line['innominadas']: msg = 'INNOMINADAS Monto: %.2f' % float(line['innominadas']) permitir_acreditacion = True if line['acreditado'] == '*': permitir_acreditacion = True pago = Pagos.validate_and_insert( inscripto=row.inscripto.id, monto=line['pago_total'], nro_recibo=msg, created_on=curso_aux.str2date(line['fecha_pago'])) if not pago.errors: row.inscripto.update_record(pago=permitir_acreditacion) session.flash = 'Se importó con éxitos los pagos' csvfile.close() redirect(URL(c='curso', f='index', args=('view', 'curso', curso_id), user_signature=True)) return dict(form=form, curso_id=curso_id)