summaryrefslogtreecommitdiff
path: root/app/backend/rcal
diff options
context:
space:
mode:
Diffstat (limited to 'app/backend/rcal')
-rw-r--r--app/backend/rcal/model.py29
1 files changed, 29 insertions, 0 deletions
diff --git a/app/backend/rcal/model.py b/app/backend/rcal/model.py
index 50f9f94..4715657 100644
--- a/app/backend/rcal/model.py
+++ b/app/backend/rcal/model.py
@@ -5,6 +5,8 @@ from sqlalchemy.orm import relationship
from sqlalchemy.types import (TIMESTAMP, Boolean, DateTime, Integer, String,
TypeDecorator)
+from sqlalchemy_utils import types
+
from dateutil.tz import tzutc
@@ -149,7 +151,34 @@ class User(BASE):
grouped_view = Column(Boolean)
last_login = Column(UTCDateTime)
+ auth_keys = relationship(
+ 'UserAuthKey',
+ back_populates='user',
+ cascade="all",
+ passive_deletes=True,
+ order_by='UserAuthKey.id')
+
calendars = relationship('Calendar',
secondary=user_selections)
+
+class UserAuthKey(BASE):
+ __tablename__ = 'user_auth_keys'
+
+ id = Column(Integer, primary_key=True)
+ auth_key = Column(String(255), unique=True, index=True)
+ ip_address = Column(types.IPAddressType)
+
+ _user = Column(
+ Integer,
+ ForeignKey(
+ 'users.id',
+ onupdate='CASCADE',
+ ondelete='CASCADE'))
+ user = relationship(
+ 'User',
+ back_populates='auth_keys',
+ order_by='UserAuthKey.id')
+
+
__all__ = ('Calendar', 'Entry', 'Category', 'User')