Source code for sni.teamspeak.models
"""
Teamspeak database models
"""
import mongoengine as me
from sni.user.models import User
from sni.utils import MINUTE
import sni.utils as utils
[docs]class TeamspeakAuthenticationChallenge(me.Document):
"""
Represents a teamspeak authentication challenge, akin to
:class:`sni.uac.token.StateCode`.
See also:
:meth:`sni.teamspeak.new_authentication_challenge`
"""
created_on = me.DateTimeField(default=utils.now, required=True)
"""Timestamp of the creation of this document"""
user = me.ReferenceField(User, required=True, unique=True)
""""Corresponding user"""
challenge_nickname = me.StringField(required=True, unique=True)
"""See :meth:`sni.teamspeak.teamspeak.new_authentication_challenge`"""
meta = {
"indexes": [
{"fields": ["created_on"], "expireAfterSeconds": 2 * MINUTE},
],
}
def __repr__(self) -> str:
return (
f"<TeamspeakAuthenticationChallenge: {repr(self.user)} "
f"{self.created_on}>"
)