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), )
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
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))
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)
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)
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)
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)
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)
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)
def mutator(value, **kw): if self.getType().endswith("ReferenceField"): self.set(instance.__of__(getSite()), value) else: self.set(instance, value)
def edit_accessor(): if self.getType().endswith("ReferenceField"): return self.getRaw(instance.__of__(getSite())) else: return self.getRaw(instance)
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())
def mutator(value, **kw): if self.getType().endswith('ReferenceField'): self.set(instance.__of__(getSite()), value) else: self.set(instance, value)
def edit_accessor(): if self.getType().endswith('ReferenceField'): return self.getRaw(instance.__of__(getSite())) else: return self.getRaw(instance)
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())