Beispiel #1
0
    def getLastVersion(self):
        context = self.__context__
        try:
            rel = self.__relation__.query(
                self.__relation__.Type.source == context.oid).order_by(
                sqlalchemy.sql.expression.desc(
                    self.__relation__.Type.version)).first()
        except StopIteration:
            rel = None

        if rel is None:
            item = storage.insertItem(IVersionItem)
            for sch in context.schemas:
                item.applySchema(sch)

            for schId in context.schemas:
                sch = storage.querySchema(schId)
                if sch is not None:
                    item.getDatasheet(schId).__load__(sch(context))

            self.__relation__.insert(self.oid, item.oid, version=1)
            content = item
            versionInfo = IVersionsSchema(content)
            versionInfo.proxy = context.oid
            versionInfo.version = 1
            versionInfo.comment = 'Create content.'
        else:
            content = rel.__destination__

        versionInfo = IVersionsSchema(content)
        if versionInfo.commit:
            item = storage.insertItem(IVersionItem)
            for sch in context.schemas:
                item.applySchema(sch)

            for schId in context.schemas:
                if schId == 'content.versions':
                    continue
                sch = storage.querySchema(schId)
                if sch is not None:
                    item.getDatasheet(schId).__load__(sch(content))

            self.__relation__.insert(self.oid, item.oid, version=rel.version+1)
            content = item
            versionInfo = IVersionsSchema(content)
            versionInfo.proxy = context.oid
            versionInfo.version = rel.version+1

        return content
Beispiel #2
0
    def listInlineForms(self):
        context = self.context
        ct = IContentType(context)

        forms = []
        for schId in ("content.item",) + ct.schemas:
            schema = storage.querySchema(schId)
            if schema is not None:
                ds = context.getDatasheet(schId, True)
                eform = EditDatasheet(ds, self.request, self)
                eform.mode = self.mode
                if eform.mode == form.IDisplayMode:
                    interface.directlyProvides(eform, form.IDisplayForm)
                if schId == "content.item":
                    eform.hidden = "type", "modified", "created"
                if schId in ct.hiddenFields:
                    eform.hidden = ct.hiddenFields[schId]
                if schId in ct.widgets:
                    eform.widgetFactories = ct.widgets[schId]
                eform.update()
                forms.append((schId, eform))

        forms.extend(super(EditContent, self).listInlineForms())
        return forms