db.category.bulk_insert([{'name': 'A'}, {'name': 'B'}])
for category in db(db.category.id > 0).select():
    _id = category.id
    if category.name == 'A':
        db.color.bulk_insert([{
            'category': _id,
            'name': 'red'
        }, {
            'category': _id,
            'name': 'blue'
        }])
    elif category.name == 'B':
        db.color.bulk_insert([{'category': _id, 'name': 'green'}])

db.product.category.widget = suggest_widget(db.category.name,
                                            id_field=db.category.id,
                                            limitby=(0, 10),
                                            min_length=1)

from gluon.storage import Storage
session.auth = Storage(hmac_key='test')

################################ The core ######################################
# The lazy_options_widget receives js events
# called "product_category__selected" and "product_category__unselected"
# which will be triggered by the above suggest_widget.]
# You can also pass user_signature and hmac_key arguments for authorization in ajax
db.product.color.widget = lazy_options_widget(
    'product_category__selected',
    'product_category__unselected',
    lambda category_id: (db.color.category == category_id),
    request.vars.category,
Beispiel #2
0
def nueva_entrada():
    session.Entradas = True
    frmlineas = None
    codigo_alimento = None
    if len(request.args) > 0:
        session.current_entrada = request.args[0]
    else:
        session.current_entrada = None
    db.CabeceraEntrada.almacen.writable = False
    db.CabeceraEntrada.almacen.readable = False
    db.CabeceraEntrada.Donante.widget = suggest_widget(
        db.Colaborador.name,
        id_field=db.Colaborador.id,
        min_length=1,
        limitby=(0, 50),
        keyword='_autocomplete_category_2_%(fieldname)s',
        user_signature=True,
    )

    registro = None
    if session.current_entrada:
        registro = db.CabeceraEntrada(session.current_entrada)
    form = SQLFORM(db.CabeceraEntrada,
                   record=registro,
                   submit_button='Grabar estos datos',
                   keepvalues=True)

    if request.vars._autocomplete_Colaborador_name_aux:
        request.vars.pop('_autocomplete_Colaborador_name_aux')
    if form.accepts(request.vars, session, onvalidation=ver_cierre):
        response.flash = 'Nueva entrada grabada'
        session.current_entrada = form.vars.id
        redirect(URL('nueva_entrada', args=[form.vars.id]))
    elif form.errors:
        response.flash = 'Error en los datos'

    if session.current_entrada:
        valor_antiguo_uds = None
        if 'lid' in request.vars:
            registro_linea = db.LineaEntrada(request.vars.lid)
            registro_alimento = db.Alimento(registro_linea.alimento)
            codigo_alimento = registro_alimento.Codigo
            session.AlmacenAlimento = registro_alimento.id
            if request.vars.Unidades:
                if float(request.vars.Unidades) \
                        != registro_linea.Unidades:
                    valor_antiguo_uds = registro_linea.Unidades
        else:
            registro_linea = None
            codigo_alimento = XML('""')
        db.LineaEntrada.cabecera.default = session.current_entrada
        frmlineas = SQLFORM(db.LineaEntrada,
                            registro_linea,
                            _id='frmlineas',
                            submit_button='Guardar esta línea',
                            keepvalues=False)
        if 'lid' in request.vars:
            frmlineas.vars.alimento = registro_alimento.Descripcion
        if 'alimento' in request.vars:
            if session.AlmacenAlimento:
                request.vars.alimento = session.AlmacenAlimento

        # session.AlmacenAlimento
        if frmlineas.accepts(request.vars, session):
            if valor_antiguo_uds and registro_linea.LineaAlmacen:
                actualiza_lineaalmacen(registro_linea.LineaAlmacen,
                                       float(request.vars.Unidades),
                                       valor_antiguo_uds)
            else:
                cid = nueva_lineaalmacen(request.vars, session.Entradas)
                registro_linea = db.LineaEntrada(frmlineas.vars.id)
                registro_linea.LineaAlmacen = cid
                registro_linea.update_record()

            redirect(URL(f='nueva_entrada', args=session.current_entrada))
        elif frmlineas.errors:
            response.flash = 'Error en los datos'
    response.files.append(
        URL(r=request, c='static/jqGrid/js/i18n', f='grid.locale-es.js'))
    response.files.append(
        URL(r=request, c='static/jqGrid/js', f='jquery.jqGrid.min.js'))
    response.files.append(
        URL(r=request, c='static/jqGrid/css', f='ui.jqgrid.css'))

    return dict(form=form,
                frmlineas=frmlineas,
                codigo_alimento=codigo_alimento)
Beispiel #3
0
def nueva_salida():
    session.Entradas = False
    session.AlmacenStock = None
    frmlineas = None
    codigo_alimento = None
    if len(request.args) > 0:

        # uso session.current_entrada en lugar de session.current_salida para.
        # que valga la misma función de  get_lineas_entradas en entradas y
        # salidas

        session.current_entrada = request.args[0]
    else:
        session.current_entrada = None
    db.CabeceraSalida.almacen.writable = False
    db.CabeceraSalida.almacen.readable = False
    db.CabeceraSalida.Beneficiario.widget = suggest_widget(
        db.Beneficiario.name,
        id_field=db.Beneficiario.id,
        min_length=1,
        limitby=(0, 50),
        keyword='_autocomplete_category_2_%(fieldname)s',
        user_signature=True,
    )
    registro = None
    if session.current_entrada:
        registro = db.CabeceraSalida(session.current_entrada)
    form = SQLFORM(db.CabeceraSalida,
                   record=registro,
                   submit_button='Grabar estos datos',
                   keepvalues=True)
    if form.accepts(request.vars, session, onvalidation=ver_cierre):
        response.flash = 'Nueva salida grabada'
        session.current_entrada = form.vars.id
        redirect(URL('nueva_salida', args=[form.vars.id]))
    elif form.errors:
        response.flash = 'Error en los datos'

    if session.current_entrada:
        valor_antiguo_uds = 0
        if 'lid' in request.vars:
            registro_linea = db.LineaSalida(request.vars.lid)
            registro_alimento = db.Alimento(registro_linea.alimento)
            codigo_alimento = registro_alimento.Codigo
            session.AlmacenAlimento = registro_alimento.id
            if request.vars.Unidades:
                if float(request.vars.Unidades) \
                        != registro_linea.Unidades:
                    valor_antiguo_uds = registro_linea.Unidades
        else:
            registro_linea = None
            codigo_alimento = XML('""')
        db.LineaSalida.cabecera.default = session.current_entrada
        db.LineaSalida.LineaAlmacen.writable = True
        frmlineas = SQLFORM(db.LineaSalida,
                            registro_linea,
                            submit_button='Guardar esta línea',
                            _id='frmlineas')
        if 'lid' in request.vars:
            frmlineas.vars.alimento = registro_alimento.Descripcion
        if 'alimento' in request.vars:
            if session.AlmacenAlimento:
                request.vars.alimento = session.AlmacenAlimento

        # session.AlmacenAlimento

        session.valor_antiguo = valor_antiguo_uds

        if frmlineas.accepts(request.vars, session, onvalidation=check_stock):
            actualizar_almacen_linea_salida(frmlineas.vars.alimento,
                                            float(frmlineas.vars.Unidades),
                                            valor_antiguo_uds)
            redirect(URL(f='nueva_salida', args=session.current_entrada))
        elif frmlineas.errors:
            response.flash = 'Error en los datos'
    response.files.append(
        URL(r=request, c='static/jqGrid/js/i18n', f='grid.locale-es.js'))
    response.files.append(
        URL(r=request, c='static/jqGrid/js', f='jquery.jqGrid.min.js'))
    response.files.append(
        URL(r=request, c='static/jqGrid/css', f='ui.jqgrid.css'))

    return dict(form=form,
                frmlineas=frmlineas,
                codigo_alimento=codigo_alimento)
    'name': 'AAC'
}, {
    'name': 'ABC'
}, {
    'name': 'BBB'
}, {
    'name': 'CCC'
}])

from gluon.storage import Storage
session.auth = Storage(hmac_key='test')

################################ The core ######################################
# Inject the suggest widget
db.product.category_1.widget = suggest_widget(db.category.name,
                                              limitby=(0, 10),
                                              min_length=1)
# Inject the another suggest widget
# In this case, you have to specify the keyword argument to avoid conflict.
# You can also pass the id_field argument as in web2py's autocomplete widget.
# You can also pass user_signature and hmac_key arguments for authorization in ajax
db.product.category_2.widget = suggest_widget(
    db.category.name,
    id_field=db.category.id,
    limitby=(0, 10),
    min_length=1,
    user_signature=True,
    keyword='_autocomplete_category_2_%(fieldname)s')

################################################################################
db.define_table('product', 
    Field('category', db.category, comment='<- type "A" or "B"'),
    Field('color', db.color,  
          requires=IS_EMPTY_OR(IS_IN_DB(db(db.color.id>0), 'color.id', 'color.name', zero='---')),
          comment='<- select category first'),
    )
    
db.category.bulk_insert([{'name':'A'}, {'name':'B'}])
for category in db(db.category.id>0).select():
    _id = category.id
    if category.name == 'A':
        db.color.bulk_insert([{'category': _id, 'name':'red'}, {'category': _id, 'name':'blue'}])
    elif category.name == 'B':
        db.color.bulk_insert([{'category': _id, 'name':'green'}])
     
db.product.category.widget = suggest_widget(db.category.name, id_field=db.category.id, 
                                          limitby=(0,10), min_length=1)
     
from gluon.storage import Storage
session.auth = Storage(hmac_key='test')
                                        
################################ The core ######################################
# The lazy_options_widget receives js events
# called "product_category__selected" and "product_category__unselected"
# which will be triggered by the above suggest_widget.]
# You can also pass user_signature and hmac_key arguments for authorization in ajax 
db.product.color.widget = lazy_options_widget(
                  'product_category__selected', 'product_category__unselected',
                  lambda category_id: (db.color.category==category_id), 
                  request.vars.category,
                  orderby=db.color.id,
                  user_signature=True,
db = DAL('sqlite:memory:')
db.define_table('category', Field('name'))
db.define_table('product',
    Field('category_1'),
    Field('category_2', db.category),
    )
    
db.category.bulk_insert([{'name':'AAA'}, {'name':'AAC'}, {'name':'ABC'},
                         {'name':'BBB'}, {'name':'CCC'}])
    
from gluon.storage import Storage
session.auth = Storage(hmac_key='test')

################################ The core ######################################
# Inject the suggest widget
db.product.category_1.widget = suggest_widget(db.category.name, limitby=(0, 10), min_length=1)
# Inject the another suggest widget
# In this case, you have to specify the keyword argument to avoid conflict.
# You can also pass the id_field argument as in web2py's autocomplete widget.
# You can also pass user_signature and hmac_key arguments for authorization in ajax
db.product.category_2.widget = suggest_widget(
    db.category.name,
    id_field=db.category.id, limitby=(0, 10), min_length=1,
    user_signature=True,
    keyword='_autocomplete_category_2_%(fieldname)s',
    )
################################################################################
     
     
def index():
    form = SQLFORM(db.product)
Beispiel #7
0
def nueva_salida():
    session.Entradas = False
    session.AlmacenStock = None
    frmlineas = None
    codigo_alimento = None
    if len(request.args) > 0:

        # uso session.current_entrada en lugar de session.current_salida para.
        # que valga la misma función de  get_lineas_entradas en entradas y
        # salidas

        session.current_entrada = request.args[0]
    else:
        session.current_entrada = None
    db.CabeceraSalida.almacen.writable = False
    db.CabeceraSalida.almacen.readable = False
    db.CabeceraSalida.Beneficiario.widget = suggest_widget(
        db.Beneficiario.name,
        id_field=db.Beneficiario.id,
        min_length=1,
        limitby=(0, 50),
        keyword='_autocomplete_category_2_%(fieldname)s',
        user_signature=True,
    )
    registro = None
    if session.current_entrada:
        registro = db.CabeceraSalida(session.current_entrada)
    form = SQLFORM(db.CabeceraSalida, record=registro,
                   submit_button='Grabar estos datos', keepvalues=True)
    if form.accepts(request.vars, session, onvalidation=ver_cierre):
        response.flash = 'Nueva salida grabada'
        session.current_entrada = form.vars.id
        redirect(URL('nueva_salida', args=[form.vars.id]))
    elif form.errors:
        response.flash = 'Error en los datos'

    if session.current_entrada:
        valor_antiguo_uds = 0
        if 'lid' in request.vars:
            registro_linea = db.LineaSalida(request.vars.lid)
            registro_alimento = db.Alimento(registro_linea.alimento)
            codigo_alimento = registro_alimento.Codigo
            session.AlmacenAlimento = registro_alimento.id
            if request.vars.Unidades:
                if float(request.vars.Unidades) \
                        != registro_linea.Unidades:
                    valor_antiguo_uds = registro_linea.Unidades
        else:
            registro_linea = None
            codigo_alimento = XML('""')
        db.LineaSalida.cabecera.default = session.current_entrada
        db.LineaSalida.LineaAlmacen.writable = True
        frmlineas = SQLFORM(db.LineaSalida, registro_linea,
                            submit_button='Guardar esta línea',
                            _id='frmlineas')
        if 'lid' in request.vars:
            frmlineas.vars.alimento = registro_alimento.Descripcion
        if 'alimento' in request.vars:
            if session.AlmacenAlimento:
                request.vars.alimento = session.AlmacenAlimento

        # session.AlmacenAlimento

        session.valor_antiguo = valor_antiguo_uds

        if frmlineas.accepts(request.vars, session,
                             onvalidation=check_stock):
            actualizar_almacen_linea_salida(frmlineas.vars.alimento, float(frmlineas.vars.Unidades), valor_antiguo_uds)
            redirect(URL(f='nueva_salida',
                         args=session.current_entrada))
        elif frmlineas.errors:
            response.flash = 'Error en los datos'
    response.files.append(URL(r=request, c='static/jqGrid/js/i18n',
                              f='grid.locale-es.js'))
    response.files.append(URL(r=request, c='static/jqGrid/js',
                              f='jquery.jqGrid.min.js'))
    response.files.append(URL(r=request, c='static/jqGrid/css',
                              f='ui.jqgrid.css'))

    return dict(form=form, frmlineas=frmlineas,
                codigo_alimento=codigo_alimento)
Beispiel #8
0
def nueva_entrada():
    session.Entradas = True
    frmlineas = None
    codigo_alimento = None
    if len(request.args) > 0:
        session.current_entrada = request.args[0]
    else:
        session.current_entrada = None
    db.CabeceraEntrada.almacen.writable = False
    db.CabeceraEntrada.almacen.readable = False
    db.CabeceraEntrada.Donante.widget = suggest_widget(
        db.Colaborador.name,
        id_field=db.Colaborador.id,
        min_length=1,
        limitby=(0, 50),
        keyword='_autocomplete_category_2_%(fieldname)s',
        user_signature=True,
    )

    registro = None
    if session.current_entrada:
        registro = db.CabeceraEntrada(session.current_entrada)
    form = SQLFORM(db.CabeceraEntrada, record=registro,
                   submit_button='Grabar estos datos', keepvalues=True)

    if request.vars._autocomplete_Colaborador_name_aux:
        request.vars.pop('_autocomplete_Colaborador_name_aux')
    if form.accepts(request.vars, session, onvalidation=ver_cierre):
        response.flash = 'Nueva entrada grabada'
        session.current_entrada = form.vars.id
        redirect(URL('nueva_entrada', args=[form.vars.id]))
    elif form.errors:
        response.flash = 'Error en los datos'

    if session.current_entrada:
        valor_antiguo_uds = None
        if 'lid' in request.vars:
            registro_linea = db.LineaEntrada(request.vars.lid)
            registro_alimento = db.Alimento(registro_linea.alimento)
            codigo_alimento = registro_alimento.Codigo
            session.AlmacenAlimento = registro_alimento.id
            if request.vars.Unidades:
                if float(request.vars.Unidades) \
                        != registro_linea.Unidades:
                    valor_antiguo_uds = registro_linea.Unidades
        else:
            registro_linea = None
            codigo_alimento = XML('""')
        db.LineaEntrada.cabecera.default = session.current_entrada
        frmlineas = SQLFORM(db.LineaEntrada, registro_linea,
                            _id='frmlineas',
                            submit_button='Guardar esta línea',
                            keepvalues=False)
        if 'lid' in request.vars:
            frmlineas.vars.alimento = registro_alimento.Descripcion
        if 'alimento' in request.vars:
            if session.AlmacenAlimento:
                request.vars.alimento = session.AlmacenAlimento

        # session.AlmacenAlimento
        if frmlineas.accepts(request.vars, session):
            if valor_antiguo_uds and registro_linea.LineaAlmacen:
                actualiza_lineaalmacen(registro_linea.LineaAlmacen,
                                       float(request.vars.Unidades), valor_antiguo_uds)
            else:
                cid = nueva_lineaalmacen(request.vars, session.Entradas)
                registro_linea = db.LineaEntrada(frmlineas.vars.id)
                registro_linea.LineaAlmacen = cid
                registro_linea.update_record()

            redirect(URL(f='nueva_entrada',
                         args=session.current_entrada))
        elif frmlineas.errors:
            response.flash = 'Error en los datos'
    response.files.append(URL(r=request, c='static/jqGrid/js/i18n',
                              f='grid.locale-es.js'))
    response.files.append(URL(r=request, c='static/jqGrid/js',
                              f='jquery.jqGrid.min.js'))
    response.files.append(URL(r=request, c='static/jqGrid/css',
                              f='ui.jqgrid.css'))

    return dict(form=form, frmlineas=frmlineas,
                codigo_alimento=codigo_alimento)