Exemplo n.º 1
0
    def update(self):  # pragma: no cover
        super(TreatingGroupBatchActionForm, self).update()
        #voc = getAvailableTreatingGroupVoc(brains_from_uids(self.request.form['form.widgets.uids']))
        im_fields = Fields(IImioDmsIncomingMail)
        self.fields += im_fields.select('treating_groups')
        task_fields = Fields(ITask)
        self.fields += task_fields.select('assigned_user')
        fld = self.fields['treating_groups'].field
        fld.slave_fields[0]['name'] = 'assigned_user'
        fld.slave_fields[0]['slaveID'] = '#form-widgets-assigned_user'

        super(DashboardBatchActionForm, self).update()
Exemplo n.º 2
0
class DexterityFieldTile(WidgetsView, Tile):
    """Field tile for Dexterity content."""

    _additionalSchemata = None

    @property
    def schema(self):
        fti = getUtility(IDexterityFTI, name=self.context.portal_type)
        return fti.lookupSchema()

    @property
    def additionalSchemata(self):
        if self._additionalSchemata is not None:
            return iter(self._additionalSchemata)
        else:
            return getAdditionalSchemata(context=self.context)

    def __init__(self, context, request):
        # xxx usually a super is the way to go here? why not?
        Tile.__init__(self, context, request)
        WidgetsView.__init__(self, context, request)

        try:
            self.field = self.data['field'].split('-', 1)[-1]
        except KeyError:
            self.field = None
            return

        # Omit all the fields except rendered field to save time, because
        # autoform update will only add fields not in self.fields.

        if self.field in self.schema:
            self.fields = Fields(self.schema).omit(self.field)
        else:
            self.fields = Fields(self.schema).omit(self.schema.names())
            for schema in self.additionalSchemata:
                if self.field in schema:
                    self.field = '%s.%s' % (schema.__name__, self.field)
                    self.fields += Fields(
                        schema,
                        prefix=schema.__name__
                    ).omit(self.field)
                    self._additionalSchemata = (schema,)
                    return

    @property
    def isVisible(self):
        """Checks wheter the user has read permission of the field: if this is
        not the case, then the field is not displayed
        """
        try:
            schema = next(self.additionalSchemata)
        except StopIteration:
            schema = self.schema

        return PermissionChecker(
            mergedTaggedValueDict(schema, READ_PERMISSIONS_KEY),
            self.context,
        ).allowed(self.field)

    def _wrap_widget(self, render):
        return ''.join([u'<html><body>', render, '</body></html>'])

    def updateWidgets(self, prefix=None):
        if self.field is not None:

            if self.field in self.fields:
                self.fields = self.fields.select(self.field)
            else:
                self.fields = Fields()

            for group in (self.groups or []):
                if self.field in group.fields:
                    group.fields = group.fields.select(self.field)
                else:
                    group.fields = Fields()

        super(DexterityFieldTile, self).updateWidgets(prefix)

    def __call__(self):
        if self.field and self.isVisible:
            self.update()

            widget = self.widgets.get(self.field)
            if widget is not None:
                return self._wrap_widget(widget.render())

            for group in self.groups:
                widget = group.widgets.get(self.field)
                if widget is not None:
                    return self._wrap_widget(widget.render())
        return u'<html></html>'
Exemplo n.º 3
0
class DexterityFieldTile(WidgetsView, Tile):
    """Field tile for Dexterity content."""

    _additionalSchemata = None

    @property
    def schema(self):
        fti = getUtility(IDexterityFTI, name=self.context.portal_type)
        return fti.lookupSchema()

    @property
    def additionalSchemata(self):
        if self._additionalSchemata is not None:
            return iter(self._additionalSchemata)
        else:
            return getAdditionalSchemata(context=self.context)

    def __init__(self, context, request):
        # xxx usually a super is the way to go here? why not?
        Tile.__init__(self, context, request)
        WidgetsView.__init__(self, context, request)

        try:
            self.field = self.data['field'].split('-', 1)[-1]
        except KeyError:
            self.field = None
            return

        # Omit all the fields except rendered field to save time, because
        # autoform update will only add fields not in self.fields.

        if self.field in self.schema:
            self.fields = Fields(self.schema).omit(self.field)
        else:
            self.fields = Fields(self.schema).omit(self.schema.names())
            for schema in self.additionalSchemata:
                if self.field in schema:
                    self.field = '%s.%s' % (schema.__name__, self.field)
                    self.fields += Fields(schema, prefix=schema.__name__).omit(
                        self.field)
                    self._additionalSchemata = (schema, )
                    return

    @property
    def isVisible(self):
        """Checks wheter the user has read permission of the field: if this is
        not the case, then the field is not displayed
        """
        try:
            schema = next(self.additionalSchemata)
        except StopIteration:
            schema = self.schema

        return PermissionChecker(
            mergedTaggedValueDict(schema, READ_PERMISSIONS_KEY),
            self.context,
        ).allowed(self.field)

    def _wrap_widget(self, render):
        return ''.join([u'<html><body>', render, '</body></html>'])

    def updateWidgets(self, prefix=None):
        if self.field is not None:

            if self.field in self.fields:
                self.fields = self.fields.select(self.field)
            else:
                self.fields = Fields()

            for group in (self.groups or []):
                if self.field in group.fields:
                    group.fields = group.fields.select(self.field)
                else:
                    group.fields = Fields()

        super(DexterityFieldTile, self).updateWidgets(prefix)

    def __call__(self):
        if self.field and self.isVisible:
            self.update()

            widget = self.widgets.get(self.field)
            if widget is not None:
                return self._wrap_widget(widget.render())

            for group in self.groups:
                alsoProvides(group, IDexterityFieldTileFormOrGroup)
                widget = group.widgets.get(self.field)
                if widget is not None:
                    return self._wrap_widget(widget.render())
        return u'<html></html>'