Esempio n. 1
0
def competence_radar_chart_datas(context, request):
    """
    Return the datas used to show a radar / spider chart of a user's
    competences
    context : CompetenceGrid
    """
    datas = []
    legend = []

    deadlines = CompetenceDeadline.query()
    deadlines = deadlines.filter(
        CompetenceDeadline.order <= context.deadline.order
    )
    for deadline in deadlines:
        grid = get_competence_grid(request, context.contractor_id, deadline.id)
        datas.append(grid.__radar_datas__())
        legend.append(u"Profil {0}".format(deadline.label))

    datas.append(CompetenceOption.__radar_datas__(context.deadline_id))
    legend.append(u"Profil de référence")

    config = {}
    config['levels'] = CompetenceScale.query().count()
    max_value = request.dbsession.query(
        func.max(CompetenceScale.value)
    ).all()[0][0]

    config['maxValue'] = max_value

    return {'datas': datas, 'legend': legend, "config": config}
Esempio n. 2
0
def competence_radar_chart_datas(context, request):
    """
    Return the datas used to show a radar / spider chart of a user's
    competences
    context : CompetenceGrid
    """
    datas = []
    legend = []

    deadlines = CompetenceDeadline.query()
    deadlines = deadlines.filter(
        CompetenceDeadline.order <= context.deadline.order)
    for deadline in deadlines:
        grid = get_competence_grid(request, context.contractor_id, deadline.id)
        datas.append(grid.__radar_datas__())
        legend.append(u"Profil {0}".format(deadline.label))

    datas.append(CompetenceOption.__radar_datas__(context.deadline_id))
    legend.append(u"Profil de référence")

    config = {}
    config['levels'] = CompetenceScale.query().count()
    max_value = request.dbsession.query(func.max(
        CompetenceScale.value)).all()[0][0]

    config['maxValue'] = max_value

    return {'datas': datas, 'legend': legend, "config": config}
Esempio n. 3
0
def competence_index_view(context, request):
    """
    Index view to go to a competence grid

    Both admin and user view

    :param obj request: The pyramid request
    """
    competence_js.need()
    # Don't return list of users to the template if we come here through the
    # user menu
    if not request.has_permission('admin_competences'):
        user_options = []
    else:
        user_options = get_users_options(roles=['contractor'])

    deadlines = CompetenceDeadline.query().all()
    if 'deadline' in request.POST:
        logger.debug(request.POST)
        appstruct = validate_competence_grid_query(request)
        if appstruct is not None:
            return redirect_to_competence_grid(request, appstruct)

    return {
        'title': u'Évaluation des compétences',
        'user_options': user_options,
        'deadlines': deadlines,
    }
Esempio n. 4
0
def competence_index_view(request):
    """
    Index view to go to a competence grid
    """
    competence_js.need()
    user_options = get_users_options(roles=['contractor'])
    deadlines = CompetenceDeadline.query().all()
    if 'deadline' in request.POST or 'sheet' in request.POST:
        logger.debug(request.POST)
        schema = CompetenceGridQuerySchema.bind(request=request)
        try:
            appstruct = schema.deserialize(request.POST)
        except colander.Invalid:
            logger.exception(u"Erreur dans le routage de la page de \
compétences : POSSIBLE BREAK IN ATTEMPT")
        else:
            # On récupère l'id du user pour l'évaluation
            contractor_id = appstruct['contractor_id']
            # L'id de la période d'évaluation
            deadline_id = appstruct['deadline']

            # On redirige vers la page appropriée
            grid = get_competence_grid(
                request,
                contractor_id,
                deadline_id
            )
            url = request.route_path("competence_grid", id=grid.id)
            return HTTPFound(url)

    return {
        'title': u'Évaluation des compétences',
        'user_options': user_options,
        'deadlines': deadlines,
    }
Esempio n. 5
0
def competence_index_view(context, request):
    """
    Index view to go to a competence grid

    Both admin and user view

    :param obj request: The pyramid request
    """
    competence_js.need()
    # Don't return list of users to the template if we come here through the
    # user menu
    if not request.has_permission('admin_competences'):
        user_options = []
    else:
        user_options = get_users_options(roles=['contractor'])

    deadlines = CompetenceDeadline.query().all()
    if 'deadline' in request.POST:
        logger.debug(request.POST)
        appstruct = validate_competence_grid_query(request)
        if appstruct is not None:
            return redirect_to_competence_grid(request, appstruct)

    return {
        'title': u'Évaluation des compétences',
        'user_options': user_options,
        'deadlines': deadlines,
    }
Esempio n. 6
0
def competence_index_view(request):
    """
    Index view to go to a competence grid
    """
    competence_js.need()
    user_options = get_users_options(roles=['contractor'])
    deadlines = CompetenceDeadline.query().all()
    if 'deadline' in request.POST or 'sheet' in request.POST:
        logger.debug(request.POST)
        schema = CompetenceGridQuerySchema.bind(request=request)
        try:
            appstruct = schema.deserialize(request.POST)
        except colander.Invalid:
            logger.exception(u"Erreur dans le routage de la page de \
compétences : POSSIBLE BREAK IN ATTEMPT")
        else:
            # On récupère l'id du user pour l'évaluation
            contractor_id = appstruct['contractor_id']
            # L'id de la période d'évaluation
            deadline_id = appstruct['deadline']

            # On redirige vers la page appropriée
            grid = get_competence_grid(
                request,
                contractor_id,
                deadline_id
            )
            url = request.route_path("competence_grid", id=grid.id)
            return HTTPFound(url)

    return {
        'title': u'Évaluation des compétences',
        'user_options': user_options,
        'deadlines': deadlines,
    }
Esempio n. 7
0
def competence_form_options(context, request):
    """
    Returns datas used to build the competence form page
    """
    return dict(
        grid=context,
        grid_edit_url=request.route_path('competence_grid',
                                         id=context.id,
                                         _query=dict(action='edit')),
        item_root_url=request.route_path(
            'competence_grid_items',
            id=context.id,
        ),
        deadlines=CompetenceDeadline.query().all(),
        scales=CompetenceScale.query().all(),
    )
Esempio n. 8
0
def competence_form_options(context, request):
    """
    Returns datas used to build the competence form page
    """
    return dict(
        grid=context,
        grid_edit_url=request.route_path(
            'competence_grid',
            id=context.id,
            _query=dict(action='edit')
        ),
        item_root_url=request.route_path(
            'competence_grid_items',
            id=context.id,
        ),
        deadlines=CompetenceDeadline.query().all(),
        scales=CompetenceScale.query().all(),
    )
Esempio n. 9
0
def competence_radar_chart_view(context, request):
    """
    Competence radar chart view

    :param obj context: a user model
    """
    request.actionmenu.add(
        widgets.ViewLink(
            u"Revenir au formulaire",
            "view_competence",
            path="competence_grid",
            id=context.id
        )
    )
    competence_radar_js.need()
    loadurl = request.route_path(
        'competence_grid',
        id=context.id,
        _query=dict(action='radar'),
    )
    title = u"Profil des compétences entrepreneuriales  \
{0}".format(context.deadline.label)

    grids = []
    # On récupère les grilles de compétences précédent la courant
    deadlines = CompetenceDeadline.query()
    deadlines = deadlines.filter(
        CompetenceDeadline.order <= context.deadline.order
    ).all()
    scales = CompetenceScale.query().all()
    for deadline in deadlines:
        grid = get_competence_grid(request, context.contractor_id, deadline.id)
        grids.append(grid)

    return dict(
        title=title,
        loadurl=loadurl,
        grids=grids,
        deadlines=deadlines,
        scales=scales,
    )
Esempio n. 10
0
def competence_radar_chart_view(context, request):
    """
    Competence radar chart view

    :param obj context: a user model
    """
    request.actionmenu.add(
        widgets.ViewLink(
            u"Revenir au formulaire",
            "view",
            path="competence_grid",
            id=context.id
        )
    )
    competence_radar_js.need()
    loadurl = request.route_path(
        'competence_grid',
        id=context.id,
        _query=dict(action='radar'),
    )
    title = u"Profil des compétences entrepreneuriale  \
{0}".format(context.deadline.label)

    grids = []
    # On récupère les grilles de compétences précédent la courant
    deadlines = CompetenceDeadline.query()
    deadlines = deadlines.filter(
        CompetenceDeadline.order <= context.deadline.order
    ).all()
    scales = CompetenceScale.query().all()
    for deadline in deadlines:
        grid = get_competence_grid(request, context.contractor_id, deadline.id)
        grids.append(grid)

    return dict(
        title=title,
        loadurl=loadurl,
        grids=grids,
        deadlines=deadlines,
        scales=scales,
    )
Esempio n. 11
0
 def get_appstruct(self):
     """
     Return the appstruct for competence requirements configuration
     """
     options = CompetenceOption.query().all()
     appstruct = []
     for option in options:
         opt_appstruct = {
             "id": option.id,
             "label": option.label,
             "requirements": []
         }
         for deadline in CompetenceDeadline.query():
             opt_appstruct['requirements'].append(
                 {
                     'deadline_id': deadline.id,
                     "deadline_label": deadline.label,
                     'requirement': option.get_requirement(deadline.id)
                 }
             )
         appstruct.append(opt_appstruct)
     return {'datas': appstruct}
Esempio n. 12
0
def deferred_deadline_id_validator(node, kw):
    return colander.OneOf([c[0] for c in CompetenceDeadline.query('id').all()])
Esempio n. 13
0
def deferred_deadline_id_validator(node, kw):
    return colander.OneOf(
        [c[0] for c in CompetenceDeadline.query('id').all()]
    )