#!/usr/bin/env python
# -*- coding: utf-8 -*-
# **************************************************************************
# Copyright © 2017 jianglin
# File Name: utils.py
# Author: jianglin
# Email: xiyang0807@gmail.com
# Created: 2017-03-29 13:33:03 (CST)
# Last Update:星期日 2017-4-9 12:42:56 (CST)
#          By:
# Description:
# **************************************************************************
from datetime import datetime, timedelta

one_day = datetime.now() + timedelta(days=-1)
one_week = datetime.now() + timedelta(days=-7)
one_month = datetime.now() + timedelta(days=-30)
one_year = datetime.now() + timedelta(days=-365)


def gen_topic_filter(query_dict=dict(), keys=[], equal_key=[], user=None):
    filter_dict = {}
    keys = list(set(keys) & set(query_dict.keys()))
    within = query_dict.pop('within', None)
    if within == '1':
        filter_dict.update(created_at__gte=one_day)
    elif within == '2':
        filter_dict.update(created_at__gte=one_week)
    elif within == '3':
        filter_dict.update(created_at__gte=one_month)
    elif within == '4':
        filter_dict.update(created_at__gte=one_year)
    for k in keys:
        if k in equal_key:
            filter_dict.update(**{k: query_dict[k]})
        else:
            new_k = '%s__contains' % k
            filter_dict.update(**{new_k: query_dict[k]})
    if user is not None and user.is_authenticated:
        filter_dict.update(user__id=user.id)
    return filter_dict


def gen_topic_orderby(query_dict=dict(), keys=[], date_key=True):
    keys.append('id')
    order_by = ['id']
    orderby = query_dict.pop('orderby', None)
    desc = query_dict.pop('desc', None)
    if orderby == '0':
        order_by = ['author_id']
    elif orderby == '1':
        order_by = ['created_at']
    if desc == '0':
        order_by = ['-%s' % i for i in order_by]
    return tuple(order_by)