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}
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}
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, }
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, }
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(), )
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(), )
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, )
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, )
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}
def deferred_deadline_id_validator(node, kw): return colander.OneOf([c[0] for c in CompetenceDeadline.query('id').all()])
def deferred_deadline_id_validator(node, kw): return colander.OneOf( [c[0] for c in CompetenceDeadline.query('id').all()] )