def upgrade():
    from autonomie.models import DBSESSION
    session = DBSESSION()
    from autonomie.models.activity import ActivityAction
    from alembic.context import get_bind
    for name in "subaction_id", "action_id":
        col = sa.Column(name, sa.Integer, sa.ForeignKey("activity_action.id"))
        op.add_column("activity", col)

    label_request = "select id, action_label, subaction_label from activity"

    conn = get_bind()
    result = conn.execute(label_request)

    already_added = {}

    for id, action_label, subaction_label in result:
        if (action_label, subaction_label) not in already_added.keys():
            found = False
            for key, value in already_added.items():
                if action_label == key[0]:
                    action_id = value[0]
                    found = True
            if not found:
                action = ActivityAction(label=action_label)
                session.add(action)
                session.flush()
                action_id = action.id
            subaction = ActivityAction(label=subaction_label,
                                       parent_id=action_id)
            session.add(subaction)
            session.flush()
            subaction_id = subaction.id
            already_added[(action_label, subaction_label)] = (action_id,
                                                              subaction_id)
        else:
            action_id, subaction_id = already_added[(action_label,
                                                     subaction_label)]

        op.execute("update activity set action_id={0}, subaction_id={1} \
where id={2}".format(action_id, subaction_id, id))
Ejemplo n.º 2
0
    def before(self, form):
        query = ActivityType.query()
        types = query.filter_by(active=True)

        modes = ActivityMode.query()

        query = ActivityAction.query()
        query = query.filter_by(parent_id=None)
        actions = query.filter_by(active=True)

        activity_appstruct = {
            'footer': self.request.config.get("activity_footer", ""),
            'types': [type_.appstruct() for type_ in types],
            'modes': [mode.appstruct() for mode in modes],
            'actions': self._recursive_action_appstruct(actions)
        }
        self._add_pdf_img_to_appstruct('activity', activity_appstruct)
        form.set_appstruct(activity_appstruct)
Ejemplo n.º 3
0
    def before(self, form):
        query = ActivityType.query()
        types = query.filter_by(active=True)

        modes = ActivityMode.query()

        query = ActivityAction.query()
        query = query.filter_by(parent_id=None)
        actions = query.filter_by(active=True)

        activity_appstruct = {
            'footer': self.request.config.get("activity_footer", ""),
            'types': [type_.appstruct() for type_ in types],
            'modes': [mode.appstruct() for mode in modes],
            'actions': self._recursive_action_appstruct(actions)
        }
        self._add_pdf_img_to_appstruct('activity', activity_appstruct)
        form.set_appstruct(activity_appstruct)
Ejemplo n.º 4
0
    def disable_actions(self, appstruct):
        """
        Disable actions that are not active anymore
        """
        edited_actions = self.get_edited_elements(appstruct, 'actions')

        for element in ActivityAction.query()\
                .filter(ActivityAction.parent_id==None):
            if element.id not in edited_actions.keys():
                element.active = False
                self.dbsession.merge(element)
            # On désactive ensuite les enfants
            datas = edited_actions.get(element.id, {})
            edited_children = self.get_edited_elements(
                datas, "children")
            for child in element.children:
                if child.id in edited_children.keys():
                    child.active = False
                    self.dbsession.merge(element)
Ejemplo n.º 5
0
    def before(self, form):
        """
            Add appstruct to the current form object
        """
        query = ActivityType.query()
        types = query.filter(ActivityType.active==True)

        modes = ActivityMode.query()

        query = ActivityAction.query()
        query = query.filter(ActivityAction.parent_id==None)
        actions = query.filter(ActivityAction.active==True)


        appstruct = {
            'main': {},
            'types': [type_.appstruct() for type_ in types],
            'modes': [mode.appstruct() for mode in modes],
            'actions': [
                {
                'id': act.id,
                'label': act.label,
                'children': [child.appstruct() for child in act.children],
                }
                for act in actions]
        }

        accompagnement_file = ConfigFiles.get('accompagnement_header.png')
        if accompagnement_file is not None:
            appstruct['main']['header'] = {
                'uid': accompagnement_file.id,
                'filename': accompagnement_file.name,
                'preview_url': self.request.route_url(
                    'public',
                    name='accompagnement_header.png',
                )
            }

        form.set_appstruct(appstruct)
        populate_actionmenu(self.request)
Ejemplo n.º 6
0
def get_actions():
    query = ActivityAction.query()
    query = query.filter(ActivityAction.active == True)
    return query.filter(ActivityAction.parent_id == None)
Ejemplo n.º 7
0
def add_activity_action(label, **kw):
    session = DBSESSION()
    a = ActivityAction(label=label, **kw)
    session.add(a)
    session.flush()
    return a
Ejemplo n.º 8
0
def get_actions():
    query = ActivityAction.query()
    query = query.filter(ActivityAction.active==True)
    return query.filter(ActivityAction.parent_id==None)