def create_app(config_name): # __name__ 决定应用根目录 # app = Flask(__name__, static_url_path='', static_folder='') app = Flask(__name__) # 实例化flask_admin # 初始化app配置 app.config.from_object(config[config_name]) config[config_name].init_app(app) # 扩展应用初始化 bootstrap.init_app(app) mail.init_app(app) moment.init_app(app) db.init_app(app) login_manager.init_app(app) configure_uploads(app, excels) flask_admin.init_app(app) flask_admin.add_view(MyBaseView(name='报表主页', endpoint='index')) flask_admin.add_view(MyUserView(User, db.session, name='用户管理')) flask_admin.add_view(MyBaobiaoView(BaobiaoToSet, db.session, name='报表名管理')) flask_admin.add_view(FileAdmin(staticfilepath, name='报表模板与生成文件管理')) # 注册蓝本 from .main import _main as main_blueprint app.register_blueprint(main_blueprint, url_prefix='/main') from .auth import _auth as auth_blueprint app.register_blueprint(auth_blueprint, url_prefix='/auth') from .api import _api as api_blueprint app.register_blueprint(api_blueprint, url_prefix='/api') from .baobiao import _baobiao as baobiao_blueprint app.register_blueprint(baobiao_blueprint, url_prefix='/baobiao') from .analyzingreport import _analyzingreport as analyzingreport_blueprint app.register_blueprint(analyzingreport_blueprint, url_prefix='/analyzingreport') return app
def action_delete(self, items): """Delete one or more Survey Files stored on server Called when the user selects the delete icon next to a file in the admin console or when the user selects multiple files and selects the ``delete`` option within the ``With selected`` menu. Args: items (str or list[str]): Contains either a filename, or a list of filenames, to be deleted. Returns: If no conflicts are found with SurveyCommander sessions and no missing files are detected among ``items``, then this function returns the result of :func:`~flask.ext.admin.contrib.fileadmin.FileAdmin.action_delete` with ``items`` passed to said function. Otherwise this function returns nothing, **like your soul**. """ try: self.delete_assoc_model(items) except: db.session.rollback() raise else: return FileAdmin.action_delete(self, items)
def init_app(self, app): super(MyAdmin, self).init_app(app) models_dir = app.config.get('MODELS_DIR', 'models') admin.add_view(ModelView(OutcomeType, db.session)) admin.add_view(ModelView(Sport, db.session)) path = op.join(op.dirname(__file__), models_dir) admin.add_view(FileAdmin(path, '/models/', name='Models'))
def CreateAdminView(admin): path = op.join(op.dirname(__file__), u'../static') admin.add_view(FileAdmin(path, u'/static', name='文件管理')) admin.add_view(BannerView(db.session, name=u'轮播图')) admin.add_view(MyView(db.session, name=u'用户管理')) admin.add_view(ProductView(db.session, name=u'商品管理')) admin.add_view(CategoryView(db.session, name=u'商品分类')) admin.add_view(UserAddressView(db.session, name=u'地址管理'))
def init_Admin(): app = getAppMgr().get('flaskApp') db = getAppMgr().get('sqlAlchemyDB').getDB() admin = Admin(app, template_mode='bootstrap3') admin.add_view(MyView('my view')) admin.add_view(UserView(getAppMgr().get('User'), db.session)) path = op.join(op.dirname(__file__), 'static') admin.add_view(FileAdmin(path, '/static/', name='Static Files')) getAppMgr().insert('admin', admin)
def create_admin_views() -> None: """ Created all admin panel views """ admin.add_view(AnalyticsView(name='Analytics', endpoint='analytics')) admin.add_view(AdminUserView(User, db.session, name='Users')) admin.add_view(AdminUserView(Book, db.session, name='Books')) admin.add_view( AdminUserView(BookInstance, db.session, name='BookInstances')) path = op.join(op.dirname(__file__), 'static') # manage files admin.add_view(FileAdmin(path, '/static/', name='Files'))
def init(): models = sorted(MODELS.keys()) for model_name in models: model = MODELS[model_name] logger.debug('add model %s view %s', model_name, model) admin.add_view(BaseModelView(model, database.SCOPED_SESSION())) admin.add_view( FileAdmin(base_model_type_builder.CONF.model_dir, '/static/', name='Model Files'))
def add_admin_view(self): print(self.globalspath) self.admin.add_view(FileAdmin(self.globalspath, '', name='后台文件管理')) self.admin.add_view(MyView(name='返回主页', endpoint='')) self.admin.add_view(ModelView(User, self.db.session)) self.admin.add_view(ModelView(Service, self.db.session)) self.admin.add_view(ModelView(api_manager, self.db.session)) self.admin.add_view(ModelView(test_case, self.db.session)) self.admin.add_view(ModelView(test_report, self.db.session)) self.admin.add_view(ModelView(task_schedul, self.db.session))
def get_base_path(self): path = FileAdmin.get_base_path(self) if not login.current_user.is_anonymous: path = os.path.join(path, login.current_user.login) try: os.mkdir(path) except OSError: pass return path else: return path
def create_app(config_name): app = Flask(__name__) #实例化主模块 app.config.from_object(config[config_name]) #配置 config[config_name].init_app(app) #Config的初始化 #Flask扩展自带的初始化 bootstrap.init_app(app) mail.init_app(app) moment.init_app(app) db.init_app(app) login_manager.init_app(app) #login_manager_admin.init_app(app) admin.init_app(app) ckeditor.init_app(app) babel.init_app(app) # 上传的初始化 configure_uploads(app, photos) ## 配置上传文件大小,默认64M,设置None则会采用config中MAX_CONTENT_LENGTH配置选项 patch_request_class(app, size=None) #flask-admin本地化 中文 @babel.localeselector def get_locale(): override = 'zh_Hans_CN' if override: session['lang'] = override return session.get('lang', 'en') # 附加路由和自定义的错误页面 from .main import main as main_blueprint #.main---当前main文件夹 main---在__init__.py中的蓝本实例 app.register_blueprint(main_blueprint) #注册main蓝本 from .auth import auth as auth_blueprint #url_prefix可选参数。注册后蓝本中定义的所有路由都会加上指定的前缀/auth #/login 路由会注册成 /auth/login,完整的URL---http://localhost:5000/auth/login app.register_blueprint(auth_blueprint, url_prefix='/auth') #注册auth 蓝本 from .AItencent import ai as ai_blueprint # .main---当前main文件夹 main---在__init__.py中的蓝本实例 app.register_blueprint(ai_blueprint, url_prefix='/ai') # 注册main蓝本 #增加导航栏栏目 #admin.add_view(MyView(name= 'Hello 1')) from .models import User, Post, Follow admin.add_view(UserView(User, db.session, name='用户管理')) admin.add_view(PostView(Post, db.session, name='文章管理')) admin.add_view(FollowView(Follow, db.session, name='关注管理')) path = op.join(op.dirname(__file__), 'static') admin.add_view(FileAdmin(path, name='Static文件')) #'/static/'是否包含 一样的效果 #admin.add_view(FileAdmin(path, '/static/', name='Static Files')) return app
def create_admin(): app = current_app._get_current_object() admin = Admin(app, "AtomicPress", index_view=HomeView(name='Home')) admin.add_view(ModelView(models.Blog, db.session, category="Blog")) admin.add_view(ModelView(models.Author, db.session, category="Blog")) admin.add_view(PostView(models.Post, db.session, category="Post")) admin.add_view(ModelView(models.Tag, db.session, category="Post")) admin.add_view(ModelView(models.Category, db.session, category="Post")) admin.add_view( FileAdmin(app.config["UPLOADS_PATH"], app.config["UPLOADS_URL"], name='Upload files'))
def create_admin(app=None): admin = Admin(app, name="LRENZ", index_view=MyIndexView(), base_template='admin/my_master.html', template_mode='bootstrap3') admin.add_view(UserView(User)) admin.add_view(PostView(Post)) admin.add_view(TodoView(Todo)) admin.add_view(ModelView(Tag)) admin.add_view(ModelView(Code)) admin.add_view(FileView(File, category='File')) admin.add_view(ImageView(Image, category='File')) admin.add_view(ReviewsView(Review)) admin.add_view( FileAdmin(path, '/files/', name='Static Files', category='File'))
def create_app(): admin = Admin(app, name='MyAdmin', index_view=AdminIndexView(template='home.html'), template_mode='bootstrap3') app.config['SECRET_KEY'] = '123456' app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://*****:*****@mysql:3306/myblog?charset=utf8mb4' admin.add_view(MyblogModel(Myblog_list, db.session)) admin.add_view(ArticleCategoryModel(Article_class, db.session)) admin.add_view(TopArticleModel(Top_list, db.session)) admin.add_view(UsPramaModel(Us_prama, db.session)) admin.add_view(MyblogReadModel(Myblog_read, db.session)) admin.add_view(Login(name='test', endpoint='index')) path = op.join(op.dirname(__file__), 'static') path = "/static/" admin.add_view(FileAdmin(path, '/img', name='Static Files')) return app
def create_app(): #APP init app = Flask(__name__) app.config.from_object('config.DevelopmentConfig') #THEMES init Themes(app, app_identifier='app') #MAIL init from flask_mail import Mail mail = Mail(app) #DATABASE init from models import db db.init_app(app) #MIGRATIONS init migrate = Migrate(app, db) with app.app_context(): #User init from flask_user import SQLAlchemyAdapter, UserManager from users import User db_adapter = SQLAlchemyAdapter(db, User) user_manager = UserManager(db_adapter, app) #db finalization db.create_all() #API - is for IOT, or mobile from models import DummyObject, DummyFile manager = flask_restless.APIManager(app, flask_sqlalchemy_db=db) manager.create_api(DummyObject) manager.create_api(DummyFile) #ADMIN - is for basic crud for trained users from admin import admin admin.init_app(app) #MEMBER VIEWS from member import MemberView MemberView.register(app) #upload example from flask_admin.contrib.fileadmin import FileAdmin path = os.path.join(os.path.dirname(__file__), app.config['UPLOAD_FOLDER']) admin.add_view(FileAdmin(path, '/uploads/', name='Uploads')) #sqlmodel example from flask_admin.contrib.sqla import ModelView admin.add_view(ModelView(DummyObject, db.session)) #DASHBOARD - is for customer login pages #I'll have to make that custom return app, migrate
def create_app(): # create and configure the app app = Flask(__name__, instance_relative_config=True) app.config.from_object(config[os.getenv('FLASK_CONFIG')]) config[os.getenv('FLASK_CONFIG')].init_app(app) # Role.insert_roles() app.permanent_session_lifetime = datetime.timedelta(seconds=60 * 30) from flaskprj.models import db db.init_app(app) babel.init_app(app) app.config['BABEL_DEFAULT_LOCALE'] = 'zh_CN' bootstrap.init_app(app) login_manager.init_app(app) try: if not app.instance_path: os.makedirs(app.instance_path) except OSError: pass from .main import main as main_blueprint app.register_blueprint(main_blueprint) from .auth import auth as auth_blueprint app.register_blueprint(auth_blueprint) app.add_url_rule('/', endpoint='index') # admin.init_app(app, index_view=BlogAdminIndexView()) admin = Admin(app=app, name='Admin', index_view=BlogAdminIndexView()) admin.add_view( BlogModelView(model=User, session=db.session, endpoint='Users')) admin.add_view( BlogModelView(model=Post, session=db.session, endpoint='Posts')) admin.add_view( BlogModelView(model=Tag, session=db.session, endpoint='Tags')) file_path = os.path.join(os.path.dirname(__file__), 'static/img') admin.add_view(FileAdmin(file_path, '/static/img/', name='图片文件')) return app
def create_app(): app = Flask(__name__) app.config.from_object('config.DevelopmentConfig') login_manager.init_app(app) from .admin import admin admin.add_view(FileAdmin(app.config['AUTOMATON_FILES_DIR'], name='Release xml files')) admin.init_app(app) db.init_app(app) with app.test_request_context(): from app.auth.models import Users, Roles, Groups from app.releases.models import Release from app.testplans.models import TestPlan from app.testcases.models import TestCase db.create_all() Roles.default_roles(app, db) Groups.default_groups(app, db) Users.default_admin_user(app, db) import app.auth.controllers as auth import app.dashboard.controllers as dashboard import app.api.controllers as api import app.releases.controllers as releases import app.testplans.controllers as testplans import app.testcases.controllers as testcases import app.documentation.controllers as docs app.register_blueprint(auth.module) app.register_blueprint(dashboard.module) app.register_blueprint(api.module) app.register_blueprint(releases.module) app.register_blueprint(testcases.module) app.register_blueprint(testplans.module) app.register_blueprint(docs.module) return app
def create_app(config_app=Config): app = Flask(__name__) app.config.from_object(config_app) db.init_app(app) migrate.init_app(app, db) bcrypt.init_app(app) login.init_app(app) login.login_view = 'user_bp.login' login.login_message_category = 'info' login.session_protection = "strong" from .models import User, Post, Post_API from app.forms import PostModelView, MyIndexView, UserAdminView, ModelView admin.init_app(app, index_view=MyIndexView()) admin.add_view(UserAdminView(User, db.session)) admin.add_view(PostModelView(Post, db.session)) admin.add_view(ModelView(Post_API, db.session)) admin.add_view(FileAdmin(app.config['STATIC_DIR'], '/static/', name='Static Files')) create_blueprints(app) return app
def inaccessible_callback(self, name, **kwargs): return redirect(url_for('admin.login_view')) admin = Admin(app, name='管理中心', base_template='admin/my_master.html', index_view=MyAdminIndexView(name='首页', template='admin/index.html', url='/admin')) admin.add_view(HashView(Search_Hash, db.session, name='磁力Hash')) admin.add_view(KeywordsView(Search_Keywords, db.session, name='首页推荐')) admin.add_view(TagsView(Search_Tags, db.session, name='搜索记录')) admin.add_view(UserView(Search_Statusreport, db.session, name='爬取统计')) admin.add_view(FileAdmin(file_path, '/uploads/', name='文件管理')) admin.add_view(UserView(User, db.session, name='用户管理')) @manager.command def init_db(): db.create_all() db.session.commit() @manager.option('-u', '--name', dest='name') @manager.option('-e', '--email', dest='email') @manager.option('-p', '--password', dest='password') def create_user(name, password, email): if name is None: name = raw_input('输入用户名(默认admin):') or 'admin'
def create_app(extra_config_settings={}): # Create a Flask applicaction. # Instantiate Flask app = Flask(__name__) # Load App Config settings # Load common settings from 'app/settings.py' file app.config.from_object('app.settings') # Load local settings from 'app/local_settings.py' app.config.from_object('app.local_settings') # Load extra config settings from 'extra_config_settings' param app.config.update(extra_config_settings) # Setup db Mongo db.init_app(app) # Setup Flask-Mail mail.init_app(app) # Setup WTForms CSRFProtect csrf_protect.init_app(app) # Register blueprints from app.views.public_views import public_blueprint app.register_blueprint(public_blueprint) from app.views.members_views import members_blueprint app.register_blueprint(members_blueprint) # Setup an error-logger to send emails to app.config.ADMINS init_email_error_handler(app) # Setup Flask-secure from .models.user_models import User, Role app.user_datastore = MongoEngineUserDatastore(db, User, Role) security.init_app(app, app.user_datastore) # datastore.create_user(email='*****@*****.**', password='******') Bootstrap(app) # Initialize flask_bootstrap babel.init_app(app) # Initialize flask_babelex # Define bootstrap_is_hidden_field for flask-bootstrap's bootstrap_wtf.html from wtforms.fields import HiddenField def is_hidden_field_filter(field): return isinstance(field, HiddenField) app.jinja_env.globals['bootstrap_is_hidden_field'] = is_hidden_field_filter # Setup Flask-admin class AdminUserView(ModelView): can_create = False column_exclude_list = ('password') form_overrides = dict(password=HiddenField) admin = Admin(app, template_mode='bootstrap3') admin.add_view(AdminUserView(User)) admin.add_view(ModelView(Role)) path = op.join(op.dirname(__file__), 'static') admin.add_view(FileAdmin(path, '/static/', name='Files')) admin.add_link(MenuLink(name='Profile', endpoint='members.member_page')) admin.add_link(MenuLink(name='Logout', endpoint='security.logout')) return app
def create_app(config_name): app = Flask(__name__, instance_relative_config=True) app.config.from_object(app_config[config_name]) app.config.from_pyfile('config.py') db.init_app(app) migrate = Migrate(app, db) CORS(app) adm = admin.Admin(app, url="/miagi") # adm = admin.Admin(app) from app.models import roles from app.models import users from app.models import courses from app.models import approval_requests from app.models import participants from app.models import boards from app.models import tasks from app.models import student_answers from app.models import groups from app.models import keys from app.models import results from app.models import payments from app.models import events from .services.auth import auth as auth_blueprint app.register_blueprint(auth_blueprint) from .services.courses import courses as courses_blueprint app.register_blueprint(courses_blueprint) from .services.approval_requests import approvalRequest as approvalRequest_blueprint app.register_blueprint(approvalRequest_blueprint) from .services.user import users as users_blueprint app.register_blueprint(users_blueprint) from .services.tasks import tasks as tasks_blueprint app.register_blueprint(tasks_blueprint) from .services.groups import groups as groups_blueprint app.register_blueprint(groups_blueprint) from .services.events import events as events_blueprint app.register_blueprint(events_blueprint) from .services.participants import participants as participants_blueprint app.register_blueprint(participants_blueprint) from .socket_events import chatEvents as chatEvents_blueprint app.register_blueprint(chatEvents_blueprint) from .services.student_answers import studentAsnswers as studentAsnswers_blueprint app.register_blueprint(studentAsnswers_blueprint) from .services.results import results as results_blueprint app.register_blueprint(results_blueprint) from .services.keys import keys as keys_blueprint app.register_blueprint(keys_blueprint) from .services.payments import payments as payments_blueprint app.register_blueprint(payments_blueprint) from .services.admin import adm as admin_blueprint app.register_blueprint(admin_blueprint) # from .services.admin_test import adam as adam_blueprint # app.register_blueprint(adam_blueprint) # Declare socket socketio.init_app(app) from .models.roles import Role # Declare default objects in db @app.before_first_request def init_roles(): if Role.query.count() == 0: db.session.add(Role(id=1, name='admin')) db.session.add(Role(id=2, name='moderator')) db.session.add(Role(id=3, name='teacher')) db.session.add(Role(id=4, name='student')) db.session.commit() # ADD Admin UI from .services.admin.views import RoleAdmin, UserAdmin, CourseAdmin, \ TaskAdmin, GroupsAdmin, BoardAdmin, ParticipantAdmin, \ StudentAnswerAdmin, ResultAdmin, KeysAdmin, PaymentsAdmin, EventsAdmin, \ CourseApprovalRequestsAdmin adm.add_view(RoleAdmin(roles.Role, db.session)) adm.add_view(UserAdmin(users.User, db.session)) adm.add_view(CourseAdmin(courses.Course, db.session)) adm.add_view(TaskAdmin(tasks.Task, db.session)) adm.add_view(GroupsAdmin(groups.Group, db.session)) adm.add_view(EventsAdmin(events.Event, db.session)) adm.add_view(BoardAdmin(boards.Board, db.session)) adm.add_view(ParticipantAdmin(participants.Participant, db.session)) adm.add_view(StudentAnswerAdmin(student_answers.StudentAnswer, db.session)) adm.add_view(ResultAdmin(results.Result, db.session)) adm.add_view(KeysAdmin(keys.Key, db.session)) adm.add_view(PaymentsAdmin(payments.Payment, db.session)) adm.add_view( CourseApprovalRequestsAdmin(approval_requests.CourseApprovalRequest, db.session)) path = app.config["B_DATA_FILES_DIR"] adm.add_view(FileAdmin(path, name='Static Files')) # from .services.admin_test import RoleAdmin, UserAdmin, CourseAdmin, TaskAdmin # # adm.add_view(RoleAdmin(roles.Role, db.session)) # adm.add_view(UserAdmin(users.User, db.session)) # adm.add_view(CourseAdmin(courses.Course, db.session)) # adm.add_view(TaskAdmin(tasks.Task, db.session)) # # adm.add_link(MenuLink(name='Logout', endpoint='adam.logout')) return app
class CommentView(ModelView): create_modal = True class NotificationsView(BaseView): @expose('/') def index(self): return self.render('admin/notification.html') admin.add_view(UserView(User, db.session)) admin.add_view(CommentView(Comment, db.session)) path = join(dirname(__file__), 'uploads') admin.add_view(FileAdmin(path, '/uploads/', name='UploadHere')) admin.add_view(NotificationsView(name='Notifications', endpoint='notify')) @app.route('/login') def login(): user = User.query.filter_by(id=1).first() login_user(user) return redirect(url_for('admin.index')) @app.route('/logout') def logout(): logout_user() return redirect(url_for('admin.index'))
can_export = True column_list = ('id', 'date_modified', 'user_id', 'assignment_id', 'course_id', 'code', 'correct', 'score', "submission_status", "grading_status", 'version', 'url' ) column_filters = ('user_id', 'assignment_id', 'course_id', 'date_modified', 'correct', 'submission_status', 'grading_status') column_formatters = {'code': _render_code, 'endpoint': _smaller, 'version': _render_version} column_formatters_export = None column_export_list = None admin.add_view(UserView(User, db.session, category='Tables')) admin.add_view(CourseView(Course, db.session, category='Tables')) admin.add_view(SubmissionView(Submission, db.session, category='Tables')) admin.add_view(SampleSubmissionView(SampleSubmission, db.session, category='Tables')) admin.add_view(AssignmentView(Assignment, db.session, category='Tables')) admin.add_view(AssignmentGroupView(AssignmentGroup, db.session, category='Tables')) admin.add_view(AssignmentGroupMembershipView(AssignmentGroupMembership, db.session, category='Tables')) admin.add_view(AssignmentTagView(AssignmentTag, db.session, category='Tables')) admin.add_view(ModelIdView(Authentication, db.session, category='Tables')) admin.add_view(RoleView(Role, db.session, category='Tables')) admin.add_view(LogView(Log, db.session, category='Tables')) admin.add_view(ReviewView(Review, db.session, category='Tables')) # admin.add_view(FileAdmin(app.config['BLOCKPY_LOG_DIR'], base_url='/admin/code_logs/', name='Disk Logs')) admin.add_view(FileAdmin(app.config['UPLOADS_DIR'], '', name='File Uploads'))
'template': { 'style': 'width:320px;' }, } admin = Admin(index_view=CodingpyAdmin(name='首页'), name='编程派', template_mode='bootstrap3') admin.add_view(ArticleAdmin(Article, db.session, name='文章')) admin.add_view(CategoryAdmin(Category, db.session, name='分类')) admin.add_view(UserAdmin(User, db.session, name='用户')) admin.add_view(TagAdmin(Tag, db.session, name='标签')) admin.add_view(TopicAdmin(Topic, db.session, name='专题')) admin.add_view(FileAdmin(file_path, '/static/', name='文件')) class WechatTextMessageAdmin(ModelView): create_template = "admin/a_create.html" edit_template = "admin/a_edit.html" column_list = ('request', 'response', 'scene') form_excluded_columns = ('created_at', ) column_searchable_list = ('request', 'response', 'scene') column_labels = dict( request=('请求'), response=('响应'),
('Secondary Education(Grade 9-12)','Secondary Education(Grade 9-12)'), ('Bachelor Level','Bachelor Level'), ('Master Level','Master Level') ] } form_create_rules = ('course_title', 'course_level', 'course_description') form_edit_rules = ('course_title', 'course_level', 'course_description') class LogoutMenuLink(MenuLink): def is_accessible(self): return current_user.is_authenticated # For general models, admin.add_view(ModelView(User, db.session)) admin.add_view(UserView(User, db.session)) admin.add_view(StudentView(Student, db.session)) admin.add_view(TutorView(Tutor, db.session)) admin.add_view(CannotDeleteView(Location, db.session)) admin.add_view(CourseView(Course, db.session)) admin.add_view(CustomView(Mycourse, db.session)) admin.add_view(ShowLinkView(Experience, db.session)) admin.add_view(ShowLinkView(Achievement, db.session)) admin.add_view(ShowLinkView(Qualification, db.session)) path = op.join(op.dirname(__file__), 'static/docs/') admin.add_view(FileAdmin(path, '/static/docs/', name='Documents')) admin.add_link(LogoutMenuLink(name='Logout', category='', url="/logout"))
def create_app(extra_config_settings={}): # Create a Flask applicaction. # Instantiate Flask app = Flask(__name__) # Load App Config settings # Load common settings from 'app/settings.py' file app.config.from_object('app.settings') # Load local settings from 'app/local_settings.py' app.config.from_object('app.local_settings') # Load extra config settings from 'extra_config_settings' param app.config.update(extra_config_settings) # Setup db Mongo db.init_app(app) # Setup Flask-Mail #mail.init_app(app) # Setup WTForms CSRFProtect csrf_protect.init_app(app) # Register blueprints from app.views.public_views import public_blueprint app.register_blueprint(public_blueprint) from app.views.success import members_blueprint app.register_blueprint(members_blueprint) from app.views.admin_views import admin_blueprint app.register_blueprint(admin_blueprint, url_prefix='/admin') from app.views.mod_views import mod_blueprint app.register_blueprint(mod_blueprint, url_prefix='/mod') from app.views.biz_views import biz_blueprint app.register_blueprint(biz_blueprint, url_prefix='/biz') # Setup an error-logger to send emails to app.config.ADMINS #init_email_error_handler(app) # Setup Flask-secure from .models.user_models import Role, User app.user_datastore = MongoEngineUserDatastore(db, User, Role) security.init_app(app, app.user_datastore, register_form=registerForm) # datastore.create_user(email='*****@*****.**', password='******') babel.init_app(app) # Initialize flask_babelex # Setup Flask-admin class AdminUserView(ModelView): can_create = False column_exclude_list = ('password') column_editable_list = ['active'] def is_accessible(self): return current_user.has_role('admin') adminDash = Admin( app, name='admin', template_mode='bootstrap4', url="/admin", endpoint='admin' ) #, index_view=adminView(url='/admin', endpoint='admin')) adminDash.add_view(AdminUserView(User)) adminDash.add_view(ModelView(Role)) path = op.join(op.dirname(__file__), './') adminDash.add_view(FileAdmin(path, '/', name='Files')) adminDash.add_link(MenuLink(name='Profile', endpoint='members.member_page')) adminDash.add_link(MenuLink(name='Logout', endpoint='security.logout')) return app
# pip install transformers==4.0.1 # pip install word2number basedir = os.path.abspath(os.path.dirname(__file__)) upload_dir = os.path.join(basedir, 'static/uploads') output_dir = os.path.join(basedir, 'output') sys.path.append(os.path.join(os.path.dirname(basedir), 'Python_Modules')) from _transcriber import TRANSCRIBER app = Flask(__name__) app.debug = True admin = Admin(name='Uploaded Files') admin.init_app(app) dropzone = Dropzone(app) admin.add_view(FileAdmin(upload_dir, name='FILES')) app.config.from_pyfile('config.py') app.config['DROPZONE_ALLOWED_FILE_CUSTOM'] = True app.config['DROPZONE_ALLOWED_FILE_TYPE'] = 'audio/*, .mp3, .wav, .m4a' transcriber = TRANSCRIBER() # 이부분은 자유롭게 바꾸셔도 됩니다 Python Modules 폴더 내 make_tables.py만 불러오면 돼요 os.chdir(os.path.join(basedir, '../Python_Modules')) import make_tables with open(os.path.join(upload_dir, 'faq_query.json')) as f: query_faq = json.load(f) @app.route("/", methods=['GET', 'POST']) def upload():
admin.add_view( ProjectView(Project, db.session, name="Projects (Data Packages)")) class RenderingView(ModelView): column_list = ('title', 'path') can_export = True admin.add_view(RenderingView(Rendering, db.session, name="Renderings (Views)")) admin.add_view(ModelView(Source, db.session, name="Data sources")) admin.add_view(ModelView(License, db.session, name="Licenses")) admin.add_view(FileAdmin(upload_path, '/uploads/', name="Uploads")) # API views @app.route("/api/projects", methods=['GET']) def projects_list(): return [ p.dict() for p in Project.query.filter_by( is_hidden=False, is_featured=False).limit(24).all() ] @app.route("/api/projects/featured", methods=['GET']) def projects_list_featured(): return [ p.dict() for p in Project.query.filter_by(
def apply_file_admin(self, app): # Admin添加文件管理系统 path = 'app' + app.static_url_path self.admin.add_view(FileAdmin(path, '/static/', name='静态资源'))
if not auth or (auth.username, auth.password) != app.config['ADMIN_CREDENTIALS']: raise HTTPException( '', Response('You have to an administrator.', 401, {'WWW-Authenticate': 'Basic realm="Login Required"'})) return True class UserModelView(ModelView): column_display_pk = True form_columns = ['first_name', 'last_name', 'key', 'confirmation'] column_searchable_list = ('first_name', 'last_name', 'email') column_filters = ('first_name', 'last_name', 'email') class TranslationModelView(ModelView): column_display_pk = True form_columns = [ 'id', 'user', 'timestamp', 'input', 'output', 'elapsed_time' ] # Users admin.add_view(UserModelView(User, db.session)) admin.add_view(TranslationModelView(Translation, db.session)) # Static files path = op.join(op.dirname(__file__), 'static') admin.add_view(FileAdmin(path, '/static/', name='Static'))
class PkView(ModelView): column_display_pk = True admin.add_view(UserView(User, db.session)) admin.add_view(PkView(Role, db.session)) # admin.add_view(PkView(roles_users, db.session)) admin.add_view(PkView(Farm, db.session)) admin.add_view(PkView(Field, db.session)) # admin.add_view(PkView(crops_field, db.session)) admin.add_view(PkView(Crop, db.session)) admin.add_view(PkView(DailyFieldInput, db.session)) admin.add_view(PkView(Agrimodule, db.session)) admin.add_view(PkView(Agripump, db.session)) admin.add_view(PkView(Agrisensor, db.session)) admin.add_view(PkView(Pump, db.session)) admin.add_view(PkView(Measurement, db.session)) admin.add_view(PkView(AgrimoduleList, db.session)) admin.add_view(PkView(AgrisensorList, db.session)) admin.add_view(PkView(AgripumpList, db.session)) admin.add_view(PkView(WelcomeLog, db.session)) def get_path(): return join(dirname(__file__)[:-5], 'static/images/crops') admin.add_view(FileAdmin(get_path(), '/crops/', name='CropImage'))
# 重写admin登录 class MyAdminIndexView(AdminIndexView): @expose('/') @login_required def index(self): return super(MyAdminIndexView, self).index() # admin columns admin = Admin(app, name='File Research', index_view=MyAdminIndexView(), template_mode='bootstrap3') admin.add_view(FileAdmin(path, '/static/files/', name='Media Files')) # The Home page is accessible to anyone @app.route('/') def home_page(): # String-based templates return render_template('index.html') # The Members page is only accessible to authenticated users via the @login_required decorator @app.route('/members') @login_required # User must be authenticated def member_page(): # String-based templates return render_template_string("""