def new_persona(request): #se ejecuta cuando el usuario envia el formulario con lo datos if request.method == 'POST': #Crea una instancia del autor form = PersonaForm(request.POST) #Evaluamos si el formulario es correcto, lo guardamos y redireccionamos if form.is_valid(): #Obtenemos lo datos del formulario ciudadd = Ciudad.objects.get(pk=2) docd = TipoDocumento.objects.get(pk=2) nombrex = form.cleaned_data['nombres'] apellidox = form.cleaned_data['apellidos'] documentox = form.cleaned_data['documento'] fechanacimientox = form.cleaned_data['fechanacimiento'] emailx = form.cleaned_data['email'] telefonox = form.cleaned_data['telefono'] usuariox = form.cleaned_data['usuario'] passwordx = form.cleaned_data['password'] persona = Persona(idtipoDocumento= docd, ciudad= ciudadd, nombres=nombrex, apellidos = apellidox, documento =documentox, fechanacimiento=fechanacimientox, email = emailx,telefono=telefonox, usuario=usuariox,password=passwordx) persona.save() return HttpResponseRedirect(reverse('personas')) else: #Se ejecuta cuando el usuario va a llenar el formulario form = PersonaForm() return render(request, 'persona/create_personas.html', {'form': form})
def setUp(self): self.persona = Persona(nombre="Alguien", apellido="Alguien", doc="123321123", domicilio="cale213", email="*****@*****.**") self.persona.save() self.persona.agregar_rol(Tecnico()) self.persona.agregar_rol(Cliente()) self.usuario = Usuario.objects.crear_usuario(username="******", password="******", persona=self.persona) self.persona.agregar_rol(Usuario()) self.persona.save() self.rubro = Rubro(nombre="Notebooks", descripcion="Reparación de notebooks") self.rubro.save() self.tipo_servicio = TipoServicio( nombre="Taller", descripcion="Reparación de equipos en taller") self.tipo_servicio.save() self.descripcion = "Ta todo completamente hecho mierda" self.orden = Orden(cliente=self.persona.como(Cliente), usuario=self.usuario, tecnico=self.persona.como(Tecnico), rubro=self.rubro, equipo=None, tipo_servicio=self.tipo_servicio, descripcion=self.descripcion) self.orden.save()
def setUp(self): # Creamos una orden de trabajo para probar comportamiento de la reserva de stock # frente a las tareas self.persona = Persona( nombre="Alguien", apellido="Alguien", doc="123321123", domicilio="cale213", email="*****@*****.**" ) self.persona.save() self.persona.agregar_rol(Tecnico()) self.persona.agregar_rol(Cliente()) self.usuario = Usuario.objects.crear_usuario(username="******", password="******", persona=self.persona) self.persona.agregar_rol(Usuario()) self.persona.save self.rubro = Rubro(nombre="Notebooks", descripcion="Reparación de notebooks") self.rubro.save() self.tipo_servicio = TipoServicio(nombre="Taller", descripcion="Reparación de equipos en taller") self.tipo_servicio.save() self.descripcion = "Ta destruida la máquina" self.orden = Orden( cliente=self.persona.como(Cliente), usuario=self.usuario, tecnico=self.persona.como(Tecnico), rubro=self.rubro, equipo=None, tipo_servicio=self.tipo_servicio, descripcion=self.descripcion ) self.orden.save() # creamos un producto, tarifa y tarea para reservar stock self.producto = Producto( nombre="SSD", descripcion="Disco de estado sólido", marca="kingstong", stock_minimo=10, stock=20, precio=600 ) self.producto.save() self.tipo_tarea = TipoTarea(nombre="Cambio de disco", rubro=self.rubro) self.tipo_tarea.save() self.tarifa = Tarifa(tipo_tarea=self.tipo_tarea, tipo_servicio=self.tipo_servicio, precio=300) self.tarifa.save() self.tarea = Tarea.crear( tipo_tarea=self.tipo_tarea, orden=self.orden, observacion="Guardar el disco viejo") self.tarea.save() # Reserva de 12 unidades del producto el stock mínimo del producto es 10 self.reserva = ReservaStock(tarea=self.tarea, producto=self.producto, cantidad=12) self.reserva.save()
def save(self, empleado=None): cleaned_data = super(EmpleadoForm, self).clean() if empleado is None: persona = Persona() persona.tipo = Persona.TIPO_PERSONA_NATURAL persona.observaciones = cleaned_data["observaciones"] persona.ruc = cleaned_data["cedula"] persona.nombre_comercial = "" persona.save() usuario = User() usuario.username = cleaned_data["usuario"] usuario.set_password(cleaned_data["contrasenia"]) usuario.email = cleaned_data["email"] usuario.save() persona_natural = PersonaNatural() persona_natural.ciudad_nacimiento = cleaned_data['ciudad'] persona_natural.cedula = cleaned_data["cedula"] persona_natural.nombres = cleaned_data["nombres"] persona_natural.apellido_paterno = cleaned_data["apellido_paterno"] persona_natural.apellido_materno = cleaned_data["apellido_materno"] persona_natural.persona = persona persona_natural.sexo = cleaned_data["sexo"] persona_natural.fecha_nacimiento = cleaned_data["fecha_nacimiento"] persona_natural.save() empleado = Empleado() empleado.persona = persona_natural empleado.usuario = usuario empleado.foto = cleaned_data["foto"] empleado.observaciones = cleaned_data["observaciones"] empleado.save() empleado.plazas_trabajo = cleaned_data["plazas_trabajo"] empleado.save() else: empleado.persona.nombres = cleaned_data["nombres"] empleado.persona.apellido_paterno = cleaned_data[ "apellido_paterno"] empleado.persona.apellido_materno = cleaned_data[ "apellido_materno"] empleado.persona.sexo = cleaned_data["sexo"] empleado.persona.cedula = cleaned_data["cedula"] empleado.persona.ciudad_nacimiento = cleaned_data["ciudad"] empleado.persona.save() empleado.usuario.email = cleaned_data["email"] empleado.usuario.save() empleado.foto = cleaned_data["foto"] empleado.observaciones = cleaned_data["observaciones"] empleado.save() empleado.plazas_trabajo = cleaned_data["plazas_trabajo"] empleado.save() return empleado
def dispatch(self, request, *args, **kwargs): self.persona = Persona() self.ReciboFormset = inlineformset_factory(Persona, Recibo, form=ReciboForm, fk_name='cliente', extra=1) return super(CreateView, self).dispatch(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs): self.persona = Persona() self.BeneficiarioFormset = inlineformset_factory(Persona, Beneficiario, form=BeneficiarioForm, fk_name='persona', extra=1) return super(BeneficiarioPersonaCreateView, self).dispatch(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs): self.persona = Persona() self.ContratoFormset = inlineformset_factory(Persona, Contrato, form=ContratoForm, fk_name='persona', extra=1) return super(ContratoPersonaCreateView, self).dispatch(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs): self.persona = Persona() self.PacienteFormset = inlineformset_factory(Persona, Paciente, form=PacienteForm, fk_name='persona', extra=1) return super(PacientePersonaCreateView, self).dispatch(request, *args, **kwargs)
def setUp(self): # creamos una orden de trabajo para agregarle tareas self.persona = Persona(nombre="Alguien", apellido="Alguien", doc="123321123", domicilio="cale213", email="*****@*****.**") self.persona.save() self.persona.agregar_rol(Tecnico()) self.persona.agregar_rol(Cliente()) self.usuario = Usuario.objects.crear_usuario(username="******", password="******", persona=self.persona) self.persona.agregar_rol(Usuario()) self.persona.save self.rubro = Rubro(nombre="Notebooks", descripcion="Reparación de notebooks") self.rubro.save() self.tipo_servicio = TipoServicio( nombre="Taller", descripcion="Reparación de equipos en taller") self.tipo_servicio.save() self.descripcion = "Ta todo completamente hecho mierda" self.orden = Orden(cliente=self.persona.como(Cliente), usuario=self.usuario, tecnico=self.persona.como(Tecnico), rubro=self.rubro, equipo=None, tipo_servicio=self.tipo_servicio, descripcion=self.descripcion) self.orden.save() # creamos un producto para reservar stock self.producto = Producto(nombre="SSD", descripcion="Disco de estado sólido", marca="Kingtong", stock_minimo=10, stock=20, precio=600) self.producto.save()
def check_line(line, vencimiento): file_pcd = int(line[4]) file_certificado = int(line[6]) poliza_f = int(line[5]) vencimiento_r = None master = MasterContract.objects.get(poliza=poliza_f) if line[21]: venc = server_timezone.localize(datetime.strptime(line[21], '%m/%d/%Y')) if venc <= vencimiento: vencimiento_r = venc else: vencimiento_r = vencimiento else: vencimiento_r = vencimiento try: pcd = PCD.objects.get(numero=file_pcd) contratos = pcd.persona.contratos.filter( certificado=file_certificado) for contrato in contratos.all(): contrato.vencimiento = vencimiento_r contrato.plan = master.plan contrato.master = master contrato.save() for beneficiario in pcd.persona.beneficiarios.all(): beneficiario.contrato.vencimiento = vencimiento_r beneficiario.contrato.save() except ObjectDoesNotExist: apellido_f, nombre_f = line[10].split(",") nacimiento_f = server_timezone.localize( datetime.strptime(line[16], "%m/%d/%Y")) sexo_f = line[15] identificacion = line[24] persona = Persona(nombre=nombre_f, apellido=apellido_f, sexo=sexo_f, nacimiento=nacimiento_f, identificacion=identificacion) persona.save() pcd = PCD(persona=persona, numero=file_pcd) pcd.save() dependiente = int(line[8]) if dependiente == 0: contract = master.create_contract(persona, vencimiento_r, file_certificado, file_pcd) contract.save() else: contract = Contrato.objects.filter(poliza=poliza_f, certificado=file_certificado).first() if contract: beneficiario = Beneficiario(persona=persona, contrato=contract) beneficiario.save() except MultipleObjectsReturned: pass
class ProductoTest(TestCase): def setUp(self): # Creamos una orden de trabajo para probar comportamiento de la reserva de stock # frente a las tareas self.persona = Persona( nombre="Alguien", apellido="Alguien", doc="123321123", domicilio="cale213", email="*****@*****.**" ) self.persona.save() self.persona.agregar_rol(Tecnico()) self.persona.agregar_rol(Cliente()) self.usuario = Usuario.objects.crear_usuario(username="******", password="******", persona=self.persona) self.persona.agregar_rol(Usuario()) self.persona.save self.rubro = Rubro(nombre="Notebooks", descripcion="Reparación de notebooks") self.rubro.save() self.tipo_servicio = TipoServicio(nombre="Taller", descripcion="Reparación de equipos en taller") self.tipo_servicio.save() self.descripcion = "Ta destruida la máquina" self.orden = Orden( cliente=self.persona.como(Cliente), usuario=self.usuario, tecnico=self.persona.como(Tecnico), rubro=self.rubro, equipo=None, tipo_servicio=self.tipo_servicio, descripcion=self.descripcion ) self.orden.save() # creamos un producto, tarifa y tarea para reservar stock self.producto = Producto( nombre="SSD", descripcion="Disco de estado sólido", marca="kingstong", stock_minimo=10, stock=20, precio=600 ) self.producto.save() self.tipo_tarea = TipoTarea(nombre="Cambio de disco", rubro=self.rubro) self.tipo_tarea.save() self.tarifa = Tarifa(tipo_tarea=self.tipo_tarea, tipo_servicio=self.tipo_servicio, precio=300) self.tarifa.save() self.tarea = Tarea.crear( tipo_tarea=self.tipo_tarea, orden=self.orden, observacion="Guardar el disco viejo") self.tarea.save() # Reserva de 12 unidades del producto el stock mínimo del producto es 10 self.reserva = ReservaStock(tarea=self.tarea, producto=self.producto, cantidad=12) self.reserva.save() def test_save(self): # testeamos que se hayan formateado las cadenas nombre y marca a formamo title self.assertTrue(str.istitle(self.producto.nombre)) self.assertTrue(str.istitle(self.producto.marca)) # intentamos crear nuevamente el producto comprobando que lanza excepción try: producto = Producto( nombre="ssd", descripcion="Disco de estado sólido", marca="kingstong", stock_minimo=10, stock=20, precio=600 ) producto.save() except Exception as e: #print(str(e)) pass self.assertFalse(producto.id) def test_stock_disponible(self): # En línea 52 se fijó el stock en 20. En linea 67 se creó una reserva de 12 self.assertEqual(self.producto.stock_disponible, 8) def test_stock_reservado(self): self.assertEqual(self.producto.stock_reservado, 12) def test_stock_bajo(self): # En línea 51 se fijó el stock mínimo requerido en 10. El stock es bajo si # stock disponible (8) < sotck mínimo (10) self.assertTrue(self.producto.stock_es_bajo)
def check_line(line, vencimiento): file_pcd = int(line[4]) file_certificado = int(line[6]) poliza_f = int(line[5]) vencimiento_r = None master = MasterContract.objects.get(poliza=poliza_f) if line[21]: venc = server_timezone.localize(datetime.strptime( line[21], '%m/%d/%Y')) if venc <= vencimiento: vencimiento_r = venc else: vencimiento_r = vencimiento else: vencimiento_r = vencimiento try: pcd = PCD.objects.get(numero=file_pcd) contratos = pcd.persona.contratos.filter(certificado=file_certificado) for contrato in contratos.all(): contrato.vencimiento = vencimiento_r contrato.plan = master.plan contrato.master = master contrato.save() for beneficiario in pcd.persona.beneficiarios.all(): beneficiario.contrato.vencimiento = vencimiento_r beneficiario.contrato.save() except ObjectDoesNotExist: apellido_f, nombre_f = line[10].split(",") nacimiento_f = server_timezone.localize( datetime.strptime(line[16], "%m/%d/%Y")) sexo_f = line[15] identificacion = line[24] persona = Persona(nombre=nombre_f, apellido=apellido_f, sexo=sexo_f, nacimiento=nacimiento_f, identificacion=identificacion) persona.save() pcd = PCD(persona=persona, numero=file_pcd) pcd.save() dependiente = int(line[8]) if dependiente == 0: contract = master.create_contract(persona, vencimiento_r, file_certificado, file_pcd) contract.save() else: contract = Contrato.objects.filter( poliza=poliza_f, certificado=file_certificado).first() if contract: beneficiario = Beneficiario(persona=persona, contrato=contract) beneficiario.save() except MultipleObjectsReturned: pass
def check_line(line, vencimiento): file_pcd = line[0] file_certificado = int(line[2]) poliza_f = line[1] apellido_f, nombre_f = line[4].split(",") nacimiento_f = server_timezone.localize( datetime.strptime(line[6], "%m/%d/%Y")) sexo_f = line[5] identificacion = line[9] vencimiento_r = vencimiento activo = line[7].upper() master = MasterContract.objects.get(poliza=poliza_f) if line[8]: venc = server_timezone.localize(datetime.strptime(line[8], '%m/%d/%Y')) if venc <= vencimiento_r: vencimiento_r = venc try: pcd = PCD.objects.get(numero=file_pcd) persona = pcd.persona persona.apellido = apellido_f persona.nombre = nombre_f persona.save() contratos = Contrato.objects.filter(persona=persona, certificado=file_certificado) for contrato in contratos.all(): contrato.vencimiento = vencimiento_r contrato.plan = master.plan contrato.master = master contrato.exclusion = line[10] if activo == 'S': contrato.suspendido = True else: contrato.suspendido = False contrato.save() for beneficiario in Beneficiario.objects.filter( persona=persona).all(): beneficiario.contrato.vencimiento = vencimiento_r beneficiario.exclusion = line[10] beneficiario.contrato.save() except ObjectDoesNotExist: persona = Persona(nombre=nombre_f, apellido=apellido_f, sexo=sexo_f, nacimiento=nacimiento_f, identificacion=identificacion) persona.save() pcd = PCD(persona=persona, numero=file_pcd) pcd.save() dependiente = int(line[3]) if dependiente == 0: contract = master.create_contract(persona, vencimiento_r, file_certificado, file_pcd) if activo == 'S': contract.suspendido = True else: contract.suspendido = False contract.exclusion = line[10] contract.save() else: contract = Contrato.objects.filter(poliza=poliza_f, certificado=file_certificado).first() if contract: beneficiario = Beneficiario(persona=persona, contrato=contract) beneficiario.exclusion = line[10] beneficiario.save() except MultipleObjectsReturned: pass
class TareaTest(TestCase): def setUp(self): # creamos una orden de trabajo para agregarle tareas self.persona = Persona(nombre="Alguien", apellido="Alguien", doc="123321123", domicilio="cale213", email="*****@*****.**") self.persona.save() self.persona.agregar_rol(Tecnico()) self.persona.agregar_rol(Cliente()) self.usuario = Usuario.objects.crear_usuario(username="******", password="******", persona=self.persona) self.persona.agregar_rol(Usuario()) self.persona.save self.rubro = Rubro(nombre="Notebooks", descripcion="Reparación de notebooks") self.rubro.save() self.tipo_servicio = TipoServicio( nombre="Taller", descripcion="Reparación de equipos en taller") self.tipo_servicio.save() self.descripcion = "Ta todo completamente hecho mierda" self.orden = Orden(cliente=self.persona.como(Cliente), usuario=self.usuario, tecnico=self.persona.como(Tecnico), rubro=self.rubro, equipo=None, tipo_servicio=self.tipo_servicio, descripcion=self.descripcion) self.orden.save() # creamos un producto para reservar stock self.producto = Producto(nombre="SSD", descripcion="Disco de estado sólido", marca="Kingtong", stock_minimo=10, stock=20, precio=600) self.producto.save() def test_crear(self): # Creamos un tipo de tarea y una tarifa para la creación de la tarea self.tipo_tarea = TipoTarea(nombre="Cambio de disco", rubro=self.rubro) self.tipo_tarea.save() self.tarifa = Tarifa(tipo_tarea=self.tipo_tarea, tipo_servicio=self.tipo_servicio, precio=300) self.tarifa.save() # creamos la tarea self.tarea = Tarea.crear(tipo_tarea=self.tipo_tarea, orden=self.orden, observacion="Guardar el disco viejo") # Testeamos que el precio de la tarea sea el precio de la tarifa self.assertEqual(self.tarifa.precio, self.tarea.precio) def test_crear_sin_tarifa(self): # Creamos un tipo de tarea sin tarifa para la creación de la tarea self.tipo_tarea = TipoTarea(nombre="crear_sin_tarifa", rubro=self.rubro) self.tipo_tarea.save() # Verificamos que el tipo de tarea creado no tiene tareas asociadas self.assertEqual(self.tipo_tarea.tareas.all().count(), 0) try: # creamos la tarea self.tarea = Tarea.crear(tipo_tarea=self.tipo_tarea, orden=self.orden, observacion="Guardar el disco viejo") except Exception as e: self.assertTrue(e) # Testeamos que el tipo de tarea sigue sin tareas asociadas self.assertEqual(self.tipo_tarea.tareas.all().count(), 0) def test_sos_estado(self): # Test para los métodos que preguntan si una tarea está en un determinado estado # Creamos un tipo de tarea y una tarifa para la creación de la tarea self.tipo_tarea = TipoTarea(nombre="Cambio de disco", rubro=self.rubro) self.tipo_tarea.save() self.tarifa = Tarifa(tipo_tarea=self.tipo_tarea, tipo_servicio=self.tipo_servicio, precio=300) self.tarifa.save() # creamos la tarea self.tarea = Tarea.crear(tipo_tarea=self.tipo_tarea, orden=self.orden, observacion="Guardar el disco viejo") tarea_presupuestada = TareaPresupuestada(self.tarea) self.assertTrue(self.tarea.estas_presupuestada) tarea_pendiente = TareaPendiente(self.tarea) self.assertTrue(self.tarea.estas_pendiente) tarea_cancelada = TareaCancelada(self.tarea) self.assertTrue(self.tarea.estas_cancelada) tarea_realizada = TareaRealizada(self.tarea) self.assertTrue(self.tarea.estas_realizada)
def check_line(line, vencimiento, master_dict): """ Reads one list and according to its positional contents it will act accordingly: If there exists a :class:`PCD` instance matching its contents it will update the :class:`Contrato` associated to the :class:`PCD` instance. If there is not a matching :class:`PCD` it will start creating a :class:`Persona`, :class:`Contrato and :class:`PCD` that reflect the contents of the list. :param line: The list that will be read its content can be described this way: 0. PCD 1. Policy 2. Certificate 3. Dependant 4. Full name 5. Sex 6. Birthday 7. Active Status Flag 8. Contract ending date 9. Identification 10. Exclusion :param vencimiento: The end date of the contract to be updated :return: """ file_pcd = smart_text(line[0]) file_certificado = smart_text(line[2]) poliza_f = smart_text(line[1]) apellido_f, nombre_f = smart_text(line[4]).split(",") apellido_f = apellido_f.lstrip().rstrip() nombre_f = nombre_f.lstrip().rstrip() nacimiento_f = server_timezone.localize( datetime.strptime(line[6], "%m/%d/%Y")) sexo_f = smart_text(line[5]) identificacion = smart_text(line[9]) vencimiento_r = vencimiento exclusion = smart_text(line[10]) dependiente = int(line[3]) activo = smart_text(line[7]).upper() master = master_dict[poliza_f] suspendido = True if activo == 'S' else False vencimiento_r = make_end_day(datetime.strptime(line[8], '%m/%d/%Y')) try: pcd = PCD.objects.prefetch_related( 'persona', 'persona__beneficiarios', 'persona__contratos', ).get(numero=file_pcd) persona = pcd.persona contratos = persona.contratos.filter(certificado=file_certificado) contratos.update( suspendido=suspendido, exclusion=exclusion, master=master, plan=master.plan, vencimiento=vencimiento_r ) persona.beneficiarios.filter( persona__contratos__certificado=file_certificado ).update( exclusion=exclusion, ) except ObjectDoesNotExist: persona = Persona(nombre=nombre_f, apellido=apellido_f, sexo=sexo_f, nacimiento=nacimiento_f, identificacion=identificacion) persona.save() pcd = PCD(persona=persona, numero=file_pcd) pcd.save() if dependiente == 0: contract = master.create_contract( persona, vencimiento_r, file_certificado, file_pcd ) contract.suspendido = suspendido contract.exclusion = exclusion contract.save() else: contract = Contrato.objects.filter( poliza=poliza_f, certificado=file_certificado ).first() if contract: beneficiario = Beneficiario(persona=persona, contrato=contract) beneficiario.exclusion = exclusion beneficiario.save() except MultipleObjectsReturned: pass
def check_line(line, vencimiento): file_pcd = line[0] file_certificado = int(line[2]) poliza_f = line[1] apellido_f, nombre_f = line[4].split(",") nacimiento_f = server_timezone.localize( datetime.strptime(line[6], "%m/%d/%Y")) sexo_f = line[5] identificacion = line[9] vencimiento_r = vencimiento activo = line[7].upper() master = MasterContract.objects.get(poliza=poliza_f) if line[8]: venc = server_timezone.localize(datetime.strptime(line[8], '%m/%d/%Y')) if venc <= vencimiento_r: vencimiento_r = venc try: pcd = PCD.objects.get(numero=file_pcd) persona = pcd.persona persona.apellido = apellido_f persona.nombre = nombre_f persona.save() contratos = Contrato.objects.filter(persona=persona, certificado=file_certificado) for contrato in contratos.all(): contrato.vencimiento = vencimiento_r contrato.plan = master.plan contrato.master = master contrato.exclusion = line[10] if activo == 'S': contrato.suspendido = True else: contrato.suspendido = False contrato.save() for beneficiario in Beneficiario.objects.filter(persona=persona).all(): beneficiario.contrato.vencimiento = vencimiento_r beneficiario.exclusion = line[10] beneficiario.contrato.save() except ObjectDoesNotExist: persona = Persona(nombre=nombre_f, apellido=apellido_f, sexo=sexo_f, nacimiento=nacimiento_f, identificacion=identificacion) persona.save() pcd = PCD(persona=persona, numero=file_pcd) pcd.save() dependiente = int(line[3]) if dependiente == 0: contract = master.create_contract(persona, vencimiento_r, file_certificado, file_pcd) if activo == 'S': contract.suspendido = True else: contract.suspendido = False contract.exclusion = line[10] contract.save() else: contract = Contrato.objects.filter( poliza=poliza_f, certificado=file_certificado).first() if contract: beneficiario = Beneficiario(persona=persona, contrato=contract) beneficiario.exclusion = line[10] beneficiario.save() except MultipleObjectsReturned: pass
class OrdenTest(TestCase): def setUp(self): self.persona = Persona(nombre="Alguien", apellido="Alguien", doc="123321123", domicilio="cale213", email="*****@*****.**") self.persona.save() self.persona.agregar_rol(Tecnico()) self.persona.agregar_rol(Cliente()) self.usuario = Usuario.objects.crear_usuario(username="******", password="******", persona=self.persona) self.persona.agregar_rol(Usuario()) self.persona.save() self.rubro = Rubro(nombre="Notebooks", descripcion="Reparación de notebooks") self.rubro.save() self.tipo_servicio = TipoServicio( nombre="Taller", descripcion="Reparación de equipos en taller") self.tipo_servicio.save() self.descripcion = "Ta todo completamente hecho mierda" self.orden = Orden(cliente=self.persona.como(Cliente), usuario=self.usuario, tecnico=self.persona.como(Tecnico), rubro=self.rubro, equipo=None, tipo_servicio=self.tipo_servicio, descripcion=self.descripcion) self.orden.save() def test_crear(self): # Testeamos que haya una orden creada y que sea la nuestra self.assertTrue(Orden.objects.all().count(), 1) def test_agregar_tarea(self): self.tipo_tarea1 = TipoTarea(nombre="Cambio de disco", rubro=self.rubro) self.tipo_tarea1.save() self.tarifa = Tarifa(tipo_tarea=self.tipo_tarea1, tipo_servicio=self.tipo_servicio, precio=300) self.tarifa.save() self.observacion = "Guardar el disco viejo" # Probamos caso de éxito self.orden.agregar_tarea(self.tipo_tarea1, self.observacion) self.assertEqual(self.orden.tareas.count(), 1) self.assertTrue( self.orden.tareas.get( tipo_tarea=self.tipo_tarea1).estas_presupuestada()) # Probamos que lance excepción si la tarea no es del rubro de la orden rubro = Rubro(nombre="Impresoras Fiscales", descripcion="Reparación de impresoras fiscales") rubro.save() tipo_tarea = TipoTarea(nombre="Limpieza de cabezales", rubro=rubro) tipo_tarea.save() try: self.orden.agregar_tarea(tipo_tarea, self.observacion) except Exception as e: self.assertTrue(e) self.assertEqual(self.orden.tareas.count(), 1)