12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- from flask import request, current_app
- from maple.forums.models import Board
- from maple.topic.models import Topic
- from maple.tag.models import Tags
- from datetime import datetime, timedelta
- def form_judge(form):
- '''
- 0: all topic
- 1: one day
- 2: one week
- 3: one month
- 0: time
- 1: author
- 0: desc
- 1: asc
- '''
- t1 = form.display.data
- t2 = form.sort.data
- t3 = form.st.data
- data = form_sort(t1, t2, t3)
- return data
- def form_sort(t1, t2, t3):
- orderby = request.get_json()
- type = orderby['type']
- uid = orderby['uid']
- page = int(orderby['page'])
- if t1 == 0:
- time = datetime.now() - timedelta(days=365)
- elif t1 == 1:
- time = datetime.now() - timedelta(days=1)
- elif t1 == 2:
- time = datetime.now() - timedelta(days=7)
- else:
- time = datetime.now() - timedelta(days=30)
-
- if t2 == 0:
- order = Topic.publish
- else:
- order = Topic.author_id
-
- if t3 == 0:
- order = order.desc()
- else:
- order = order.asc()
- app = current_app._get_current_object()
- per_page = app.config['PER_PAGE']
- topic_base = Topic.query.join(Topic.board).filter(Topic.publish > time,
- Topic.is_top == False)
- if type == 'parent_b':
- topics = topic_base.filter(Board.parent_board == uid).order_by(
- order).paginate(page, per_page, True)
- elif type == 'child_b':
- topics = topic_base.filter(Board.id == uid).order_by(order).paginate(
- page, per_page, True)
- elif type == 'tags':
- topics = Topic.query.join(Topic.tags).filter(
- Topic.publish > time, Topic.is_top == False,
- Tags.tagname == uid).order_by(order).paginate(page, per_page, True)
- elif type == 'all':
- topics = Topic.query.filter(
- Topic.publish > time,
- Topic.is_top == False).order_by(order).paginate(page, per_page,
- True)
- else:
- topics = None
- return topics
|