Beispiel #1
0
    def get(self, instance, **kwargs):
        """Get the query dict from the request or from the object"""
        raw = kwargs.get("raw", None)
        value = self.getRaw(instance)
        if raw:
            # We actually wanted the raw value, should have called getRaw
            return value
        request = getSite().REQUEST
        request["catalog_name"] = self.catalog_name
        querybuilder = QueryBuilder(instance, request, catalog_name=self.catalog_name)

        sort_on = kwargs.get("sort_on", instance.getSort_on())
        sort_order = "reverse" if instance.getSort_reversed() else "ascending"
        limit = kwargs.get("limit", instance.getLimit())

        return querybuilder(
            query=value,
            batch=kwargs.get("batch", False),
            b_start=kwargs.get("b_start", 0),
            b_size=kwargs.get("b_size", 30),
            sort_on=sort_on,
            sort_order=sort_order,
            limit=limit,
            brains=kwargs.get("brains", False),
        )
Beispiel #2
0
    def generate_id(self, portal_type, batch_size = None):
        """ Generate a new id for 'portal_type'
        """
        plone = getSite()
        portal_id = plone.getId()

        if portal_type == 'News Item':
            portal_type = 'NewsItem'

        idserver_url = os.environ.get('IDServerURL')
        try:
            if batch_size:
                # GET
                f = urllib.urlopen('%s/%s%s?%s' % (
                        idserver_url,
                        portal_id,
                        portal_type,
                        urllib.urlencode({'batch_size': batch_size}))
                        )
            else:
                f = urllib.urlopen('%s/%s%s' % (
                    idserver_url, portal_id, portal_type
                    )
                )
            id = f.read()
            f.close()
        except:
            from sys import exc_info
            info = exc_info()
            import zLOG; zLOG.LOG('INFO', 0, '', 'generate_id raised exception: %s, %s \n idserver_url: %s' % (info[0], info[1], idserver_url))
            raise IDServerUnavailable(_('ID Server unavailable'))
        return id
Beispiel #3
0
    def get(self, instance, **kwargs):
        """Get the query dict from the request or from the object"""
        raw = kwargs.get('raw', None)
        value = self.getRaw(instance)
        if raw:
            # We actually wanted the raw value, should have called getRaw
            return value
        request = getSite().REQUEST
        request['catalog_name'] = self.catalog_name
        querybuilder = QueryBuilder(instance,
                                    request,
                                    catalog_name=self.catalog_name)

        sort_on = kwargs.get('sort_on', instance.getSort_on())
        sort_order = 'reverse' if instance.getSort_reversed() else 'ascending'
        limit = kwargs.get('limit', instance.getLimit())

        return querybuilder(query=value,
                            batch=kwargs.get('batch', False),
                            b_start=kwargs.get('b_start', 0),
                            b_size=kwargs.get('b_size', 30),
                            sort_on=sort_on,
                            sort_order=sort_order,
                            limit=limit,
                            brains=kwargs.get('brains', False))
Beispiel #4
0
 def __call__(self, context):
     site = getSite()
     mtool = getToolByName(site, 'portal_membership')
     users = mtool.searchForMembers(roles=self.roles)
     items = [(item.getProperty('fullname'), item.getId())
              for item in users]
     items.sort(lambda x, y: cmp(x[0].lower(), y[0].lower()))
     items = [SimpleTerm(i[1], i[1], i[0]) for i in items]
     return SimpleVocabulary(items)
Beispiel #5
0
 def __call__(self, context):
     site = getSite()
     mtool = getToolByName(site, 'portal_membership')
     users = mtool.searchForMembers(roles=self.roles)
     items = [(item.getProperty('fullname'), item.getId())
              for item in users]
     items.sort(lambda x, y: cmp(x[0].lower(), y[0].lower()))
     items = [SimpleTerm(i[1], i[1], i[0]) for i in items]
     return SimpleVocabulary(items)
Beispiel #6
0
 def __call__(self, context):
     site = getSite()
     request = aq_get(site, 'REQUEST', None)
     items = []
     for client in site.clients.objectValues('Client'):
         objects = list(client.objectValues('Contact'))
         objects.sort(lambda x, y: cmp(x.getFullname().lower(),
                                       y.getFullname().lower()))
         xitems = [(to_utf8(item.getFullname()), item.getFullname())
                   for item in objects]
         xitems = [SimpleTerm(i[1], i[1], i[0]) for i in xitems]
         items += xitems
     return SimpleVocabulary(items)
Beispiel #7
0
 def __call__(self, context):
     site = getSite()
     request = aq_get(site, 'REQUEST', None)
     items = []
     for client in site.clients.objectValues('Client'):
         objects = list(client.objectValues('Contact'))
         objects.sort(lambda x, y: cmp(x.getFullname().lower(),
                                       y.getFullname().lower()))
         xitems = [(to_utf8(item.getFullname()), item.getFullname())
                   for item in objects]
         xitems = [SimpleTerm(i[1], i[1], i[0]) for i in xitems]
         items += xitems
     return SimpleVocabulary(items)
Beispiel #8
0
 def __call__(self, context):
     site = getSite()
     request = aq_get(site, 'REQUEST', None)
     items = []
     wf = site.portal_workflow
     for folder in self.folders:
         folder = site.restrictedTraverse(folder)
         for portal_type in self.portal_types:
             objects = list(folder.objectValues(portal_type))
             objects = [o for o in objects if
                        wf.getInfoFor(o, 'inactive_state') == 'active']
             if not objects:
                 continue
             objects.sort(lambda x, y: cmp(x.Title().lower(),
                                           y.Title().lower()))
             xitems = [(t(item.Title()), item.Title()) for item in objects]
             xitems = [SimpleTerm(i[1], i[1], i[0]) for i in xitems]
             items += xitems
     return SimpleVocabulary(items)
Beispiel #9
0
    def __call__(self, context):
        portal = getSite()
        wftool = getToolByName(portal, 'portal_workflow', None)
        if wftool is None:
            return SimpleVocabulary([])

        # XXX This is evil. A vocabulary shouldn't be request specific.
        # The sorting should go into a separate widget.

        # we get REQUEST from wftool because context may be an adapter
        request = aq_get(wftool, 'REQUEST', None)

        wf = wftool.getWorkflowById('bika_ar_workflow')
        items = wftool.listWFStatesByTitle(filter_similar=True)
        items_dict = dict([(i[1], t(i[0])) for i in items])
        items_list = [(k, v) for k, v in items_dict.items()]
        items_list.sort(lambda x, y: cmp(x[1], y[1]))
        terms = [SimpleTerm(k, title=u'%s' % v) for k, v in items_list]
        return SimpleVocabulary(terms)
Beispiel #10
0
    def __call__(self, context):
        portal = getSite()
        wftool = getToolByName(portal, 'portal_workflow', None)
        if wftool is None:
            return SimpleVocabulary([])

        # XXX This is evil. A vocabulary shouldn't be request specific.
        # The sorting should go into a separate widget.

        # we get REQUEST from wftool because context may be an adapter
        request = aq_get(wftool, 'REQUEST', None)

        wf = wftool.getWorkflowById('bika_ar_workflow')
        items = wftool.listWFStatesByTitle(filter_similar=True)
        items_dict = dict([(i[1], t(i[0])) for i in items])
        items_list = [(k, v) for k, v in items_dict.items()]
        items_list.sort(lambda x, y: cmp(x[1], y[1]))
        terms = [SimpleTerm(k, title=u'%s' % v) for k, v in items_list]
        return SimpleVocabulary(terms)
Beispiel #11
0
    def __call__(self, **kwargs):
        site = getSite()
        request = aq_get(site, 'REQUEST', None)
        catalog = getToolByName(site, self.catalog)
        if 'inactive_state' in catalog.indexes():
            self.contentFilter['inactive_state'] = 'active'
        if 'cancellation_state' in catalog.indexes():
            self.contentFilter['cancellation_state'] = 'active'
        self.contentFilter.update(**kwargs)
        objects = (b.getObject() for b in catalog(self.contentFilter))

        items = []
        for obj in objects:
            key = obj[self.key]
            key = callable(key) and key() or key
            value = obj[self.value]
            value = callable(value) and value() or value
            items.append((key, t(value)))

        return DisplayList(items)
Beispiel #12
0
    def __call__(self, **kwargs):
        site = getSite()
        request = aq_get(site, 'REQUEST', None)
        catalog = getToolByName(site, self.catalog)
        if 'inactive_state' in catalog.indexes():
            self.contentFilter['inactive_state'] = 'active'
        if 'cancellation_state' in catalog.indexes():
            self.contentFilter['cancellation_state'] = 'active'
        self.contentFilter.update(**kwargs)
        objects = (b.getObject() for b in catalog(self.contentFilter))

        items = []
        for obj in objects:
            key = obj[self.key]
            key = callable(key) and key() or key
            value = obj[self.value]
            value = callable(value) and value() or value
            items.append((key, t(value)))

        return DisplayList(items)
Beispiel #13
0
 def __call__(self, context):
     site = getSite()
     request = aq_get(site, 'REQUEST', None)
     items = []
     wf = site.portal_workflow
     for folder in self.folders:
         folder = site.restrictedTraverse(folder)
         for portal_type in self.portal_types:
             objects = list(folder.objectValues(portal_type))
             objects = [
                 o for o in objects
                 if wf.getInfoFor(o, 'inactive_state') == 'active'
             ]
             if not objects:
                 continue
             objects.sort(lambda x, y: cmp(x.Title().lower(),
                                           y.Title().lower()))
             xitems = [(t(item.Title()), item.Title()) for item in objects]
             xitems = [SimpleTerm(i[1], i[1], i[0]) for i in xitems]
             items += xitems
     return SimpleVocabulary(items)
Beispiel #14
0
 def mutator(value, **kw):
     if self.getType().endswith("ReferenceField"):
         self.set(instance.__of__(getSite()), value)
     else:
         self.set(instance, value)
Beispiel #15
0
 def edit_accessor():
     if self.getType().endswith("ReferenceField"):
         return self.getRaw(instance.__of__(getSite()))
     else:
         return self.getRaw(instance)
Beispiel #16
0
    def __call__(self):
        form = self.request.form
        portal = getSite()
        workbook = None

        if 'setupexisting' in form and 'existing' in form and form['existing']:
                fn = form['existing'].split(":")
                self.dataset_project = fn[0]
                self.dataset_name = fn[1]
                path = 'setupdata/%s/%s.xlsx' % \
                    (self.dataset_name, self.dataset_name)
                filename = resource_filename(self.dataset_project, path)
                try:
                    workbook = load_workbook(filename=filename)  # , use_iterators=True)
                except AttributeError:
                    print ""
                    print traceback.format_exc()
                    print "Error while loading ", path

        elif 'setupfile' in form and 'file' in form and form['file'] and 'projectname' in form and form['projectname']:
                self.dataset_project = form['projectname']
                tmp = tempfile.mktemp()
                file_content = form['file'].read()
                open(tmp, 'wb').write(file_content)
                workbook = load_workbook(filename=tmp)  # , use_iterators=True)
                self.dataset_name = 'uploaded'

        assert(workbook is not None)

        adapters = [[name, adapter]
                    for name, adapter
                    in list(getAdapters((self.context, ), ISetupDataImporter))]
        for sheetname in workbook.get_sheet_names():
            transaction.savepoint()
            ad_name = sheetname.replace(" ", "_")
            if ad_name in [a[0] for a in adapters]:
                adapter = [a[1] for a in adapters if a[0] == ad_name][0]
                adapter(self, workbook, self.dataset_project, self.dataset_name)
                adapters = [a for a in adapters if a[0] != ad_name]
        for name, adapter in adapters:
            transaction.savepoint()
            adapter(self, workbook, self.dataset_project, self.dataset_name)

        check = len(self.deferred)
        while len(self.deferred) > 0:
            new = self.solve_deferred()
            logger.info("solved %s of %s deferred references" % (
                check - new, check))
            if new == check:
                raise Exception("%s unsolved deferred references: %s" % (
                    len(self.deferred), self.deferred))
            check = new

        logger.info("Rebuilding bika_setup_catalog")
        bsc = getToolByName(self.context, 'bika_setup_catalog')
        bsc.clearFindAndRebuild()
        logger.info("Rebuilding bika_catalog")
        bc = getToolByName(self.context, 'bika_catalog')
        bc.clearFindAndRebuild()
        logger.info("Rebuilding bika_analysis_catalog")
        bac = getToolByName(self.context, 'bika_analysis_catalog')
        bac.clearFindAndRebuild()

        message = PMF("Changes saved.")
        self.context.plone_utils.addPortalMessage(message)
        self.request.RESPONSE.redirect(portal.absolute_url())
Beispiel #17
0
 def mutator(value, **kw):
     if self.getType().endswith('ReferenceField'):
         self.set(instance.__of__(getSite()), value)
     else:
         self.set(instance, value)
Beispiel #18
0
 def edit_accessor():
     if self.getType().endswith('ReferenceField'):
         return self.getRaw(instance.__of__(getSite()))
     else:
         return self.getRaw(instance)
Beispiel #19
0
    def __call__(self):
        form = self.request.form
        portal = getSite()
        workbook = None

        if 'setupexisting' in form and 'existing' in form and form['existing']:
            fn = form['existing'].split(":")
            self.dataset_project = fn[0]
            self.dataset_name = fn[1]
            path = 'setupdata/%s/%s.xlsx' % \
                (self.dataset_name, self.dataset_name)
            filename = resource_filename(self.dataset_project, path)
            try:
                workbook = load_workbook(
                    filename=filename)  # , use_iterators=True)
            except AttributeError:
                print ""
                print traceback.format_exc()
                print "Error while loading ", path

        elif 'setupfile' in form and 'file' in form and form[
                'file'] and 'projectname' in form and form['projectname']:
            self.dataset_project = form['projectname']
            tmp = tempfile.mktemp()
            file_content = form['file'].read()
            open(tmp, 'wb').write(file_content)
            workbook = load_workbook(filename=tmp)  # , use_iterators=True)
            self.dataset_name = 'uploaded'

        assert (workbook is not None)

        adapters = [[name, adapter] for name, adapter in list(
            getAdapters((self.context, ), ISetupDataImporter))]
        for sheetname in workbook.get_sheet_names():
            transaction.savepoint()
            ad_name = sheetname.replace(" ", "_")
            if ad_name in [a[0] for a in adapters]:
                adapter = [a[1] for a in adapters if a[0] == ad_name][0]
                adapter(self, workbook, self.dataset_project,
                        self.dataset_name)
                adapters = [a for a in adapters if a[0] != ad_name]
        for name, adapter in adapters:
            transaction.savepoint()
            adapter(self, workbook, self.dataset_project, self.dataset_name)

        check = len(self.deferred)
        while len(self.deferred) > 0:
            new = self.solve_deferred()
            logger.info("solved %s of %s deferred references" %
                        (check - new, check))
            if new == check:
                raise Exception("%s unsolved deferred references: %s" %
                                (len(self.deferred), self.deferred))
            check = new

        logger.info("Rebuilding bika_setup_catalog")
        bsc = getToolByName(self.context, 'bika_setup_catalog')
        bsc.clearFindAndRebuild()
        logger.info("Rebuilding bika_catalog")
        bc = getToolByName(self.context, 'bika_catalog')
        bc.clearFindAndRebuild()
        logger.info("Rebuilding bika_analysis_catalog")
        bac = getToolByName(self.context, 'bika_analysis_catalog')
        bac.clearFindAndRebuild()

        message = PMF("Changes saved.")
        self.context.plone_utils.addPortalMessage(message)
        self.request.RESPONSE.redirect(portal.absolute_url())