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
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