Add user cards and badges, Closes #25

This commit is contained in:
Jeremy Zhang
2017-12-07 06:49:32 +00:00
parent 3af5dc703a
commit 204858d011
12 changed files with 293 additions and 10 deletions

View File

@ -4,6 +4,7 @@ from functools import wraps
from titanembeds.database import db, get_administrators_list, Cosmetics, Guilds, UnauthenticatedUsers, UnauthenticatedBans, TitanTokens, TokenTransactions, get_titan_token, set_titan_token
from titanembeds.oauth import generate_guild_icon_url
import datetime
import json
admin = Blueprint("admin", __name__)
@ -39,6 +40,7 @@ def cosmetics_post():
css = request.form.get("css", None)
css_limit = int(request.form.get("css_limit", 0))
guest_icon = request.form.get("guest_icon", None)
badges = request.form.get("badges", None)
entry = db.session.query(Cosmetics).filter(Cosmetics.user_id == user_id).first()
if entry:
abort(409)
@ -51,6 +53,11 @@ def cosmetics_post():
if guest_icon is not None:
guest_icon = guest_icon.lower() == "true"
user.guest_icon = guest_icon
if badges is not None:
badges = badges.split(",")
if badges == [""]:
badges = []
user.badges = json.dumps(badges)
db.session.add(user)
db.session.commit()
return ('', 204)
@ -77,6 +84,7 @@ def cosmetics_patch():
css = request.form.get("css", None)
css_limit = request.form.get("css_limit", None)
guest_icon = request.form.get("guest_icon", None)
badges = request.form.get("badges", None)
entry = db.session.query(Cosmetics).filter(Cosmetics.user_id == user_id).first()
if not entry:
abort(409)
@ -88,8 +96,14 @@ def cosmetics_patch():
if guest_icon:
guest_icon = guest_icon.lower() == "true"
entry.guest_icon = guest_icon
if badges is not None:
badges = badges.split(",")
if badges == [""]:
badges = []
entry.badges = json.dumps(badges)
db.session.commit()
return ('', 204)
def prepare_guild_members_list(members, bans):
all_users = []
ip_pool = []

View File

@ -1,4 +1,4 @@
from titanembeds.database import db, Guilds, UnauthenticatedUsers, UnauthenticatedBans, AuthenticatedUsers, KeyValueProperties, GuildMembers, Messages, get_channel_messages, list_all_guild_members, get_guild_member, get_administrators_list
from titanembeds.database import db, Guilds, UnauthenticatedUsers, UnauthenticatedBans, AuthenticatedUsers, KeyValueProperties, GuildMembers, Messages, get_channel_messages, list_all_guild_members, get_guild_member, get_administrators_list, get_badges
from titanembeds.decorators import valid_session_required, discord_users_only
from titanembeds.utils import check_guild_existance, guild_accepts_visitors, guild_query_unauth_users_bool, get_client_ipaddr, discord_api, rate_limiter, channel_ratelimit_key, guild_ratelimit_key, user_unauthenticated, checkUserRevoke, checkUserBanned, update_user_status, check_user_in_guild, get_guild_channels, guild_webhooks_enabled, guild_unauthcaptcha_enabled
from titanembeds.oauth import user_has_permission, generate_avatar_url, check_user_can_administrate_guild
@ -429,6 +429,10 @@ def create_authenticated_user():
response.status_code = 403
return response
@api.route("/badges/<user_id>")
def badges(user_id):
return jsonify(get_badges(user_id))
def canCleanupDB():
canclean = False
if request.form.get("secret", None) == config['app-secret']:
@ -437,6 +441,7 @@ def canCleanupDB():
if session['user_id'] in get_administrators_list():
canclean = True
return canclean
@api.route("/cleanup-db", methods=["DELETE"])
def cleanup_keyval_db():
if canCleanupDB():

View File

@ -3,7 +3,7 @@ from flask import current_app as app
from flask_socketio import emit
from config import config
from titanembeds.decorators import discord_users_only
from titanembeds.database import db, Guilds, UnauthenticatedUsers, UnauthenticatedBans, Cosmetics, UserCSS, Patreon, set_titan_token, get_titan_token
from titanembeds.database import db, Guilds, UnauthenticatedUsers, UnauthenticatedBans, Cosmetics, UserCSS, Patreon, set_titan_token, get_titan_token, add_badge
from titanembeds.oauth import authorize_url, token_url, make_authenticated_session, get_current_authenticated_user, get_user_managed_servers, check_user_can_administrate_guild, check_user_permission, generate_avatar_url, generate_guild_icon_url, generate_bot_invite_url
import time
import datetime
@ -431,6 +431,7 @@ def donate_confirm():
action = "PAYPAL {}".format(trans_id)
set_titan_token(session["user_id"], tokens, action)
session["tokens"] = get_titan_token(session["user_id"])
add_badge(session["user_id"], "supporter")
return redirect(url_for('user.donate_thanks', transaction=trans_id))
else:
return redirect(url_for('index'))
@ -555,6 +556,7 @@ def patreon_sync_post():
db.session.add(dbpatreon)
db.session.commit()
set_titan_token(session["user_id"], usr["titan"]["eligible_tokens"], "PATREON {} [{}]".format(usr["attributes"]["full_name"], usr["id"]))
add_badge(session["user_id"], "supporter")
session["tokens"] = get_titan_token(session["user_id"])
return ('', 204)