#!/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-3-29 13:43:40 (CST) # By: # Description: # ************************************************************************** from datetime import datetime, timedelta one_day = datetime.now() + timedelta(days=-1) one_month = datetime.now() + timedelta(days=-30) one_year = datetime.now() + timedelta(years=-1) def gen_topic_filter(query_dict=dict(), keys=[], equal_key=[], user=None): filter_dict = {} keys = list(set(keys) & set(query_dict.keys())) 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) within = query_dict.pop('within', None) if within is not None: if within == 1: filter_dict.update(created_at__gte=one_day) elif within == 2: filter_dict.update(created_at__gte=one_month) elif within == 3: filter_dict.update(created_at__gte=one_year) return filter_dict def gen_topic_orderby(query_dict=dict(), keys=[], date_key=True): keys.append('id') if date_key: keys += ['created_at', 'updated_at'] order_by = ['id'] descent = query_dict.pop('orderby', None) if descent is not None: descent = descent.split(',') descent = list(set(keys) & set(descent)) order_by = ['-%s' % i for i in descent] return tuple(order_by)