update logging etc

This commit is contained in:
matthias@matsewe.de
2024-06-06 16:22:14 +02:00
parent 7d6c7591dd
commit 9c57123a48
6 changed files with 26 additions and 9 deletions

View File

@@ -102,18 +102,21 @@ def create_or_update_comment(db, song_id, session_name, comment):
def activate_session(db, session_name):
ip = context.data[HeaderKeys.forwarded_for]
user_agent = context.data[HeaderKeys.user_agent]
session_entry = db.query(models.Session).filter(and_(
models.Session.session_name == session_name, models.Session.ip == ip)).first()
models.Session.session_name == session_name)).first() # , models.Session.ip == ip, models.Session.user_agent == user_agent
if session_entry:
print(session_entry.__dict__)
if ip not in session_entry.ips:
session_entry.ips.append(ip)
session_entry.active = True
else:
session_entry = models.Session(
session_name=session_name, active=True, ip=ip)
session_name=session_name, active=True, ips=[ip]) # , ip=ip, user_agent=user_agent
db.add(session_entry)
flag_modified(session_entry, "active")
flag_modified(session_entry, "ips")
db.commit()
return session_entry
@@ -121,9 +124,10 @@ def activate_session(db, session_name):
def deactivate_session(db, session_name):
ip = context.data[HeaderKeys.forwarded_for]
user_agent = context.data[HeaderKeys.user_agent]
session_entry = db.query(models.Session).filter(and_(
models.Session.session_name == session_name, models.Session.ip == ip)).first()
models.Session.session_name == session_name)).first() # , models.Session.ip == ip, models.Session.user_agent == user_agent
if session_entry:
session_entry.active = False
flag_modified(session_entry, "active")

View File

@@ -1,6 +1,6 @@
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, DeclarativeBase
from sqlalchemy.types import PickleType
from sqlalchemy.types import PickleType, JSON
import os
@@ -23,5 +23,5 @@ class Base(DeclarativeBase):
type_annotation_map = {
dict[str, bool]: PickleType,
object: PickleType,
set: PickleType
list[str]: JSON
}

9
app/init_tools.py Normal file
View File

@@ -0,0 +1,9 @@
from app.routers import admin
from app.database import engine, Base, get_db, SessionLocal
import asyncio
def reset():
#Base.metadata.drop_all(engine)
#Base.metadata.create_all(engine)
with SessionLocal() as db:
asyncio.run(admin.create_upload_file(include_non_singable=True, db=db))

View File

@@ -22,6 +22,7 @@ middleware = [
RawContextMiddleware,
plugins=(
plugins.ForwardedForPlugin(),
plugins.UserAgentPlugin()
)
)
]

View File

@@ -32,7 +32,7 @@ class Session(Base):
id: Mapped[int] = mapped_column(primary_key=True)
session_name: Mapped[str]
active: Mapped[bool]
ip: Mapped[str]
ips: Mapped[list[str]]
first_seen: Mapped[datetime] = mapped_column(server_default=func.now())
last_seen: Mapped[Optional[datetime]
] = mapped_column(onupdate=func.now())

View File

@@ -15,6 +15,9 @@
width: 100%;
margin-top: 0.3em;
font-size: 1.2em;
border: 1px solid white;
border-radius: 0.2em;
padding: 0.1em;
}
.not_singable {
background-color: color-mix(in srgb, #e1412f 30%, #f0f0f0);
@@ -218,8 +221,8 @@
<div class="clear"></div>
{% if veto_mode %}
<input type="text" class="comment"
value="{% if song.vote_comment %}{{ song.vote_comment }}{% else %}{% if song.comment %}{{ song.comment }}{% else %}{% endif %}{% endif %}"
placeholder="Kommentar" onchange="updateComment({{ song.id }}, this);">
value="{% if song.vote_comment %}{{ song.vote_comment }}{% else %}{% endif %}"
placeholder="{% if song.comment %}{{ song.comment }}{% else %}Kommentar{% endif %}" onchange="updateComment({{ song.id }}, this);">
{% endif %}
</div>
{% endfor %}