31ebfbf4a8e215f38708d877b81adddd04127e1a
3 from sqlalchemy
.ext
.declarative
import declarative_base
4 from sqlalchemy
import (
5 Column
, Integer
, Unicode
, UnicodeText
, DateTime
, Boolean
, ForeignKey
,
9 Base
= declarative_base()
13 __tablename__
= "users"
15 id = Column(Integer
, primary_key
=True)
16 username
= Column(Unicode
, nullable
=False, unique
=True)
17 email
= Column(Unicode
, nullable
=False)
18 created
= Column(DateTime
, nullable
=False, default
=datetime
.datetime
.now
)
19 pw_hash
= Column(Unicode
, nullable
=False)
20 email_verified
= Column(Boolean
)
21 status
= Column(Unicode
, default
="needs_email_verification", nullable
=False)
22 verification_key
= Column(Unicode
)
23 is_admin
= Column(Boolean
, default
=False, nullable
=False)
25 bio
= Column(UnicodeText
) # ??
26 bio_html
= Column(UnicodeText
) # ??
27 fp_verification_key
= Column(Unicode
)
28 fp_verification_expire
= Column(DateTime
)
31 # plugin data would be in a separate model
34 class MediaEntry(Base
):
35 __tablename__
= "media_entries"
37 id = Column(Integer
, primary_key
=True)
38 uploader
= Column(Integer
, ForeignKey('users.id'), nullable
=False)
39 slug
= Column(Unicode
, nullable
=False)
40 created
= Column(DateTime
, nullable
=False, default
=datetime
.datetime
.now
)
41 description
= Column(UnicodeText
) # ??
42 description_html
= Column(UnicodeText
) # ??
43 media_type
= Column(Unicode
, nullable
=False)
45 fail_error
= Column(Unicode
)
46 fail_metadata
= Column(UnicodeText
)
48 queued_media_file
= Column(Unicode
)
50 queued_task_id
= Column(Unicode
)
53 UniqueConstraint('uploader', 'slug'),
64 __tablename__
= "tags"
66 id = Column(Integer
, primary_key
=True)
67 slug
= Column(Unicode
, nullable
=False, unique
=True)
71 __tablename__
= "media_tags"
73 id = Column(Integer
, primary_key
=True)
74 tag
= Column(Integer
, ForeignKey('tags.id'), nullable
=False)
75 name
= Column(Unicode
)
77 Integer
, ForeignKey('media_entries.id'),
79 # created = Column(DateTime, nullable=False, default=datetime.datetime.now)
82 UniqueConstraint('tag', 'media_entry'),
86 class MediaComment(Base
):
87 __tablename__
= "media_comments"
89 id = Column(Integer
, primary_key
=True)
91 Integer
, ForeignKey('media_entries.id'), nullable
=False)
92 author
= Column(Integer
, ForeignKey('users.id'), nullable
=False)
93 created
= Column(DateTime
, nullable
=False, default
=datetime
.datetime
.now
)
94 content
= Column(UnicodeText
, nullable
=False)
95 content_html
= Column(UnicodeText
)