123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- #!/usr/bin/env python
- # -*- coding=UTF-8 -*-
- # **************************************************************************
- # Copyright © 2016 jianglin
- # File Name: models.py
- # Author: jianglin
- # Email: xiyang0807@gmail.com
- # Created: 2016-05-20 13:32:12 (CST)
- # Last Update:星期二 2016-6-14 23:20:15 (CST)
- # By:
- # Description:
- # **************************************************************************
- from maple import redis_data, db
- from maple.helpers import make_uid
- from maple.topic.models import Topic, Tags, Reply
- from flask_login import current_user
- from re import split as sp
- class RedisData(object):
- def set_topics():
- '''使用redis记录'''
- pipe = redis_data.pipeline()
- '''用户发帖数'''
- user = 'user:%s' % str(current_user.id)
- pipe.hincrby(user, 'topic', 1)
- pipe.hincrby(user, 'all:topic', 1)
- pipe.execute()
- def set_replies(qid):
- pipe = redis_data.pipeline()
- pipe.hincrby('topic:%s' % str(qid), 'replies', 1)
- pipe.execute()
- def set_read_count(qid):
- redis_data.hincrby('topic:%s' % str(qid), 'read', 1)
- def set_notice(user):
- redis_data.hincrby('user:%s' % str(user.id), 'notice', 1)
- def set_collect(user, num):
- redis_data.hincrby('user:%s' % str(user.id), 'collect', num)
- def set_love(user, num):
- redis_data.hincrby('user:%s' % str(user.id), 'love', num)
- def set_user():
- redis_data.hincrby('user:%s' % str(current_user.id), 'topic', 1)
- def set_user_all():
- redis_data.hincrby('user:%s' % str(current_user.id), 'all_topic', 1)
- def get_repies_count(qid):
- pages = redis_data.hget('topic:%s' % str(qid), 'replies')
- return pages
- def get_pages(large, little):
- pages = redis_data.zscore(large, little)
- return pages
- class SQLData(object):
- def set_topics(form):
- topic = Topic()
- topic.title = form.title.data
- topic.content = form.content.data
- topic.uid = make_uid()
- topic.author = current_user
- tags = sp(',|;|,|;| ', form.tags.data)
- tags = list(set(tags))[:4]
- post_tags = []
- for tag in tags:
- if tag != '':
- exsit_tag = Tags.query.filter_by(tagname = tag).first()
- if exsit_tag is not None:
- post_tags.append(exsit_tag)
- else:
- t = Tags()
- t.tagname = tag
- post_tags.append(t)
- topic.tags = post_tags
- topic.board_id = form.category.data
- db.session.add(topic)
- db.session.commit()
- topic.board.count.topics += 1
- topic.board.count.all_topics += 1
- db.session.commit()
- RedisData.set_topics()
- def set_replies(form, uid):
- reply = Reply()
- reply.content = form.content.data
- reply.author = current_user
- reply.topic_id = uid
- db.session.add(reply)
- db.session.commit()
- reply.topic.board.count.all_topics += 1
- db.session.commit()
- RedisData.set_replies(uid)
|