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()
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()
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()
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()
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()
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))
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()
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()
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()
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)
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()
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)
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()
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()
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())
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()
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()
################################ 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')
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()
# 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,