def topic_recent_week_page(page_num): datas = db_topics.Topics().get_topics_by_page(page_num=page_num, page_size=15, last_week=True) pagination = page_html(total_count=db_topics.Topics().get_topic_count(), page_size=15, current_page=page_num, url='topic-recent-week/page') today_topic = db_topics.Topics().get_topic_by_id( db_topic_recommend.Topic_recommend().get_today_recommend_topic_id()) db_topic_recommend.Topic_recommend().test_and_update_today_recommend_topic() if is_login(): user = db_users.Users().get_user(session['username']) focus_topics = db_topic_focus.Topic_focus().get_user_focus_topics(user.uid) return render_template('login/login-recent_week_topics.html', user=user, datas=datas, pagination=pagination, url='topic/page', today_topic=today_topic, focus_topics=focus_topics) return render_template('login/login-recent_week_topics.html', datas=datas, pagination=pagination, url='topic/page', today_topic=today_topic)
def session_delete(): if is_login(): session_id = int(request.form.get('session_id')) if db_message.Message().delete_session(session_id): return 'success' return 'error' return 'error'
def post(self, request, *args, **kwargs): staff = is_login(request) department = Department.objects.get(pk=staff.department.id) leave_start_datetime = request.data.get('leave_start_datetime', '') leave_days = request.data.get('leave_days', '') leave = LeaveTable() leave.staff = staff leave.department = department if leave_start_datetime: leave.leave_start_datetime = leave_start_datetime if leave_days: leave.leave_days = leave_days leave.save() data = { 'status': 200, 'msg': '请假条已创建,等待领导审批', 'leave': { 'id': leave.id, 'staff': leave.staff.staff_name, 'department': leave.department.dp_name, 'leave_start_datetime': leave.leave_start_datetime, 'leave_days': leave.leave_days, 'is_approval': leave.is_approval } } return Response(data)
def show_notifications(): if request.method == 'GET' and is_login(): user = db_users.Users().get_user(session['username']) uid = db_users.Users().get_uid_by_username(session['username']) datas = get_notification_data(uid) more = 0 page = 1 unread = datas['unread'] notifications = datas['notifications'] if len(datas['notifications']) > 5: notifications = datas['notifications'][0:5] more = 1 return render_template('login/notifications.html', user=user, unread=unread, notifications=notifications, more=more, page=page) elif request.method == 'POST': option = request.form.get('option') if option == 'has_read': id = request.form.get('notification_id') return db_notification.Notification().has_read(id) elif option == 'delete': id = request.form.get('notification_id') uid = db_users.Users().get_uid_by_username(session['username']) return db_notification.Notification().delete(id, uid) elif option == 'read_all': db_notification.Notification().read_all() pass return redirect('/')
def update_user_profile(): if is_login(): sex = int(request.form.get('sex')) birth_year = request.form.get('birth_year') birth_month = request.form.get('birth_month') birth_day = request.form.get('birth_day') birthday_unix_time = birthday_to_unix_time(birth_year, birth_month, birth_day) introduction = request.form.get('introduction') qq = str(request.form.get('qq')) if not qq.isdigit() or len(qq) > 11 or len(qq) < 5: return 'error_qq' mobile = str(request.form.get('mobile')) if not mobile.isdigit() or len(mobile) != 11: return 'error_mobile' website = request.form.get('website') department_id = int(request.form.get('department_id')) db_users.Users().update_user_profile(username=session['username'], sex=sex, birthday=birthday_unix_time, department_id=department_id, introduction=introduction, qq=qq, mobile=mobile, website=website) return 'success' return 'error'
def add_topic_focus(): if is_login(): user = db_users.Users().get_user(session['username']) topic_id = request.form.get('topic_id') db_topic_focus.Topic_focus().add_focus_topic(user.uid, topic_id) return 'success' return 'error'
def topic_detail(topic_id): if request.method == 'GET': topic = db_topics.Topics().get_topic_by_id(topic_id) first_page_datas = get_topic_detail_question_datas(page_num=1, page_size=15, topic_id=topic_id) focus_count = db_topic_focus.Topic_focus().get_foucs_count(topic_id) focus_users = db_topics.Topics().get_focus_users(topic_id) question_count = db_topic_question.Topic_question().get_question_count(topic_id) c_time = timestamp_datetime(time()) if is_login(): user = db_users.Users().get_user(session['username']) return render_template('login/login-topic_detail.html', has_focus=db_topic_focus.Topic_focus().user_focus_topic(user.uid,topic_id), user=user, topic=topic, datas=first_page_datas, focus_count=focus_count, focus_users=focus_users, question_count=question_count, c_time=c_time) return render_template('topic_detail.html', topic=topic, datas=first_page_datas, focus_count=focus_count, focus_users=focus_users, question_count=question_count, c_time=c_time) elif request.method == 'POST': return 'error'
def add_question_focus(): if is_login(): user = db_users.Users().get_user(session['username']) question_id = request.form.get('question_id') db_question_focus.Question_focus().add_focus_question(user.uid, question_id=question_id, cnt=0) return 'success' return 'error'
def publish_question(): if is_login(): if request.method == 'POST': title = request.form.get('title') content = request.form.get('content') topics = request.form.getlist('topics[]') is_anonymous = int(request.form.get('anonymous')) if title == '': return 'empty_title' if not topics: return 'empty_topics' uid = db_users.Users().get_uid_by_username(session['username']) # 在question表中插入问题 question_id = db_questions.Questions().publish( questioner_uid=uid, title=title, content=content, is_anonymous=is_anonymous) # 把问题所属的话题加入表中 for topic in topics: topic_id = db_topics.Topics().get_topic_id_by_name(topic) db_topic_questions.Topic_question().add_to_topic( question_id=question_id, topic_id=topic_id) # 用户关注该问题 db_question_focus.Question_focus().add_focus_question(uid=uid, question_id=question_id, cnt=1) # 用户问题数加一 db_users.Users().add_question_count(session['username']) return str(question_id) return redirect('/')
def cancel_question_focus(): if is_login(): user = db_users.Users().get_user(session['username']) question_id = request.form.get('question_id') db_question_focus.Question_focus().question_cancel_focus(question_id, user.uid) return 'success' return 'error'
def answer(): if is_login(): question_id = int(request.form.get('question_id')) answer_content = request.form.get('answer_content') is_anonymous = int(request.form.get('is_anonymous')) focus_question = int(request.form.get('focus_question')) answer_user = db_users.Users().get_user(session['username']) # 判断是否已经回答过该问题 if db_answers.Answers().answered(uid=answer_user.uid, question_id=question_id): return 'answered' # 回复编辑器自带<p><br></p>标签 if len(answer_content) <= 1: return 'empty_content' # 添加答案 db_answers.Answers().add_answer(question_id=question_id, answer_uid=answer_user.uid, content=answer_content, is_anonymous=is_anonymous) # 答复者是否关注该问题 if focus_question and not db_question_focus.Question_focus().question_focused(uid=answer_user.uid, question_id=question_id): focus_count = db_question_focus.Question_focus().get_question_foucs_count(question_id=question_id) db_question_focus.Question_focus().add_focus_question(uid=answer_user.uid, question_id=question_id, cnt=focus_count + 1) # 回答者答复数加一 db_users.Users().add_answer_count(session['username']) return 'success' return 'error'
def search(keyword): questions = db_questions.Questions().get_questions_by_keyword(keyword) if is_login(): user = db_users.Users().get_user(session['username']) return render_template('login/search.html', user=user, questions=questions) return render_template('search.html', questions=questions)
def question(id): related_questions = db_questions.Questions().get_ten_related_questions(id) db_questions.Questions().add_question_view_count(id) question = db_questions.Questions().get_question_by_id(id) publish_time = get_past_time(question.publish_time) answer_count = db_answers.Answers().get_answer_count(question.question_id) questioner = db_users.Users().get_user_by_id(uid=question.questioner_uid) question_focus_cnt = db_question_focus.Question_focus().get_question_foucs_count(id) answers = db_answers.Answers().get_all_answer(id) answer_users = [] for answer in answers: answer_users.append(db_users.Users().get_user_by_id(answer.answer_uid)) # 合并answers和answer_users answers_and_users = [] for i in range(len(answers)): answer_and_user = { 'uid': answers[i].answer_uid, 'content': answers[i].content, 'username': answer_users[i].username, 'avatar_url': answer_users[i].avatar_url, 'introduction': answer_users[i].introduction, 'is_anonymous': answers[i].is_anonymous } answers_and_users.append(answer_and_user) if question: topic_ids = db_topic_questions.Topic_question().get_topics_by_id(question_id=question.question_id) topics = [] for topic_id in topic_ids: temp_dict = {'topic_id': topic_id, 'name': db_topics.Topics().get_topic_name_by_id(topic_id)} topics.append(temp_dict) if is_login(): user = db_users.Users().get_user(session['username']) question_focused = db_question_focus.Question_focus().question_focused(id, uid=user.uid) if len(related_questions) > 5: five_related_questions = related_questions[0:5] else: five_related_questions = related_questions return render_template('login/login-question_detail.html', question=question, topics=topics, user=user, question_focus_cnt=question_focus_cnt, questioner=questioner, answers_and_users=answers_and_users, publish_time=publish_time, answer_count=answer_count, related_questions=five_related_questions, question_focused=question_focused) return render_template('question_detail.html', question=question, topics=topics, question_focus_cnt=question_focus_cnt, questioner=questioner, answers_and_users=answers_and_users, publish_time=publish_time, answer_count=answer_count, related_questions=related_questions) return '没有这个问题'
def update_question(question_id): if is_login(): if request.method == 'POST': return 'success' else: user = db_users.Users().get_user(session['username']) question = db_questions.Questions().get_question_by_id(question_id) return render_template('login/publish.html', user=user, question=question) return redirect('/')
def question_focus(): if is_login(): user = db_users.Users().get_user(session['username']) uid=user.uid question_focus=db_question_focus.Question_focus().get_user_focus_questions(session['username']) return render_template('login/all_focus.html', user=user) else: return redirect('/')
def user_add_topic(): if is_login(): topic_name = request.form.get('topic_name') if db_topics.Topics().is_exist_topic_name(topic_name): return 'existed' if not topic_name or topic_name.isspace(): return 'empty' db_topics.Topics().add_topic(name=topic_name, introduction=topic_name) return 'success' return 'error'
def message_detail(session_id): if is_login(): user = db_users.Users().get_user(session['username']) if db_message.Message().is_user_session(session_id, user.uid): message_datas = db_message.Message().get_messages_by_session_id(session_id) return render_template('login/message_detail.html', user=user, datas=message_datas, session_id=session_id) return redirect('/') return redirect('/')
def dynamic(): if is_login(): hot_users = db_users.Users().get_top3_users() user = db_users.Users().get_user(session['username']) datas = get_dynamic_datas_by_page(page_num=1, page_size=10, uid=user.uid) topics = db_topics.Topics().get_3_topics(user.uid) return render_template('login/login-dynamic.html', user=user, datas=datas, hot_users=hot_users, topics=topics) return redirect('/')
def message(): if is_login() and request.method == 'GET': user = db_users.Users().get_user(session['username']) message_datas = db_message.Message().get_messages(user.uid) return render_template('login/message.html', user=user, datas=message_datas) elif is_login() and request.method == 'POST': user = db_users.Users().get_user(session['username']) recipient_name = request.form.get('recipient') content = request.form.get('content') if not len(content): return 'empty_content' if db_users.Users().is_exist_username(recipient_name): recipient = db_users.Users().get_user(recipient_name) db_message.Message().send_new_session(sender_uid=user.uid, recipient_uid=recipient.uid, content=content) return 'success' else: return 'not_exist_user' return redirect('/')
def get(self, request, *args, **kwargs): staff = is_login(request) leaves = LeaveTable.objects.filter(staff=staff) data = {'status': 200, 'msg': '您的请假条如下所示:', 'leave': []} for leave in leaves: data['leave'].append({ 'id': leave.id, 'staff': leave.staff.staff_name, 'department': leave.department.dp_name, 'leave_start_datetime': leave.leave_start_datetime, 'leave_days': leave.leave_days, 'is_approval': leave.is_approval }) return Response(data)
def upload_avatar(): if is_login(): upload_folder = 'whuDa/static/img/avatar' allowed_extensions = set(['png', 'jpg', 'jpeg', 'gif']) avatar = request.files['file'] if avatar and '.' in avatar.filename and avatar.filename.rsplit('.', 1)[1] in allowed_extensions: filename = session['username'] + '-max.' + avatar.filename.rsplit('.', 1)[1] avatar_filename = session['username'] + '.' + avatar.filename.rsplit('.', 1)[1] avatar.save(os.path.join(upload_folder, filename)) # 存图片之后进行缩放处理 resize_pic(os.path.join(upload_folder, filename), os.path.join(upload_folder, avatar_filename), 100, 100) db_users.Users().update_avatar_url(session['username'], 'static/img/avatar/' + avatar_filename) return 'success' return 'error'
def answer_update(): if is_login(): import whuDa.model.answers as db_answers answer_id = int(request.form.get('answer_id')) type_ = request.form.get('type') user = db_users.Users().get_user(session['username']) if type_ == 'agree': db_answer_agree.Anser_agree().add_agree(user.uid, answer_id) db_users.Users().update_user_agree(db_answers.Answers().get_answer_uid(answer_id)) if type_ == 'disagree': db_answer_agree.Anser_agree().delete_agree(user.uid, answer_id) db_users.Users().update_user_agree(db_answers.Answers().get_answer_uid(answer_id), decrease=True) return 'success' return 'error'
def send_message(): if is_login(): sender = db_users.Users().get_user(session['username']) recipient_name = request.form.get('recipient') recipient = db_users.Users().get_user(recipient_name) session_id = int(request.form.get('session_id')) content = request.form.get('content') if not content: return 'empty_content' db_message.Message().send_message(session_id=session_id, sender_uid=sender.uid, recipient_uid=recipient.uid, content=content) return 'success' return redirect('/')
def setting(): if is_login(): dates = { 'year': [y for y in range(1900, 1+get_date(time())['year'])], 'month': [m for m in range(1, 13)], 'day': [d for d in range(1, 32)]} birthday = db_users.Users().get_birthday_dict(db_users.Users().get_uid_by_username(session['username'])) departments = db_department.Department().get_all_department() user = db_users.Users().get_user(session['username']) return render_template('login/user_setting.html', user=user, departments=departments, dates=dates, birthday=birthday) return redirect('/')
def all_users(): hot_users = db_users.Users().get_top5_users() pagination = page_html(total_count=db_users.Users().get_users_count(), page_size=15, current_page=1, url='all_users/page') if is_login(): user = db_users.Users().get_user(session['username']) return render_template('login/login-all_users.html', user=user, all_users_datas=db_users.Users().get_all_users(), pagination=pagination, hot_users=hot_users) return render_template('all_users.html', all_users_datas=db_users.Users().get_all_users(), pagination=pagination, hot_users=hot_users)
def wait_reply_page(page_num): hot_topics = db_topics.Topics().get_top5_topics() hot_users = db_users.Users().get_top5_users() pagination = page_html(total_count=db_questions.Questions().get_wait_reply_questions_count(), page_size=15, current_page=page_num, url='wait-reply/page') if is_login(): user = db_users.Users().get_user(session['username']) return render_template('login/login-wait_reply.html', user=user, datas=get_wait_reply_datas(page_num=page_num, page_size=15), pagination=pagination, hot_users=hot_users, hot_topics=hot_topics) return render_template('wait_reply.html', datas=get_wait_reply_datas(page_num=page_num, page_size=15), pagination=pagination, hot_users=hot_users, hot_topics=hot_topics)
def hot(): hot_topics = db_topics.Topics().get_top5_topics() hot_users = db_users.Users().get_top5_users() pagination = page_html(total_count=db_questions.Questions().get_questions_count(), page_size=15, current_page=1, url='hot/page') if is_login(): user = db_users.Users().get_user(session['username']) return render_template('login/login-hot_questions.html', user=user, datas=get_hot_datas(page_num=1, page_size=15), pagination=pagination, hot_topics=hot_topics, hot_users=hot_users) return render_template('hot_questions.html', datas=get_hot_datas(page_num=1, page_size=15), pagination=pagination, hot_topics=hot_topics, hot_users=hot_users)
def update_question(): if is_login(): title = request.form.get('title') content = request.form.get('content') topics = request.form.getlist('topics[]') question_id = int(request.form.get('question_id')) if title == '': return 'empty_title' if not topics: return 'empty_topics' db_questions.Questions().update_question(question_id, title=title, content=content) db_topic_questions.Topic_question().delete_question_topics(question_id) # 把问题所属的话题加入表中 for topic in topics: topic_id = db_topics.Topics().get_topic_id_by_name(topic) db_topic_questions.Topic_question().add_to_topic( question_id=question_id, topic_id=topic_id) return str(question_id) return 'error'
def discover(page_num): hot_topics = db_topics.Topics().get_top5_topics() hot_users = db_users.Users().get_top5_users() pagination = page_html(total_count=db_questions.Questions().get_questions_count(), page_size=15, current_page=page_num, url='discover/page') if is_login(): user = db_users.Users().get_user(session['username']) focus_topics = db_topic_focus.Topic_focus().get_user_focus_topics(user.uid) return render_template('login/login-discover.html', user=user, datas=get_discover_datas(page_num=page_num, page_size=15), pagination=pagination, hot_topics=hot_topics, hot_users=hot_users, focus_topics=focus_topics) return render_template('index.html', datas=get_discover_datas(page_num=page_num, page_size=15), pagination=pagination, hot_topics=hot_topics, hot_users=hot_users)
def logout(): if is_login(): session.pop('username', None) return redirect('/')
def setting_security(): if is_login(): user = db_users.Users().get_user(session['username']) return render_template('login/change_pass.html', user=user) return redirect('/')
def people(name): db_users.Users().increase_view_count(name) people = db_users.Users().get_user(username=name) temp_answer_datas = get_user_answer_datas(name) temp_question_datas = get_user_question_datas(name) temp_focus_topic_datas = db_topic_focus.Topic_focus().get_user_focus_topics(db_users.Users().get_uid_by_username(name)) temp_focus_question_datas = get_user_focus_question_datas(name) temp_latest_activity_datas = get_user_latest_activity_datas(username=name) temp_question_list_datas = temp_question_datas temp_answer_list_datas = temp_answer_datas focus_question_list_datas = get_user_focus_questions_list_datas(people.uid) temp_latest_activity_list_datas = temp_latest_activity_datas if len(temp_answer_datas) > 5: answer_datas = temp_answer_datas[0:5] else: answer_datas = temp_answer_datas if len(temp_question_datas) > 5: question_datas = temp_question_datas[0:5] else: question_datas = temp_question_datas if len(temp_focus_topic_datas) > 5: focus_topic_datas = temp_focus_topic_datas[0:5] else: focus_topic_datas = temp_focus_topic_datas if len(temp_focus_question_datas) > 5: focus_question_datas = temp_focus_question_datas[0:5] else: focus_question_datas = temp_focus_question_datas if len(temp_latest_activity_datas) > 5: latest_activity_datas = temp_latest_activity_datas[0:5] else: latest_activity_datas = temp_latest_activity_datas if len(temp_question_list_datas) > 15: question_list_datas = temp_question_list_datas[0:15] else: question_list_datas = temp_question_list_datas if len(temp_answer_list_datas) > 15: answer_list_datas = temp_answer_list_datas[0:15] else: answer_list_datas = temp_answer_list_datas if len(temp_latest_activity_list_datas) > 15: latest_activity_list_datas = temp_latest_activity_list_datas[0:15] else: latest_activity_list_datas = temp_latest_activity_list_datas if is_login(): user = db_users.Users().get_user(session['username']) return render_template('login/login-person_detail.html', user=user, people=people, answer_datas=answer_datas, question_datas=question_datas, latest_activity_datas=latest_activity_datas, focus_topic_datas=focus_topic_datas, focus_question_datas=focus_question_datas, question_focus_count=db_question_focus.Question_focus().get_user_focus_question_count(name), question_list_datas=question_list_datas, answer_list_datas=answer_list_datas, focus_question_list_datas=focus_question_list_datas, latest_activity_list_datas=latest_activity_list_datas) return render_template('person_detail.html', people=people, answer_datas=answer_datas, question_datas=question_datas, latest_activity_datas=latest_activity_datas, focus_topic_datas=focus_topic_datas, focus_question_datas=focus_question_datas, question_focus_count=db_question_focus.Question_focus().get_user_focus_question_count(name), question_list_datas=question_list_datas, answer_list_datas=answer_list_datas, focus_question_list_datas=focus_question_list_datas, latest_activity_list_datas=latest_activity_list_datas)