def query_filter_date_range(context, request, query, domain_model): """Add date range filter to query: - if the model has start & end dates, constrain the query to objects appearing within those dates. - else (archive section) pick off start/end date from the request's cookies - else try getting a display date off request """ if ((ufaces.IBusinessSectionLayer.providedBy(request) and (mfaces.ICommitteeContainer.providedBy(context) or mfaces.ICommitteeMemberContainer.providedBy(context) or mfaces.ICommitteeStaffContainer.providedBy(context))) or (ufaces.IMembersSectionLayer.providedBy(request) and mfaces.IMemberOfParliamentContainer.providedBy(context))): start_date, end_date = datetime.date.today(), None elif ufaces.IArchiveSectionLayer.providedBy(request): start_date, end_date = cookies.get_date_range(request) else: start_date, end_date = date.getDisplayDate(request), None if not start_date and not end_date: return query elif not start_date: start_date = datetime.date(1900, 1, 1) elif not end_date: end_date = datetime.date(2100, 1, 1) date_range_filter = component.getSiteManager().adapters.lookup( (interface.implementedBy(domain_model), ), mfaces.IDateRangeFilter) if date_range_filter is not None: query = query.filter(date_range_filter(domain_model)).params( start_date=start_date, end_date=end_date) return query
def setUpWidgets(self, ignore_request=False, cookie=None): if ignore_request is False: start_date, end_date = cookies.get_date_range(self.request) else: start_date = end_date = None context = type("context", (), { "range_start_date": start_date, "range_end_date": end_date, "parliament": None}) self.adapters = { self.IDateRangeSchema: context, } if self.is_in_parliament(self.context): self.form_fields = self.form_fields.omit("parliament") self.widgets = form.setUpWidgets( self.form_fields, self.prefix, self.context, self.request, form=self, adapters=self.adapters, ignore_request=True) try: self.widgets["parliament"]._messageNoValue = _( u"parliament...") except KeyError: pass start, end = self.get_start_end_restictions(self.context) self.widgets["range_start_date"].set_min_date(start) self.widgets["range_end_date"].set_min_date(start) self.widgets["range_start_date"].set_max_date(end) self.widgets["range_end_date"].set_max_date(end)
def update(self): self.form = ArchiveDatesForm(self.context, self.request) start_date, end_date = cookies.get_date_range(self.request) if start_date or end_date: self.filter_on = "dates-filtered" else: self.filter_on = ""
def setUpWidgets(self, ignore_request=False, cookie=None): if ignore_request is False: start_date, end_date = get_date_range(self.request) else: start_date = end_date = None context = type("context", (), { 'range_start_date': start_date, 'range_end_date': end_date, 'parliament': None}) self.adapters = { self.IDateRangeSchema: context, } if self.is_in_parliament(self.context): self.form_fields = self.form_fields.omit('parliament') self.widgets = form.setUpWidgets( self.form_fields, self.prefix, self.context, self.request, form=self, adapters=self.adapters, ignore_request=True) try: self.widgets['parliament']._messageNoValue = _( u"parliament...") except KeyError: pass start, end = self.get_start_end_restictions(self.context) self.widgets['range_start_date'].set_min_date(start) self.widgets['range_end_date'].set_min_date(start) self.widgets['range_start_date'].set_max_date(end) self.widgets['range_end_date'].set_max_date(end)
def update(self): self.form = ArchiveDatesForm(self.context, self.request) start_date, end_date = get_date_range(self.request) if start_date or end_date: self.filter_on = 'dates-filtered' else: self.filter_on = ''
def query_filter_date_range(context, request, query, domain_model): """Add date range filter to query: - if the model has start & end dates, constrain the query to objects appearing within those dates. - else (archive section) pick off start/end date from the request's cookies - else try getting a display date off request """ if ((ufaces.IBusinessSectionLayer.providedBy(request) and ( mfaces.ICommitteeContainer.providedBy(context) or mfaces.ICommitteeMemberContainer.providedBy(context) or mfaces.ICommitteeStaffContainer.providedBy(context)) ) or (ufaces.IMembersSectionLayer.providedBy(request) and mfaces.IMemberOfParliamentContainer.providedBy(context)) ): start_date, end_date = datetime.date.today(), None elif ufaces.IArchiveSectionLayer.providedBy(request): start_date, end_date = cookies.get_date_range(request) else: start_date, end_date = date.getDisplayDate(request), None if not start_date and not end_date: return query elif not start_date: start_date = datetime.date(1900, 1, 1) elif not end_date: end_date = datetime.date(2100, 1, 1) date_range_filter = component.getSiteManager().adapters.lookup( (interface.implementedBy(domain_model),), mfaces.IDateRangeFilter) if date_range_filter is not None: query = query.filter(date_range_filter(domain_model)).params( start_date=start_date, end_date=end_date) return query
def __init__(self, context, request): super(WhatsOnBrowserView, self).__init__(context, request) parliament_id = getCurrentParliamentId() if parliament_id: session = Session() parliament = session.query(domain.Parliament).get(parliament_id) self.context = parliament self.context.__parent__ = context self.context.__name__ = "" start_date, end_date = get_date_range(request) if type(start_date) != datetime.date: self.start_date = datetime.date.today() else: self.start_date = start_date if type(end_date) != datetime.date: end_date = datetime.date.today() + datetime.timedelta(10) self.end_date = datetime.datetime(end_date.year, end_date.month, end_date.day, 23, 59) else: self.end_date = datetime.datetime(end_date.year, end_date.month, end_date.day, 23, 59) self.get_items()
def __init__(self, context, request): super(WhatsOnBrowserView, self).__init__(context, request) parliament_id = getCurrentParliamentId() if parliament_id: session = Session() parliament = session.query(domain.Parliament).get(parliament_id) self.context = parliament self.context.__parent__ = context self.context.__name__ = "" start_date, end_date = get_date_range(request) if type(start_date) != datetime.date: self.start_date = datetime.date.today() else: self.start_date = start_date if type(end_date) != datetime.date: self.end_date = None else: self.end_date = datetime.datetime(end_date.year, end_date.month, end_date.day, 23, 59) self.get_items()
def get_query(context, request, query=None, domain_model=None): """Prepare query. If the model has start- and end-dates, constrain the query to objects appearing within those dates. """ unproxied = proxy.removeSecurityProxy(context) model = unproxied.domain_model session = Session() if not query: query = unproxied._query if (IBusinessSectionLayer.providedBy(request) and ICommitteeContainer.providedBy(context)) or ( IMembersSectionLayer.providedBy(request) and IMemberOfParliamentContainer.providedBy(context)) or ( IBusinessSectionLayer.providedBy(request) and ICommitteeMemberContainer.providedBy(context)) or ( IBusinessSectionLayer.providedBy(request) and ICommitteeStaffContainer.providedBy(context)): start_date = datetime.date.today() end_date = None else: start_date, end_date = get_date_range(request) if start_date or end_date: date_range_filter = component.getSiteManager().adapters.lookup( (interface.implementedBy(model), ), IDateRangeFilter) if start_date is None: start_date = datetime.date(1900, 1, 1) if end_date is None: end_date = datetime.date(2100, 1, 1) if domain_model: model = domain_model if date_range_filter is not None: query = query.filter(date_range_filter(model)).params( start_date=start_date, end_date=end_date) return query
def get_query(context, request, query=None, domain_model=None): """Prepare query. If the model has start- and end-dates, constrain the query to objects appearing within those dates. """ unproxied = proxy.removeSecurityProxy(context) if query is None: query = unproxied._query model = unproxied.domain_model if ((IBusinessSectionLayer.providedBy(request) and ICommitteeContainer.providedBy(context)) or (IMembersSectionLayer.providedBy(request) and IMemberOfParliamentContainer.providedBy(context)) or (IBusinessSectionLayer.providedBy(request) and ICommitteeMemberContainer.providedBy(context)) or (IBusinessSectionLayer.providedBy(request) and ICommitteeStaffContainer.providedBy(context)) ): start_date = datetime.date.today() end_date = None else: start_date, end_date = get_date_range(request) if start_date or end_date: if start_date is None: start_date = datetime.date(1900, 1, 1) if end_date is None: end_date = datetime.date(2100, 1, 1) if domain_model is not None: model = domain_model date_range_filter = component.getSiteManager().adapters.lookup( (interface.implementedBy(model),), IDateRangeFilter) if date_range_filter is not None: query = query.filter(date_range_filter(model)).params( start_date=start_date, end_date=end_date) return query