update-branch

merge-requests/2/head
王宇洋 3 years ago
commit c8081f149f

@ -6,11 +6,13 @@ from flask import render_template, redirect, url_for, flash, request, \
from flask_login import login_required, current_user
from sqlalchemy.sql.functions import func
from werkzeug.utils import secure_filename
from . import main
from .forms import UploadPhotoForm, CommentForm, PostMdForm
from .. import db, csrf
from ..models import Permission, User, Post, Comment, Notification, Like, Transaction, Activity, Collect, Want, Question
from ..decorators import permission_required
from ..util import check_text
@main.route('/', methods=['GET', 'POST'])
@ -282,15 +284,16 @@ def user(username):
wanting = user.wanted_Activity
posts = user.posts.order_by(Post.timestamp.desc())
questions=user.questions.order_by(Question.timestamp.desc())
questions = user.questions.order_by(Question.timestamp.desc())
liking_posts = [{'post': item.liked_post, 'timestamp': item.timestamp} for item in
liking.order_by(Like.timestamp.desc())]
transactions = user.transactions.order_by(Transaction.timestamp.desc())
activities = user.activities.order_by(Activity.timestamp.desc())
collects = collecting.order_by(Collect.timestamp.desc())
wants = wanting.order_by(Want.timestamp.desc())
return render_template('user.html', user=user, posts=posts, questions=questions,liking_posts=liking_posts, activities=activities,
transactionsInProfile=transactions, collects=collects, wants=wants, concernQuestions=questions,concernAnswers=posts )
return render_template('user.html', user=user, posts=posts, questions=questions, liking_posts=liking_posts,
activities=activities,
transactionsInProfile=transactions, collects=collects, wants=wants, )
@main.route('/notification')
@ -458,6 +461,27 @@ def delete_post_inProfile(post_id):
return redirect(url_for('.user', username=current_user.username))
@main.route('/send_message/<username>/<message>')
@login_required
def send_message(username, message):
currentUserObj: User = current_user
user: User = User.query.filter_by(username=username).first()
if user is None:
flash('Invalid user.')
return redirect(url_for('.index'))
check = check_text(message)
print(check)
if check["conclusionType"] != 1:
data = check['data'][0]["msg"]
flash('Your message violated the rule of our web site. '+ message + " " + data)
return redirect(url_for('.user', username=username))
currentUserObj.send_message(user, message)
db.session.commit()
flash('You have sent:' + message + " To: " + username)
return redirect(url_for('.user', username=username))
@main.route('/follow/<username>')
@login_required
@permission_required(Permission.FOLLOW)
@ -516,24 +540,21 @@ def like(post_id):
@csrf.exempt
@permission_required(Permission.FOLLOW)
def AJAXlike(post_id):
if(current_user is None):
if (current_user is None):
return redirect(url_for("/"))
post = Post.query.filter_by(id=post_id).first()
if post is not None:
if(current_user.is_liking(post)):
if (current_user.is_liking(post)):
current_user.dislike(post)
post.dislike(current_user)
db.session.commit()
return jsonify({'code': 200, 'like': False, 'num':post.liker.count()})
return jsonify({'code': 200, 'like': False, 'num': post.liker.count()})
else:
current_user.like(post)
post.like(current_user)
post.recent_activity = datetime.utcnow()
db.session.commit()
return jsonify({'code': 200, 'like': True, 'num':post.liker.count()})
return jsonify({'code': 200, 'like': True, 'num': post.liker.count()})
@main.route('/likeinpost/<post_id>')
@ -692,10 +713,10 @@ def new_question_md():
return render_template('new_posting/new_mdpost.html', form=form)
body_html = request.form['test-editormd-html-code']
question = Question(title=title,
body=body,
body_html=body_html,
is_anonymous=is_anonymous,
author=current_user._get_current_object())
body=body,
body_html=body_html,
is_anonymous=is_anonymous,
author=current_user._get_current_object())
question.recent_activity = datetime.utcnow()
db.session.add(question)
db.session.commit()
@ -735,7 +756,7 @@ def new_answer_md(question_id):
flash("You have just posted a posting anonymously", 'success')
else:
flash("You have just posted a posting", 'success')
return redirect(url_for('.view_question',question_id=question_id))
return redirect(url_for('.view_question', question_id=question_id))
return render_template('new_posting/new_mdanswer.html', form=form)
@ -763,22 +784,8 @@ def view_question(question_id):
item.important = li_num
hot_activity = li.order_by(Activity.important.desc())
return render_template('Posts/question.html', posts1=posts1, posts5=hot,
pagination1=pagination1, hot_activity=hot_activity, question=question,question_id=question_id)
pagination1=pagination1, hot_activity=hot_activity, question=question,
question_id=question_id)
else:
inf = request.form["search"]
return redirect(url_for('.query', content=inf))
@main.route('/savequestions/<question_id>')
def save_question(question_id):
question = Question.query.filter_by(id=question_id).first()
if question is None:
flash('Invalid post.')
return redirect(url_for('.index'))
if current_user.is_savingquestion(question):
flash('You are already liking this post.')
return redirect(url_for('.post', id=question_id))
current_user.savequestion(question)
db.session.commit()
flash('You are now liking this post')
return redirect(url_for('.view_question', question_id=question_id))

@ -275,6 +275,13 @@ class User(UserMixin, db.Model):
return '{url}/{hash}?s={size}&d={default}&r={rating}'.format(
url=url, hash=hash, size=size, default=default, rating=rating)
def send_message(self, user, message):
n = Notification(receiver_id=user.id, timestamp=datetime.utcnow(),
username=self.username, action=" has sent you a message: " + message + " ",
object="you")
db.session.add(n)
db.session.commit()
def follow(self, user):
if not self.is_following(user):
f = Follow(follower=self, followed=user)

@ -5,7 +5,7 @@
{% block title %}Profile{% endblock %}
{% block head %}
{{ super() }}
{{ super() }}
<!-- Custom styles for this template -->
<link href="{{ url_for('static',filename='profile.css') }}" rel="stylesheet">
@ -13,131 +13,144 @@
{% block page_content %}
<div class="container">
<div class="bg-profile" style="height: 280px">
</div>
<div class="container col-sm-12 info">
<div class="col-md-2" style="padding: 0; margin: 20px 20px 20px 110px">
<div class="photo">
{% if user.avatar_img %}
<img class="img-rounded profile-thumbnail" src="{{ user.avatar_img }}" alt="avatar" style="width: 130px; height: 130px">
{% else %}
<img class="img-rounded profile-thumbnail" src="{{ user.gravatar(size=130) }}" alt="avatar">
{% endif %}
</div>
<div>
<div class="detail">
<span class="glyphicon glyphicon-calendar" aria-hidden="true"></span>
<span>Joined {{ moment(user.member_since).format('L') }}</span>
</div>
<div class="detail">
<span class="glyphicon glyphicon-edit" aria-hidden="true"></span>
<span>Last seen {{ moment(user.last_seen).fromNow() }}</span>
<div class="container">
<div class="bg-profile" style="height: 280px">
</div>
<div class="container col-sm-12 info">
<div class="col-md-2" style="padding: 0; margin: 20px 20px 20px 110px">
<div class="photo">
{% if user.avatar_img %}
<img class="img-rounded profile-thumbnail" src="{{ user.avatar_img }}" alt="avatar"
style="width: 130px; height: 130px">
{% else %}
<img class="img-rounded profile-thumbnail" src="{{ user.gravatar(size=130) }}" alt="avatar">
{% endif %}
</div>
<div>
<div class="detail">
<span class="glyphicon glyphicon-calendar" aria-hidden="true"></span>
<span>Joined {{ moment(user.member_since).format('L') }}</span>
</div>
<div class="detail">
<span class="glyphicon glyphicon-edit" aria-hidden="true"></span>
<span>Last seen {{ moment(user.last_seen).fromNow() }}</span>
</div>
<div class="follow">
<a href="{{ url_for('.followers', username=user.username) }}">Followers: <span class="badge">{{ user.followers.count() - 1 }}</span></a>&nbsp;
<a href="{{ url_for('.followed_by', username=user.username) }}">Following: <span class="badge">{{ user.following.count() - 1 }}</span></a>
<div class="follow">
<a href="{{ url_for('.followers', username=user.username) }}">Followers: <span
class="badge">{{ user.followers.count() - 1 }}</span></a>&nbsp;
<a href="{{ url_for('.followed_by', username=user.username) }}">Following: <span
class="badge">{{ user.following.count() - 1 }}</span></a>
</div>
</div>
</div>
</div>
<div class="col-sm-offset-2 col-md-6" style="margin-top: 35px;margin-left: 80px;">
<ul class="list-group">
<li class="list-group-item info-box">
<h3 style="display: inline;">{{ user.username }}
{% if user.can(Permission.ACTIVITY) %}
<svg class="icon" viewBox="0 0 1024 1024" width="22" height="22">
<path d="M959.786667 148.906667l-44.330667-0.725333c-1.024 0-100.437333-2.048-203.050667-41.728-105.301333-40.789333-173.141333-87.552-173.781333-88.021333L511.872 0 485.248 18.474667C484.608 18.901333 416.768 65.706667 311.466667 106.453333 208.938667 146.218667 109.482667 148.181333 108.544 148.181333L64 148.906667l0 430.464C64 795.477333 355.328 1024 511.957333 1024 668.714667 1024 960 795.477333 960 579.370667L959.786667 148.906667zM321.877333 772.48 321.877333 355.413333 282.112 355.413333 282.112 317.482667 441.173333 317.482667l0 189.610667 200.192-189.610667 157.696 0L321.877333 772.48z" fill="#3688FF"></path>
</svg>
{% endif %}
</h3>
{% if current_user.can(Permission.FOLLOW) and user != current_user %}
<div class="col-sm-offset-2 col-md-6" style="margin-top: 35px;margin-left: 80px;">
<ul class="list-group">
<li class="list-group-item info-box">
<h3 style="display: inline;">{{ user.username }}
{% if user.can(Permission.ACTIVITY) %}
<svg class="icon" viewBox="0 0 1024 1024" width="22" height="22">
<path d="M959.786667 148.906667l-44.330667-0.725333c-1.024 0-100.437333-2.048-203.050667-41.728-105.301333-40.789333-173.141333-87.552-173.781333-88.021333L511.872 0 485.248 18.474667C484.608 18.901333 416.768 65.706667 311.466667 106.453333 208.938667 146.218667 109.482667 148.181333 108.544 148.181333L64 148.906667l0 430.464C64 795.477333 355.328 1024 511.957333 1024 668.714667 1024 960 795.477333 960 579.370667L959.786667 148.906667zM321.877333 772.48 321.877333 355.413333 282.112 355.413333 282.112 317.482667 441.173333 317.482667l0 189.610667 200.192-189.610667 157.696 0L321.877333 772.48z"
fill="#3688FF"></path>
</svg>
{% endif %}
</h3>
{% if current_user.can(Permission.FOLLOW) and user != current_user %}
{% if not current_user.is_following(user) %}
<a href="{{ url_for('.follow', username=user.username) }}" class="btn btn-follow">Follow</a>
<a href="{{ url_for('.follow', username=user.username) }}"
class="btn btn-follow">Follow</a>
{% else %}
<a href="{{ url_for('.unfollow', username=user.username) }}" class="btn btn-unfollow" id="unfollow">Followed</a>
<a href="{{ url_for('.unfollow', username=user.username) }}" class="btn btn-unfollow"
id="unfollow">Followed</a>
{% endif %}
{% endif %}
</li>
<li class="list-group-item info-box" style="color: #727070;">
{{ user.about_me }}
</li>
<li class="list-group-item info-box detail">
<div class="col-sm-2 title">Email</div>
<div class="col-sm-10">{{ user.email }}</div>
</li>
<li class="list-group-item info-box detail">
<div class="col-sm-2 title">Grade</div>
<div class="col-sm-10">{{ user.grade }}</div>
</li>
<li class="list-group-item info-box detail">
<div class="col-sm-2 title">Collage</div>
<div class="col-sm-10">{{ user.college }}</div>
</li>
</ul>
</div>
{% if user == current_user %}
<div class="btn-group btn-group-sm set-info" >
<button type="button" class="btn btn-default" href="/edit-profile">
<a href="/edit-profile">Change my information</a>
</button>
{% endif %}
</li>
<li class="list-group-item info-box" style="color: #727070;">
{{ user.about_me }}
</li>
<li class="list-group-item info-box detail">
<div class="col-sm-2 title">Email</div>
<div class="col-sm-10">{{ user.email }}</div>
</li>
<li class="list-group-item info-box detail">
<div class="col-sm-2 title">Grade</div>
<div class="col-sm-10">{{ user.grade }}</div>
</li>
<li class="list-group-item info-box detail">
<div class="col-sm-2 title">Collage</div>
<div class="col-sm-10">{{ user.college }}</div>
</li>
<li class="list-group-item info-box detail">
<div class="input-private-message-box">
<input id="input-text-value" class="col-sm-10" type="text">
</div>
</li>
<li class="list-group-item info-box detail">
<div class="input-private-message-box">
<button class="col-sm-10" value="Send" onclick="send_message()">Send</button>
</div>
</li>
</ul>
</div>
{% endif %}
</div>
<div class="container col-sm-12 info">
<div class="tabbable">
<ul class="nav post-nav">
<li class="active" id="btn-1">
<a href="#panel-1" data-toggle="tab">My answers</a>
</li>
{% if user == current_user %}
<div class="btn-group btn-group-sm set-info">
<button type="button" class="btn btn-default" href="/edit-profile">
<a href="/edit-profile">Change my information</a>
</button>
</div>
{% endif %}
</div>
<div class="container col-sm-12 info">
<div class="tabbable">
<ul class="nav post-nav">
<li class="active" id="btn-1">
<a href="#panel-1" data-toggle="tab">My answers</a>
</li>
<li id="btn-7">
<a href="#panel-7" data-toggle="tab">My questions</a>
</li>
<li id="btn-2">
<a href="#panel-2" data-toggle="tab">Likes</a>
</li>
<a href="#panel-7" data-toggle="tab">My questions</a>
</li>
<li id="btn-2">
<a href="#panel-2" data-toggle="tab">Likes</a>
</li>
{% if user.can(Permission.ACTIVITY) %}
<li id="btn-4">
<a href="#panel-4" data-toggle="tab">MyAnnouncements</a>
</li>
</li>
{% else %}
<li id="btn-3">
<a href="#panel-3" data-toggle="tab">MyTransactions</a>
</li>
<li id="btn-6">
<a href="#panel-6" data-toggle="tab">ShoppingCart</a>
<a href="#panel-6" data-toggle="tab">ShoppingCart</a>
</li>
{% endif %}
<li id="btn-5">
<a href="#panel-5" data-toggle="tab">WantToGo</a>
</li>
<li id="btn-8">
<a href="#panel-8" data-toggle="tab">ConcernQuestion</a>
</li>
<li id="btn-9">
<a href="#panel-9" data-toggle="tab">ConcernAnswer</a>
</li>
</ul>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="panel-1">
<div class="tab-content">
<div class="tab-pane active" id="panel-1">
<ul class="posts list-unstyled">
{% include 'Posts/_postsInProfile.html' %}
{% include 'Posts/_postsInProfile.html' %}
</ul>
</div>
</div>
<div class="tab-pane active" id="panel-7">
<ul class="posts list-unstyled">
{% include 'Posts/_answersInProfile.html' %}
{% include 'Posts/_answersInProfile.html' %}
</ul>
</div>
<div class="tab-pane" id="panel-2">
</div>
<div class="tab-pane" id="panel-2">
<ul class="like_posts list-unstyled">
{% include 'Posts/_postsLikingInProfile.html' %}
{% include 'Posts/_postsLikingInProfile.html' %}
</ul>
</div>
</div>
{% if user.can(Permission.ACTIVITY) %}
<div class="tab-pane" id="panel-4">
<ul class="_activity list-unstyled">
@ -165,270 +178,171 @@
{% endfor %}
</ul>
</div>
<div class="tab-pane" id="panel-8">
<ul class="activity list-unstyled">
{% include 'Posts/_concernQuestionsInProfile.html' %}
</ul>
</div>
<div class="tab-pane" id="panel-9">
<ul class="activity list-unstyled">
{% include 'Posts/_concernAnswersInProfile.html' %}
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
var l1 = document.getElementById('btn-1')
var l2 = document.getElementById('btn-2')
var l3 = document.getElementById('btn-3')
var l4 = document.getElementById('btn-4')
var l5 = document.getElementById('btn-5')
var l6 = document.getElementById('btn-6')
var l7 = document.getElementById('btn-7')
var l8 = document.getElementById('btn-8')
var l9 = document.getElementById('btn-9')
var content1 = document.getElementById('panel-1')
var content2 = document.getElementById('panel-2')
var content3 = document.getElementById('panel-3')
var content4 = document.getElementById('panel-4')
var content5 = document.getElementById('panel-5')
var content6 = document.getElementById('panel-6')
var content7 = document.getElementById('panel-7')
var content8 = document.getElementById('panel-8')
var content9 = document.getElementById('panel-9')
l1.onclick = function () {
{#this.className = 'active'#}
content1.className = 'active'
l9.className=''
content9.className = 'tab-pane'
l8.className=''
content8.className='tab-pane'
l7.className=''
l2.className = ''
l5.className = ''
content7.className='tab-pane'
content2.className = 'tab-pane'
content5.className = 'tab-pane'
{% if user.can(Permission.ACTIVITY) %}
l4.className = ''
content4.className = 'tab-pane'
{% else %}
l3.className = ''
content3.className = 'tab-pane'
l6.className = ''
content6.className = 'tab-pane'
{% endif %}
<script>function send_message() {
}
console.log('hello');
$.ajax({
url: '/send_message/' + '{{ user.username }}' + '/' + $('#input-text-value').val(),
type: 'GET',
success: function (data) {
alert('Message sent successfully');
location.reload();
}
});
}
var l1 = document.getElementById('btn-1')
var l2 = document.getElementById('btn-2')
var l3 = document.getElementById('btn-3')
var l4 = document.getElementById('btn-4')
var l5 = document.getElementById('btn-5')
var l6 = document.getElementById('btn-6')
var l7 = document.getElementById('btn-7')
var content1 = document.getElementById('panel-1')
var content2 = document.getElementById('panel-2')
var content3 = document.getElementById('panel-3')
var content4 = document.getElementById('panel-4')
var content5 = document.getElementById('panel-5')
var content6 = document.getElementById('panel-6')
var content7 = document.getElementById('panel-7')
l1.onclick = function () {
{#this.className = 'active'#}
content7.className = ''
content1.className = 'active'
l7.className = ''
l2.className = ''
content7.className = 'tab-pane'
content2.className = 'tab-pane'
l5.className = ''
content5.className = 'tab-pane'
l8.onclick = function () {
{#this.className = 'active'#}
content8.className='active'
{% if user.can(Permission.ACTIVITY) %}
l4.className = ''
content4.className = 'tab-pane'
{% else %}
l3.className = ''
content3.className = 'tab-pane'
l6.className = ''
content6.className = 'tab-pane'
{% endif %}
l7.className=''
content7.className = 'tab-pane'
l9.className=''
content9.className='tab-pane'
}
l1.className=''
content1.className='tab-pane'
l2.className = ''
content2.className = 'tab-pane'
l5.className = ''
content5.className = 'tab-pane'
l7.onclick = function () {
{#this.className = 'active'#}
{#content1.className=''#}
content7.className = 'active'
{% if user.can(Permission.ACTIVITY) %}
l4.className = ''
content4.className = 'tab-pane'
{% else %}
l3.className = ''
content3.className = 'tab-pane'
l6.className = ''
content6.className = 'tab-pane'
{% endif %}
}
l1.className = ''
l2.className = ''
content2.className = 'tab-pane'
content1.className = 'tab-pane'
l5.className = ''
content5.className = 'tab-pane'
l9.onclick = function () {
{#this.className = 'active'#}
content9.className='active'
{% if user.can(Permission.ACTIVITY) %}
l4.className = ''
content4.className = 'tab-pane'
{% else %}
l3.className = ''
content3.className = 'tab-pane'
l6.className = ''
content6.className = 'tab-pane'
{% endif %}
}
l7.className=''
content7.className = 'tab-pane'
l8.className=''
content8.className='tab-pane'
l2.onclick = function () {
this.className = 'active'
content2.className = 'active'
l1.className=''
content1.className='tab-pane'
l2.className = ''
content2.className = 'tab-pane'
l5.className = ''
content5.className = 'tab-pane'
l1.className = ''
content1.className = 'tab-pane'
l5.className = ''
content5.className = 'tab-pane'
{% if user.can(Permission.ACTIVITY) %}
l4.className = ''
content4.className = 'tab-pane'
{% else %}
l3.className = ''
content3.className = 'tab-pane'
l6.className = ''
content6.className = 'tab-pane'
{% endif %}
}
{% if user.can(Permission.ACTIVITY) %}
l4.className = ''
content4.className = 'tab-pane'
{% else %}
l3.className = ''
content3.className = 'tab-pane'
l6.className = ''
content6.className = 'tab-pane'
{% endif %}
}
l7.onclick = function () {
{#this.className = 'active'#}
content7.className = 'active'
l5.onclick = function () {
this.className = 'active'
content5.className = 'active'
l9.className=''
content9.className = 'tab-pane'
l8.className=''
content8.className='tab-pane'
l1.className=''
l2.className = ''
l5.className = ''
content2.className = 'tab-pane'
content1.className='tab-pane'
content5.className = 'tab-pane'
l1.className = ''
content1.className = 'tab-pane'
l2.className = ''
content2.className = 'tab-pane'
{% if user.can(Permission.ACTIVITY) %}
l4.className = ''
content4.className = 'tab-pane'
{% else %}
l3.className = ''
content3.className = 'tab-pane'
l6.className = ''
content6.className = 'tab-pane'
{% endif %}
}
{% if user.can(Permission.ACTIVITY) %}
l4.className = ''
content4.className = 'tab-pane'
{% else %}
l3.className = ''
content3.className = 'tab-pane'
l6.className = ''
content6.className = 'tab-pane'
{% endif %}
}
l2.onclick = function () {
{% if user.can(Permission.ACTIVITY) %}
l4.onclick = function () {
this.className = 'active'
content2.className = 'active'
content4.className = 'active'
l9.className=''
content9.className = 'tab-pane'
l8.className=''
content8.className='tab-pane'
l7.className = ''
content7.className= 'tab-pane'
l1.className = ''
content1.className = 'tab-pane'
l2.className = ''
content2.className = 'tab-pane'
l5.className = ''
content5.className = 'tab-pane'
{% if user.can(Permission.ACTIVITY) %}
l4.className = ''
content4.className = 'tab-pane'
{% else %}
l3.className = ''
content3.className = 'tab-pane'
l6.className = ''
content6.className = 'tab-pane'
{% endif %}
}
l5.onclick = function () {
{% else %}
l3.onclick = function () {
this.className = 'active'
content5.className = 'active'
content3.className = 'active'
l9.className=''
content9.className = 'tab-pane'
l8.className=''
content8.className='tab-pane'
l7.className = ''
content7.className= 'tab-pane'
l1.className = ''
content1.className = 'tab-pane'
l2.className = ''
content2.className = 'tab-pane'
{% if user.can(Permission.ACTIVITY) %}
l4.className = ''
content4.className = 'tab-pane'
{% else %}
l3.className = ''
content3.className = 'tab-pane'
l6.className = ''
content6.className = 'tab-pane'
{% endif %}
l5.className = ''
content5.className = 'tab-pane'
l6.className = ''
content6.className = 'tab-pane'
}
l6.onclick = function () {
this.className = 'active'
content6.className = 'active'
{% if user.can(Permission.ACTIVITY) %}
l4.onclick = function () {
this.className = 'active'
l9.className=''
content9.className = 'tab-pane'
l8.className=''
content8.className='tab-pane'
content4.className = 'active'
l7.className = ''
content7.className= 'tab-pane'
l1.className = ''
content1.className = 'tab-pane'
l2.className = ''
content2.className = 'tab-pane'
l5.className = ''
content5.className = 'tab-pane'
}
{% else %}
l3.onclick = function () {
this.className = 'active'
content3.className = 'active'
l9.className=''
content9.className = 'tab-pane'
l8.className=''
content8.className='tab-pane'
l1.className = ''
content1.className = 'tab-pane'
l2.className = ''
content2.className = 'tab-pane'
l5.className = ''
content5.className = 'tab-pane'
l6.className = ''
content6.className = 'tab-pane'
}
l6.onclick = function () {
this.className = 'active'
content6.className = 'active'
l9.className=''
content9.className = 'tab-pane'
l8.className=''
content8.className='tab-pane'
l7.className = ''
content7.className= 'tab-pane'
l1.className = 'tab-pane'
content1.className = 'tab-pane'
l2.className = 'tab-pane'
content2.className = 'tab-pane'
l3.className = ''
content3.className = 'tab-pane'
l5.className = ''
content5.className = 'tab-pane'
}
{% endif %}
l1.className = 'tab-pane'
content1.className = 'tab-pane'
l2.className = 'tab-pane'
content2.className = 'tab-pane'
l3.className = ''
content3.className = 'tab-pane'
l5.className = ''
content5.className = 'tab-pane'
}
{% endif %}
</script>

@ -0,0 +1,14 @@
from aip import AipContentCensor
""" 你的 APPID AK SK """
APP_ID = '11752086'
API_KEY = 'OfTS5Nkkbo3Qt9VuZlK0izao'
SECRET_KEY = 'sPUzVHGlHYCcqTxmcaZOINk2OOBMZlZI'
client = AipContentCensor(APP_ID, API_KEY, SECRET_KEY)
print(client.getVersion())
def check_text(text: str):
""" 调用文本审核接口 """
result = client.textCensorUserDefined(text)
return result

Binary file not shown.

@ -22,7 +22,12 @@ from geetest_config import GEETEST_ID, GEETEST_KEY, REDIS_HOST, REDIS_PORT, CYCL
from sdk.geetest_lib import GeetestLib
geetest_dict = {}
# 发送bypass请求获取bypass状态并进行缓存
def check_bypass_status():
response = ""
@ -41,17 +46,16 @@ def check_bypass_status():
geetest_dict[GEETEST_BYPASS_STATUS_KEY] = bypass_status
print("bypass状态已经获取并存入redis当前状态为-{}".format(bypass_status))
check_bypass_status()
@app.shell_context_processor
def make_shell_context():
return dict(db=db, User=User, Role=Role, Students=Students, Permission=Permission, Post=Post,
Comment=Comment, Like=Like, Notification=Notification, Transaction=Transaction, Activity=Activity)
# 从缓存中取出当前缓存的bypass状态(success/fail)
def get_bypass_cache():
bypass_status_cache = geetest_dict[GEETEST_BYPASS_STATUS_KEY]
@ -103,5 +107,7 @@ def favicon():
# admin.add_view(ModelView(Activity, db.session, name="Activities", endpoint="Activities"))
# admin.add_view(FileAdmin("."))
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0')

@ -1,5 +1,6 @@
alembic==1.7.5
arrow==1.2.1
baidu-aip==2.2.18.0
binaryornot==0.4.4
bleach==3.1.4
blinker==1.4
@ -33,6 +34,7 @@ Markdown==3.2.1
MarkupSafe==2.0.1
poyo==0.5.0
python-dateutil==2.8.2
python-dotenv==0.19.2
python-slugify==5.0.2
requests==2.26.0
six==1.16.0

Loading…
Cancel
Save