Implemented Cosmetics and User Custom CSS, closes #7

This commit is contained in:
Jeremy Zhang
2017-05-22 01:07:32 +00:00
parent 6480df1b57
commit d18c9bf1c9
9 changed files with 274 additions and 5 deletions

View File

@ -1,7 +1,7 @@
from flask import Blueprint, render_template, abort, redirect, url_for, session
from flask import Blueprint, render_template, abort, redirect, url_for, session, request
from titanembeds.utils import check_guild_existance, guild_query_unauth_users_bool
from titanembeds.oauth import generate_guild_icon_url, generate_avatar_url
from titanembeds.database import db, Guilds
from titanembeds.database import db, Guilds, UserCSS
from config import config
import random
@ -20,6 +20,12 @@ def get_logingreeting():
]
return random.choice(greetings)
def get_custom_css():
css = request.args.get("css", None)
if css:
css = db.session.query(UserCSS).filter(UserCSS.id == css).first()
return css
@embed.route("/<string:guild_id>")
def guild_embed(guild_id):
if check_guild_existance(guild_id):
@ -35,7 +41,8 @@ def guild_embed(guild_id):
guild_id=guild_id, guild=guild_dict,
generate_guild_icon=generate_guild_icon_url,
unauth_enabled=guild_query_unauth_users_bool(guild_id),
client_id=config['client-id']
client_id=config['client-id'],
css=get_custom_css()
)
abort(404)

View File

@ -1,7 +1,7 @@
from flask import Blueprint, request, redirect, jsonify, abort, session, url_for, render_template
from config import config
from titanembeds.decorators import discord_users_only
from titanembeds.database import db, Guilds, UnauthenticatedUsers, UnauthenticatedBans
from titanembeds.database import db, Guilds, UnauthenticatedUsers, UnauthenticatedBans, Cosmetics, UserCSS
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
@ -66,7 +66,90 @@ def dashboard():
redir = session['redirect']
session['redirect'] = None
return redirect(redir)
return render_template("dashboard.html.j2", servers=guilds, icon_generate=generate_guild_icon_url)
cosmetics = db.session.query(Cosmetics).filter(Cosmetics.user_id == session['user_id']).first()
css_list = None
if cosmetics and cosmetics.css:
css_list = db.session.query(UserCSS).filter(UserCSS.user_id == session['user_id']).all()
return render_template("dashboard.html.j2", servers=guilds, icon_generate=generate_guild_icon_url, cosmetics=cosmetics, css_list=css_list)
@user.route("/custom_css/new", methods=["GET"])
@discord_users_only()
def new_custom_css_get():
cosmetics = db.session.query(Cosmetics).filter(Cosmetics.user_id == session['user_id']).first()
if not cosmetics or not cosmetics.css:
abort(403)
return render_template("usercss.html.j2", new=True)
@user.route("/custom_css/new", methods=["POST"])
@discord_users_only()
def new_custom_css_post():
cosmetics = db.session.query(Cosmetics).filter(Cosmetics.user_id == session['user_id']).first()
if not cosmetics or not cosmetics.css:
abort(403)
name = request.form.get("name", None)
user_id = session["user_id"]
css = request.form.get("css","")
if not name:
abort(400)
else:
name = name.strip()
css = css.strip()
css = UserCSS(name, user_id, css)
db.session.add(css)
db.session.commit()
return jsonify({"id": css.id})
@user.route("/custom_css/edit/<css_id>", methods=["GET"])
@discord_users_only()
def edit_custom_css_get(css_id):
cosmetics = db.session.query(Cosmetics).filter(Cosmetics.user_id == session['user_id']).first()
if not cosmetics or not cosmetics.css:
abort(403)
css = db.session.query(UserCSS).filter(UserCSS.id == css_id).first()
if not css:
abort(404)
if css.user_id != session['user_id']:
abort(403)
return render_template("usercss.html.j2", new=False, css=css)
@user.route("/custom_css/edit/<css_id>", methods=["POST"])
@discord_users_only()
def edit_custom_css_post(css_id):
cosmetics = db.session.query(Cosmetics).filter(Cosmetics.user_id == session['user_id']).first()
if not cosmetics or not cosmetics.css:
abort(403)
dbcss = db.session.query(UserCSS).filter(UserCSS.id == css_id).first()
if not dbcss:
abort(404)
if dbcss.user_id != session['user_id']:
abort(403)
name = request.form.get("name", None)
css = request.form.get("css", "")
if not name:
abort(400)
else:
name = name.strip()
css = css.strip()
dbcss.name = name
dbcss.css = css
db.session.commit()
return jsonify({"id": dbcss.id})
@user.route("/custom_css/edit/<css_id>", methods=["DELETE"])
@discord_users_only()
def edit_custom_css_delete(css_id):
cosmetics = db.session.query(Cosmetics).filter(Cosmetics.user_id == session['user_id']).first()
if not cosmetics or not cosmetics.css:
abort(403)
dbcss = db.session.query(UserCSS).filter(UserCSS.id == css_id).first()
if not dbcss:
abort(404)
if dbcss.user_id != session['user_id']:
abort(403)
db.session.delete(dbcss)
db.session.commit()
return jsonify({})
@user.route("/administrate_guild/<guild_id>", methods=["GET"])
@discord_users_only()