예제 #1
0
 def _parse_date_facets(self, facet_items):
     '''
     Parse date faceted fields like:
         {'departure_dates': {'2010-04-24T18:17:03Z': 105,
                            '2010-05-01T00:00:00Z': 323,
                            '2010-06-01T00:00:00Z': 334,
                            '2010-07-01T00:00:00Z': 468,
                            '2010-08-01T00:00:00Z': 504,
                            '2010-09-01T00:00:00Z': 515,
                            '2010-10-01T00:00:00Z': 519,
                            '2010-11-01T00:00:00Z': 478,
                            '2010-12-01T00:00:00Z': 457,
                            '2011-01-01T00:00:00Z': 370,
                            '2011-02-01T00:00:00Z': 357,
                            '2011-03-01T00:00:00Z': 370,
                            '2011-04-01T00:00:00Z': 359,
                            'end': '2011-05-01T00:00:00Z',
                            'gap': '+1MONTH/MONTH'}}
     '''
     facets = []
     for field, date_counts in facet_items.iteritems():
         facet = Facet(field=field, label=field.replace('_', ' ').title())
         gap = date_counts['gap']
         for date_string, count in date_counts.iteritems():
             match = DATETIME_REGEX.search(date_string)
             if not match: continue
             data = match.groupdict()
             date = datetime_safe.date(int(data['year']),
                                       int(data['month']), int(data['day']))
             item = FacetItem(date, count)
             if gap == '+1MONTH/MONTH':
                 item.label = date.strftime("%B")
                 item.value = date.strftime("%Y-%m")
             elif gap == '+1YEAR/YEAR':
                 item.label = date.strftime("%Y")
                 item.value = date.strftime("%Y-01")
             item.is_selected = self._is_selected_facet(
                 field, check_parse_date(item.value))
             item.facet = facet
             facet.items.append(item)
         facet.items.sort(key=lambda x: x.value)
         facets.append(facet)
     return facets
예제 #2
0
파일: fields.py 프로젝트: NESCent/feedingdb
    def convert(self, value):
        if value is None:
            return None
     
        dates = []
        for list_value in value:
            if isinstance(list_value, basestring):
                match = DATETIME_REGEX.search(list_value)
                if match:
                    data = match.groupdict()
                    dates.append(datetime_safe.date(int(data['year']), int(data['month']), int(data['day'])))
                else:
                    raise SearchFieldError("Date provided to '%s' field doesn't appear to be a valid date string: '%s'" % (self.instance_name, list_value))
            elif isinstance(list_value, datetime.date):
                dates.append(list_value)
            else:
                raise SearchFieldError("Date provided to '%s' field doesn't appear to be a valid date: '%s'" % (self.instance_name, list_value))

        return list(dates)   
예제 #3
0
    def convert(self, value):
        if value is None:
            return None
     
        dates = []
        for list_value in value:
            if isinstance(list_value, basestring):
                match = DATETIME_REGEX.search(list_value)
                if match:
                    data = match.groupdict()
                    dates.append(datetime_safe.date(int(data['year']), int(data['month']), int(data['day'])))
                else:
                    raise SearchFieldError("Date provided to '%s' field doesn't appear to be a valid date string: '%s'" % (self.instance_name, list_value))
            elif isinstance(list_value, datetime.date):
                dates.append(list_value)
            else:
                raise SearchFieldError("Date provided to '%s' field doesn't appear to be a valid date: '%s'" % (self.instance_name, list_value))

        return list(dates)   
                         
예제 #4
0
 def _parse_date_facets(self, facet_items):
     '''
     Parse date faceted fields like:
         {'departure_dates': {'2010-04-24T18:17:03Z': 105,
                            '2010-05-01T00:00:00Z': 323,
                            '2010-06-01T00:00:00Z': 334,
                            '2010-07-01T00:00:00Z': 468,
                            '2010-08-01T00:00:00Z': 504,
                            '2010-09-01T00:00:00Z': 515,
                            '2010-10-01T00:00:00Z': 519,
                            '2010-11-01T00:00:00Z': 478,
                            '2010-12-01T00:00:00Z': 457,
                            '2011-01-01T00:00:00Z': 370,
                            '2011-02-01T00:00:00Z': 357,
                            '2011-03-01T00:00:00Z': 370,
                            '2011-04-01T00:00:00Z': 359,
                            'end': '2011-05-01T00:00:00Z',
                            'gap': '+1MONTH/MONTH'}}
     '''
     facets = []
     for field, date_counts in facet_items.iteritems():
         facet = Facet(field=field, label=field.replace('_', ' ').title())
         gap = date_counts['gap']
         for date_string, count in date_counts.iteritems():
             match = DATETIME_REGEX.search(date_string)
             if not match: continue
             data = match.groupdict()
             date = datetime_safe.date(int(data['year']), int(data['month']), int(data['day']))
             item = FacetItem(date, count)
             if gap == '+1MONTH/MONTH':
                 item.label=date.strftime("%B")
                 item.value=date.strftime("%Y-%m")
             elif gap == '+1YEAR/YEAR':
                 item.label=date.strftime("%Y")
                 item.value=date.strftime("%Y-01")
             item.is_selected = self._is_selected_facet(field, check_parse_date(item.value))
             item.facet = facet
             facet.items.append(item)
         facet.items.sort(key=lambda x: x.value)
         facets.append(facet)
     return facets