|
1 | 1 | import os
|
2 | 2 |
|
| 3 | +from distutils.version import StrictVersion |
3 | 4 | from flask import Flask
|
4 | 5 | from jinja2 import FileSystemLoader
|
5 | 6 | from sqlalchemy.engine.url import make_url
|
6 | 7 | from sqlalchemy.exc import OperationalError
|
7 | 8 | from sqlalchemy_utils import database_exists, create_database
|
8 | 9 |
|
9 |
| -from utils import get_config, set_config, cache |
| 10 | +from utils import get_config, set_config, cache, migrate, migrate_upgrade |
10 | 11 |
|
| 12 | +__version__ = '1.0.0' |
11 | 13 |
|
12 | 14 | class ThemeLoader(FileSystemLoader):
|
13 | 15 | def get_source(self, environment, template):
|
@@ -45,14 +47,23 @@ def create_app(config='CTFd.config.Config'):
|
45 | 47 |
|
46 | 48 | app.db = db
|
47 | 49 |
|
| 50 | + migrate.init_app(app, db) |
| 51 | + |
48 | 52 | cache.init_app(app)
|
49 | 53 | app.cache = cache
|
50 | 54 |
|
| 55 | + version = get_config('ctf_version') |
| 56 | + |
| 57 | + if not version: ## Upgrading from an unversioned CTFd |
| 58 | + set_config('ctf_version', __version__) |
| 59 | + |
| 60 | + if version and (StrictVersion(version) < StrictVersion(__version__)): ## Upgrading from an older version of CTFd |
| 61 | + migrate_upgrade() |
| 62 | + set_config('ctf_version', __version__) |
| 63 | + |
51 | 64 | if not get_config('ctf_theme'):
|
52 | 65 | set_config('ctf_theme', 'original')
|
53 | 66 |
|
54 |
| - #Session(app) |
55 |
| - |
56 | 67 | from CTFd.views import views
|
57 | 68 | from CTFd.challenges import challenges
|
58 | 69 | from CTFd.scoreboard import scoreboard
|
|
0 commit comments