at = at.astimezone(pytz.utc) except Exception as e: log.error("format parameter at error=%s", e) return jsonify({'message': 'Wrong parameter, it should be %Y%m%d%H%M%S', 'code': 400}), 400 try: data = request.get_json() name = data.get('name', None) job_id = text_type(uuid4()) schedule_test_task.schedule(at, name, job_id=job_id) except Exception as e: log.error(e) return jsonify({'code': 400, 'message': str(e)}), 400 return jsonify({'message': 'success', 'id': job_id}) appbuilder.add_view_no_menu(QueuesView) @rq_dashboard.blueprint.before_request @rq_scheduler_dashboard.blueprint.before_request def check_auth(): """dashboard permission checking interceptor.""" if not current_user.is_authenticated: return render_template('401.html', base_template=appbuilder.base_template, appbuilder=appbuilder), 401 for role in current_user.roles: if appbuilder.get_app.config['AUTH_ROLE_ADMIN'] == role.name: return None return render_template('403.html', base_template=appbuilder.base_template, appbuilder=appbuilder), 403 appbuilder.get_app.register_blueprint(rq_dashboard.blueprint, url_prefix="/rq") appbuilder.add_link('tasks_queue', href="/rq", label="tasks in queue", category="Queues") appbuilder.get_app.register_blueprint(rq_scheduler_dashboard.blueprint, url_prefix="/scheduler")
@expose('/12h/') def phase12h(self): return redirect(get_url(720, 'teleinfohourphaseschartview')) @expose('/24h/') def phase24h(self): return redirect(get_url(1440, 'teleinfohourphaseschartview')) @expose('/1sem/') def phase1sem(self): return redirect(get_url(10080, 'teleinfohourphaseschartview')) """ Menu Chart Phase """ appbuilder.add_view_no_menu(MenuPhase) appbuilder.add_link("15 minutes", href='/menuphase/15min', icon="fa-bar-chart", category='Phase') appbuilder.add_link("1 heure", href='/menuphase/1h', icon="fa-bar-chart", category='Phase') appbuilder.add_link("12 heures", href='/menuphase/12h', icon="fa-bar-chart", category='Phase')
def index(self): #return jsonify({'tasks': map(make_public_task, tasks)}) print(repr(request.args)) print(repr(request.method)) print(repr(request.headers)) return jsonify(tasks) @expose("/get_token") def get_token(self): print(repr(request.headers)) return jsonify({'res': True}) @expose("/get_resource") def get_resource(self): return jsonify({'res': False}) @expose("/del_resource") def del_resource(self): return jsonify({'res': False}) """ Application wide 404 error handler """ @appbuilder.app.errorhandler(404) def page_not_found(e): return render_template('404.html', base_template=appbuilder.base_template, appbuilder=appbuilder), 404 db.create_all() appbuilder.add_view_no_menu(ApiView())
from email_client import Client self.client = Client() self.client.start() elif 'client' in self.__dict__: self.client.exit() @appbuilder.app.errorhandler(404) def page_not_found(e): return render_template( '404.html', base_template=appbuilder.base_template, appbuilder=appbuilder), 404 db.create_all() appbuilder.add_view(AppSettingsModelView, "Settings", icon="fa-cogs") appbuilder.add_view( EmailModelView, "List Emails", icon="fa-envelope-o", category="Emails", category_icon="fa-envelope") appbuilder.add_view_no_menu(AttachmentModelView) appbuilder.add_view( ActionModelView, "List Actions", icon="fa-cogs", category="Actions", category_icon="fa-cogs")
('记录信息', {'fields':['context', 'created_on']}) ] list_title = '记事本' add_title = '添加记录' show_title = '当前记录' edit_title = '修改记录' @appbuilder.app.errorhandler(404) def page_not_found(e): return render_template('404.html', base_template=appbuilder.base_template, appbuilder=appbuilder), 404 db.create_all() appbuilder.add_view_no_menu(ProjectFilesModelView) appbuilder.add_view_no_menu(ModuleModelView) appbuilder.add_view_no_menu(ProblemCategoryModelView) appbuilder.add_view(ProjectModelView, '运维项目', icon='fa-cubes', category='项目配置', category_icon='fa-cog' ) appbuilder.add_view(ProjectMasterView, '项目模块', icon='fa-cube', category='项目配置', category_icon='fa-cog'
from flask_appbuilder import ModelView from flask_appbuilder.models.sqla.interface import SQLAInterface from app import appbuilder from app.areas.models import Area #from app.plantas.views import PlantaView #### para la descarga + timestamp en nombre del archivo from flask_appbuilder import ModelView, expose, action from flask import redirect, send_file import csv from io import BytesIO import pandas as pd from datetime import datetime import pytz from app.incrementocampania.models import Incremcampania tz = pytz.timezone('America/Argentina/Buenos_Aires') fecha = datetime.now(tz) fecha = fecha.strftime('%Y-%m-%d %H:%M') fecha = str(fecha) ############# class IncremcampaniaView(ModelView): datamodel = SQLAInterface(Incremcampania) # esto es para registrar la vista? incremento_builder = appbuilder.add_view_no_menu(IncrementoCampaña)
class ProjectModelView(CompactCRUDMixin, ModelView): datamodel = SQLAModel(Project) related_views = [ProjectFilesModelView] show_template = 'appbuilder/general/model/show_cascade.html' edit_template = 'appbuilder/general/model/edit_cascade.html' add_columns = ['name'] edit_columns = ['name'] list_columns = [ 'name', 'created_by', 'created_on', 'changed_by', 'changed_on' ] show_fieldsets = [ ('Info', { 'fields': ['name'] }), ('Audit', { 'fields': ['created_by', 'created_on', 'changed_by', 'changed_on'], 'expanded': False }) ] db.create_all() appbuilder.add_view(ProjectModelView, "List Projects", icon="fa-table", category="Projects") appbuilder.add_view_no_menu(ProjectFilesModelView)
@appbuilder.app.errorhandler(404) def page_not_found(e): return render_template('404.html', base_template=appbuilder.base_template, appbuilder=appbuilder), 404 db.create_all() class Api(BaseView): default_view = "random" @expose('/random') def random(self): response = {'randomNumber': randint(1, 100)} return jsonify(response) class RandomView(BaseView): route_base = '/' default_view = 'random' @expose('random') def random(self): return self.render_template('random.html') appbuilder.add_view_no_menu(Api) appbuilder.add_view(RandomView, 'random', category="Random")
@expose('/edit_first') def edit_first(self): return redirect(url_for('ChooseConfigView.edit', pk=1)) db.session.remove() db.create_all() # Import the client API from rest_api import ClientApi # Import the views we defined in the ``routes`` module from routes import PublicView, PrivateView # Add these vews without a menu: appbuilder.add_view_no_menu(ClientApi()) appbuilder.add_view_no_menu(PrivateView()) appbuilder.add_view_no_menu(PublicView()) # Add the modelviews with a menu: # Category 'Blog' appbuilder.add_view(EntryView, "Entries", category="Blog", icon="fa-file-text", category_icon="fa-rss") appbuilder.add_view(CommentView, "Comments", category="Blog", icon="fa-comments") #, category_icon="fa-comments")
print(ret_json) response = make_response(ret_json, 200) response.headers['Content-Type'] = "application/json" return response @expose_api(name='query_table', url='/api/query_table/<table_schema>', methods=['GET']) @has_access_api @permission_name('list') def query_table(self, table_schema): ret_list = list() data = db.get_engine(bind="information_schema").execute( "select distinct t.TABLE_NAME from columns t where t.TABLE_SCHEMA='{0}'" .format(table_schema)).fetchall() for i in data: ret_list.append({ 'id': str(i['TABLE_NAME']), 'text': str(i['TABLE_NAME']) }) print(ret_list) ret_json = json.dumps(ret_list) response = make_response(ret_json, 200) response.headers['Content-Type'] = "application/json" return response appbuilder.add_view_no_menu(ApiMpsView) # db.create_all()
thread.daemon = True # Daemonize thread thread.start() # Start the execution # retrieve the schedule codes from the json file codes = schedule_service.week_of_month() # print(codes) schedule_data = schedule_service.get_schedule_times(codes) print(schedule_service.get_week_events()) if type == 'day': pass return self.render_template('schedules.py', schedule_data=schedule_data) # Create paths appbuilder.add_view_no_menu(LowellResources()) # Views for Site files class LowellFiles(BaseView): # Add route base as root "/files" route_base = "/files" ''' Create path disclaimer that renders disclaimer.py jijna2 template that contains project's disclaimer ''' @expose('/disclaimer') def disclaimer(self): return self.render_template('disclaimer.py')
local_user = MyUser() local_user.username = motGUID.lower() local_user.active = True local_user.extinfo = UserExtInfo(user_type='ldap') local_user.first_name = self.appbuilder.sm.ldap_extract(user_ldapinfo[1], \ self.appbuilder.sm.auth_ldap_firstname_field, local_user.first_name) local_user.last_name = self.appbuilder.sm.ldap_extract(user_ldapinfo[1], \ self.appbuilder.sm.auth_ldap_lastname_field, local_user.last_name) local_user.email = self.appbuilder.sm.ldap_extract(user_ldapinfo[1], \ self.appbuilder.sm.auth_ldap_email_field, local_user.email) if roles: local_user.roles = roles result = self.datamodel.edit(local_user) if result: log.debug("Successfully sync ldap user %s by %s", local_user.username, g.user.username) success_list.append(local_user.username) coreIds.remove(local_user.username) else: log.debug("Failed sync ldap user %s by %s", local_user.username, g.user.username) return jsonify({ 'success_list': success_list, 'failed_list': coreIds }) else: return jsonify({'msg': 'Wrong parameter, coreId is null'}), 400 appbuilder.add_view_no_menu(ApiUserView)
icon="fa-table", category="Settings") appbuilder.add_view(ShortcodeModelView, "Shortcode", icon="fa-table", category="Settings") appbuilder.add_view(SubscriberModelView, "Subscriber", icon="fa-table", category="Content Management") appbuilder.add_view(ContentModelView, "Contents", icon="fa-folder-open-o", category="Content", category_icon="fa-envelope") appbuilder.add_view_no_menu(MediaFilesModelView) appbuilder.add_view(ArtistModelView, "Artists", icon="fa-table", category="Content", category_icon="fa-envelope") appbuilder.add_view(KeywordModelView, "Keywords", icon="fa-table", category="Settings", category_icon="fa-envelope") appbuilder.add_view(InboxModelView, "Inbox", icon="fa-table", category="Messaging", category_icon="fa-envelope")
mail = Mail(self.appbuilder.get_app) msg = Message() msg.subject = "Password reset link" url = url_for('ResetPasswordFormView.this_form_get', _external=True, reset_hash=get_token(user)) msg.html = "Hello {}. <br> Please click below the link to reset your password <br>{}".format( user.first_name, url) msg.recipients = [user.email] print(url) ###mail.send(msg) class ResetPasswordFormView(PublicFormView): form = ResetPasswordForm route_base = "/reset" form_title = "Reset Password" message = "Please login" def form_post(self, form): user = verify_token(request.args.get('reset_hash')) if user: self.appbuilder.sm.reset_password(user.id, form.password.data) flash(self.message, "info") else: flash("Invalid token", "error") appbuilder.add_view_no_menu(ForgotPasswordView, "ForgotPasswordView") appbuilder.add_view_no_menu(ResetPasswordFormView, "ResetPasswordFormView")
return json.dumps(surveylist) class GetApi(BaseView): route_base = "/api/v1" @expose('/getdata', methods=['GET']) def get_data(self): url = "http://localhost:8080/api/v1/empdata" response = requests.request("GET", url) data = json.loads(response.text) ult_list = ast.literal_eval(json.dumps(data)) header = ult_list[0].keys() rows = [x.values() for x in ult_list] return tabulate.tabulate(rows, header, tablefmt='rst') db.create_all() fill_gender() appbuilder.add_view_no_menu(MyView()) appbuilder.add_view_no_menu(GetApi()) appbuilder.add_view(GroupModelView, "Departments", icon='fa-envelope') appbuilder.add_view(ContactModelView, "About Me", icon="fa-phone") appbuilder.add_link("List Bangalore Employee", href='/api/v1/getdata', icon="fa-envelope ", category='Menu') #appbuilder.add_link("Google", href="https://www.google.com/", icon = "fa-google-plus") ##############################################
self.datamodel.delete_all(items) self.update_redirect() return redirect(self.get_redirect()) class TableColumnInlineView(CompactCRUDMixin, ModelView): datamodel = SQLAInterface(models.TableColumn) can_delete = False edit_columns = [ 'column_name', 'description', 'table', 'groupby', 'filterable', 'count_distinct', 'sum', 'min', 'max'] list_columns = [ 'column_name', 'type', 'groupby', 'filterable', 'count_distinct', 'sum', 'min', 'max'] page_size = 100 appbuilder.add_view_no_menu(TableColumnInlineView) class ColumnInlineView(CompactCRUDMixin, ModelView): datamodel = SQLAInterface(models.Column) edit_columns = [ 'column_name', 'description', 'datasource', 'groupby', 'count_distinct', 'sum', 'min', 'max'] list_columns = [ 'column_name', 'type', 'groupby', 'filterable', 'count_distinct', 'sum', 'min', 'max'] can_delete = False page_size = 100 def post_update(self, col): col.generate_metrics()
if "POST" == request.method: user_agent = to_user_agent(request) if self.form_service.submit(form, g.user, user_agent): return redirect( url_for("FormView.success_redirect", form_id=form_id) ) return self.render_template( "openform/form.html", form_view = form_view, form = form ) @expose('/<form_id>/success_redirect', methods=['GET']) def success_redirect(self, form_id): return redirect( url_for("FormView.form_success", form_id=form_id) ) @expose('/<form_id>/success', methods=['GET']) def form_success(self, form_id): return self.render_template( 'openform/form_success.html' ) appbuilder.add_view_no_menu(FormView)
db.create_all() # more icon names: http://fontawesome.io/icons/ appbuilder.add_view(GroupModelView, "List Groups", icon="fa-folder-open-o", category="Contacts", category_icon="fa-envelope") appbuilder.add_view(ContactModelView, "List Contacts", icon="fa-envelope", category="Contacts") appbuilder.add_view(MultipleViewsExp, "Multiple Views", icon="fa-envelope", category="Contacts") appbuilder.add_view_no_menu(ContactTimeChartView) appbuilder.add_view(GroupMasterView, "Master Detail Views", icon="fa-envelope", category="Contacts") class EmployeeHistoryView(ModelView): datamodel = SQLAInterface(EmployeeHistory) list_columns = ['department', 'begin_date', 'end_date'] class EmployeeHistoryInlineView(CompactCRUDMixin, ModelView): datamodel = SQLAInterface(EmployeeHistory) list_columns = ['department', 'begin_date', 'end_date']
class DepartmentView(ModelView): datamodel = SQLAInterface(Department) related_views = [EmployeeView] class BenefitView(ModelView): datamodel = SQLAInterface(Benefit) add_columns = ['name'] edit_columns = ['name'] show_columns = ['name'] list_columns = ['name'] db.create_all() appbuilder.add_view_no_menu(EmployeeHistoryView, "EmployeeHistoryView") appbuilder.add_view(EmployeeView, "Employees", icon="fa-folder-open-o", category="Company") appbuilder.add_separator("Company") appbuilder.add_view(DepartmentView, "Departments", icon="fa-folder-open-o", category="Company") appbuilder.add_view(FunctionView, "Functions", icon="fa-folder-open-o", category="Company") appbuilder.add_view(BenefitView, "Benefits",
def get_expenses(self): sObj = Splitwise(Config.consumer_key, Config.consumer_secret) sObj.setAccessToken(session['access_token']) content = sObj.getExpenses() session['expenses'] = content friends = sObj.getFriends() self.debtors = friendsload(friends) #print(friendsload(friends)) #print("\n\n\n\n\n\n" , content) #resp = splitwise.get('get_current_user') return render2('output.html', getresp="waddup") # class Root(BaseView): # appbuilder.add_view_no_menu(Splitwise()) appbuilder.add_view_no_menu(Starling()) appbuilder.add_view_no_menu(Home()) #appbuilder.add_view(Welcome, "Welcome", category='Charts') # appbuilder.add_view(Home, "/home/home") appbuilder.add_link("Settle", "/home/settle", label="Settle") appbuilder.add_link("Analytics", "/home/balance", label="Analytics") appbuilder.add_link("Transactions", "/home/home", label="Transactions") # appbuilder.add_view_no_menu(Welcome()) # appbuilder.add_link("Splitwise", href='/splitwise_login/', category='Login') # appbuilder.add_view(Home, '/balance', category="Analytics") db.create_all()
class RM_RoleModelView(ModelView): """TODO: Document me""" datamodel = SQLAInterface(RolemasterRole) list_columns = ['name', 'organization'] related_views = [RM_AccountabilityModelView, RM_DomainModelView, RM_RoleFillingModelView] class RM_OrganizationModelView(ModelView): """TODO: Document me""" datamodel = SQLAInterface(Organization) list_columns = ['name', 'description'] related_views = [RM_OrganizationMembershipModelView] #label_columns = {} #show_fieldsets = [] db.create_all() appbuilder.add_view(RM_OrganizationModelView, "List Organizations") #appbuilder.add_view(RM_OrganizationMembershipModelView, "List Organization Members", category="Organization") appbuilder.add_view_no_menu(RM_OrganizationMembershipModelView) appbuilder.add_view(RM_RoleModelView, "List Roles") appbuilder.add_view_no_menu(RM_AccountabilityModelView) appbuilder.add_view_no_menu(RM_DomainModelView) appbuilder.add_view_no_menu(RM_RoleFillingModelView)
valid_to=datetime.datetime.utcfromtimestamp(int(endpoint['details']['cert']['notAfter']) / 1000).replace(tzinfo=datetime.timezone.utc), \ key_value=str(endpoint['details']['key']['alg'] + str(endpoint['details']['key']['size'])), sha1_fingerprint=str(endpoint['details']['cert']['sha1Hash']) \ )) db.session.commit() flash("Scan finished for: " + str(item.dns_name), 'success') else: for endpoint in data['endpoints']: db.session.query(Certificates).filter_by(dns_name=host).delete() db.session.add(Certificates(dns_name=host, endpoint_ip=str(endpoint['ipAddress']), subject="Scan failure. Validate certificate manually.", grade="X")) db.session.commit() return redirect('/certificatemodelview/list/') @appbuilder.app.errorhandler(404) def page_not_found(e): return render_template('404.html', base_template=appbuilder.base_template, appbuilder=appbuilder), 404 db.create_all() ### Register Views ### appbuilder.add_view_no_menu(HomeView) appbuilder.add_view(CertificateModelView, "Certificates", icon="fa-search", category="Certificates", category_icon="fa-search") appbuilder.security_cleanup() #cleanup any dangling permissions
from flask.ext.appbuilder.baseviews import BaseView from flask.ext.appbuilder.baseviews import expose from app import appbuilder class MyView(BaseView): route_base = "/myview" @expose('/method1/<string:param1>') def method1(self, param1): # do something with param1 # and return to previous page or index param1 = 'Hello %s' % (param1) return param1 @expose('/method2/<string:param1>') def method2(self, param1): # do something with param1 # and render template with param param1 = 'Goodbye %s' % (param1) return param1 appbuilder.add_view_no_menu(MyView())
class UsuariosView(ModelView): datamodel = SQLAInterface(User) list_columns = ['nome_usuario', 'email', 'login_name', 'id_usuario'] class NotasFiscaisView(ModelView): datamodel = SQLAInterface(NotasFiscais) list_columns = [ 'chave_nfe', 'numero_nota_fiscal', 'data_emissao', 'valor', 'remetente.nome_cliente' ] appbuilder.add_view_no_menu(UtilView) appbuilder.add_view_no_menu(UserView) ##appbuilder.add_view(MyFormView, "My form View", icon="fa-group", label=_('My form View'), ## category="My Forms", category_icon="fa-cogs") ##appbuilder.add_view(UsuariosView, "Usuários", icon="fa-group", label=_('Usuários'), ##category="Geral", category_icon="fa-cogs") ##appbuilder.add_view(NotasFiscaisView, "Notas Fiscais", icon="fa-group", label="Notas Fiscais", ## category="Geral", category_icon="fa-cogs") ##appbuilder.add_view(BancosView, "Bancos", icon="fa-group", label="Bancos", ## category="Geral", category_icon="fa-cogs")
appbuilder.add_view(PredictViewSF, "UR Pred SemiFinals", label=_('UR Pred SemiFinals'), icon="fa-futbol-o", category="Your Prediction", category_icon="fa-thumbs-up") appbuilder.add_view(PredictViewF, "UR Pred Final", label=_('UR Pred Final'), icon="fa-futbol-o", category="Your Prediction", category_icon="fa-thumbs-up") appbuilder.add_view_no_menu(AllGameScores()) appbuilder.add_link("Games Rnd32 Score", label=_('Games Rnd32 Score'), href='/GameScores/rnd32/User', icon="fa-check", category='Users Standings') appbuilder.add_link("Group Standing Score", label=_('Group Standing Score'), href='/GameScores/group/User', icon="fa-check", category='Users Standings') appbuilder.add_link("Games Rnd16 Score", label=_('Games Rnd16 Score'), href='/GameScores/rnd16/User', icon="fa-check", category='Users Standings')
show_template = 'appbuilder/general/model/show_cascade.html' class FunctionView(ModelView): datamodel = SQLAInterface(Function) related_views = [EmployeeView] class DepartmentView(ModelView): datamodel = SQLAInterface(Department) related_views = [EmployeeView] class BenefitView(ModelView): datamodel = SQLAInterface(Benefit) add_columns = ['name'] edit_columns = ['name'] show_columns = ['name'] list_columns = ['name'] db.create_all() appbuilder.add_view_no_menu(EmployeeHistoryView, "EmployeeHistoryView") appbuilder.add_view(EmployeeView, "Employees", icon="fa-folder-open-o", category="Company") appbuilder.add_separator("Company") appbuilder.add_view(DepartmentView, "Departments", icon="fa-folder-open-o", category="Company") appbuilder.add_view(FunctionView, "Functions", icon="fa-folder-open-o", category="Company") appbuilder.add_view(BenefitView, "Benefits", icon="fa-folder-open-o", category="Company")
def get_area(self, results): y = {} k = {} z = {} for x in results: y[x.cid] = x.areaname k[x.kid] = x.dname z['area'] = y z['delgate'] = k return z db.create_all() appbuilder.add_view_no_menu(Sms()) appbuilder.add_view_no_menu(MyView()) appbuilder.add_view_no_menu(API()) appbuilder.add_view(VotersView, "Voters", category="Settings") appbuilder.add_view(DelegatesView, "Delegates", category="Settings") appbuilder.add_view(ElectionView, "Elections", category="Settings") appbuilder.add_view(ScopeView, " Scopes", category="Settings") appbuilder.add_view(PostView, " Post", category="Settings") appbuilder.add_view(CountiesView, "Counties", category="Settings") appbuilder.add_view(ConstituencyView, "Constituency", category="Settings") appbuilder.add_view(WardView, "Ward", category="Settings") appbuilder.add_view(SmsloggerView, "SMS LOGGER", category="Settings") appbuilder.add_view(VotersChartView, "Voters Registered", category="Reports") appbuilder.add_view(SMSReportChartView, "SMS Report", category="Reports") # appbuilder.add_view(MyView, "Election Results", category="Reports")
redis_master.delete(CONF_PROJECT_KEYSET_FORMAT.format(p=project), CONF_PROJECT_WRITE_PERM_FORMAT. \ format(p=project), CONF_PROJECT_READ_PERM_FORMAT.format(p=project)) redis_master.srem(CONF_PROJECTS_KEY_FORMAT, project) log.info("Successfully delete project byname for project {p} by {u}".format(p=project, \ u=g.user.username)) return jsonify({'message': 'success'}) except Exception as e: log.error(e) return jsonify( {'message': 'delete item error= {0}'.format(e)}), 500 else: return jsonify({'message': 'doesn\'t have permission'}), 403 else: return jsonify({'message': 'project doesn\'t exists'}), 400 def _check_conf_permission(self, project, perm): """inner method check mermission.""" # if is Admin role direct allow for role in g.user.roles: if appbuilder.get_app.config['AUTH_ROLE_ADMIN'] == role.name: return True return redis_slave.sismember("cfg:{0}:perm:{1}".format(project, perm), g.user.username) def _check_conf_exists(self, project, key): """inner method check config exists or not.""" return redis_slave.exists(CONF_KEY_FORMAT.format(p=project, k=key)) appbuilder.add_view_no_menu(ConfCenterView)
# list_columns = ['case_id', 'person_id'] # related_views =[CaseView] """ Application wide 404 error handler """ @appbuilder.app.errorhandler(404) def page_not_found(e): return render_template('404.html', base_template=appbuilder.base_template, appbuilder=appbuilder), 404 db.create_all() appbuilder.add_view_no_menu(PersonView, "PersonView") appbuilder.add_view(RegionView, "Regions", icon="fa-folder-open-o", category="Setup") appbuilder.add_view(DistrictView, "Districts", icon="fa-folder-open-o", category="Setup") appbuilder.add_view(TownView, "Towns", icon="fa-folder-open-o", category="Setup") appbuilder.add_view(GenderView, "Gender",
] add_template = "/datas/add_with_tinymce.html" edit_template = "/datas/edit_with_tinymce.html" class RefreshFrequencyView(ModelViewWithAudit): route_base = "/refresh_frequency" datamodel = DataSQLAInterface(RefreshFrequency) label_columns = {'refresh_frequency_description': 'Description'} list_columns = ['refresh_frequency_description_', 'created_by'] appbuilder.add_view(DataSourceView, "Data Sources", category="Data", category_icon="") appbuilder.add_view(DataTypeView, "Data Types", category="Data") appbuilder.add_view(StorageLocationView, "Storage Locations", category="Data") appbuilder.add_view(RefreshFrequencyView, "Refresh Frequencies", category="Data") appbuilder.add_view_no_menu(DataSetAttributeView, "DataSetAttributeView") appbuilder.add_view(TagView, "Tag", category="Tag", category_icon="") appbuilder.add_view_no_menu(TagValueView, "TagValueView") appbuilder.add_view(DataSourceOwnerView, "Data Source Owner", category="Data")
from flask_appbuilder.models.sqla.interface import SQLAInterface from app import appbuilder #################### from app.tdnis.models import Tdni ####### import del MODEL de provincia #from app.paises.views import PaisView ############### tener cuidado con esto ESTUDIAR ########### # clase para armar el modelo class TdniView (ModelView): datamodel = SQLAInterface(Tdni) #related_views = [PaisView] ############### tener cuidado con esto label_columns = {"tipDni":"Tipo de DNI"} # estructura -> 'nombreAtributoModel':'nombre_a_Mostrar_en_Columna' list_columns = ["tipDni"] #lista de columnas a mostrar en el listado # lista de campos y atributos a mostrar en el "show" de cada registro #show_fieldsets =[('Resumen',{'fields': ['nomProvincia', 'paisProvincia']})] #campos a mostrar en el CREATE de un nuevo registro add_fieldsets = [ ("Información Básica", {"fields": ["tipDni"]}) ] # esto es para registrar la vista? tdnis_builder = appbuilder.add_view_no_menu( TdniView, "Tipo dni", )
form.data['dataset'] form.data['message'] flash(self.message, "info") return self.render_template(self.form_template, form=form) class ListFAQWidget(ListWidget): template = "/widgets/faq_list.html" class FAQView(ModelView): route_base = "/faq" datamodel = DataSQLAInterface(FAQModel) list_columns = ['faq_question', 'faq_text'] label_columns = {'faq_question': 'FAQ Question', 'faq_text': 'FAQ Text'} list_template = "/general/faq.html" list_widget = ListFAQWidget class FAQAdminView(ModelView): route_base = "/faq/admin" datamodel = DataSQLAInterface(FAQModel) list_columns = ['faq_question'] label_columns = {'faq_question': 'FAQ Question', 'faq_text': 'FAQ Text'} appbuilder.add_view_no_menu(GetAdviceView, "GetAdviceView") appbuilder.add_view(FAQView, "FAQs", category="FAQs") appbuilder.add_view(FAQAdminView, "FAQs Admin", category="FAQs")
class TableColumnInlineView(CompactCRUDMixin, ModelView): datamodel = SQLAInterface(models.TableColumn) can_delete = False edit_columns = [ 'column_name', 'description', 'table', 'groupby', 'filterable', 'count_distinct', 'sum', 'min', 'max' ] list_columns = [ 'column_name', 'type', 'groupby', 'filterable', 'count_distinct', 'sum', 'min', 'max' ] page_size = 100 appbuilder.add_view_no_menu(TableColumnInlineView) class ColumnInlineView(CompactCRUDMixin, ModelView): datamodel = SQLAInterface(models.Column) edit_columns = [ 'column_name', 'description', 'datasource', 'groupby', 'count_distinct', 'sum', 'min', 'max' ] list_columns = [ 'column_name', 'type', 'groupby', 'filterable', 'count_distinct', 'sum', 'min', 'max' ] can_delete = False page_size = 100
class ProjectFilesModelView(ModelView): datamodel = SQLAModel(ProjectFiles) label_columns = {'file_name': 'File Name', 'download': 'Download'} add_columns = ['file', 'description','project'] edit_columns = ['file', 'description','project'] list_columns = ['file_name', 'download'] show_columns = ['file_name', 'download'] class ProjectModelView(CompactCRUDMixin, ModelView): datamodel = SQLAModel(Project) related_views = [ProjectFilesModelView] show_template = 'appbuilder/general/model/show_cascade.html' edit_template = 'appbuilder/general/model/edit_cascade.html' add_columns = ['name'] edit_columns = ['name'] list_columns = ['name', 'created_by', 'created_on', 'changed_by', 'changed_on'] show_fieldsets = [ ('Info', {'fields': ['name']}), ('Audit', {'fields': ['created_by', 'created_on', 'changed_by', 'changed_on'], 'expanded': False}) ] db.create_all() appbuilder.add_view(ProjectModelView, "List Projects", icon="fa-table", category="Projects") appbuilder.add_view_no_menu(ProjectFilesModelView)
def post_add_redirect(self): """Override this function to control the redirect after add endpoint is called.""" dataset_id = db.session.query(DataSet).order_by( DataSet.dataset_id.desc()).first() return redirect('/data_set/edit/' + str(dataset_id.dataset_id)) def post_edit_redirect(self): """Override this function to control the redirect after add endpoint is called.""" return redirect('/data_set/list_new') def post_delete_redirect(self): """Override this function to control the redirect after delete endpoint is called.""" return redirect('/data_set/list_new') appbuilder.add_view(DataSetView, "Data Sets", category="Data", href='/data_set/list_new') appbuilder.add_view(DataSetView, "Data Sets Admin", category="Data", href='/data_set/list/') appbuilder.add_view_no_menu(DataSetAttachmentView)
"Add line monitor", icon="fa fa-qrcode", category="Line") #appbuilder.add_view(ProjectFilesByUser, "line function", icon="fa fa-qrcode", category="Line", # category_icon = "fa-envelope") appbuilder.add_view(ProjectFilesByUser, "line function", icon="fa fa-qrcode", category="Line", category_icon="fa-envelope") #appbuilder.add_view( # ProjectFilesModelView, "List all", icon="fa-table", category="Projects" #) appbuilder.add_link('Line', label=_('monitor list'), icon="fa-user-plus", href='/projectfilesbyuser/show') appbuilder.add_view(ProjectModelView, "List All Qrcode group", icon="fa-table", category="Line") appbuilder.add_view(ProjectFilesModelView, "List All Qrcode", icon="fa-table", category="Line") appbuilder.add_view_no_menu(ProjectFilesModelView) appbuilder.add_view_no_menu(ShowProjectFilesByUser) #appbuilder.add_view_no_menu(s) db.create_all()