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
=u
"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_token_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 title
= Column(Unicode
, nullable
=False)
40 slug
= Column(Unicode
, nullable
=False)
41 created
= Column(DateTime
, nullable
=False, default
=datetime
.datetime
.now
)
42 description
= Column(UnicodeText
) # ??
43 description_html
= Column(UnicodeText
) # ??
44 media_type
= Column(Unicode
, nullable
=False)
46 fail_error
= Column(Unicode
)
47 fail_metadata
= Column(UnicodeText
)
49 queued_media_file
= Column(Unicode
)
51 queued_task_id
= Column(Unicode
)
54 UniqueConstraint('uploader', 'slug'),
65 __tablename__
= "tags"
67 id = Column(Integer
, primary_key
=True)
68 slug
= Column(Unicode
, nullable
=False, unique
=True)
72 __tablename__
= "media_tags"
74 id = Column(Integer
, primary_key
=True)
75 tag
= Column(Integer
, ForeignKey('tags.id'), nullable
=False)
76 name
= Column(Unicode
)
78 Integer
, ForeignKey('media_entries.id'),
80 # created = Column(DateTime, nullable=False, default=datetime.datetime.now)
83 UniqueConstraint('tag', 'media_entry'),
87 class MediaComment(Base
):
88 __tablename__
= "media_comments"
90 id = Column(Integer
, primary_key
=True)
92 Integer
, ForeignKey('media_entries.id'), nullable
=False)
93 author
= Column(Integer
, ForeignKey('users.id'), nullable
=False)
94 created
= Column(DateTime
, nullable
=False, default
=datetime
.datetime
.now
)
95 content
= Column(UnicodeText
, nullable
=False)
96 content_html
= Column(UnicodeText
)
99 def show_table_init():
100 from sqlalchemy
import create_engine
101 engine
= create_engine('sqlite:///:memory:', echo
=True)
103 Base
.metadata
.create_all(engine
)
106 if __name__
== '__main__':