| 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() |
|
|