123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- 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 = ['created_at']
- elif orderby == '1':
- order_by = ['author_id']
- if desc == '0':
- order_by = ['-%s' % i for i in order_by]
- order_by = ['-is_top'] + order_by
- return tuple(order_by)
|