示例#1
0
 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)
示例#2
0
 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))
示例#3
0
 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
示例#4
0
 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))
示例#5
0
 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)
示例#6
0
 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)
示例#7
0
 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)
示例#8
0
 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
示例#9
0
 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
示例#10
0
 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