Exemplo n.º 1
0
def usuarios():
    if 'edit' in request.args or 'new' in request.args:
        mark_not_empty(db.auth_user)

    db.auth_user.id.readable = False
    db.auth_membership.id.readable = False
    query = (db.auth_user.autorizado == True
             and db.auth_user.email != "*****@*****.**")
    if auth.has_membership('Director'):
        form = SQLFORM.smartgrid(db.auth_user,
                                 maxtextlength=500,
                                 constraints=dict(auth_user=query),
                                 csv=False,
                                 details=False,
                                 linked_tables=['auth_membership'],
                                 create=False,
                                 editable=False,
                                 deletable=False)
    else:
        form = SQLFORM.smartgrid(db.auth_user,
                                 maxtextlength=500,
                                 constraints=dict(auth_user=query),
                                 ondelete=trig_delete,
                                 csv=False,
                                 details=False,
                                 linked_tables=['auth_membership'],
                                 create=False)
    return locals()
Exemplo n.º 2
0
def sustanciapeligrosa_manage():

    if not 'view' in request.args:
        db.t_sustancias.f_peligrosidad.represent = lambda v, r: v[0]

    if 'edit' in request.args or 'new' in request.args:
        mark_not_empty(db.t_sustancias)

    if(auth.has_membership('Gestor de SMyDP') or \
    auth.has_membership('WebMaster')):
        table = SQLFORM.smartgrid(db.t_sustancias,
                                  onupdate=auth.archive,
                                  links_in_grid=False,
                                  csv=False,
                                  user_signature=True,
                                  paginate=10)
    else:
        table = SQLFORM.smartgrid(db.t_sustancias,
                                  editable=False,
                                  deletable=False,
                                  csv=False,
                                  links_in_grid=False,
                                  create=False,
                                  paginate=10)
    return locals()
Exemplo n.º 3
0
def privilegios():
    if 'edit' in request.args or 'new' in request.args:
        mark_not_empty(db.auth_group)

    db.auth_group.id.readable = False
    db.auth_membership.id.readable = False
    if auth.has_membership('Director'):
        form = SQLFORM.smartgrid(db.auth_group,
                                 maxtextlength=500,
                                 onvalidation=validar_roles,
                                 csv=False,
                                 details=False,
                                 linked_tables=['auth_membership'],
                                 create=False,
                                 editable=False,
                                 deletable=False,
                                 searchable=False)
    else:
        form = SQLFORM.smartgrid(db.auth_group,
                                 maxtextlength=500,
                                 onvalidation=validar_roles,
                                 csv=False,
                                 details=False,
                                 linked_tables=['auth_membership'],
                                 deletable=auth.has_membership('WebMaster'),
                                 searchable=auth.has_membership('WebMaster'))
    return locals()
Exemplo n.º 4
0
def secciones():
    if 'edit' in request.args or 'new' in request.args:
        mark_not_empty(db.t_seccion)

    db.t_seccion.id.readable = False
    db.t_espaciofisico.f_seccion.readable = False
    db.t_espaciofisico.id.readable = False
    query = (db.t_seccion.f_seccion != "Ninguna")

    if 't_espaciofisico.f_seccion' in request.args:
        secc_id = request.args[2]
        secc = db(db.t_seccion.id == secc_id).select(
            db.t_seccion.f_seccion).first()
    else:
        secc_id = None

    links = {
        't_espaciofisico': [
            lambda row: A('Inventario',
                          _href=URL(c='sustancias',
                                    f='inventario_manage',
                                    vars=dict(esp=row.id))),
            lambda row: A('Técnicos',
                          _href=URL(c='gestion',
                                    f='espacios',
                                    args=[
                                        't_espaciofisico',
                                        't_tecs_esp.f_espaciofisico', row.id
                                    ]))
        ]
    }

    if auth.has_membership('Director'):
        form = SQLFORM.smartgrid(db.t_seccion,
                                 maxtextlength=500,
                                 constraints=dict(t_seccion=query),
                                 links=links,
                                 csv=False,
                                 details=False,
                                 linked_tables=['t_espaciofisico'],
                                 deletable=False,
                                 editable=False,
                                 create=False)
    else:
        form = SQLFORM.smartgrid(db.t_seccion,
                                 maxtextlength=500,
                                 constraints=dict(t_seccion=query),
                                 links=links,
                                 csv=False,
                                 details=False,
                                 linked_tables=['t_espaciofisico'],
                                 deletable=auth.has_membership('WebMaster'))
    return locals()
Exemplo n.º 5
0
def view_compras():
    if 'edit' in request.args or 'new' in request.args:
        mark_not_empty(db.t_facturas)

    if 'view' in request.args:
        db.t_facturas.f_sustancia.readable = True

    table = SQLFORM.smartgrid(db.t_facturas,
                              csv=False,
                              deletable=False,
                              paginate=10)
    return locals()
Exemplo n.º 6
0
def contact():
    from plugin_solidform import SOLIDFORM
    from plugin_notemptymarker import mark_not_empty
    
    def _send(to, subject, message):
        if MAIL_SERVER == 'logging':
            from gluon.tools import Mail
            mail = Mail()   
            mail.settings.server = MAIL_SERVER
            mail.settings.sender = MAIL_SENDER
            mail.settings.login = MAIL_LOGIN
            return mail.send(to=to, subject=subject, message=message)
        else:
            import smtplib
            from email.MIMEText import MIMEText
            from email.Utils import formatdate
            
            msg = MIMEText(message)
            msg['Subject'] = subject
            msg['From'] = MAIL_SENDER
            msg['To'] = to
            msg['Date'] = formatdate()
            
            s = smtplib.SMTP(MAIL_SERVER)
            try:
                s.sendmail(MAIL_SENDER, [to], msg.as_string())
                return True
            finally:
                s.close()
            return False
            
    fields = [
        Field('name', label=T('Name'), requires=IS_NOT_EMPTY()),
        Field('email', label=T('Email'), requires=IS_EMAIL()),
        Field('subject', label=T('Subject'), requires=IS_LENGTH(200, 1)),
        Field('message', 'text', label=T('Message'), requires=IS_LENGTH(5000)),
    ]
    mark_not_empty(fields)
    form = SOLIDFORM.factory(submit_button=T('Send'), *fields)
    if form.accepts(request.vars, session):
        _send(
            to=CONTACT_TO,
            subject='sqlabs contact subject: %s' % form.vars.subject,
            message='name: %s\nemail: %s\nmessage: \n%s' % (form.vars.name, form.vars.email, form.vars.message),
        )
        session.flash = '%s %s' % (T('Thank you for your inquiry.'), T('Your message has been sent.'))
        redirect(request.vars.redirect or URL('default', 'index'))
        
    style = STYLE(""".w2p_fl {background: #eee;}""")
    return dict(form=DIV(style, form))
    
Exemplo n.º 7
0
def laboratorios():
    if 'edit' in request.args or 'new' in request.args:
        mark_not_empty(db.t_laboratorio)

    db.t_laboratorio.id.readable = False
    db.t_seccion.f_laboratorio.readable = False
    db.t_seccion.id.readable = False
    query = (db.t_laboratorio.f_nombre != "Ninguno")

    if 't_seccion.f_laboratorio' in request.args:
        lab_id = request.args[2]
        lab = db(db.t_laboratorio.id == lab_id).select(
            db.t_laboratorio.f_nombre).first()
    else:
        lab_id = None

    links = {
        't_seccion': [
            lambda row: A(
                'Espacios Físicos',
                _href=URL(c='gestion',
                          f='secciones',
                          args=
                          ['t_seccion', 't_espaciofisico.f_seccion', row.id]))
        ]
    }
    if auth.has_membership('Director'):
        form = SQLFORM.smartgrid(db.t_laboratorio,
                                 maxtextlength=500,
                                 constraints=dict(t_laboratorio=query),
                                 onvalidation=validar_jefes,
                                 csv=False,
                                 details=False,
                                 linked_tables=['t_seccion'],
                                 deletable=False,
                                 editable=False,
                                 create=False,
                                 links=links)
    else:
        form = SQLFORM.smartgrid(db.t_laboratorio,
                                 maxtextlength=500,
                                 constraints=dict(t_laboratorio=query),
                                 onvalidation=validar_jefes,
                                 csv=False,
                                 details=False,
                                 linked_tables=['t_seccion'],
                                 deletable=True,
                                 editable=True,
                                 links=links)
    return locals()
Exemplo n.º 8
0
def pagar_deuda():
    db.t_solicitud_prestamo.f_solicitud.readable = False
    db.t_solicitud_prestamo.f_fecha_recibido.readable = False
    db.t_solicitud_prestamo.f_recibido.readable = False
    db.t_solicitud_prestamo.f_sustancia.readable = False
    i = request.vars['id']
    sust = str(
        db(db.t_sustancias.id == request.vars['sust']).select(
            db.t_sustancias.f_nombre))[21:-2]
    cantidad_total = str(
        db(db.t_solicitud_respuesta.id == request.vars['id']).select(
            db.t_solicitud_respuesta.f_cantidad))[33:-2]
    cantidad_recolectada = str(
        db(db.t_solicitud_respuesta.id == request.vars['id']).select(
            db.t_solicitud_respuesta.f_cantidad_devuelta_prestamo))[51:-2]
    query = db.t_solicitud_prestamo.f_solicitud == i
    if ('new' in request.args):
        db.t_solicitud_prestamo.f_sustancia.default = request.vars['sust']
        db.t_solicitud_prestamo.f_sustancia.writable = False
        db.t_solicitud_prestamo.f_solicitud.default = request.vars['id']
        db.t_solicitud_prestamo.f_solicitud.readable = False
        db.t_solicitud_prestamo.f_solicitud.writable = False
        db.t_solicitud_prestamo.f_fecha_aceptado.default = request.now
        db.t_solicitud_prestamo.f_fecha_aceptado.readable = False
        db.t_solicitud_prestamo.f_fecha_aceptado.writable = False
        db.t_solicitud_prestamo.f_fecha_recibido.default = None
        db.t_solicitud_prestamo.f_fecha_recibido.readable = False
        db.t_solicitud_prestamo.f_fecha_recibido.writable = False
        db.t_solicitud_prestamo.f_cantidad.default = request.vars['cant']
        db.t_solicitud_prestamo.f_recibido.default = 0
        db.t_solicitud_prestamo.f_recibido.writable = False
        db.t_solicitud_prestamo.f_recibido.readable = False
        mark_not_empty(db.t_solicitud_prestamo)
        db.t_solicitud_prestamo.f_cantidad.comment = 'Unidades en: g - mL - cm3. Los campos marcados con (*) son obligatorios'
    table = SQLFORM.smartgrid(db.t_solicitud_prestamo,
                              constraints=dict(t_solicitud_prestamo=query),
                              editable=False,
                              deletable=False,
                              csv=False,
                              oncreate=insert_deuda,
                              onvalidation=validar_prestamo,
                              orderby=[~db.t_solicitud_prestamo.id],
                              details=False)
    return locals()
Exemplo n.º 9
0
def autorizados():
    if 'edit' in request.args or 'new' in request.args:
        mark_not_empty(db.t_users_autorizados)

    db.t_users_autorizados.id.readable = False
    if auth.has_membership('Director'):
        form = SQLFORM.smartgrid(db.t_users_autorizados,
                                 maxtextlength=500,
                                 csv=False,
                                 details=False,
                                 create=False,
                                 editable=False,
                                 deletable=False)
    else:
        form = SQLFORM.smartgrid(db.t_users_autorizados,
                                 maxtextlength=500,
                                 csv=False,
                                 details=False)
    return locals()
Exemplo n.º 10
0
def index():
################################ The core ######################################
    # Modify the filed labels of the db.product attaching not-empty markers
    mark_not_empty(db.product)
    form_marked = SQLFORM(db.product, separator='')
    # Unmark the filed labels
    unmark_not_empty(db.product)
    form_unmarked = SQLFORM(db.product, separator='')
################################################################################

    if form_marked.accepts(request.vars, session):
        session.flash = 'submitted %s' % form_marked.vars
        redirect(URL('index'))
    if form_unmarked.accepts(request.vars, session, formname='unmarked'):
        session.flash = 'submitted %s' % form_unmarked.vars
        redirect(URL('index'))
    style = STYLE("""input[type="text"], select, textarea {width:100%; max-height: 50px;} 
                     .w2p_fw {padding-right: 20px; max-width:200px;}
                     .w2p_fl {background: #eee;}""")
    return dict(form_marked=DIV(style, form_marked), 
                form_unmarked=form_unmarked)
Exemplo n.º 11
0
def espacios():
    inventario = lambda row: A('Inventario',
                               _href=URL(c='sustancias',
                                         f='inventario_manage',
                                         vars=dict(esp=row.id)))
    links = [inventario]
    if 'edit' in request.args or 'new' in request.args:
        mark_not_empty(db.t_espaciofisico)
    db.t_tecs_esp.f_espaciofisico.writable = False
    db.t_espaciofisico.id.readable = False
    db.t_tecs_esp.id.readable = False

    if 't_tecs_esp.f_espaciofisico' in request.args:
        esp_id = request.args[2]
        esp = db(db.t_espaciofisico.id == esp_id).select().first()

        secc_id = esp.f_seccion
        secc = db(db.t_seccion.id == secc_id).select(
            db.t_seccion.f_seccion).first()

    if auth.has_membership('Director'):
        form = SQLFORM.smartgrid(db.t_espaciofisico,
                                 maxtextlength=500,
                                 csv=False,
                                 details=False,
                                 linked_tables=['t_tecs_esp'],
                                 editable=False,
                                 create=False,
                                 deletable=False,
                                 links=links)
    else:
        form = SQLFORM.smartgrid(db.t_espaciofisico,
                                 maxtextlength=500,
                                 csv=False,
                                 details=False,
                                 linked_tables=['t_tecs_esp'],
                                 links=links)
    return locals()
Exemplo n.º 12
0
def index():
    ################################ The core ######################################
    # Modify the filed labels of the db.product attaching not-empty markers
    mark_not_empty(db.product)
    form_marked = SQLFORM(db.product, separator='')
    # Unmark the filed labels
    unmark_not_empty(db.product)
    form_unmarked = SQLFORM(db.product, separator='')
    ################################################################################

    if form_marked.accepts(request.vars, session):
        session.flash = 'submitted %s' % form_marked.vars
        redirect(URL('index'))
    if form_unmarked.accepts(request.vars, session, formname='unmarked'):
        session.flash = 'submitted %s' % form_unmarked.vars
        redirect(URL('index'))
    style = STYLE(
        """input[type="text"], select, textarea {width:100%; max-height: 50px;}
                     .w2p_fw {padding-right: 20px; max-width:200px;}
                     .w2p_fl {background: #eee;}
                     .not_empty {color:#d00;}""")
    return dict(form_marked=DIV(style, form_marked),
                form_unmarked=form_unmarked)
Exemplo n.º 13
0
def pendientes():
    if 'edit' in request.args or 'new' in request.args:
        mark_not_empty(db.t_users_pendientes)
    confirmar_usuario = lambda row: A(
        'Confirmar',
        _href=URL(
            c='gestion',
            f='confirmar',
            args=[row.f_email, row.f_group, row.f_seccion, row.f_laboratorio]))
    eliminar_p = lambda row: A(
        'Eliminar',
        _href=URL(
            c='gestion',
            f='eliminar_p',
            args=[row.f_email, row.f_group, row.f_seccion, row.f_laboratorio]))
    links = [confirmar_usuario, eliminar_p]

    db.t_users_pendientes.id.readable = False
    if auth.has_membership('Director'):
        form = SQLFORM.smartgrid(db.t_users_pendientes,
                                 maxtextlength=500,
                                 csv=False,
                                 create=False,
                                 details=False,
                                 deletable=False,
                                 editable=False,
                                 links=links)
    else:
        form = SQLFORM.smartgrid(db.t_users_pendientes,
                                 maxtextlength=500,
                                 csv=False,
                                 create=False,
                                 details=False,
                                 deletable=False,
                                 links=links)
    return locals()
Exemplo n.º 14
0
def tipo_solicitud(
):  #Vista multifuncional que muestra las tablas de inicio para realizar una solicitud, responderla, pagar una deuda o recibir el pago de una deuda
    f = request.vars['f']  #Variable auxiliar que indica la función asociada
    seccion = str(
        db((db.t_espaciofisico.id == request.vars['esp'])
           & (db.t_seccion.id == db.t_espaciofisico.f_seccion)).select(
               db.t_seccion.f_seccion))[21:-2]
    labs = str(
        db((db.t_seccion.f_seccion == seccion)
           & (db.t_laboratorio.id == db.t_seccion.f_laboratorio)).select(
               db.t_laboratorio.f_nombre))[24:-2]
    espFisico = str(
        db(db.t_espaciofisico.id == request.vars['esp']).select(
            db.t_espaciofisico.f_espacio))[27:-2]
    esp = request.vars['esp']
    #Inicio del proceso auxiliar para obtener variables de interes y mostrar el botón de "aprobado"
    x = 0
    js = dict()
    aux = db(db.t_solicitud.f_espacio_fisico == request.vars['esp']).select(
        db.t_solicitud.f_aprobado, orderby=[~db.t_solicitud.id])
    for r in aux:
        js[x] = r.f_aprobado
        x = x + 1
    aux = XML(json.dumps(js))  #Fin
    if ('new' in request.args):
        db.t_solicitud.f_cantidad_devuelta.readable = False
        db.t_solicitud.f_cantidad_devuelta.default = 0
        db.t_solicitud.f_fecha_solicitud.default = request.now
        db.t_solicitud.f_espacio_fisico.default = request.vars['esp']
        mark_not_empty(db.t_solicitud)
        db.t_solicitud.f_Tipo.comment = 'Los campos marcados con (*) son obligatorios'
    if ('view' in request.args):
        db.t_solicitud.f_fecha_solicitud.readable = True
        db.t_solicitud.f_responsable.readable = True
    if ('edit' in request.args):
        db.t_solicitud.f_sustancia.writable = False
        db.t_solicitud.f_Tipo.writable = False
    if f == '1':  #Realizar una solicitud
        db.t_solicitud.f_cantidad_respuestas.readable = True
        if ('new' in request.args):
            db.t_solicitud.f_cantidad_respuestas.readable = False
        respuesta = lambda row: A('Respuestas',
                                  _href=URL(c='solicitud',
                                            f='solicitud_respuesta',
                                            vars=dict(id=row.id,
                                                      t=row.f_Tipo,
                                                      esp=request.vars['esp'],
                                                      s=row.f_sustancia)))
        aprobar = lambda row: A(
            'Aprobar',
            _href=URL(
                c='solicitud', f='aprobar', vars=request.vars, args=[row.id]))
        links = [aprobar, respuesta]
        query = (db.t_solicitud.f_espacio_fisico == request.vars['esp'])
        table = SQLFORM.smartgrid(db.t_solicitud,
                                  constraints=dict(t_solicitud=query),
                                  links=links,
                                  csv=False,
                                  deletable=True,
                                  editable=False,
                                  onvalidation=validar_pedido,
                                  orderby=[~db.t_solicitud.id],
                                  onupdate=None)
        return locals()
    elif f == '2':  #Solicitudes recibidas
        db.v_solicitud.f_espaciofisico.readable = False
        query = (db.v_solicitud.f_espacio_fisico !=
                 esp) & (db.v_solicitud.f_espaciofisico
                         == esp) & (db.v_solicitud.f_aprobado
                                    == 1) & (db.v_solicitud.f_satisfecho != 1)
        aceptar = lambda row: A('Aceptar',
                                _href=URL(c='solicitud',
                                          f='solicitud_recibida',
                                          vars=dict(id=row.f_id,
                                                    esp=request.vars['esp'],
                                                    sust=row.f_sustancia,
                                                    c=row.f_cantidad,
                                                    e=row.f_espacio_fisico,
                                                    t=row.f_Tipo)))
        links = [aceptar]
        table = SQLFORM.smartgrid(db.v_solicitud,
                                  constraints=dict(v_solicitud=query),
                                  links=links,
                                  create=False,
                                  editable=False,
                                  deletable=False,
                                  details=False,
                                  links_in_grid=True,
                                  csv=False,
                                  orderby=[~db.v_solicitud.f_id])
    elif f == '3':  #Préstamos
        db.t_solicitud_respuesta.f_fecha_entregado.readable = False
        db.t_solicitud_respuesta.f_fecha_recibido.readable = False
        db.t_solicitud_respuesta.f_tipo.readable = False
        db.t_solicitud_respuesta.f_espacio_fisico_d.readable = False
        db.t_solicitud_respuesta.f_solicitud.readable = False
        db.t_solicitud_respuesta.f_entregado.readable = False
        db.t_solicitud_respuesta.f_cantidad_devuelta.readable = True
        db.t_solicitud_respuesta.f_estado.readable = False
        pagos = lambda row: A('Pagos',
                              _href=URL(c='solicitud',
                                        f='prestamo',
                                        vars=dict(id=row.id,
                                                  esp=request.vars['esp'],
                                                  s=row.f_sustancia)))
        links = [pagos]
        query = (db.t_solicitud_respuesta.f_entregado
                 == 1) & (db.t_solicitud_respuesta.f_espacio_fisico_d
                          == request.vars['esp']) & (
                              db.t_solicitud_respuesta.f_tipo == 'Préstamo')
        table = SQLFORM.smartgrid(
            db.t_solicitud_respuesta,
            constraints=dict(t_solicitud_respuesta=query),
            links=links,
            create=False,
            csv=False,
            editable=False,
            orderby=[~db.t_solicitud_respuesta.id],
            deletable=False,
            details=False)  #
    elif f == '4':  #Deudas
        db.t_solicitud_respuesta.f_fecha_aceptado.readable = False
        db.t_solicitud_respuesta.f_fecha_recibido.readable = False
        db.t_solicitud_respuesta.f_fecha_entregado.readable = False
        db.t_solicitud_respuesta.f_espacio_fisico_s.readable = False
        db.t_solicitud_respuesta.f_solicitud.readable = False
        db.t_solicitud_respuesta.f_entregado.readable = False
        db.t_solicitud_respuesta.f_estado.readable = False
        db.t_solicitud_respuesta.f_cantidad_devuelta.readable = True
        pagos = lambda row: A('Pagar',
                              _href=URL(c='solicitud',
                                        f='pagar_deuda',
                                        vars=dict(id=row.id,
                                                  sust=row.f_sustancia,
                                                  cant=row.f_cantidad,
                                                  esp=row.f_espacio_fisico_s,
                                                  esp1=row.f_espacio_fisico_d))
                              )
        links = [pagos]
        query = (db.t_solicitud_respuesta.f_entregado
                 == 1) & (db.t_solicitud_respuesta.f_espacio_fisico_s
                          == request.vars['esp']) & (
                              db.t_solicitud_respuesta.f_tipo == 'Préstamo')
        table = SQLFORM.smartgrid(
            db.t_solicitud_respuesta,
            constraints=dict(t_solicitud_respuesta=query),
            links=links,
            csv=False,
            editable=False,
            deletable=False,
            create=False,
            details=False,
            orderby=[~db.t_solicitud_respuesta.id])
    return locals()
Exemplo n.º 15
0
 def mark_not_empty(self, table, marker=None):
     from plugin_notemptymarker import mark_not_empty
     return mark_not_empty(table, marker or self.get_default_not_empty_marker())
Exemplo n.º 16
0
def inventario_manage():

    sustancia = False
    labs = False
    seccion = False
    espFisico = False
    js = dict()

    espF = request.vars['esp']
    query = db.t_inventario.f_espaciofisico == espF
    db.t_inventario.f_espaciofisico.default = espF

    if 'new' in request.args:
        mark_not_empty(db.t_inventario)
        db.t_inventario.f_cantidadusointerno.comment = "Unidades en: g - mL - cm3"

    if 'edit' in request.args:

        db.t_inventario.f_sustancia.writable = False
        db.t_inventario.f_sustancia.readable = False
        db.t_inventario.f_cantidadusointerno.writable = False
        db.t_inventario.f_cantidadusointerno.readable = False

        row = db((db.t_inventario.id == request.args[3])
                 & (db.t_sustancias.id == db.t_inventario.f_sustancia))
        inv = row.select(db.t_inventario.ALL).first()
        sust = row.select(db.t_sustancias.ALL).first().f_nombre
        usoint = inv.f_cantidadusointerno
        unid = inv.f_unidad
        donac = inv.f_cantidadonacion

        form = SQLFORM.factory(
            Field('tipo',
                  'string',
                  requires=IS_IN_SET([
                      'Traslado de Donación a Uso Interno',
                      'Traslado de Uso Intero a Donación'
                  ]),
                  label=T('Tipo de Transacción *')),
            Field(
                'cantidad',
                'float',
                requires=IS_NULL_OR(
                    IS_FLOAT_IN_RANGE(
                        0,
                        donac,
                        error_message=
                        'Por favor introduzca una cantidad menor o igual a su cantidad de donacion disponible (%s %s)'
                        % (donac, unid))) if request.post_vars.tipo
                == 'Traslado de Donación a Uso Interno' else IS_NULL_OR(
                    IS_FLOAT_IN_RANGE(
                        0,
                        usoint,
                        error_message=
                        'Por favor introduzca una cantidad menor o igual a su cantidad de uso interno disponible (%s %s)'
                        % (usoint, unid))),
                default=0,
                label=T('Cantidad A Trasladar *')))

        if form.process().accepted:

            upd = db(db.t_inventario.id == request.args[3]).select().first()

            if form.vars.tipo == 'Traslado de Donación a Uso Interno':
                upd.update_record(f_cantidadonacion=upd.f_cantidadonacion -
                                  form.vars.cantidad)
                upd.update_record(
                    f_cantidadusointerno=upd.f_cantidadusointerno +
                    form.vars.cantidad)

                db.t_bitacora.insert(
                    f_fechaingreso=request.now,
                    f_sustancia=row.select(
                        db.t_inventario.ALL).first().f_sustancia,
                    f_proceso="Traslado Donación -> Uso Interno",
                    f_ingreso=form.vars.cantidad,
                    f_unidad=row.select(db.t_inventario.ALL).first().f_unidad,
                    f_cantidad=upd.f_total,
                    f_espaciofisico=request.vars['esp'],
                )

            else:
                upd.update_record(f_cantidadonacion=upd.f_cantidadonacion +
                                  form.vars.cantidad)
                upd.update_record(
                    f_cantidadusointerno=upd.f_cantidadusointerno -
                    form.vars.cantidad)

                db.t_bitacora.insert(
                    f_fechaingreso=request.now,
                    f_sustancia=row.select(
                        db.t_inventario.ALL).first().f_sustancia,
                    f_proceso="Traslado Uso Interno -> Donación",
                    f_consumo=form.vars.cantidad,
                    f_unidad=row.select(db.t_inventario.ALL).first().f_unidad,
                    f_cantidad=upd.f_total,
                    f_espaciofisico=request.vars['esp'],
                )
            redirect(
                URL('inventario_manage', vars=dict(esp=request.vars['esp'])))

    if request.vars['esp']:
        seccion = str(
            db((db.t_espaciofisico.id == request.vars['esp'])
               & (db.t_seccion.id == db.t_espaciofisico.f_seccion)).select(
                   db.t_seccion.f_seccion))[21:-2]
        labs = str(
            db((db.t_seccion.f_seccion == seccion)
               & (db.t_laboratorio.id == db.t_seccion.f_laboratorio)).select(
                   db.t_laboratorio.f_nombre))[24:-2]
        espFisico = str(
            db(db.t_espaciofisico.id == espF).select(
                db.t_espaciofisico.f_espacio))[27:-2]

    if (request.vars['secc']):
        labs = str(
            db((db.t_seccion.id == request.vars['secc'])
               & (db.t_laboratorio.id == db.t_seccion.f_laboratorio)).select(
                   db.t_laboratorio.f_nombre))[24:-2]
        seccion = str(
            db(db.t_seccion.id == request.vars['secc']).select(
                db.t_seccion.f_seccion))[21:]
        db.t_inventario.f_espaciofisico.readable = True
        if (request.vars['sust']):
            sustancia = str(
                db(db.t_sustancias.id == request.vars['sust']).select(
                    db.t_sustancias.f_nombre))[23:]
            query = (db.t_inventario.f_seccion == request.vars['secc']) & (
                db.t_inventario.f_sustancia == request.vars['sust'])
            db.t_inventario.f_espaciofisico.represent = lambda value, row: A(
                str(
                    db(db.t_espaciofisico.id == value).select(
                        db.t_espaciofisico.f_direccion))[29:-2],
                _href=URL('sustancias',
                          'view_bitacora',
                          vars=dict(sust=row.f_sustancia,
                                    esp=row.f_espaciofisico)))
            db.t_inventario.f_sustancia.readable = False
            datas = db((db.t_inventario.f_seccion == request.vars['secc'])
                       & (db.t_espaciofisico.id ==
                          db.t_inventario.f_espaciofisico)).select(
                              db.t_espaciofisico.f_espacio,
                              db.t_espaciofisico.f_direccion)
            for data in datas:
                js[data.f_direccion] = data.f_espacio
            js = XML(json.dumps(js))
        else:
            query = (db.t_inventario.f_seccion == request.vars['secc'])
        table = SQLFORM.smartgrid(db.t_inventario,
                                  constraints=dict(t_inventario=query),
                                  onupdate=auth.archive,
                                  editable=auth.has_membership('WebMaster'),
                                  orderby=[
                                      db.t_inventario.f_espaciofisico,
                                      db.t_inventario.f_sustancia
                                  ],
                                  create=False,
                                  csv=False,
                                  deletable=False,
                                  links_in_grid=False,
                                  paginate=10)

        return locals()

    table = SQLFORM.smartgrid(
        db.t_inventario,
        constraints=dict(t_inventario=query),
        create=(not auth.has_membership('Técnico')
                and not auth.has_membership('Usuario Normal')),
        links_in_grid=False,
        csv=False,
        deletable=False,
        oncreate=insert_inventario,
        onvalidation=validar_inventario,
        editable=auth.has_membership('WebMaster'),
        paginate=10)
    return locals()
Exemplo n.º 17
0
def view_bitacora():
    sust = request.vars['sust']
    espF = request.vars['esp']
    name = str(
        db(db.t_sustancias.id == sust).select(db.t_sustancias.f_nombre))[22:]
    espacio = str(
        db(db.t_espaciofisico.id == espF).select(
            db.t_espaciofisico.f_espacio))[27:]
    total = str(
        db((db.t_inventario.f_sustancia == sust)
           & (db.t_inventario.f_espaciofisico == espF)).select(
               db.t_inventario.f_total))[22:]
    db.t_bitacora.f_sustancia.default = sust
    db.t_bitacora.f_espaciofisico.default = espF
    db.t_bitacora.f_espaciofisico.readable = False
    query = (db.t_bitacora.f_sustancia
             == sust) & (db.t_bitacora.f_espaciofisico == espF)
    unid = db(db.t_inventario.f_sustancia == sust).select(
        db.t_inventario.f_unidad).first().f_unidad

    if ('new' in request.args):
        db.t_bitacora.f_consumo.readable = False
        db.t_bitacora.f_consumo.writable = False
        db.t_bitacora.f_ingreso.readable = False
        db.t_bitacora.f_ingreso.writable = False
        db.t_bitacora.f_cantidad.writable = True
        if unid == 'g':
            db.t_bitacora.f_unidad.requires = IS_IN_SET(['g', 'Kg'])
        elif unid == 'mL':
            db.t_bitacora.f_unidad.requires = IS_IN_SET(['mL', 'L'])
        else:
            db.t_bitacora.f_unidad.requires = IS_IN_SET(['cm3', 'L'])
        mark_not_empty(db.t_bitacora)

    if ('view' in request.args):
        db.t_bitacora.f_descripcion.readable = True
        db.t_bitacora.f_cantidad.readable = False
        db.t_bitacora.f_fecha.readable = auth.has_membership(
            'Gestor de SMyDP') or auth.has_membership('WebMaster')

    if 'edit' in request.args:
        row = db(db.t_bitacora.id == request.args[3]).select().first()
        db.t_bitacora.f_consumo.readable = False
        db.t_bitacora.f_consumo.writable = False
        db.t_bitacora.f_ingreso.readable = False
        db.t_bitacora.f_ingreso.writable = False
        db.t_bitacora.f_cantidad.writable = True
        db.t_bitacora.f_proceso.writable = True
        db.t_bitacora.f_unidad.readable = True
        # db.t_bitacora.f_unidad.writable = False
        if not row.f_proceso in [
                'Suministro del Almacen', 'Compra', 'Prestamo', 'Donacion',
                'Practica de Laboratorio', 'Tesis',
                'Proyecto de Investigacion', 'Servicio de Laboratorio'
        ]:
            #db.t_bitacora.f_cantidad.writable = False
            pass
        mark_not_empty(db.t_bitacora)
        row = db(db.t_bitacora.id == request.args[3]).select().first()
        if row.f_ingreso == 0:
            row.update_record(f_cantidad=row.f_consumo)
        else:
            row.update_record(f_cantidad=row.f_ingreso)

    table = SQLFORM.smartgrid(
        db.t_bitacora,
        constraints=dict(t_bitacora=query),
        oncreate=insert_bitacora,
        orderby=[~db.t_bitacora.f_fechaingreso, ~db.t_bitacora.f_fecha],
        csv=False,
        links_in_grid=False,
        deletable=False,
        user_signature=True,
        onvalidation=validar_bitacora,
        paginate=10,
        onupdate=insert_bitacora,
        editable=auth.has_membership('WebMaster'))

    return locals()
Exemplo n.º 18
0
################################ The core ######################################
# Inject the uploadify widget
# The "requires" needs custom validators.
table.image.widget = uploadify_widget
table.image.requires = [IS_UPLOADIFY_LENGTH(10240, 1), IS_UPLOADIFY_IMAGE()]
# Inject the another uploadify widget with different requires
table.text.widget = uploadify_widget
table.text.requires = IS_EMPTY_OR([IS_UPLOADIFY_FILENAME(extension='txt'), 
                                          IS_UPLOADIFY_LENGTH(1024)])
################################################################################
    
if db(table.id>0).count() > 5:
    last = db(table.id>0).select(orderby=~table.id).first()
    db(table.id<=last.id-5).delete()

mark_not_empty(table)
    
def index():
    form = SQLFORM(table, upload=URL('download'))
    if form.accepts(request.vars, session):
        session.flash = 'submitted %s' % form.vars
        redirect(URL('index'))
    
    unmark_not_empty(table)
    records = db(table.id>0).select(orderby=~table.id)
    records = SQLTABLE(records, headers="labels",
                       upload=URL('download'), linkto=lambda f, t, r: URL('edit', args=f))
    return dict(form=form, records=records, tests=[A('test_load', _href=URL('test'))])
    
def edit():
    record = db(table.id==request.args(0)).select().first() or redirect('index')
Exemplo n.º 19
0
def solicitud_recibida():
    esp = request.vars['esp']
    i = request.vars['id']
    sust = str(
        db(db.t_sustancias.id == request.vars['sust']).select(
            db.t_sustancias.f_nombre))[21:-2]
    cantidad_total = str(
        db(db.t_solicitud.id == request.vars['id']).select(
            db.t_solicitud.f_cantidad))[22:-2]
    tipo = str(
        db(db.t_solicitud.id == request.vars['id']).select(
            db.t_solicitud.f_Tipo))[18:-2]
    x = 0
    js = dict()
    aux = db((db.t_solicitud_respuesta.f_espacio_fisico_d == esp)
             & (db.t_solicitud_respuesta.f_solicitud == i)).select(
                 db.t_solicitud_respuesta.f_entregado,
                 orderby=[~db.t_solicitud_respuesta.id])
    for r in aux:
        js[x] = r.f_entregado
        x = x + 1
    aux = XML(json.dumps(js))
    query = (db.t_solicitud_respuesta.f_espacio_fisico_d
             == esp) & (db.t_solicitud_respuesta.f_solicitud == i)
    db.t_solicitud_respuesta.f_sustancia.readable = False
    db.t_solicitud_respuesta.f_tipo.readable = False
    db.t_solicitud_respuesta.f_cantidad_devuelta_prestamo.readable = False
    if request.vars['t'] == 'Préstamo':
        db.t_solicitud_respuesta.f_fecha_devolucion.readable = True
    if ('new' in request.args):
        db.t_solicitud_respuesta.f_sustancia.default = request.vars['sust']
        db.t_solicitud_respuesta.f_sustancia.writable = False
        db.t_solicitud_respuesta.f_sustancia.readable = False
        db.t_solicitud_respuesta.f_cantidad.default = request.vars['c']
        db.t_solicitud_respuesta.f_fecha_aceptado.default = request.now
        db.t_solicitud_respuesta.f_fecha_aceptado.readable = False
        db.t_solicitud_respuesta.f_fecha_entregado.default = None
        db.t_solicitud_respuesta.f_fecha_recibido.default = None
        db.t_solicitud_respuesta.f_tipo.default = request.vars['t']
        db.t_solicitud_respuesta.f_tipo.readable = False
        db.t_solicitud_respuesta.f_tipo.writable = False
        db.t_solicitud_respuesta.f_estado.readable = False
        db.t_solicitud_respuesta.f_cantidad_devuelta_prestamo.readable = False
        db.t_solicitud_respuesta.f_cantidad_devuelta.default = 0
        db.t_solicitud_respuesta.f_espacio_fisico_s.default = request.vars['e']
        db.t_solicitud_respuesta.f_espacio_fisico_d.default = esp
        db.t_solicitud_respuesta.f_solicitud.default = i
        db.t_solicitud_respuesta.f_entregado.default = 0
        db.t_solicitud_respuesta.f_recibido.default = 0
        mark_not_empty(db.t_solicitud_respuesta)
        if request.vars['t'] == "Donación":
            db.t_solicitud_respuesta.f_cantidad.comment = 'Unidades en: g - mL - cm3. Los campos marcados con (*) son obligatorios'
        if request.vars['t'] == "Préstamo":
            db.t_solicitud_respuesta.f_cantidad.comment = 'Unidades en: g - mL - cm3.'
            db.t_solicitud_respuesta.f_fecha_devolucion.comment = 'Los campos marcados con (*) son obligatorios'
        if request.vars['t'] == 'Donación':
            db.t_solicitud_respuesta.f_fecha_devolucion.default = None
        if request.vars['t'] == 'Préstamo':
            db.t_solicitud_respuesta.f_fecha_devolucion.readable = True
            db.t_solicitud_respuesta.f_fecha_devolucion.readable = True
            db.t_solicitud_respuesta.f_fecha_devolucion.writable = True
    if ('view' in request.args):
        db.t_solicitud_respuesta.f_fecha_entregado.readable = True
        db.t_solicitud_respuesta.f_fecha_recibido.readable = True
        db.t_solicitud_respuesta.f_fecha_devolucion.readable = False
        if request.vars['t'] == 'Préstamo':
            db.t_solicitud_respuesta.f_fecha_devolucion.readable = True
    if 'edit' in request.args:
        db.t_solicitud_respuesta.f_sustancia.writable = False
        db.t_solicitud_respuesta.f_fecha_aceptado.writable = False
        db.t_solicitud_respuesta.f_tipo.writable = False
        db.t_solicitud_respuesta.f_fecha_devolucion.writable = False
        if request.vars['t'] == 'Préstamo':
            db.t_solicitud_respuesta.f_fecha_devolucion.writable = True
    entregado = lambda row: A(
        'Entregado',
        _href=URL(c='solicitud',
                  f='add_bit_2',
                  vars=request.vars,
                  args=[
                      row.id, row.f_solicitud, row.f_cantidad, row.f_sustancia,
                      row.f_espacio_fisico_d, row.f_espacio_fisico_s
                  ]))
    links = [entregado]
    if (auth.has_membership('Usuario Normal')) | (
            auth.has_membership('Técnico')):
        table = SQLFORM.smartgrid(
            db.t_solicitud_respuesta,
            constraints=dict(t_solicitud_respuesta=query),
            links=links,
            csv=False,
            onvalidation=validar_respuesta,
            details=False,
            orderby=[~db.t_solicitud_respuesta.id],
            editable=False,
            create=False,
            oncreate=act_cant_respuestas,
            deletable=False)
    else:
        table = SQLFORM.smartgrid(
            db.t_solicitud_respuesta,
            constraints=dict(t_solicitud_respuesta=query),
            links=links,
            csv=False,
            onvalidation=validar_respuesta,
            details=False,
            orderby=[~db.t_solicitud_respuesta.id],
            editable=False,
            oncreate=act_cant_respuestas,
            deletable=False)
    return locals()
Exemplo n.º 20
0
# Inject the uploadify widget
# The "requires" needs custom validators.
table.image.widget = uploadify_widget
table.image.requires = [IS_UPLOADIFY_LENGTH(10240, 1), IS_UPLOADIFY_IMAGE()]
# Inject the another uploadify widget with different requires
table.text.widget = uploadify_widget
table.text.requires = IS_EMPTY_OR(
    [IS_UPLOADIFY_FILENAME(extension='txt'),
     IS_UPLOADIFY_LENGTH(1024)])
################################################################################

if db(table.id > 0).count() > 5:
    last = db(table.id > 0).select(orderby=~table.id).first()
    db(table.id <= last.id - 5).delete()

mark_not_empty(table)


def index():
    form = SQLFORM(table, upload=URL('download'))
    if form.accepts(request.vars, session):
        session.flash = 'submitted %s' % form.vars
        redirect(URL('index'))

    unmark_not_empty(table)
    records = db(table.id > 0).select(orderby=~table.id)
    records = SQLTABLE(records,
                       headers="labels",
                       upload=URL('download'),
                       linkto=lambda f, t, r: URL('edit', args=f))
    return dict(form=form,
Exemplo n.º 21
0
 def mark_not_empty(self, table, marker=None):
     from plugin_notemptymarker import mark_not_empty
     return mark_not_empty(table, marker
                           or self.get_default_not_empty_marker())