예제 #1
0
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
    }
예제 #2
0
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,
    }
예제 #3
0
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,
    }
예제 #4
0
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
    }
예제 #5
0
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,
    }
예제 #6
0
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,
    }