def query(self): items_query = Session().query(self.domain_class) if not IScheduleText.implementedBy(self.domain_class): items_query = items_query.filter( self.domain_class.status.in_(self.filter_states)) if len(self.item_filters): for (key, value) in self.item_filters.iteritems(): column = getattr(self.domain_class, key) #!+SCHEDULING(mb, Jan-2011) extend query spec to include sql filters if "date" in key: if "|" in value: start, end = value.split("|") if start and end: expression = sql.between(column, start, end) elif start: expression = (column >= value) elif end: expression = (column <= value) else: continue else: expression = (column == value) else: expression = (column == value) items_query = items_query.filter(expression) if self.group_filter and not IScheduleText.implementedBy( self.domain_class): if hasattr(self.domain_class, "parliament_id") and self.group_id: items_query = items_query.filter( self.domain_class.parliament_id == self.group_id) elif hasattr(self.domain_class, "group_id") and self.group_id: items_query = items_query.filter( self.domain_class.group_id == self.group_id) return tuple(items_query)
def as_json(self): is_text = IScheduleText.implementedBy(self.domain_class) date_formatter = date.getLocaleFormatter(common.get_request(), "date", "medium") items = [ dict( item_type=self.item_type, item_id=orm.object_mapper(item).primary_key_from_instance( item)[0], item_title=IDCDescriptiveProperties(item).title, status=(IWorkflow(item).get_state(item.status).title if not is_text else None), status_date=(date_formatter.format(item.submission_date) if (hasattr(item, "submission_date") and getattr(item, "submission_date")) else None), registry_number=(item.registry_number if hasattr( item, "registry_number") else None), item_mover=(IDCDescriptiveProperties(item.owner).title if hasattr(item, "owner") else None), item_uri="%s-%d" % (self.item_type, orm.object_mapper(item).primary_key_from_instance(item)[0])) for item in self.query() ] items = sorted(items, key=lambda item: item.get("status_date"), reverse=True) return json.dumps(dict(items=items))
def getMenuItems(self, context, request): results = [] try: items = proxy.removeSecurityProxy(context.__parent__).items() except AttributeError: return results for key, item in items: if not IAlchemistContainer.providedBy(item): continue if not IScheduleText.implementedBy(item.domain_model): continue dc_adapter = IDCDescriptiveProperties(item, None) if dc_adapter: _title = dc_adapter.title else: _title = getattr(item, "title", "Unknown") results.append(dict( title=_title, description=_title, action = url.absoluteURL(item, request), selected=False, icon=None, extra={}, submenu=None )) return results
def as_json(self): is_text = IScheduleText.implementedBy(self.domain_class) date_formatter = date.getLocaleFormatter(common.get_request(), "date", "medium" ) items = [ dict( item_type = self.item_type, item_id = orm.object_mapper(item).primary_key_from_instance( item )[0], item_title = item.text if \ is_text else IDCDescriptiveProperties(item).title, status = IWorkflow(item).get_state(item.status).title if not \ is_text else None, status_date = date_formatter.format(item.submission_date) if \ getattr(item, "submission_date", None) else None, registry_number = item.registry_number if \ hasattr(item, "registry_number") else None, item_mover = IDCDescriptiveProperties(item.owner).title if \ hasattr(item, "owner") else None, item_uri = "%s-%d" % (self.item_type, orm.object_mapper(item).primary_key_from_instance(item)[0] ) ) for item in self.query() ] items = sorted(items, key=lambda item:item.get("status_date"), reverse=True ) return json.dumps(dict(items=items))
def query(self): items_query = Session().query(self.domain_class) if not IScheduleText.implementedBy(self.domain_class): items_query = items_query.filter( self.domain_class.status.in_(self.filter_states) ) if len(self.item_filters): for (key, value) in self.item_filters.iteritems(): column = getattr(self.domain_class, key) #!+SCHEDULING(mb, Jan-2011) extend query spec to include sql filters if "date" in key: if "|" in value: start, end = value.split("|") if start and end: expression = sql.between(column, start, end) elif start: expression = (column>=value) elif end: expression = (column<=value) else: continue else: expression = (column==value) else: expression = (column==value) items_query = items_query.filter(expression) if self.group_filter and not IScheduleText.implementedBy(self.domain_class): if hasattr(self.domain_class, "chamber_id") and self.group_id: # filter by the current chamber #!+(SCHEDULING, Oct-2013) Todo: rework to get group documents items_query = items_query.filter( self.domain_class.chamber_id== get_chamber_for_context(self.context).group_id ) elif hasattr(self.domain_class, "group_id") and self.group_id: items_query = items_query.filter( self.domain_class.group_id==self.group_id ) elif self.group_filter and IScheduleText.implementedBy(self.domain_class): if hasattr(self.domain_class, "group_id") and self.group_id: items_query = items_query.filter( self.domain_class.group_id==self.group_id ) return tuple(items_query)
def query(self): items_query = Session().query(self.domain_class) if not IScheduleText.implementedBy(self.domain_class): items_query = items_query.filter( self.domain_class.status.in_(self.filter_states)) if len(self.item_filters): for (key, value) in self.item_filters.iteritems(): column = getattr(self.domain_class, key) #!+SCHEDULING(mb, Jan-2011) extend query spec to include sql filters if "date" in key: if "|" in value: start, end = value.split("|") if start and end: expression = sql.between(column, start, end) elif start: expression = (column >= value) elif end: expression = (column <= value) else: continue else: expression = (column == value) else: expression = (column == value) items_query = items_query.filter(expression) if self.group_filter and not IScheduleText.implementedBy( self.domain_class): if hasattr(self.domain_class, "chamber_id") and self.group_id: # filter by the current chamber #!+(SCHEDULING, Oct-2013) Todo: rework to get group documents items_query = items_query.filter( self.domain_class.chamber_id == get_chamber_for_context( self.context).group_id) elif hasattr(self.domain_class, "group_id") and self.group_id: items_query = items_query.filter( self.domain_class.group_id == self.group_id) elif self.group_filter and IScheduleText.implementedBy( self.domain_class): if hasattr(self.domain_class, "group_id") and self.group_id: items_query = items_query.filter( self.domain_class.group_id == self.group_id) return tuple(items_query)
def query(self): items_query = Session().query(self.domain_class) if not IScheduleText.implementedBy(self.domain_class): items_query = items_query.filter( self.domain_class.status.in_(self.filter_states) ) if len(self.item_filters): for (key, value) in self.item_filters.iteritems(): column = getattr(self.domain_class, key) #!+SCHEDULING(mb, Jan-2011) extend query spec to include sql filters if "date" in key: if "|" in value: start, end = value.split("|") if start and end: expression = sql.between(column, start, end) elif start: expression = (column>=value) elif end: expression = (column<=value) else: continue else: expression = (column==value) else: expression = (column==value) items_query = items_query.filter(expression) if self.group_filter and not IScheduleText.implementedBy(self.domain_class): if hasattr(self.domain_class, "parliament_id") and self.group_id: items_query = items_query.filter( self.domain_class.parliament_id==self.group_id ) elif hasattr(self.domain_class, "group_id") and self.group_id: items_query = items_query.filter( self.domain_class.group_id==self.group_id ) return tuple(items_query)
def group_id(self): group_id = None if IScheduleText.implementedBy(self.domain_class): # use current chamber if any as group id chamber = get_chamber_for_context(self.context) if chamber: group_id = chamber.group_id else: parent = self.context while parent is not None: group_id = getattr(parent, "group_id", None) if group_id: break else: parent = parent.__parent__ return group_id
def getMenuItems(self, context, request): results = [] try: items = proxy.removeSecurityProxy(context.__parent__).items() except AttributeError: return results for key, item in items: if not IAlchemistContainer.providedBy(item): continue if not IScheduleText.implementedBy(item.domain_model): continue dc_adapter = IDCDescriptiveProperties(item, None) if dc_adapter: _title = dc_adapter.title else: _title = getattr(item, "title", "Unknown") results.append( dict(title=_title, description=_title, action=url.absoluteURL(item, request), selected=False, icon=None, extra={}, submenu=None)) return results