Пример #1
0
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
Пример #2
0
    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)
Пример #3
0
 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 = ""
Пример #4
0
    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)
Пример #5
0
 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 = ''
Пример #6
0
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
Пример #7
0
 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()
Пример #8
0
 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()
Пример #9
0
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
Пример #10
0
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