Files
myapp-full/myapp/models/page.py

79 lines
2.3 KiB
Python
Raw Normal View History

2019-10-27 19:40:03 +03:00
__author__ = 'RemiZOffAlex'
__copyright__ = '(c) RemiZOffAlex'
__email__ = 'remizoffalex@mail.ru'
import datetime
2020-08-17 19:57:37 +03:00
from sqlalchemy import Column, Integer, ForeignKey, String, DateTime
2019-10-27 19:40:03 +03:00
from sqlalchemy.orm import relationship
from . import Base
class Page(Base):
2020-08-17 19:57:37 +03:00
"""Страницы
2019-10-27 19:40:03 +03:00
"""
__tablename__ = "page"
id = Column(Integer, primary_key=True)
user_id = Column(Integer, ForeignKey('user.id'))
title = Column(String)
body = Column(String, default='')
2020-08-17 19:57:37 +03:00
created = Column(DateTime) # Дата создания
updated = Column(DateTime) # Дата обновления
2019-10-27 19:40:03 +03:00
# Связи
user = relationship(
"User",
primaryjoin="Page.user_id==User.id",
uselist=False
)
tags = relationship("TagPage", primaryjoin="Page.id==TagPage.page_id")
def __init__(self, user, title):
2020-08-17 19:57:37 +03:00
assert type(user).__name__ == 'User', 'Не передан объект User'
2019-10-27 19:40:03 +03:00
self.user_id = user.id
self.title = title
self.created = datetime.datetime.now()
self.updated = datetime.datetime.now()
def __repr__(self):
return "<Page('{}')>".format(self.title)
def as_dict(self):
return {c.name: getattr(self, c.name) for c in self.__table__.columns}
class TagPage(Base):
"""Теги к страницам"""
__tablename__ = "tagpage"
id = Column(Integer, primary_key=True)
page_id = Column(Integer, ForeignKey('page.id'))
tag_id = Column(Integer, ForeignKey('tag.id'))
2020-08-17 19:57:37 +03:00
created = Column(DateTime) # Дата создания
2019-10-27 19:40:03 +03:00
# Связи
2020-08-17 19:57:37 +03:00
page = relationship(
"Page",
primaryjoin="TagPage.page_id==Page.id",
uselist=False
)
tag = relationship(
"Tag",
primaryjoin="TagPage.tag_id==Tag.id",
uselist=False
)
2019-10-27 19:40:03 +03:00
def __init__(self, page, tag):
2020-08-17 19:57:37 +03:00
assert type(page).__name__ == 'Page', 'Не передан объект Page'
assert type(tag).__name__ == 'Tag', 'Не передан объект Tag'
2019-10-27 19:40:03 +03:00
self.page_id = page.id
self.tag_id = tag.id
self.created = datetime.datetime.now()
def __repr__(self):
return "<TagPage('%s')>" % (self.id)
def as_dict(self):
return {c.name: getattr(self, c.name) for c in self.__table__.columns}