|
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/<conversation_id>': { |
|
'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() |
|
|