示例#1
0
class ObjectSelectorTaskForm(FoldingFieldSubmitForm):
    def __init__(self, app, name, task):
        super(ObjectSelectorTaskForm, self).__init__(app, name)

        self.task = task

        self.cls = task.selector.cls

        item = IntegerParameter(app, "item")

        self.ids = ListParameter(app, "id", item)
        self.add_parameter(self.ids)

        self.selection = SessionAttribute(self, "selection")

        self.content = self.SelectionList(app, "fields")
        self.replace_child(self.content)

        self.app.form_page.modes.add_mode(self)

    def do_process(self, session):
        # If the selection list is zero length,
        # set cancel state and let processing complete.
        if self.get_selection(session) == 0:
            self.cancel(session)
        super(ObjectSelectorTaskForm, self).do_process(session)

    def get_selection(self, session):
        selection = list()

        self.selection.set(session, selection)

        for id in self.ids.get(session):
            try:
                item = self.cls.get_object_by_id(session.cursor, id)
                selection.append(item)
            except:
                pass
        return len(selection)

    def process_submit(self, session):
        selection = self.selection.get(session)

        self.task.invoke(session, selection)
        self.task.exit_with_redirect(session)

    def render_title(self, session):
        return self.task.get_title(session)

    class SelectionList(ItemSet):
        def do_get_items(self, session):
            return self.parent.selection.get(session)

        def render_item_content(self, session, item):
            # already escaped in get_item_content
            return self.parent.task.get_item_content(session, item)

        def render_item_class(self, session, item):
            return "item"
示例#2
0
    def __init__(self, app, name, task):
        super(ObjectSelectorTaskForm, self).__init__(app, name)

        self.task = task

        self.cls = task.selector.cls

        item = IntegerParameter(app, "item")

        self.ids = ListParameter(app, "id", item)
        self.add_parameter(self.ids)

        self.selection = SessionAttribute(self, "selection")

        self.content = self.SelectionList(app, "fields")
        self.replace_child(self.content)

        self.app.form_page.modes.add_mode(self)