示例#1
0
def test_parse_date():
    now = datetime.now()
    today = date.today()

    date_fmt1 = "2016-12-31"
    date_fmt2 = "2016-12-31 15:40:34.404540"
    date_fmt3 = "12/31/2016"
    expected_date = date(2016, 12, 31)

    assert parse_date(now) == now.date()
    assert parse_date(today) == today
    assert parse_date(date_fmt1) == expected_date
    assert parse_date(date_fmt2) == expected_date
    assert parse_date(date_fmt3) == expected_date
示例#2
0
def test_parse_date():
    now = datetime.now()
    today = date.today()

    date_fmt1 = "2016-12-31"
    date_fmt2 = "2016-12-31 15:40:34.404540"
    date_fmt3 = "12/31/2016"
    expected_date = date(2016, 12, 31)

    assert parse_date(now) == now.date()
    assert parse_date(today) == today
    assert parse_date(date_fmt1) == expected_date
    assert parse_date(date_fmt2) == expected_date
    assert parse_date(date_fmt3) == expected_date
示例#3
0
文件: query.py 项目: NamiStudio/shuup
def group_by_period(queryset, column, period, **annotate):
    """
    Group and annotate given queryset by a given date period.

    :param queryset: Original queryset
    :type queryset: django.db.QuerySet
    :param column: Column for grouping
    :type column: str
    :param period: Period for grouping ('year', 'month', 'day')
    :type period:  str
    :param annotate: Dict for `.annotate()`
    :type annotate: dict[str,str]
    :return: OrderedDict of period -> annotate columns
    :rtype: collections.OrderedDict
    """

    # Based on http://stackoverflow.com/a/8746532/51685

    d = OrderedDict()
    for line in (
        queryset
        .extra({"period_group": connection.ops.date_trunc_sql(period, column)})
        .values("period_group")
        .annotate(**annotate)
        .order_by("period_group")
        .values(*["period_group"] + list(annotate.keys()))
    ):
        d[parse_date(line.pop("period_group"))] = line
    return d
示例#4
0
def group_by_period(queryset, column, period, **annotate):
    """
    Group and annotate given queryset by a given date period.

    :param queryset: Original queryset
    :type queryset: django.db.QuerySet
    :param column: Column for grouping
    :type column: str
    :param period: Period for grouping ('year', 'month', 'day')
    :type period:  str
    :param annotate: Dict for `.annotate()`
    :type annotate: dict[str,str]
    :return: OrderedDict of period -> annotate columns
    :rtype: collections.OrderedDict
    """

    # Based on http://stackoverflow.com/a/8746532/51685

    d = OrderedDict()
    for line in (queryset.extra({
            "period_group":
            connection.ops.date_trunc_sql(period, column)
    }).values("period_group").annotate(
            **annotate).order_by("period_group").values(
                *["period_group"] + list(annotate.keys()))):
        d[parse_date(line.pop("period_group"))] = line
    return d
示例#5
0
 def _set_datetime_value(self, new_value):
     if self.attribute.type == AttributeType.DATETIME:
         # Just store datetimes
         if not isinstance(new_value, datetime.datetime):
             raise TypeError("Can't assign %r to DATETIME attribute" % new_value)
         self.datetime_value = new_value
         self.numeric_value = calendar.timegm(self.datetime_value.timetuple())
         self.untranslated_string_value = self.datetime_value.isoformat()
     elif self.attribute.type == AttributeType.DATE:
         # Store dates as "date at midnight"
         date = parse_date(new_value)
         self.datetime_value = datetime.datetime.combine(date=date, time=datetime.time())
         self.numeric_value = date.toordinal()  # Store date ordinal as numeric value
         self.untranslated_string_value = date.isoformat()  # Store date ISO format as string value