project_conquer/app/views.py

94 lines
3.5 KiB
Python

from flask import render_template, redirect, url_for, request
from flask_appbuilder.models.sqla.interface import SQLAInterface
from flask_appbuilder import ModelView, MasterDetailView, AppBuilder, BaseView, expose, has_access
from flask_appbuilder.models.sqla.filters import FilterEqual, FilterNotEqual, FilterStartsWith, FilterEqualFunction
from flask_appbuilder.actions import action
from . import appbuilder, db
from .models import *
class matchTypeView(ModelView):
datamodel = SQLAInterface(MatchType)
class passReasonView(ModelView):
datamodel = SQLAInterface(PassReason)
class opportunityReportModelView(ModelView):
datamodel = SQLAInterface(opportunityReport)
#base_filters = [['match_id', FilterNotEqual, 2]]
@action("skipChecked", "Omit", "All checked records will be market Omit", "fa-rocket")
def skipChecked(self, items):
if isinstance(items, list):
for item in items:
item.match_id = 2
self.datamodel.edit(item)
#self.update_redirect()
else:
items.match_id = 2
self.datamodel.edit(items)
return redirect(request.referrer)
@action("neutralChecked", "Neutral", "All checked records will be marked Neutral", "fa-rocket")
def neutralChecked(self, items):
if isinstance(items, list):
for item in items:
item.match_id = 6
self.datamodel.edit(item)
#self.update_redirect()
else:
items.match_id = 6
self.datamodel.edit(items)
return redirect(request.referrer)
@action("goodChecked", "Good", "All checked records will be marked Good", "fa-rocket")
def goodChecked(self, items):
if isinstance(items, list):
for item in items:
item.match_id = 5
self.datamodel.edit(item)
#self.update_redirect()
else:
items.match_id = 5
self.datamodel.edit(items)
return redirect(request.referrer)
base_order = ('notif_date', 'desc')
list_columns = ['match', 'notif_source', 'notif_details_link', 'notif_date', 'oppty_desc', 'oppty_source', 'pass_reason']
show_columns = ['match', 'notif_source', 'notif_details_link', 'notif_link', 'notif_date', 'oppty_desc', 'oppty_link', 'oppty_source', 'naics', 'pop', 'setaside']
add_columns = ['match', 'notif_details', 'oppty_url', 'oppty_date', 'naics', 'pop', 'setaside']
edit_columns = ['match', 'pass_reason']
label_columns = {
'notif_link': 'Bidmatch',
'oppty_link': 'Opportunity',
'naics': 'NAICS',
'pop': 'PoP',
}
class matchTypeMasterView(MasterDetailView):
datamodel = SQLAInterface(MatchType)
related_views = [opportunityReportModelView]
@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(matchTypeView, 'Match Types', icon='fa-folder-open-o', category = "Opportunities")
appbuilder.add_view(passReasonView, 'Pass Reasons', icon='fa-folder-open-o', category = "Opportunities")
#appbuilder.add_view_no_menu(opportunityReportModelView)
appbuilder.add_view(matchTypeMasterView, 'Bid Opportunities', icon='fa-folder-open-o', category = "Opportunities")
appbuilder.add_view(opportunityReportModelView, 'Bid Details', icon='fa-folder-open-o', category = "Opportunities")