mirror of
https://gitlab.archlinux.org/archlinux/aurweb.git
synced 2025-02-03 10:43:03 +01:00
This rewrites the entire model base as declarative models. This allows us to more easily customize overlay fields in tables and is more common. This effort also brought some DB violations to light which this commit addresses. Signed-off-by: Kevin Morris <kevr@0cost.org>
64 lines
2.3 KiB
Python
64 lines
2.3 KiB
Python
from datetime import datetime
|
|
|
|
from sqlalchemy import Column, ForeignKey, Integer
|
|
from sqlalchemy.exc import IntegrityError
|
|
from sqlalchemy.orm import backref, relationship
|
|
|
|
import aurweb.models.user
|
|
|
|
from aurweb.models.declarative import Base
|
|
|
|
|
|
class PackageBase(Base):
|
|
__tablename__ = "PackageBases"
|
|
|
|
FlaggerUID = Column(Integer,
|
|
ForeignKey("Users.ID", ondelete="SET NULL"))
|
|
Flagger = relationship(
|
|
"User", backref=backref("flagged_bases", lazy="dynamic"),
|
|
foreign_keys=[FlaggerUID])
|
|
|
|
SubmitterUID = Column(Integer,
|
|
ForeignKey("Users.ID", ondelete="SET NULL"))
|
|
Submitter = relationship(
|
|
"User", backref=backref("submitted_bases", lazy="dynamic"),
|
|
foreign_keys=[SubmitterUID])
|
|
|
|
MaintainerUID = Column(Integer,
|
|
ForeignKey("Users.ID", ondelete="SET NULL"))
|
|
Maintainer = relationship(
|
|
"User", backref=backref("maintained_bases", lazy="dynamic"),
|
|
foreign_keys=[MaintainerUID])
|
|
|
|
PackagerUID = Column(Integer, ForeignKey("Users.ID", ondelete="SET NULL"))
|
|
Packager = relationship(
|
|
"User", backref=backref("package_bases", lazy="dynamic"),
|
|
foreign_keys=[PackagerUID])
|
|
|
|
def __init__(self, Name: str = None,
|
|
Flagger: aurweb.models.user.User = None,
|
|
Maintainer: aurweb.models.user.User = None,
|
|
Submitter: aurweb.models.user.User = None,
|
|
Packager: aurweb.models.user.User = None,
|
|
**kwargs):
|
|
super().__init__(**kwargs)
|
|
self.Name = Name
|
|
if not self.Name:
|
|
raise IntegrityError(
|
|
statement="Column Name cannot be null.",
|
|
orig="PackageBases.Name",
|
|
params=("NULL"))
|
|
|
|
self.Flagger = Flagger
|
|
self.Maintainer = Maintainer
|
|
self.Submitter = Submitter
|
|
self.Packager = Packager
|
|
|
|
self.NumVotes = kwargs.get("NumVotes")
|
|
self.Popularity = kwargs.get("Popularity")
|
|
self.OutOfDateTS = kwargs.get("OutOfDateTS")
|
|
self.FlaggerComment = kwargs.get("FlaggerComment", str())
|
|
self.SubmittedTS = kwargs.get("SubmittedTS",
|
|
datetime.utcnow().timestamp())
|
|
self.ModifiedTS = kwargs.get("ModifiedTS",
|
|
datetime.utcnow().timestamp())
|