예제 #1
0
파일: nota.py 프로젝트: eadomenech/agis
def form_editar_nota(examen, estudiante):
    co = CAT()
    db = current.db
    auth = current.auth
    T = current.T
    conf = current.conf
    rol_admin = conf.take('roles.admin')
    nota_model.definir_tabla()
    # buscar la nota
    nota = db.nota(examen_id=examen.id, estudiante_id=estudiante.id)
    db.nota.examen_id.writable = False
    db.nota.estudiante_id.writable = False
    # si no es admin entonces no se muestra el nombre
    if not auth.has_membership(role=rol_admin):
        db.nota.estudiante_id.represent = lambda v, r: \
            db.estudiante(r.estudiante_id).uuid
        db.nota.estudiante_id.label = "UUID"
    manejo = SQLFORM(db.nota, record=nota)
    co.append(DIV(
        DIV(H3(T("Asignación de nota para"), " ",
               examen_model.examen_format(examen),
            _class="panel-title"), _class="panel-heading"),
        DIV(manejo, _class="panel-body"),
        _class="panel panel-default"))
    return (co, manejo)
예제 #2
0
파일: tables.py 프로젝트: eadomenech/agis
tipo_pago.definir_tabla()
departamento.definir_tabla()
profesor.definir_tabla()
funsionario.definir_tabla(db, T)
nivel_academico.definir_tabla()
asignatura.definir_tabla()
plan_curricular.definir_tabla()
plazas.definir_tabla()
evento.definir_tabla()
profesor_asignatura.definir_tabla()
asignatura_plan.definir_tabla()
grupo.definir_tabla()
pago.definir_tabla(db, T)
examen.definir_tabla()
examen_aula_estudiante.definir_tabla()
nota.definir_tabla()
asignacion_carrera.definir_tabla()
pais.definir_tabla()
carrera_escuela.definir_tabla(db, T)
especialidad.definir_tabla(db, T)
turma.definir_tabla(db, T)
matricula.definir_tabla(db, T)

# configurar otras
db.auth_user.id.readable = False

## database initialization
from agiscore import tools

if not tools.probar_base_de_datos():
    # create default users groups
예제 #3
0
파일: nota.py 프로젝트: eadomenech/agis
def grid_asignar_nota(examen):
    """Retorna un grid para manejo de las notas de un examen"""
    co = CAT()
    if not examen:
        return co
    auth = current.auth
    if not auth.user:
        return co
    db = current.db
    T = current.T
    conf = current.conf
    request = current.request
    rol_admin = conf.take('roles.admin')
    rol_profesor = conf.take('roles.profesor')
    nota_model.definir_tabla()
    nota_model.crear_entradas(examen.id)
    db.nota.examen_id.readable = False
    q = (db.nota.examen_id == examen.id)
    q &= (db.nota.estudiante_id == db.estudiante.id)
    q &= (db.persona.uuid == db.estudiante.uuid)
    campos = [db.persona.uuid]
    if auth.has_membership(role=rol_admin):
        campos.append(db.persona.nombre_completo)
    campos.append(db.nota.valor)
    campos.append(db.nota.id)
    # configurar campos
    persona_model.esconder_campos()
    estudiante_model.esconder_campos()
    db.nota.estudiante_id.readable = False
    db.persona.uuid.readable = True
    db.persona.nombre_completo.label = T('Nombre')
    db.persona.uuid.label = "UUID"
    if auth.has_membership(role=rol_admin):
        db.persona.nombre_completo.readable = True
    # enlaces en el GRID ------------------------------------------------------
    def enlaces(row):
        request = current.request
        c = request.controller
        f = request.function
        pars = request.vars
        e = db.estudiante(uuid=row.persona.uuid)
        pars['estudiante_id'] = e.id
        u = db.auth_user(auth.user.id)
        profesor = None
        asignacion = None
        if u.persona.select().first():
            profesor = u.persona.select().first().profesor.select().first()
        if profesor:
            asignacion = db.profesor_asignatura(profesor_id=profesor.id,
                        asignatura_id=examen.asignatura_id,
                        evento_id=examen.evento_id)
        nota = db.nota(examen_id=examen.id, estudiante_id=e.id)
        puede = ((auth.has_membership(role=rol_admin) or \
                 (asignacion and asignacion.es_jefe)))
        puede = puede or (auth.has_membership(role=rol_profesor) and \
                          ((nota.valor is None) and asignacion))
        from agiscore.db.evento import esta_activo
        puede = puede and esta_activo(db.evento(examen.evento_id))
        url1 = URL(c=c, f=f, args=[examen.id, 'new'],
                   vars=pars, user_signature=True)
        a1 = Accion(SPAN('', _class='glyphicon glyphicon-plus-sign'),
                    url1,
                    puede,
                    _class="btn btn-default",
                    _title=T("Poner nota"))
        return CAT(a1)
    # -------------------------------------------------------------------------
    g_links = [dict(header='', body=enlaces)]
    
    text_lengths = {'persona.nombre_completo': 50,
                  'persona.uuid': 100}
    
    manejo = grid_simple(q,
                         fields=campos,
                         create=False,
                         deletable=False,
                         editable=False,
                         maxtextlengths=text_lengths,
                         links=g_links,
                         args=request.args[:1])
    
    co.append(DIV(
        DIV(H3(T("Asignación de notas para"), " ",
               examen_model.examen_format(examen),
            _class="panel-title"), _class="panel-heading"),
        DIV(manejo, _class="panel-body"),
        _class="panel panel-default"))
    return co