forked from crchemist/cit
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinit_db.py
More file actions
75 lines (58 loc) · 2.06 KB
/
init_db.py
File metadata and controls
75 lines (58 loc) · 2.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# Initialize database.
from sqlalchemy import update
from cit import create_app
from cit.db import db
from mixer.backend.sqlalchemy import Mixer
from mixer.backend.flask import mixer
from cit.auth.models import User
from cit.issues.models import Issue
from cit.comments.models import Comment
from random import randint
import sys
import argparse
app = create_app()
with app.app_context():
db.create_all()
# Generate a random user by calling argument "--init-data"
class MyOwnMixer(Mixer):
def populate_target(self, values):
target = self.__scheme(**values)
return target
mixer = MyOwnMixer()
def createParser():
parser = argparse.ArgumentParser()
parser.add_argument('--init-data', action='store_true')
parser.add_argument('--make-admin', action='store', default='')
args = parser.parse_args()
return parser
def generate_test_data():
with app.app_context():
user = mixer.blend(User,
fb_first_name=mixer.RANDOM,
fb_last_name=mixer.RANDOM,
fb_id=mixer.RANDOM,
email=mixer.RANDOM,
about_me=mixer.RANDOM)
db.session.add(user)
issue = mixer.blend(Issue,
reporter='1',
description=mixer.RANDOM,
coordinates='POINT(49 22)')
db.session.add(issue)
comment = mixer.blend(Comment,
author_id='1',
issue_id='1',
message=mixer.RANDOM)
db.session.add(comment)
db.session.commit()
def make_user_as_admin(user_id):
with app.app_context():
db.session.query(User).filter(User.fb_id == user_id).update({"is_superuser": True})
db.session.commit()
if __name__ == "__main__":
parser = createParser()
namespace = parser.parse_args(sys.argv[1:])
if namespace.init_data:
generate_test_data()
if namespace.make_admin:
make_user_as_admin(namespace.make_admin)