Coverage for dibbler / models / User.py: 100%
18 statements
« prev ^ index » next coverage.py v7.13.0, created at 2025-12-12 13:57 +0000
« prev ^ index » next coverage.py v7.13.0, created at 2025-12-12 13:57 +0000
1from __future__ import annotations
3from typing import Self
5from sqlalchemy import (
6 Integer,
7 String,
8)
9from sqlalchemy.orm import (
10 Mapped,
11 mapped_column,
12)
14from .Base import Base
17class User(Base):
18 id: Mapped[int] = mapped_column(Integer, primary_key=True)
19 """Internal database ID"""
21 name: Mapped[str] = mapped_column(String(20), unique=True)
22 """The PVV username of the user."""
24 card: Mapped[str | None] = mapped_column(String(20))
25 """The NTNU card number of the user."""
27 rfid: Mapped[str | None] = mapped_column(String(20))
28 """The RFID tag of the user (if they have any, rare these days)."""
30 # name_re = r"[a-z]+"
31 # card_re = r"(([Nn][Tt][Nn][Uu])?[0-9]+)?"
32 # rfid_re = r"[0-9a-fA-F]*"
34 def __init__(self: Self, name: str, card: str | None = None, rfid: str | None = None) -> None:
35 self.name = name
36 self.card = card
37 self.rfid = rfid
39 # def __str__(self):
40 # return self.name
42 # def is_anonymous(self):
43 # return self.card == "11122233"