コード例 #1
0
 def get_all_filters(self, require=INewsItemFilter):
     catalog = getUtility(ICatalogService)
     query = {
         'meta_type': {
             'operator': 'or',
             'query': meta_types_for_interface(require)}}
     return (brain.getObject() for brain in catalog(query))
コード例 #2
0
ファイル: utils.py プロジェクト: silvacms/silva.ui
    def GET(self):
        self.update()

        meta_types = meta_types_for_interface(IContainer)
        children = []
        for child in self.context.get_ordered_publishables(IContainer):
            children.append(self.get_node_info(child, meta_types))

        return self.json_response(children)
コード例 #3
0
 def get_ordered_publishables(self, interface=IPublishable):
     assert interface.isOrExtends(IPublishable), "Invalid interface"
     result = [
         content for content in self.objectValues(
             meta_types_for_interface(interface))
         if not content.is_default()
     ]
     result.sort(key=IOrderManager(self).get_position)
     return result
コード例 #4
0
    def _get_package(self, description=None):
        package_name = self.request['name']
        package_version = self.request['version']

        if package_name.startswith('Products.'):
            package_name = package_name[9:]

        # By default the release uploaded is the last version of the package
        is_last_version = True

        #catalog = component.getUtility(ICatalogService)
        catalog = self.context.service_catalog
        query = {
            'meta_type': 'Silva Software Package',
            'id': package_name,
            'path': '/'.join(self.context.getPhysicalPath())
        }
        package_brains = catalog(query)
        if len(package_brains) == 1:
            package = package_brains[0].getObject()

            # Check if it is really the last version we know of
            last_packages_version = package.objectIds(
                meta_types_for_interface(IFile))
            if last_packages_version:
                last_packages_version = map(parse_version,
                                            last_packages_version)
                last_packages_version.sort()
                if parse_version(package_version) < last_packages_version[-1]:
                    is_last_version = False
        else:
            logger.debug(u'Create package %s' % package_name)
            factory = self.context.manage_addProduct['SilvaSoftwarePackage']
            factory.manage_addSilvaSoftwarePackage(package_name, package_name)
            package = getattr(self.context, package_name)

        if (description is not None and is_last_version and
                not interfaces.ISilvaNoAutomaticUpdate.providedBy(package)):

            description = rst_utils.get_description(description)
            index = package.index
            if index.get_editable() is None:
                IPublicationWorkflow(index).new_version()
            version = index.get_editable()
            version.body.save(version, self.request, description.as_html(True))
            binding = self._get_metadata(version)
            binding.setValues('silva-content', {'maintitle': package_name})
            notify(ObjectModifiedEvent(version))
            IPublicationWorkflow(index).publish()

        return (package, package_name, package_version)
コード例 #5
0
    def _get_package(self, description=None):
        package_name = self.request['name']
        package_version = self.request['version']

        if package_name.startswith('Products.'):
            package_name = package_name[9:]

        # By default the release uploaded is the last version of the package
        is_last_version = True

        #catalog = component.getUtility(ICatalogService)
        catalog = self.context.service_catalog
        query = {'meta_type': 'Silva Software Package',
                 'id': package_name,
                 'path': '/'.join(self.context.getPhysicalPath())}
        package_brains = catalog(query)
        if len(package_brains) == 1:
            package = package_brains[0].getObject()

            # Check if it is really the last version we know of
            last_packages_version = package.objectIds(meta_types_for_interface(IFile))
            if last_packages_version:
                last_packages_version = map(
                    parse_version, last_packages_version)
                last_packages_version.sort()
                if parse_version(package_version) < last_packages_version[-1]:
                    is_last_version = False
        else:
            logger.debug(u'Create package %s' % package_name)
            factory = self.context.manage_addProduct['SilvaSoftwarePackage']
            factory.manage_addSilvaSoftwarePackage(package_name, package_name)
            package = getattr(self.context, package_name)


        if (description is not None and is_last_version and
            not interfaces.ISilvaNoAutomaticUpdate.providedBy(package)):

            description = rst_utils.get_description(description)
            index = package.index
            if index.get_editable() is None:
                IPublicationWorkflow(index).new_version()
            version = index.get_editable()
            version.body.save(version, self.request, description.as_html(True))
            binding = self._get_metadata(version)
            binding.setValues('silva-content', {'maintitle': package_name})
            notify(ObjectModifiedEvent(version))
            IPublicationWorkflow(index).publish()

        return (package, package_name, package_version)
コード例 #6
0
ファイル: producers.py プロジェクト: silvacms/silva.core.xml
 def sax_contents(self):
     options = self.getOptions()
     self.startElement('content')
     if not options.only_container:
         default = self.context.get_default()
         if default is not None:
             self.startElement('default')
             self.subsax(default)
             self.endElement('default')
         for content in self.context.get_ordered_publishables():
             if (IPublication.providedBy(content) and
                 not options.include_publications):
                 continue
             self.subsax(content)
         for content in self.context.get_non_publishables():
             self.subsax(content)
         if options.other_contents:
             meta_types = meta_types_for_interface(
                 ISilvaXMLExportable,
                 excepts=[IPublishable, INonPublishable])
             for content in self.context.objectValues(meta_types):
                 self.subsax(content)
     self.endElement('content')
コード例 #7
0
ファイル: listing.py プロジェクト: silvacms/silva.ui
 def list(cls, container):
     return sorted(
         container.objectValues(meta_types_for_interface(cls.interface)),
         key=lambda content: content.getId())
コード例 #8
0
ファイル: utils.py プロジェクト: silvacms/silva.ui
    def GET(self):
        self.update()

        interfaces = meta_types_for_interface(IContainer)
        root_info = self.get_node_info(self.context, interfaces)
        return self.json_response(root_info)
コード例 #9
0
 def get_non_publishables(self, interface=INonPublishable):
     assert interface.isOrExtends(INonPublishable), "Invalid interface"
     result = self.objectValues(meta_types_for_interface(interface))
     result.sort(key=lambda o: o.getId())
     return result