94 lines
3.5 KiB
Python
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")
|