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))
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)
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)
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)
def get_actions(): query = ActivityAction.query() query = query.filter(ActivityAction.active == True) return query.filter(ActivityAction.parent_id == None)
def add_activity_action(label, **kw): session = DBSESSION() a = ActivityAction(label=label, **kw) session.add(a) session.flush() return a
def get_actions(): query = ActivityAction.query() query = query.filter(ActivityAction.active==True) return query.filter(ActivityAction.parent_id==None)