# Copyright (c) 2022, TU Wien
# All rights reserved.
#
# This source code is licensed under the BSD-style license found in the
# LICENSE file in the root directory of this source tree.
import enum
from grader_service.api.models import lecture
from sqlalchemy import Column, Enum, Integer, String
from sqlalchemy.orm import relationship
from grader_service.orm.base import Base, DeleteState, Serializable
[docs]class LectureState(enum.IntEnum):
active = 0
complete = 1
[docs]class Lecture(Base, Serializable):
__tablename__ = "lecture"
id = Column(Integer, primary_key=True, autoincrement=True)
name = Column(String(255), nullable=True, unique=False)
code = Column(String(255), nullable=True, unique=True)
state = Column(Enum(LectureState), nullable=False, unique=False)
deleted = Column(Enum(DeleteState), nullable=False, unique=False)
assignments = relationship("Assignment", back_populates="lecture")
roles = relationship("Role", back_populates="lecture")
groups = relationship("Group", back_populates="lecture")
@property
def model(self) -> lecture.Lecture:
return lecture.Lecture(
id=self.id,
name=self.name,
code=self.code,
complete=self.state == LectureState.complete,
)