🌐 Integrated Italian translation
This commit is contained in:
@@ -12,7 +12,7 @@ from classquiz.config import settings
|
||||
from classquiz.db import database
|
||||
from classquiz.routers import users, quiz, utils, stats, storage, search, testing_routes, editor
|
||||
from classquiz.socket_server import sio
|
||||
from classquiz.helpers import meilisearch_init
|
||||
from classquiz.helpers import meilisearch_init, telemetry_ping
|
||||
|
||||
settings = settings()
|
||||
if settings.sentry_dsn:
|
||||
@@ -39,6 +39,7 @@ async def startup() -> None:
|
||||
if not database_.is_connected:
|
||||
await database_.connect()
|
||||
await meilisearch_init()
|
||||
await telemetry_ping()
|
||||
|
||||
|
||||
@app.on_event("shutdown")
|
||||
|
||||
@@ -38,6 +38,7 @@ class Settings(BaseSettings):
|
||||
google_client_secret: Optional[str]
|
||||
github_client_id: Optional[str]
|
||||
github_client_secret: Optional[str]
|
||||
telemetry_enabled: bool = True
|
||||
|
||||
# storage_backend
|
||||
storage_backend: str | None = "deta"
|
||||
|
||||
@@ -119,6 +119,15 @@ class Quiz(ormar.Model):
|
||||
database = database
|
||||
|
||||
|
||||
class InstanceData(ormar.Model):
|
||||
instance_id: uuid.UUID = ormar.UUID(primary_key=True, default=uuid.uuid4(), nullable=False, unique=True)
|
||||
|
||||
class Meta:
|
||||
tablename = "instance_data"
|
||||
metadata = metadata
|
||||
database = database
|
||||
|
||||
|
||||
class Token(BaseModel):
|
||||
"""
|
||||
For JWT
|
||||
|
||||
@@ -5,7 +5,9 @@
|
||||
import asyncio
|
||||
from typing import Optional
|
||||
|
||||
from classquiz.db.models import Quiz, User
|
||||
import ormar.exceptions
|
||||
|
||||
from classquiz.db.models import Quiz, User, InstanceData
|
||||
import xlsxwriter
|
||||
from aiohttp import ClientSession
|
||||
from io import BytesIO
|
||||
@@ -114,6 +116,23 @@ async def meilisearch_init():
|
||||
print("Finished MeiliSearch synchronisation")
|
||||
|
||||
|
||||
async def telemetry_ping():
|
||||
try:
|
||||
instance_data = await InstanceData.objects.first()
|
||||
except ormar.exceptions.NoMatch:
|
||||
instance_data = InstanceData()
|
||||
await instance_data.save()
|
||||
async with ClientSession() as session, session.post(
|
||||
f"https://cit.mawoka.eu.org/public/{instance_data.instance_id}",
|
||||
json={
|
||||
"public_quizzes": await Quiz.objects.filter(public=True).count(),
|
||||
"private_quizzes": await Quiz.objects.filter(public=False).count(),
|
||||
"users": await User.objects.count(),
|
||||
},
|
||||
):
|
||||
return
|
||||
|
||||
|
||||
def check_hashcash(data: str, input_data: str, claim_in: Optional[str] = "19") -> bool:
|
||||
"""
|
||||
It checks that the hashcash is valid, and if it is, it returns True
|
||||
|
||||
Reference in New Issue
Block a user