def add(): objective_schema = schema.Objective({}) tmp_collection = mongo.db.objectives.find().sort('id', -1) try: new_index = tmp_collection[0]['id'] + 1 except IndexError: new_index = 1 objective_schema['id'] = new_index if flask.request.method == "POST": data = flask.request.form.to_dict() objective_schema['title']['en'].set(data['title-en']) objective_schema['body']['en'].set(data['body-en']) if objective_schema.validate(): objective = objective_schema.flatten() sugar.get_none_fields_for_schema(objective) flask.flash(_("Objective successfully added."), "success") mongo.db.objectives.save(objective) return flask.redirect(flask.url_for('objectives.list_objectives')) else: flask.flash(_("Error in adding an objective."), "error") return { "schema": objective_schema }
def add_target(): target_schema = schema.EUTarget({}) tmp_collection = mongo.db.eu_targets.find().sort('id', -1) try: new_index = tmp_collection[0]['id'] + 1 except IndexError: new_index = 1 target_schema['id'] = new_index if flask.request.method == "POST": data = flask.request.form.to_dict() target_schema['title']['en'].set(data['title-en']) target_schema['body']['en'].set(data['body-en']) if target_schema.validate(): target = target_schema.flatten() sugar.get_none_fields_for_schema(target) flask.flash(_("EU target successfully added."), "success") mongo.db.eu_targets.save(target) return flask.redirect(flask.url_for('eu_strategy.list_targets')) else: flask.flash(_("Error in adding an EU target."), "error") return { "schema": target_schema, }
def add_action(target_id): target = mongo.db.eu_targets.find_one_or_404({'id': target_id}) try: current_index = max(v['id'] for idx, v in enumerate(target['actions'])) except ValueError: current_index = 0 new_index = current_index + 1 action_schema = schema.EUAction({}) action_schema['id'] = new_index if flask.request.method == "POST": data = flask.request.form.to_dict() lang = data['language'] action_schema['title'][lang].set(data['title-' + lang]) action_schema['body'][lang].set(data['body-' + lang]) if action_schema.validate(): action = action_schema.flatten() sugar.get_none_fields_for_schema(action) target['actions'].append(action) flask.flash(_("Action successfully added."), "success") mongo.db.eu_targets.save(target) return flask.redirect(flask.url_for('eu_strategy.view_target', target_id=target['id'])) else: flask.flash(_("Error in adding an action."), "error") return { "schema": action_schema, "target": target, }
def add_subobj(objective_id, so1_id=None, so2_id=None, so3_id=None, so4_id=None): objective = mongo.db.objectives.find_one_or_404({'id': objective_id}) myargs = ['objective_id', 'so1_id', 'so2_id', 'so3_id', 'so4_id'] parents = [(i, locals()[i]) for i in myargs if locals()[i] is not None] father = objective for i in range(1, len(parents)): son_id = parents[i][1] try: son = [s for s in father['subobjs'] if s['id'] == son_id][0] except IndexError: flask.abort(404) father = son matrix = [] for i, x in enumerate(parents): tmp_L = [y for j, y in enumerate(parents) if j < i] tmp_L.append(x) matrix.append((dict(tmp_L), x[1])) subobj_schema = schema.Objective({}) # find its largest existing 'subobjs' index subobj_list = father['subobjs'] sorted_list = sorted(subobj_list, key=lambda k: k['id'], reverse=True) if sorted_list: new_index = sorted_list[0]['id'] + 1 else: new_index = 1 subobj_schema['id'] = new_index if flask.request.method == "POST": data = flask.request.form.to_dict() subobj_schema['title']['en'].set(data['title-en']) subobj_schema['body']['en'].set(data['body-en']) if subobj_schema.validate(): subobj = subobj_schema.flatten() sugar.get_none_fields_for_schema(subobj) father['subobjs'].append(subobj) flask.flash(_("Subobjective successfully added."), "success") mongo.db.objectives.save(objective) return flask.redirect(flask.url_for('objectives.view', **dict(parents))) else: flask.flash(_("Error in adding an subobjective."), "error") return { "objective": father, "schema": subobj_schema, "parents": dict(parents), "chain_matrix": matrix }
def add(objective_id, so1_id=None, so2_id=None, so3_id=None, so4_id=None): myargs = ['objective_id', 'so1_id', 'so2_id', 'so3_id', 'so4_id'] parents = [(i, locals()[i]) for i in myargs if locals()[i] is not None] objective = mongo.db.objectives.find_one_or_404({'id': objective_id}) father = objective for i in range(1, len(parents)): son_id = parents[i][1] try: son = [s for s in father['subobjs'] if s['id'] == son_id][0] except IndexError: flask.abort(404) father = son matrix = [] for i, x in enumerate(parents): tmp_L = [y for j, y in enumerate(parents) if j < i] tmp_L.append(x) matrix.append((dict(tmp_L), x[1])) try: current_index = max(v['id'] for idx, v in enumerate(father['actions'])) except ValueError: current_index = 0 new_index = current_index + 1 action_schema = schema.Action({}) action_schema['id'] = new_index if flask.request.method == "POST": data = flask.request.form.to_dict() lang = data['language'] action_schema['title'][lang].set(data['title-' + lang]) action_schema['body'][lang].set(data['body-' + lang]) if action_schema.validate(): action = action_schema.flatten() sugar.get_none_fields_for_schema(action) father['actions'].append(action) flask.flash(_("Action successfully added."), "success") mongo.db.objectives.save(objective) return flask.redirect(flask.url_for('objectives.view', **dict(parents))) else: flask.flash(_("Error in adding an action."), "error") return { "chain_matrix": matrix, "parents": dict(parents), "schema": action_schema, }
def add_subaction(target_id, action_id): target = mongo.db.eu_targets.find_one_or_404({'id': target_id}) # find specified action try: related_action = [a for a in target['actions'] if a['id'] == action_id][0] except IndexError: flask.abort(500) try: current_index = max(v['id'] for idx, v in enumerate(related_action['subactions'])) except ValueError: current_index = 0 new_index = current_index + 1 subaction_schema = schema.EUSubAction({}) subaction_schema['id'] = new_index if flask.request.method == "POST": data = flask.request.form.to_dict() lang = data['language'] subaction_schema['title'][lang].set(data['title-' + lang]) subaction_schema['body'][lang].set(data['body-' + lang]) if subaction_schema.validate(): subaction = subaction_schema.flatten() sugar.get_none_fields_for_schema(subaction) related_action['subactions'].append(subaction) flask.flash(_("Subaction successfully added."), "success") mongo.db.eu_targets.save(target) return flask.redirect(flask.url_for('eu_strategy.view_action', target_id=target['id'], action_id=related_action['id'])) else: flask.flash(_("Error in adding an subaction."), "error") return { "schema": subaction_schema, "action": related_action, "target": target, }