Titan/webapp/titanembeds/blueprints/embed/embed.py

90 lines
3.2 KiB
Python
Raw Normal View History

from flask import Blueprint, render_template, abort, redirect, url_for, session, request
from flask_babel import gettext
from titanembeds.utils import check_guild_existance, guild_query_unauth_users_bool, guild_accepts_visitors, guild_unauthcaptcha_enabled
from titanembeds.oauth import generate_guild_icon_url, generate_avatar_url
from titanembeds.database import db, Guilds, UserCSS
2017-04-05 08:25:07 +02:00
from config import config
import random
2017-06-05 05:32:13 +02:00
import json
2017-03-26 06:14:42 +02:00
embed = Blueprint("embed", __name__)
def get_logingreeting():
greetings = [
gettext("Let's get to know each other! My name is Titan, what's yours?"),
gettext("Hello and welcome!"),
gettext("What brings you here today?"),
gettext("....what do you expect this text to say?"),
gettext("Aha! ..made you look!"),
gettext("Initiating launch sequence..."),
gettext("Captain, what's your option?"),
gettext("Alright, here's the usual~"),
]
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
2017-06-05 05:32:13 +02:00
def parse_css_variable(css):
CSS_VARIABLES_TEMPLATE = """:root {
/*--<var>: <value>*/
--modal: %(modal)s;
--noroleusers: %(noroleusers)s;
--main: %(main)s;
--placeholder: %(placeholder)s;
--sidebardivider: %(sidebardivider)s;
--leftsidebar: %(leftsidebar)s;
--rightsidebar: %(rightsidebar)s;
--header: %(header)s;
--chatmessage: %(chatmessage)s;
--discrim: %(discrim)s;
--chatbox: %(chatbox)s;
}"""
if not css:
return None
else:
variables = css.css_variables
2017-09-08 02:37:37 +02:00
if variables:
variables = json.loads(variables)
return CSS_VARIABLES_TEMPLATE % variables
return None
2017-06-05 05:32:13 +02:00
@embed.route("/<string:guild_id>")
2017-03-26 06:14:42 +02:00
def guild_embed(guild_id):
if check_guild_existance(guild_id):
2017-05-07 03:27:35 +02:00
guild = db.session.query(Guilds).filter(Guilds.guild_id == guild_id).first()
guild_dict = {
"id": guild.guild_id,
"name": guild.name,
"unauth_users": guild.unauth_users,
"icon": guild.icon,
"discordio": guild.discordio,
}
2017-06-05 05:32:13 +02:00
customcss = get_custom_css()
return render_template("embed.html.j2",
login_greeting=get_logingreeting(),
guild_id=guild_id,
guild=guild_dict,
generate_guild_icon=generate_guild_icon_url,
2017-04-05 08:25:07 +02:00
unauth_enabled=guild_query_unauth_users_bool(guild_id),
visitors_enabled=guild_accepts_visitors(guild_id),
unauth_captcha_enabled=guild_unauthcaptcha_enabled(guild_id),
client_id=config['client-id'],
recaptcha_site_key=config["recaptcha-site-key"],
2017-06-05 05:32:13 +02:00
css=customcss,
cssvariables=parse_css_variable(customcss),
same_target=request.args.get("sametarget", False) == "true"
)
abort(404)
@embed.route("/signin_complete")
def signin_complete():
return render_template("signin_complete.html.j2")
@embed.route("/login_discord")
def login_discord():
return redirect(url_for("user.login_authenticated", redirect=url_for("embed.signin_complete", _external=True)))