]> ToastFreeware Gitweb - philipp/winterrodeln/wradmin.git/blob - wradmin/model/__init__.py
Use flask_sqlalchemy to manage the database connection.
[philipp/winterrodeln/wradmin.git] / wradmin / model / __init__.py
1 """Model of wradmin"""
2 from flask import Flask
3 from flask_sqlalchemy import SQLAlchemy
4 from sqlalchemy import orm
5 from flask_login import UserMixin
6 from wrpylib import mwdb, wrmwdb
7
8
9 class WrReport:
10     pass
11
12
13 class WrSledrunCache:
14     pass
15
16
17 class WrInnCache:
18     pass
19
20
21 class MwText:
22     """MediaWiki text table"""
23     pass
24
25
26 class MwUser(UserMixin):
27     """MediaWiki user table"""
28     def get_id(self):
29         return str(self.user_id)
30
31
32 class MwUserGroups:
33     """MediaWiki groups"""
34     pass
35
36
37 def init_db(app: Flask) -> SQLAlchemy:
38     db = SQLAlchemy(app)
39
40     wrreport_table = wrmwdb.wrreport_table(db.metadata)
41     wrreportcache_table = wrmwdb.wrreportcache_table(db.metadata)
42     wrsledruncache_table = wrmwdb.wrsledruncache_table(db.metadata)
43     wrinncache_table = wrmwdb.wrinncache_table(db.metadata)
44     page_table = mwdb.page_table(db.metadata)
45     revision_table = mwdb.revision_table(db.metadata)
46     text_table = mwdb.text_table(db.metadata)
47     user_table = mwdb.user_table(db.metadata)
48     user_groups_table = mwdb.user_groups_table(db.metadata)
49     categorylinks_table = mwdb.categorylinks_table(db.metadata)
50
51     orm.mapper(WrReport, wrreport_table)
52     # We could add a relation but we don't need it yet:
53     # orm.mapper(WrSledrunCache, wrsledruncache_table,
54     #            properties = {'reports': orm.relation(WrReport, backref='sledding')})
55     orm.mapper(WrSledrunCache, wrsledruncache_table)
56     orm.mapper(WrInnCache, wrinncache_table)
57     orm.mapper(MwText, text_table)
58     orm.mapper(MwUserGroups, user_groups_table)
59     orm.mapper(MwUser, user_table)
60
61     return db