from flask import render_template, redirect, url_for, request, session from flask_babel import refresh from time import time from os import urandom from server.babel import get_locale, get_languages class Website: def __init__(self, bp, url_prefix) -> None: self.bp = bp self.url_prefix = url_prefix self.routes = { '/': { 'function': lambda: redirect(url_for('._index')), 'methods': ['GET', 'POST'] }, '/chat/': { 'function': self._index, 'methods': ['GET', 'POST'] }, '/chat/': { 'function': self._chat, 'methods': ['GET', 'POST'] }, '/change-language': { 'function': self.change_language, 'methods': ['POST'] }, '/get-locale': { 'function': self.get_locale, 'methods': ['GET'] }, '/get-languages': { 'function': self.get_languages, 'methods': ['GET'] } } def _chat(self, conversation_id): if '-' not in conversation_id: return redirect(url_for('._index')) return render_template('index.html', chat_id=conversation_id, url_prefix=self.url_prefix) def _index(self): return render_template('index.html', chat_id=f'{urandom(4).hex()}-{urandom(2).hex()}-{urandom(2).hex()}-{urandom(2).hex()}-{hex(int(time() * 1000))[2:]}', url_prefix=self.url_prefix) def change_language(self): data = request.get_json() session['language'] = data.get('language') refresh() return '', 204 def get_locale(self): return get_locale() def get_languages(self): return get_languages()