コード例 #1
0
class Document(db.Model):
    __tablename__ = "documents"
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(128), unique=True)
    dates = db.Column(db.UnicodeText)
    citations = db.Column(db.UnicodeText)
    notes = db.Column(db.UnicodeText)
    last_update = db.Column(db.DateTime)
    box_id = db.Column(db.Integer, db.ForeignKey("boxes.id"))
    authors = db.relationship("Person",
                              secondary=documents_authors,
                              backref=db.backref("documents_by",
                                                 lazy="dynamic"))
    people = db.relationship("Person",
                             secondary=documents_people,
                             backref=db.backref("documents_in",
                                                lazy="dynamic"))
    topics = db.relationship("Topic",
                             secondary=documents_topics,
                             backref="documents")

    def __init__(self, title, dates=None, citations=None, notes=None):
        db.Model.__init__(self)
        self.title = title
        self.dates = dates
        self.citations = citations
        self.notes = notes

    @staticmethod
    def from_dict(data):
        data = data.get("document")
        if not is_ok(data):
            raise TypeError("Missing data: document")
        if not is_ok(data.get("title")):
            raise TypeError("Missing data: document.title")
        if (Document.query.filter_by(title=data["title"]).first()
                or len(data["title"]) >= 128):
            raise TypeError("Invalid data: document.title")
        return Document(title=data["title"],
                        dates=data.get("dates"),
                        citations=data.get("citations"),
                        notes=data.get("notes"))

    def get_url(self, full=False):
        return url_for("kron.get_document", id=self.id, _external=full)

    def __repr__(self):
        return "<Document {id}>".format(id=self.id)
コード例 #2
0
ファイル: box.py プロジェクト: seangilleran/kron
class Box(db.Model):
    __tablename__ = "boxes"
    id = db.Column(db.Integer, primary_key=True)
    number = db.Column(db.Integer, unique=True)
    dates = db.Column(db.UnicodeText)
    notes = db.Column(db.UnicodeText)
    last_update = db.Column(db.DateTime)
    archive_id = db.Column(db.Integer, db.ForeignKey("archives.id"))
    documents = db.relationship("Document", backref="box")
    people = db.relationship("Person", secondary=boxes_people, backref="boxes")
    topics = db.relationship("Topic", secondary=boxes_topics, backref="boxes")

    def __init__(self, number, dates=None, notes=None):
        db.Model.__init__(self)
        self.number = number
        self.dates = dates
        self.notes = notes

    @staticmethod
    def from_dict(data):
        data = data.get("box")
        if not is_ok(data):
            raise TypeError("Missing data: box")
        if not is_ok(data.get("number")):
            raise TypeError("Missing data: box.number")
        if Box.query.filter_by(number=data["number"]).first():
            raise TypeError("Invalid data: box.number")
        return Box(number=data["number"],
                   dates=data.get("dates"),
                   notes=data.get("notes"))

    def get_url(self, full=False):
        return url_for("kron.get_box", id=self.id, _external=full)

    def __repr__(self):
        return "<Box {id}>".format(id=self.id)
コード例 #3
0
ファイル: box.py プロジェクト: seangilleran/kron
from datetime import datetime

from flask import url_for

from kron import db, is_ok, ModelEventListeners

boxes_people = db.Table(
    "boxes_people", db.Column("box_id", db.Integer, db.ForeignKey("boxes.id")),
    db.Column("person_id", db.Integer, db.ForeignKey("people.id")))

boxes_topics = db.Table(
    "boxes_topics", db.Column("box_id", db.Integer, db.ForeignKey("boxes.id")),
    db.Column("topic_id", db.Integer, db.ForeignKey("topics.id")))


class Box(db.Model):
    __tablename__ = "boxes"
    id = db.Column(db.Integer, primary_key=True)
    number = db.Column(db.Integer, unique=True)
    dates = db.Column(db.UnicodeText)
    notes = db.Column(db.UnicodeText)
    last_update = db.Column(db.DateTime)
    archive_id = db.Column(db.Integer, db.ForeignKey("archives.id"))
    documents = db.relationship("Document", backref="box")
    people = db.relationship("Person", secondary=boxes_people, backref="boxes")
    topics = db.relationship("Topic", secondary=boxes_topics, backref="boxes")

    def __init__(self, number, dates=None, notes=None):
        db.Model.__init__(self)
        self.number = number
        self.dates = dates
コード例 #4
0
from datetime import datetime

from flask import url_for

from kron import db, is_ok, ModelEventListeners

documents_authors = db.Table(
    "documents_authors",
    db.Column("document_id", db.Integer, db.ForeignKey("documents.id")),
    db.Column("person_id", db.Integer, db.ForeignKey("people.id")))

documents_people = db.Table(
    "documents_people",
    db.Column("document_id", db.Integer, db.ForeignKey("documents.id")),
    db.Column("person_id", db.Integer, db.ForeignKey("people.id")))

documents_topics = db.Table(
    "documents_topics",
    db.Column("document_id", db.Integer, db.ForeignKey("documents.id")),
    db.Column("topic_id", db.Integer, db.ForeignKey("topics.id")))


class Document(db.Model):
    __tablename__ = "documents"
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(128), unique=True)
    dates = db.Column(db.UnicodeText)
    citations = db.Column(db.UnicodeText)
    notes = db.Column(db.UnicodeText)
    last_update = db.Column(db.DateTime)
    box_id = db.Column(db.Integer, db.ForeignKey("boxes.id"))
コード例 #5
0
ファイル: models.py プロジェクト: seangilleran/kron
from datetime import datetime

from flask import url_for
import bleach
from markdown import markdown

from kron import db, is_ok, ModelEventListeners

tags_posts = db.Table(
    "tags_posts", db.Column("tag_id", db.Integer, db.ForeignKey("tags.id")),
    db.Column("post_id", db.Integer, db.ForeignKey("posts.id")))


class Tag(db.Model):
    __tablename__ = "tags"
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), unique=True)

    def __init__(self, name):
        db.Model.__init__(self)
        self.name = name

    @staticmethod
    def from_dict(data):
        data = data.get("tag")
        if not is_ok(data):
            raise TypeError("Missing data: tag")
        if not is_ok(data.get("name")):
            raise TypeError("Missing data: tag.name")
        return Tag(name=data["name"])