def create_app(sqlite_path='sqlite:///intent.db'):
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = sqlite_path
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['BASIC_AUTH_USERNAME'] = 'john'
app.config['BASIC_AUTH_PASSWORD'] = 'matrix'
babel = Babel(app)
admin = Admin(app, name='PrayerBot', template_mode='bootstrap3')
db.init_app(app)
register_admin(admin, app)
app.app_context().push()
app.add_url_rule('/webhook', view_func=WebhookAPI.as_view('webhook'))
app.add_url_rule('/privacy', view_func=PrivacyPolicy.as_view('privacy'))
if os.environ.get('ACCESS_TOKEN'):
utils.send_greeting_text_config()
db.create_all()
db.session.commit()
db.session.autoflush = True
db.session.autocommit = True
return app
python类Admin()的实例源码
def create_app(cache):
app = Flask(__name__, static_url_path='')
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///pong.db'
cache.init_app(app)
compress.init_app(app)
Bootstrap(app)
db.init_app(app)
with app.app_context():
db.create_all()
admin = Admin(app, name='pongr', template_mode='bootstrap3')
admin.add_view(GameView(Game, db.session))
admin.add_view(DoublesView(DoublesGame, db.session))
admin.add_view(PlayerView(Player, db.session))
admin.add_view(RatingsView(Ratings, db.session))
return app, cache
def configure_admin(app, db):
admin.init_app(app)
# Admin pages
admin.add_view(
BaseView(OperatingSystem, db.session, endpoint='operatingsystems'))
admin.add_view(BaseView(Project, db.session, endpoint='projects'))
admin.add_view(ReleaseView(Release, db.session, endpoint='releases'))
admin.add_view(TestRunView(TestRun, db.session, endpoint='testruns'))
# security
admin.add_view(BaseView(User, db.session, endpoint='users',
category='Auth'))
admin.add_view(BaseView(Role, db.session, endpoint='roles',
category='Auth'))
@app.security.context_processor
def security_context_processor():
return dict(
admin_base_template=admin.base_template,
admin_view=admin.index_view,
h=admin_helpers,
get_url=url_for
)
def init_admin(app):
"""Adds ModelViews to flask-admin."""
admin = Admin(
app,
name="{{cookiecutter.app_name}}-Admin",
index_view=MyAdminIndexView(),
base_template='my_master.html',
endpoint="admin"
)
admin.add_view(MyModelView(Role, db.session))
admin.add_view(UserView(User, db.session))
return None
####################
# Helper functions #
####################
def create_admin(app=None):
"""Admin factory"""
index_view = IndexView()
return QuokkaAdmin(
app,
index_view=index_view,
template_mode=app.config.get('FLASK_ADMIN_TEMPLATE_MODE')
)
def configure_admin(app, admin=None): # noqa
"""Configure admin extensions"""
admin = admin or create_admin(app)
custom_index = app.config.get('ADMIN_INDEX_VIEW')
if custom_index:
admin.index_view = import_string(custom_index)()
if isinstance(admin._views[0], IndexView): # noqa
del admin._views[0] # noqa
admin._views.insert(0, admin.index_view) # noqa
admin_config = app.config.get(
'ADMIN',
{
'name': 'Quokka Admin',
'url': '/admin'
}
)
for key, value in list(admin_config.items()):
setattr(admin, key, value)
# avoid registering twice
if admin.app is None:
admin.init_app(app)
return admin
def configure_admin(app):
admin = Admin(app, name='Flask Workshop')
# add views
admin.add_view(MenuView(db.menu, 'Menu'))
admin.add_view(ContactView(db.contact, 'Contact'))
def index():
return '<a href="/admin/">Click me to get to Admin!</a>'
def init_admin_app(self):
"""
Initialize admin app
"""
admin_views = __import__(
'crm.apps.admin.views',
globals(),
locals(),
['object']
)
adminindexview = getattr(
admin_views,
'MyAdminIndexView')
admin = Admin(
self._app,
name="CRM",
index_view=adminindexview(url='/'),
endpoint='/',
template_mode="bootstrap3", url="/"
)
all_models = {}
for model in BaseModel.__subclasses__():
all_models[model.__name__] = model
with warnings.catch_warnings():
warnings.filterwarnings(
'ignore', 'Fields missing from ruleset', UserWarning)
for main_model in NAV_BAR_ORDER['MAIN']:
viewname = main_model + "ModelView"
viewcls = getattr(admin_views, viewname)
admin.add_view(viewcls(all_models[main_model], db.session))
for extra_model in NAV_BAR_ORDER['EXTRA']:
viewname = extra_model + "ModelView"
viewcls = getattr(admin_views, viewname)
admin.add_view(
viewcls(all_models[extra_model], db.session, category="Extra"))
def init_admin(app):
"""
initializes the flask-admin interface
:param app:
:return:
"""
admin = Admin(app, index_view=AuthAdminIndexView(), name='ChaosWG Manager Admin',
template_mode='bootstrap3')
admin.add_link(MenuLink(name='Back Home', url='/tasks'))
admin.add_view(AuthAdminModelView(Task))
admin.add_view(AuthAdminUserModelView(User))
admin.add_view(AuthAdminModelView(Room))
admin.add_view(AuthAdminModelView(History))
def add_admin(app):
""" to the app.
"""
admin = Admin(app, template_mode='bootstrap3', index_view=TheAdminIndexView())
admin.add_view(UserAdmin(User, admin.app.scoped_session, endpoint='user_admin'))
admin.add_view(GroupAdmin(Group, admin.app.scoped_session, endpoint='group_admin'))
admin.add_view(NewsAdmin(News, admin.app.scoped_session, endpoint='news_admin'))
admin.add_view(ProjectAdmin(Project, admin.app.scoped_session, endpoint='project_admin'))
admin.add_view(ReleaseAdmin(Release, admin.app.scoped_session, endpoint='release_admin'))
admin.add_view(PageAdmin(Page, admin.app.scoped_session, endpoint='page_admin'))
def load_admin():
"""
Configuration admin
"""
from apps.auth.controllers import MyAdminIndexView
admin = Admin(
app, name='Admin', index_view=MyAdminIndexView(),
template_mode='bootstrap3', base_template='admin_master.html',
)
return admin
def __init__(self):
super(RadarAdmin, self).__init__(template_folder='admin/templates')
self.context_processor(inject_current_user)
admin = Admin(
self,
'RADAR Admin',
index_view=AdminIndexView(),
template_mode='bootstrap3',
base_template='master.html',
url='/admin'
)
admin.add_view(CohortView(Group, db.session, name='Cohorts', category='Groups', endpoint='cohort'))
admin.add_view(HospitalView(Group, db.session, name='Hospitals', category='Groups', endpoint='hospital'))
admin.add_view(GroupView(Group, db.session, name='Groups', category='Groups'))
admin.add_view(GroupConsultantView(GroupConsultant, db.session, name='Consultants', category='Groups'))
admin.add_view(GroupDiagnosisView(GroupDiagnosis, db.session, name='Diagnoses', category='Groups'))
admin.add_view(GroupFormView(GroupForm, db.session, name='Forms', category='Groups'))
admin.add_view(GroupObservationView(GroupObservation, db.session, name='Observations', category='Groups'))
admin.add_view(GroupPageView(GroupPage, db.session, name='Pages', category='Groups'))
admin.add_view(GroupQuestionnaireView(GroupQuestionnaire, db.session, name='Questionnaires', category='Groups'))
admin.add_view(CodeView(Code, db.session, name='Codes', category='Codes'))
admin.add_view(CountryView(Country, db.session, name='Countries', category='Codes'))
admin.add_view(EthnicityView(Ethnicity, db.session, name='Ethnicities', category='Codes'))
admin.add_view(NationalityView(Nationality, db.session, name='Nationalities', category='Codes'))
admin.add_view(CountryEthnicityView(CountryEthnicity, db.session, name='Country ethnicities', category='Codes'))
admin.add_view(
CountryNationalityView(
CountryNationality,
db.session,
name='Country nationalities',
category='Codes'
)
)
admin.add_view(ConsultantView(Consultant, db.session, name='Consultants', category='Consultants'))
admin.add_view(SpecialtyView(Specialty, db.session, 'Specialties', category='Consultants'))
admin.add_view(DiagnosisView(Diagnosis, db.session, name='Diagnoses', category='Diagnoses'))
admin.add_view(DiagnosisCodeView(DiagnosisCode, db.session, name='Codes', category='Diagnoses'))
admin.add_view(DrugView(Drug, db.session, 'Drugs', category='Drugs'))
admin.add_view(DrugGroupView(DrugGroup, db.session, 'Groups', category='Drugs'))
admin.add_view(ConsentView(Consent, db.session, 'Consents', category='Other'))
admin.add_view(FormView(Form, db.session, 'Forms', category='Other'))
admin.add_view(ObservationView(Observation, db.session, 'Observations', category='Other'))
admin.add_view(ExportView(name='Exports', endpoint='exports', category='Other'))