Ejemplo n.º 1
0
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')
Ejemplo n.º 2
0
class One2One(ModelSQL):
    'One2One'
    __name__ = 'test.one2one'
    one2one = fields.One2One('test.one2one.relation',
                             'origin',
                             'target',
                             string='One2One',
                             help='Test one2one',
                             required=False)
Ejemplo n.º 3
0
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')])
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
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')
Ejemplo n.º 6
0
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')
Ejemplo n.º 7
0
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')
Ejemplo n.º 8
0
class BankAccount():
    __name__ = 'bank.account'
    owner = fields.One2One('bank.account-party.party', 'account', 'owner',
                           'Owner')
Ejemplo n.º 9
0
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)
Ejemplo n.º 10
0
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
Ejemplo n.º 11
0
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
Ejemplo n.º 12
0
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)]