class Sesion(ModelSQL,ModelView): 'Sesion' _name = 'cefiro.sesion' _description = __doc__ _rec_name = 'fecha' asistencia = fields.Boolean(u'El paciente asistió a la consulta') consulta = fields.One2One('cefiro.consultainforme','informe','consulta','Consulta',required=True) comentarios = fields.Text(u'Registro de sesión')
class One2One(ModelSQL): 'One2One' __name__ = 'test.one2one' one2one = fields.One2One('test.one2one.relation', 'origin', 'target', string='One2One', help='Test one2one', required=False)
class One2OneDomain(ModelSQL): 'One2One' __name__ = 'test.one2one_domain' one2one = fields.One2One('test.one2one_domain.relation', 'origin', 'target', string='One2One', help='Test one2one', domain=[('name', '=', 'domain')])
class One2OneRequired(ModelSQL): 'One2One' __name__ = 'test.one2one_required' name = fields.Char('Name', required=True) one2one = fields.One2One('test.one2one_required.relation', 'origin', 'target', string='One2One', help='Test one2one', required=True)
class Psicologo(Persona): 'Psicologo' _name = 'cefiro.psicologo' _description = __doc__ usuario = fields.One2One('cefiro.psicousuario', 'psicologo', 'usuario', 'Usuario') telefono = fields.Char(u'Teléfono') mail = fields.Char(u'Correo electrónico') pacientes = fields.One2Many('cefiro.paciente', 'psicologo', 'Pacientes') consultas = fields.Many2Many('cefiro.encuentropsi', 'persona', 'evento', 'Consultas')
class Consulta(ModelSQL,ModelView): 'Consulta' _name = 'cefiro.consulta' _description = __doc__ _rec_name = 'fecha' fecha = fields.DateTime('Fecha y Hora de la Consulta',required=True) # hora = fields.Time('Hora') psicologos = fields.Many2Many('cefiro.encuentropsi','evento','persona',u'Psicólogos') pacientes = fields.Many2Many('cefiro.encuentro','evento','persona','Pacientes') estudiantes = fields.Many2Many('cefiro.encuentroest','evento','persona','Estudiantes') consultorio = fields.Many2One('cefiro.consultorio','Consultorio',required=True) informe = fields.One2One('cefiro.consultainforme','consulta','informe','Informe')
class Party: __name__ = 'party.party' _history = True web_user = fields.One2One('web.user-party.party', 'party', 'user', 'Web User', help='The web user of the party') member_c3s = fields.Boolean('Member of C3S') member_c3s_token = fields.Char('C3S Membership Token') artists = fields.One2Many('artist', 'party', 'Artists') default_solo_artist = fields.Many2One( 'artist', 'Default Solo Artist', help='The default solo artist of this party') firstname = fields.Char('Firstname') lastname = fields.Char('Lastname') birthdate = fields.Date('Birth Date') repertoire_terms_accepted = fields.Boolean( 'Terms of Service Acceptance for Repertoire') oid = fields.Char( 'OID', required=True, help='A unique object identifier used in the public web api to avoid' 'exposure of implementation details to the users.') @classmethod def __setup__(cls): super(Party, cls).__setup__() cls._sql_constraints += [ ('uuid_oid', 'UNIQUE(oid)', 'The OID of the client must be unique.'), ] @staticmethod def default_oid(): return str(uuid.uuid4()) @staticmethod def default_pocket_budget(): return Decimal('0')
class BankAccount(): __name__ = 'bank.account' owner = fields.One2One('bank.account-party.party', 'account', 'owner', 'Owner')
class Formulario(ModelSQL, ModelView): 'Formulario' _name = 'cefiro.formulario' _description = __doc__ _rec_name = 'fecha' # _history = True # name = fields.Char('Nombre del paciente') #Paciente Asociado y datos autocompletados. Implementar esto. Tema de las edades (el paciente tiene una edad actual, y va yendo a consultas con distintas edades). paciente = fields.One2One('cefiro.pacienteformulario', 'formulario', 'paciente', 'Paciente', required=True) #Tipo de consulta fecha = fields.Date('Fecha de consulta inicial', required=True) tipoConsulta = fields.Selection([('esp', u'Consulta espontánea'), ('tra', u'Traído'), ('ori', u'Consulta por orientación'), ('der', 'Derivado')], 'Tipo de Consulta', required=True) derivador = fields.Selection([('med', u'Especialidad Médica'), ('psiq', 'Psiquiatra'), ('edu', u'Institución Educativa'), ('otra', 'Otra')], 'Derivado por') derivEspec = fields.Char('Especifique') #Motivo de consulta motivoPaciente1 = fields.Char(u'Motivo según el paciente (1)') motivoPaciente1Cod = fields.Char(u'Código') motivoPaciente2 = fields.Char(u'Motivo según el paciente (2)') motivoPaciente2Cod = fields.Char(u'Código') motivoPaciente3 = fields.Char(u'Motivo según el paciente (3)') motivoPaciente3Cod = fields.Char(u'Código') motivoAcompa1 = fields.Char(u'Motivo según el Acompañante (1)') motivoAcompa1Cod = fields.Char(u'Código') motivoAcompa2 = fields.Char(u'Motivo según el Acompañante (2)') motivoAcompa2Cod = fields.Char(u'Código') motivoAcompa3 = fields.Char(u'Motivo según el Acompañante (3)') motivoAcompa3Cod = fields.Char(u'Código') motivoPsico1 = fields.Char(u'Motivo según el Psicólogo (1)') motivoPsico1Cod = fields.Char(u'Código') motivoPsico2 = fields.Char(u'Motivo según el Psicólogo (2)') motivoPsico2Cod = fields.Char(u'Código') motivoPsico3 = fields.Char(u'Motivo según el Psicólogo (3)') motivoPsico3Cod = fields.Char(u'Código') motivoComplementaria = fields.Text(u'Descripción Comlpementaria') #Datos personales extra lugarNacimiento = fields.Char('Lugar de Nacimiento') #Vivienda y Trabajo tipoVivienda = fields.Selection([('casa', 'la casa'), ('calle', 'la calle'), ('inst', u'institución protectora'), ('car', 'privado de libertad')], 'Vive en') #convive = fields.One2Many() Hay que hacer uno para familiares posibles. Por ahora va un Selection. convive = fields.Selection([('solo', 'Vive solo'), ('madre', 'Madre'), ('padre', 'Padre'), ('madra', 'Madrastra'), ('padra', 'Padrastro'), ('her', 'Hermano'), ('pare', 'Pareja'), ('hijo', 'Hijo'), ('otros', 'Otros')], u'Con quién convive') situacionCony = fields.Selection( [('sol', u'Soltero/a'), ('casado', u'Casado/a (incluye separado/a sin divorcio)'), ('divor', u'Divorciado/a'), ('viudo', u'Viudo/a'), ('ulibre', u'Unión libre'), ('slibre', u'Separado de unión libre')], 'Estado Conyugal') vivHabitaTot = fields.Integer('Habitaciones totales') vivHabitaDor = fields.Integer('Dormitorios') vivBanos = fields.Integer(u'Cantidad de Baños') vivBanoComp = fields.Boolean(u'Baño compartido') vivBanoTipo = fields.Selection( [('red', 'Red general'), ('fosa', u'Fosa séptica o pozo negro'), ('otro', u'Otro (hueco en suelo, superficie)')], u'Tipo de instalación sanitaria') trabSituacion = fields.Selection([('trab', 'Trabaja'), ('bus', 'Busca por primera vez'), ('no', 'No trabaja'), ('pas', u'Pasantía'), ('pens', 'Pensionista'), ('jub', 'Jubilado')], u'Situación Laboral') trabMulti = fields.Boolean('Multiempleo') trabHoras = fields.Integer('Horas Totales') trabHorasPrin = fields.Integer('Horas Trabajo Principal') trabInicio = fields.Integer('Edad de inicio de trabajo') trabInfantil = fields.Boolean('Trabajo infantil') trabJuvenil = fields.Boolean('Trabajo juvenil') trabLegal = fields.Boolean('Trabajo legalizado') trabInsalubre = fields.Boolean('Trabajo insalubre') trabTipoRel = fields.Selection([('pub', u'Empleado Público'), ('priv', 'Empleado Privado'), ('indep', 'Empleado Independiente'), ('otro', 'Otro')], u'Tipo de Relación') trabObs = fields.Text('Observaciones') trabPadre = fields.Selection([('trab', 'Trabaja'), ('bus', 'Busca por primera vez'), ('no', 'No trabaja'), ('pas', u'Pasantía'), ('pens', 'Pensionista'), ('jub', 'Jubilado')], u'Situación Laboral del Padre') trabMadre = fields.Selection([('trab', 'Trabaja'), ('bus', 'Busca por primera vez'), ('no', 'No trabaja'), ('pas', u'Pasantía'), ('pens', 'Pensionista'), ('jub', 'Jubilado')], u'Situación Laboral de la Madre') trabPareja = fields.Selection([('trab', 'Trabaja'), ('bus', 'Busca por primera vez'), ('no', 'No trabaja'), ('pas', u'Pasantía'), ('pens', 'Pensionista'), ('jub', 'Jubilado')], u'Situación Laboral de la Pareja') #Educación eduFormalNivel = fields.Selection([('no', 'No escolarizado'), ('priInc', 'Primaria Incompleta'), ('pri', 'Primaria Completa'), ('secInc', 'Secundaria Incompleta'), ('sec', 'Secundaria Completa'), ('tercInc', 'Terciaria Incompleta'), ('terc', 'Terciaria Completa'), ('uniInc', 'Universitaria Incompleta'), ('uni', 'Universitaria Completa')], u'Nivel de Educación Formal') eduFormalNivelMax = fields.Integer( u'Máximo año aprobado (en caso de no haber completado lo último que estudió)' ) eduCentrosPrimaria = fields.Char(u'Centros en los que estudió') eduPubliPrimaria = fields.Selection([('publi', u'Pública'), ('priv', 'Privada')], u'Tipo de institución') eduDifPrimaria = fields.Boolean(u'Presentó dificultades de aprendizaje') eduDifTipoPrimaria = fields.Char(u'Tipo de dificultad que presentó') eduRepePrimaria = fields.Integer( u'Cantidad de años repetidos (si no hay dejar vacío)') eduRepeCausaPrimaria = fields.Char(u'Causa de la repetición de años') eduDeserPrimaria = fields.Boolean(u'Deserción o Exclusión') eduCentrosSecundaria = fields.Char(u'Centros en los que estudió') eduPubliSecundaria = fields.Selection([('publi', u'Pública'), ('priv', 'Privada')], u'Tipo de institución') eduDifSecundaria = fields.Boolean(u'Presentó dificultades de aprendizaje') eduDifTipoSecundaria = fields.Char(u'Tipo de dificultad que presentó') eduRepeSecundaria = fields.Integer( u'Cantidad de años repetidos (si no hay dejar vacío)') eduRepeCausaSecundaria = fields.Char(u'Causa de la repetición de años') eduDeserSecundaria = fields.Boolean(u'Deserción o Exclusión') eduCentrosTerciaria = fields.Char(u'Centros en los que estudió') eduPubliTerciaria = fields.Selection([('publi', u'Pública'), ('priv', 'Privada')], u'Tipo de institución') eduCentrosUniv = fields.Char(u'Centros en los que estudió') eduPubliUniv = fields.Selection([('publi', u'Pública'), ('priv', 'Privada')], u'Tipo de institución') eduNoForCurso1 = fields.Char('Curso') eduNoForCentro1 = fields.Char('Centro') eduNoForPubli1 = fields.Selection([('publi', u'Pública'), ('priv', 'Privada')], u'Tipo de institución') eduNoForAsis1 = fields.Selection([('actual', 'Asiste'), ('pasado', u'Asistió')], 'Momento') eduNoForCurso2 = fields.Char('Curso') eduNoForCentro2 = fields.Char('Centro') eduNoForPubli2 = fields.Selection([('publi', u'Pública'), ('priv', 'Privada')], u'Tipo de institución') eduNoForAsis2 = fields.Selection([('actual', 'Asiste'), ('pasado', u'Asistió')], 'Momento') eduNoForCurso3 = fields.Char('Curso') eduNoForCentro3 = fields.Char('Centro') eduNoForPubli3 = fields.Selection([('publi', u'Pública'), ('priv', 'Privada')], u'Tipo de institución') eduNoForAsis3 = fields.Selection([('actual', 'Asiste'), ('pasado', u'Asistió')], 'Momento') eduPadre = fields.Selection([('no', 'No escolarizado'), ('priInc', 'Primaria Incompleta'), ('pri', 'Primaria Completa'), ('secInc', 'Secundaria Incompleta'), ('sec', 'Secundaria Completa'), ('tercInc', 'Terciaria Incompleta'), ('terc', 'Terciaria Completa'), ('uniInc', 'Universitaria Incompleta'), ('uni', 'Universitaria Completa')], u'Nivel de Educación Formal del Padre') eduMadre = fields.Selection([('no', 'No escolarizado'), ('priInc', 'Primaria Incompleta'), ('pri', 'Primaria Completa'), ('secInc', 'Secundaria Incompleta'), ('sec', 'Secundaria Completa'), ('tercInc', 'Terciaria Incompleta'), ('terc', 'Terciaria Completa'), ('uniInc', 'Universitaria Incompleta'), ('uni', 'Universitaria Completa')], u'Nivel de Educación Formal de la Madre') eduPareja = fields.Selection([('no', 'No escolarizado'), ('priInc', 'Primaria Incompleta'), ('pri', 'Primaria Completa'), ('secInc', 'Secundaria Incompleta'), ('sec', 'Secundaria Completa'), ('tercInc', 'Terciaria Incompleta'), ('terc', 'Terciaria Completa'), ('uniInc', 'Universitaria Incompleta'), ('uni', 'Universitaria Completa')], u'Nivel de Educación Formal de la Pareja') #Antecedentes antPedagogica = fields.Selection([('conc', u'Concluida'), ('aba', 'Abandonada'), ('cur', 'En Curso')], u'Intervención Pedagógica') antPedagogicaPocas = fields.Boolean('Menos de 3 consultas') antPedagogicaMeses = fields.Integer(u'Duración en meses') antPedagogicaMedicacion = fields.Boolean(u'Medicación') antPedagogicaMedTipo = fields.Selection([('ansiolitico', u'Ansiolíticos'), ('antidepre', 'Antidepresivos'), ('neurolep', u'Neurolépticos'), ('otro', 'Otros')], u'Tipo de Medicación') antPedagogicaObs = fields.Char(u'Motivo y Obs.') antMedica = fields.Selection([('conc', u'Concluida'), ('aba', 'Abandonada'), ('cur', 'En Curso')], u'Intervención Médica') antMedicaPocas = fields.Boolean('Menos de 3 consultas') antMedicaMeses = fields.Integer(u'Duración en meses') antMedicaMedicacion = fields.Boolean(u'Medicación') antMedicaMedTipo = fields.Selection([('ansiolitico', u'Ansiolíticos'), ('antidepre', 'Antidepresivos'), ('neurolep', u'Neurolépticos'), ('otro', 'Otros')], u'Tipo de Medicación') antMedicaObs = fields.Char(u'Motivo y Obs.') antPsicologica = fields.Selection([('conc', u'Concluida'), ('aba', 'Abandonada'), ('cur', 'En Curso')], u'Intervención Psicológica') antPsicologicaPocas = fields.Boolean('Menos de 3 consultas') antPsicologicaMeses = fields.Integer(u'Duración en meses') antPsicologicaMedicacion = fields.Boolean(u'Medicación') antPsicologicaMedTipo = fields.Selection([('ansiolitico', u'Ansiolíticos'), ('antidepre', 'Antidepresivos'), ('neurolep', u'Neurolépticos'), ('otro', 'Otros')], u'Tipo de Medicación') antPsicologicaObs = fields.Char(u'Motivo y Obs.') antPsiquiatrica = fields.Selection([('conc', u'Concluida'), ('aba', 'Abandonada'), ('cur', 'En Curso')], u'Intervención Psiquiátrica') antPsiquiatricaPocas = fields.Boolean('Menos de 3 consultas') antPsiquiatricaMeses = fields.Integer(u'Duración en meses') antPsiquiatricaMedicacion = fields.Boolean(u'Medicación') antPsiquiatricaMedTipo = fields.Selection( [('ansiolitico', u'Ansiolíticos'), ('antidepre', 'Antidepresivos'), ('neurolep', u'Neurolépticos'), ('otro', 'Otros')], u'Tipo de Medicación') antPsiquiatricaObs = fields.Char(u'Motivo y Obs.') antPsiqInter = fields.Selection([('conc', u'Concluida'), ('aba', 'Abandonada'), ('cur', 'En Curso')], u'Internación Psiquiátrica') antPsiqInterPocas = fields.Boolean('Menos de 3 consultas') antPsiqInterMeses = fields.Integer(u'Duración en meses') antPsiqInterMedicacion = fields.Boolean(u'Medicación') antPsiqInterMedTipo = fields.Selection([('ansiolitico', u'Ansiolíticos'), ('antidepre', 'Antidepresivos'), ('neurolep', u'Neurolépticos'), ('otro', 'Otros')], u'Tipo de Medicación') antPsiqInterObs = fields.Char(u'Motivo y Obs.') antIntOtra = fields.Selection([('conc', u'Concluida'), ('aba', 'Abandonada'), ('cur', 'En Curso')], u'Otra') antIntOtraPocas = fields.Boolean('Menos de 3 consultas') antIntOtraMeses = fields.Integer(u'Duración en meses') antIntOtraMedicacion = fields.Boolean(u'Medicación') antIntOtraMedTipo = fields.Selection([('ansiolitico', u'Ansiolíticos'), ('antidepre', 'Antidepresivos'), ('neurolep', u'Neurolépticos'), ('otro', 'Otros')], u'Tipo de Medicación') antIntOtraObs = fields.Char(u'Motivo y Obs.') antDisca = fields.Boolean(u'Tiene algún tipo de discapacidad') antDiscaTipo = fields.Char('Tipo') antAyudaTec = fields.Boolean(u'Utiliza algún tipo de ayuda técnica') antAyudaTecLentes = fields.Boolean(u'Lentes') antAyudaTecBaston = fields.Boolean(u'Bastón') antAyudaTecAudifono = fields.Boolean(u'Audífono') antAyudaTecOtro = fields.Boolean(u'Otro') antAyudaTecObs = fields.Char('Obs.') antPrestacion = fields.Boolean( u'Beneficiario de prestación por discapacidad') antPrestPension = fields.Boolean(u'Pensión no contributiva') antPrestJubil = fields.Boolean(u'Jubilación por incapacidad') antPrestAsigDoble = fields.Boolean(u'Asignación doble') antPrestAyuda = fields.Boolean(u'Ayuda especial') antPrestEquidad = fields.Boolean(u'Plan de equidad') antCeguera = fields.Boolean(u'Ceguera y/o dism. de visión') antSordera = fields.Boolean(u'Sordera / hipoacusia') antMotriz = fields.Boolean(u'Ceguera y/o dism. de visión') antDependencia = fields.Boolean(u'Dependencia de otra persona') antAsma = fields.Boolean(u'Asma') antEpilepsia = fields.Boolean(u'Epilepsia') antDiabetes = fields.Boolean(u'Diabetes') antTiroides = fields.Boolean(u'Enf. Tiroidea') antCancer = fields.Boolean(u'Cáncer') antVIH = fields.Boolean(u'VIH/SIDA') antOsteo = fields.Boolean(u'Pat. Osteoarticular') antCardio = fields.Boolean(u'Enf. Cardiovascular') antAccidente1Edad = fields.Integer('Edad') antAccidente1Tipo = fields.Char('Tipo') antAccidente2Edad = fields.Integer('Edad') antAccidente2Tipo = fields.Char('Tipo') antCirugia1Edad = fields.Integer('Edad') antCirugia1Tipo = fields.Char('Tipo') antCirugia2Edad = fields.Integer('Edad') antCirugia2Tipo = fields.Char('Tipo') antAutoeliminCant = fields.Integer( u'Cantidad de intentos de autoeliminación') antAutoelim1Edad = fields.Integer('Edad') antAutoelim1Tipo = fields.Char('Tipo') antAutoelim2Edad = fields.Integer('Edad') antAutoelim2Tipo = fields.Char('Tipo') #Violencia y Uso de Sustancias tvioDanoPsico = u'¿Su pareja o alguien importante para usted le ha causado daño emocional o psicológico en forma repetida?\n (Por ej.: por medio de alguna de las siguientes situaciones: insultos, maltrato a sus hijos, hacerlo/a\n sentir avergonzado/a o humillado/a desprecio por las tareas que usted realiza, destrucción de objetos\n de amigos o parientes, otras.)' vioDanoPsico = fields.Selection([('si', u'Sí'), ('no', 'No'), ('nc', 'No desea contestar')], tvioDanoPsico) vioDanoPsicoQuien = fields.Char(u'¿Quién/es lo hizo/cieron?') vioDanoPsicoNino = fields.Boolean(u'Niño/a') vioDanoPsicoAdoles = fields.Boolean(u'Adolescente') vioDanoPsicoJoven = fields.Boolean(u'Joven') vioDanoPsicoAdulto = fields.Boolean(u'Adulto/a') vioDanoPsicoMayor = fields.Boolean(u'Mayor de 65') vioDanoPsicoEmbarazo = fields.Boolean(u'Embarazo/postparto') vioDanoPsicoActual = fields.Selection([('si', u'Sí'), ('no', 'No'), ('nc', 'No desea contestar')], u'¿Sucede actualmente?') tvioDanoFisico = u'¿Su pareja o alguien importante para usted le ha causado daño físico grave al menos una vez, o le ha hecho agresiones menores en forma reiterada?\n (Por ej.: empujones, golpe de puños, quemaduras, zamarreos, mordeduras, ahorcamiento, pellizcos, palizas, golpes con objetos,\n tirón de pelo, patadas, daño con armas, cachetadas, otra forma.)' vioDanoFisico = fields.Selection([('si', u'Sí'), ('no', 'No'), ('nc', 'No desea contestar')], tvioDanoFisico) vioDanoFisicoQuien = fields.Char(u'¿Quién/es lo hizo/cieron?') vioDanoFisicoNino = fields.Boolean(u'Niño/a') vioDanoFisicoAdoles = fields.Boolean(u'Adolescente') vioDanoFisicoJoven = fields.Boolean(u'Joven') vioDanoFisicoAdulto = fields.Boolean(u'Adulto/a') vioDanoFisicoMayor = fields.Boolean(u'Mayor de 65') vioDanoFisicoEmbarazo = fields.Boolean(u'Embarazo/postparto') vioDanoFisicoActual = fields.Selection([('si', u'Sí'), ('no', 'No'), ('nc', 'No desea contestar')], u'¿Sucede actualmente?') tvioDanoSexual = u'¿Cuando usted era niño/a recuerda haber sido tocado/a de manera inapropiada por alguien o haber tenido relaciones o contacto sexual?' vioDanoSexual = fields.Selection([('si', u'Sí'), ('no', 'No'), ('nc', 'No desea contestar')], tvioDanoSexual) vioDanoSexualQuien = fields.Char(u'¿Quién/es lo hizo/cieron?') tvioViola = u'¿Alguna vez en su vida ha sido obligado/a a tener relaciones o contacto sexual?\n (Por ej.: empleo de la fuerza física, de intimidación o amenaza para mantener relaciones sexuales no deseadas.)' vioViola = fields.Selection([('si', u'Sí'), ('no', 'No'), ('nc', 'No desea contestar')], tvioViola) vioViolaQuien = fields.Char(u'¿Quién/es lo hizo/cieron?') vioViolaNino = fields.Boolean(u'Niño/a') vioViolaAdoles = fields.Boolean(u'Adolescente') vioViolaJoven = fields.Boolean(u'Joven') vioViolaAdulto = fields.Boolean(u'Adulto/a') vioViolaMayor = fields.Boolean(u'Mayor de 65') vioViolaEmbarazo = fields.Boolean(u'Embarazo/postparto') vioViolaActual = fields.Selection([('si', u'Sí'), ('no', 'No'), ('nc', 'No desea contestar')], u'¿Sucede actualmente?') vioPensamiento = fields.Selection([ ('si', u'Sí'), ('no', 'No'), ('nc', 'No desea contestar') ], u'Hoy, en su casa, ¿piensa usted que podría sufrir alguna de las situaciones antes nombradas?' ) tsustAlcohol = u'Durante los últimos 30 días, ¿con qué frecuencia usted bebió al menos 4 medidas de cualquier\n clase de bebida con alcohol en un mismo día?' sustAlcohol = fields.Selection( [('nunca', 'Nunca'), ('unames', 'Una vez al mes'), ('dosmes', '2 o 3 veces al mes'), ('unasemana', 'Una vez a la semana'), ('dossemana', u'2 días a la semana o más')], tsustAlcohol) tsustCigarro = u'Durante los últimos 30 días, ¿con qué frecuencia usted fumó cigarrillos, tabaco o pipa?' sustCigarro = fields.Selection( [('nunca', 'Nunca'), ('unames', 'Una vez al mes'), ('dosmes', '2 o 3 veces al mes'), ('unasemana', 'Una vez a la semana'), ('dossemana', u'2 días a la semana o más')], tsustCigarro) tsustMedicamento = u'Durante los últimos 30 días, ¿con qué frecuencia usted usó algunos de los siguientes medicamentos \n POR SU CUENTA (esto es sin una receta de su médico o en cantidades mayores a las recetadas)?\n Medicamentos para el dolor como tramadol o morfina, estimulantes como ritalina, tranquilizantes como Lexotán.' sustMedicamento = fields.Selection( [('nunca', 'Nunca'), ('unames', 'Una vez al mes'), ('dosmes', '2 o 3 veces al mes'), ('unasemana', 'Una vez a la semana'), ('dossemana', u'2 días a la semana o más')], tsustMedicamento) tsustDroga = u'Durante los últimos 30 días, ¿con qué frecuencia usted usó algunas de las siguientes sustancias:\n Marihuana, Cocaína, Pasta Base, Crack, Estimulantes como éxtasis, Halucinógenos como hongos o LSD,\n Heroína, Inhalantes como pegamento?' sustDroga = fields.Selection([('nunca', 'Nunca'), ('unames', 'Una vez al mes'), ('dosmes', '2 o 3 veces al mes'), ('unasemana', 'Una vez a la semana'), ('dossemana', u'2 días a la semana o más')], tsustDroga)
class Consulta(ModelSQL, ModelView): 'Consulta' _name = 'cefiro.consulta' _description = __doc__ #_rec_name = 'horaIni' name = fields.Char('Nombre') libres = [] psicologos = fields.Many2Many('cefiro.encuentropsi', 'evento', 'persona', u'Psicólogos') pacientes = fields.Many2Many('cefiro.encuentro', 'evento', 'persona', 'Pacientes') estudiantes = fields.Many2Many('cefiro.encuentroest', 'evento', 'persona', 'Estudiantes') informe = fields.One2One('cefiro.consultainforme', 'consulta', 'informe', 'Informe') horaIni = fields.DateTime('Fecha y hora de inicio', required=True) horaFin = fields.DateTime('Fecha y hora de fin', required=True) consulLibres = fields.Function( fields.One2Many('cefiro.consultorio', None, 'Consultorios libres', on_change_with=['horaIni', 'horaFin']), 'get_libres') #consulLibresInt = fields.Function(fields.One2Many('cefiro.consultorio',None,'Consultorios libres',on_change_with=['consulLbres']),'get_libresInt') consultorio = fields.Many2One('cefiro.consultorio', 'Consultorio', required=True, domain=[('id', 'in', Eval('consulLibres'))]) def get_libres(self, ids, name): res = {} objConsul = Pool().get('cefiro.consultorio') for elem in self.browse(ids): res[elem.id] = elem.libres # if consultorio_ids: # res[elem.id].extend(consultorio_ids) return res # def on_change_with_consulLibres(self,values): # return [] def on_change_with_consulLibres(self, values): objConsultorio = Pool().get('cefiro.consultorio') objConsulta = Pool().get('cefiro.consulta') consultoriosTotId = objConsultorio.search([]) res = [] for cons in objConsultorio.browse(consultoriosTotId): estaVacio = True consultasIDs = cons.consultas listaDic = objConsulta.read(consultasIDs) for dic in listaDic: i1 = values.get('horaIni') f1 = values.get('horaFin') i2 = dic.get('horaIni') f2 = dic.get('horaFin') if not ((i1 == None) or (f1 == None)): if not ((f2 < i1) or (f1 < i2)): estaVacio = False if estaVacio: res.append(cons.id) self.libres = res # objConsulta.write(self.id,{'libres':Eval('res')}) return res
class WebUser: __metaclass__ = PoolMeta __name__ = 'web.user' _history = True _rec_name = 'email' nickname = fields.Char('Nickname', help='The name shown to other users') user = fields.One2One( 'web.user-res.user', 'web_user', 'res_user', 'Tryton User', readonly=True, states={'required': Greater(Eval('active_id', -1), 0)}, help='The Tryton user of the web user') party = fields.One2One( 'web.user-party.party', 'user', 'party', 'Party', states={'required': Greater(Eval('active_id', -1), 0)}, help='The party of the web user') clients = fields.One2Many('client', 'web_user', 'Clients') roles = fields.Many2Many('web.user-web.user.role', 'user', 'role', 'Roles') default_role = fields.Selection('get_roles', 'Default Role') acl = fields.One2Many('ace', 'web_user', 'Access Control List', help="The permissions for a web user.") picture_data = fields.Binary('Picture Data', help='Picture Data') picture_data_mime_type = fields.Char('Picture Data Mime Type', help='The mime type of picture data.') opt_in_state = fields.Selection( _OPT_IN_STATES, 'Opt-in State', help='The authentication state of the opt-in method:\n\n' 'New: The web-user is newly created.\n' 'Mail Sent: An opt-in link is sent to the email.\n' 'Opted-In: The link is clicked.\n' 'Opted-Out: The web-user opted-out.') opt_in_uuid = fields.Char( 'Opt-in UUID', help='The universally unique identifier of the opt-in of a web user') opt_in_timestamp = fields.DateTime('Date of Opt-in') opt_out_timestamp = fields.DateTime('Date of Opt-out') abuse_rank = fields.Integer('Abuse Rank', help='Times of potential abuse.') new_email = fields.Char( 'New Email', help='On profile change, the new email ' 'stays here till the user clicks the activation link') @classmethod def __setup__(cls): super(WebUser, cls).__setup__() cls.__rpc__.update({'authenticate': RPC(check_access=False)}) cls._sql_constraints += [ ('opt_in_uuid_uniq', 'UNIQUE(opt_in_uuid)', 'The opt-in UUID of the Webuser must be unique.'), ] @staticmethod def default_opt_in_state(): return 'new' @staticmethod def default_opt_in_uuid(): return str(uuid.uuid4()) @staticmethod def get_roles(): Role = Pool().get('web.user.role') roles = Role.search([]) return [(x.code, x.name) for x in roles] + [(None, '')] @classmethod def create(cls, vlist): pool = Pool() User = pool.get('res.user') Party = pool.get('party.party') Artist = pool.get('artist') WebUserRole = pool.get('web.user.role') licenser = WebUserRole.search([('code', '=', 'licenser')]) if licenser: licenser = licenser[0] vlist = [x.copy() for x in vlist] for values in vlist: nickname = values.get('nickname') email = values.get('email') user_email = email + ':::' + ''.join( random.sample(string.lowercase, 10)) # autocreate party if not values.get('party'): values['party'] = Party.create([{ 'name': nickname or email, 'contact_mechanisms': [('create', [{ 'type': 'email', 'value': email }])] }])[0].id # autocreate user if not values.get('user'): values['user'] = User.create([{ 'name': nickname or user_email, 'login': user_email, 'email': email, 'active': False, }])[0].id elist = super(WebUser, cls).create(vlist) for entry in elist: # autocreate first artist if licenser in entry.roles and entry.nickname: artist, = Artist.create([{ 'name': nickname, 'party': entry.party.id, 'entity_origin': 'direct', 'entity_creator': entry.party.id, 'claim_state': 'claimed' }]) entry.party.artists = [artist] entry.party.default_solo_artist = artist.id entry.party.save() return elist
class WebUser: __name__ = 'web.user' _rec_name = 'email' nickname = fields.Char('Nickname', help='The name shown to other users') user = fields.One2One( 'web.user-res.user', 'web_user', 'res_user', 'Tryton User', readonly=True, states={'required': Greater(Eval('active_id', -1), 0)}, help='The Tryton user of the web user') party = fields.One2One( 'web.user-party.party', 'user', 'party', 'Party', states={'required': Greater(Eval('active_id', -1), 0)}, help='The party of the web user') pocket_account = fields.Many2One('account.account', 'Account') clients = fields.One2Many('client', 'web_user', 'Clients') roles = fields.Many2Many('web.user-web.user.role', 'user', 'role', 'Roles') default_role = fields.Selection('get_roles', 'Default Role') show_creative_info = fields.Boolean('Show Creative Info', help='Check, if the infobox is shown') picture_data = fields.Binary('Picture Data', help='Picture Data') picture_data_mime_type = fields.Char('Picture Data Mime Type', help='The mime type of picture data.') opt_in_state = fields.Selection( _OPT_IN_STATES, 'Opt-in State', help='The authentication state of the opt-in method:\n\n' 'New: The web-user is newly created.\n' 'Mail Sent: An opt-in link is sent to the email.\n' 'Opted-In: The link is clicked.\n' 'Opted-Out: The web-user opted-out.') opt_in_uuid = fields.Char( 'Opt-in UUID', help='The universally unique identifier of the opt-in of a web user') opt_in_timestamp = fields.DateTime('Date of Opt-in') opt_out_timestamp = fields.DateTime('Date of Opt-out') @classmethod def __setup__(cls): super(WebUser, cls).__setup__() cls.__rpc__.update({'authenticate': RPC(check_access=False)}) cls._sql_constraints += [ ('opt_in_uuid_uniq', 'UNIQUE(opt_in_uuid)', 'The opt-in UUID of the Webuser must be unique.'), ] @staticmethod def default_show_creative_info(): return True @staticmethod def default_opt_in_state(): return 'new' @staticmethod def default_opt_in_uuid(): return str(uuid.uuid4()) @staticmethod def get_roles(): Role = Pool().get('web.user.role') roles = Role.search([]) return [(x.code, x.name) for x in roles] + [(None, '')] @classmethod def create(cls, vlist): pool = Pool() User = pool.get('res.user') Party = pool.get('party.party') vlist = [x.copy() for x in vlist] for values in vlist: email = values.get('email') user_email = email + ':::' + ''.join( random.sample(string.lowercase, 10)) if not values.get('party'): values['party'] = Party.create([{'name': email}])[0].id if not values.get('user'): values['user'] = User.create([{ 'name': user_email, 'login': user_email, 'email': email, 'active': False, }])[0].id return super(WebUser, cls).create(vlist) @classmethod def get_balance(cls, items, names): ''' Function to compute hat balance for artist or pocket balance party items. ''' res = {} pool = Pool() MoveLine = pool.get('account.move.line') Account = pool.get('account.account') User = pool.get('res.user') cursor = Transaction().cursor line = MoveLine.__table__() account = Account.__table__() for name in names: if name not in ('hat_balance', 'pocket_balance'): raise Exception('Bad argument') res[name] = dict((i.id, Decimal('0.0')) for i in items) user_id = Transaction().user if user_id == 0 and 'user' in Transaction().context: user_id = Transaction().context['user'] user = User(user_id) if not user.company: return res company_id = user.company.id with Transaction().set_context(posted=False): line_query, _ = MoveLine.query_get(line) clause = () if name == 'hat_balance': field = line.artist clause = line.artist.in_([i.id for i in items]) if name == 'pocket_balance': field = line.party clause = line.party.in_([i.id for i in items]) for name in names: query = line.join( account, condition=account.id == line.account).select( field, Sum(Coalesce(line.debit, 0) - Coalesce(line.credit, 0)), where=account.active & (account.kind == name[:-8]) & clause & (line.reconciliation == None) & (account.company == company_id) & line_query, group_by=field) cursor.execute(*query) for id_, sum in cursor.fetchall(): # SQLite uses float for SUM if not isinstance(sum, Decimal): sum = Decimal(str(sum)) res[name][id_] = -sum return res @classmethod def search_balance(cls, name, clause): pool = Pool() MoveLine = pool.get('account.move.line') Account = pool.get('account.account') Company = pool.get('company.company') User = pool.get('res.user') line = MoveLine.__table__() account = Account.__table__() if name not in ('hat_balance', 'pocket_balance'): raise Exception('Bad argument') company_id = None user_id = Transaction().user if user_id == 0 and 'user' in Transaction().context: user_id = Transaction().context['user'] user = User(user_id) if Transaction().context.get('company'): child_companies = Company.search([ ('parent', 'child_of', [user.main_company.id]), ]) if Transaction().context['company'] in child_companies: company_id = Transaction().context['company'] if not company_id: if user.company: company_id = user.company.id elif user.main_company: company_id = user.main_company.id if not company_id: return [] line_query, _ = MoveLine.query_get(line) Operator = fields.SQL_OPERATORS[clause[1]] if name == 'hat_balance': field = line.artist where_clause = (line.artist != None) sign = -1 if name == 'pocket_balance': field = line.party where_clause = (line.party != None) sign = 1 query = line.join(account, condition=account.id == line.account).select( field, where=account.active & (account.kind == 'hat') & where_clause & (line.reconciliation == None) & (account.company == company_id) & line_query, group_by=field, having=Operator( Mul( sign, Sum( Coalesce(line.debit, 0) - Coalesce(line.credit, 0))), Decimal(clause[2] or 0))) return [('id', 'in', query)]