本文整理汇总了Python中WebCommonUtils.get_attrdef_filename方法的典型用法代码示例。如果您正苦于以下问题:Python WebCommonUtils.get_attrdef_filename方法的具体用法?Python WebCommonUtils.get_attrdef_filename怎么用?Python WebCommonUtils.get_attrdef_filename使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WebCommonUtils
的用法示例。
在下文中一共展示了WebCommonUtils.get_attrdef_filename方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: process_delete_file_form
# 需要导入模块: import WebCommonUtils [as 别名]
# 或者: from WebCommonUtils import get_attrdef_filename [as 别名]
def process_delete_file_form(global_config, form):
global_config['logger'].debug( 'Process Attribute Delete Form' )
data_filename = form[attr_delete_file_label].value
if form[attr_remove_file_processed_label].value == 'Yes':
remove_from_processed_files = True
else:
remove_from_processed_files = False
# Initialize the database session connection
db_name = global_config['db_name'] + global_config['this_season']
session = DbSession.open_db_session(db_name)
attrdef_filename = WebCommonUtils.get_attrdef_filename(short_comp=global_config['this_competition'])
if attrdef_filename is not None:
attr_definitions = AttributeDefinitions.AttrDefinitions(global_config)
attr_definitions.parse(attrdef_filename)
try:
ProcessFiles.remove_file_data(global_config, session, attr_definitions, \
data_filename, remove_from_processed_files)
result = 'Scouting Data File %s Attributes Successfully Removed' % (data_filename)
session.commit()
except ValueError as reason:
result = 'Error Removing Scouting Data File %s: %s' % (data_filename, reason)
session.remove()
return result
示例2: recalculate_scoring
# 需要导入模块: import WebCommonUtils [as 别名]
# 或者: from WebCommonUtils import get_attrdef_filename [as 别名]
def recalculate_scoring(global_config, competition=None, attr_definitions=None):
if competition is None:
competition = global_config['this_competition'] + global_config['this_season']
if competition == None or competition == '':
raise Exception( 'Competition Not Specified!')
# Build the attribute definition dictionary from the definitions csv file
if global_config['attr_definitions'] == None:
return
if attr_definitions is None:
attrdef_filename = WebCommonUtils.get_attrdef_filename(competition)
if attrdef_filename is not None:
attr_definitions = AttributeDefinitions.AttrDefinitions(global_config)
attr_definitions.parse(attrdef_filename)
else:
return
session = DbSession.open_db_session(global_config['db_name'] + global_config['this_season'])
team_rankings = getTeamsInRankOrder(session, competition)
for team_entry in team_rankings:
score = calculateTeamScore(session, team_entry.team, competition, attr_definitions)
setTeamScore(session, team_entry.team, competition, score)
session.commit()
dump_database_as_csv_file(session, global_config, attr_definitions, competition)
session.remove()
示例3: process_delete_attr_form
# 需要导入模块: import WebCommonUtils [as 别名]
# 或者: from WebCommonUtils import get_attrdef_filename [as 别名]
def process_delete_attr_form(global_config, form):
global_config['logger'].debug( 'Process Attribute Delete Form' )
season = form[attr_delete_season_label].value
comp = form[attr_delete_comp_label].value
team = form[attr_delete_team_number_label].value
attr_name = form[attr_delete_attribute_name_label].value
old_value = form[attr_delete_old_value_label].value
# Initialize the database session connection
db_name = global_config['db_name'] + global_config['this_season']
session = DbSession.open_db_session(db_name)
attrdef_filename = WebCommonUtils.get_attrdef_filename(short_comp=comp)
if attrdef_filename is not None:
attr_definitions = AttributeDefinitions.AttrDefinitions(global_config)
attr_definitions.parse(attrdef_filename)
attr_def = attr_definitions.get_definition(attr_name)
try:
DataModel.deleteAttributeValue(session, team, comp+season, attr_name, old_value, attr_def)
result = 'Scouting Data Attribute Value %s Successfully Removed From %s' % (old_value,attr_name)
session.commit()
except ValueError as reason:
result = 'Error Removing Scouting Data Attribute Value %s From %s: %s' % (old_value,attr_name,reason)
session.remove()
return result
示例4: process_form
# 需要导入模块: import WebCommonUtils [as 别名]
# 或者: from WebCommonUtils import get_attrdef_filename [as 别名]
def process_form(global_config, form):
global_config['logger'].debug( 'Process Attribute Modify Form' )
season = form[attr_modify_season_label].value
comp = form[attr_modify_comp_label].value
team = form[attr_modify_team_number_label].value
attr_name = form[attr_modify_attribute_name_label].value
old_value = form[attr_modify_old_value_label].value
new_value = form[attr_modify_new_value_label].value
# Initialize the database session connection
db_name = global_config['db_name'] + global_config['this_season']
session = DbSession.open_db_session(db_name)
attrdef_filename = WebCommonUtils.get_attrdef_filename(short_comp=comp)
if attrdef_filename is not None:
attr_definitions = AttributeDefinitions.AttrDefinitions(global_config)
attr_definitions.parse(attrdef_filename)
attr_def = attr_definitions.get_definition(attr_name)
try:
DataModel.modifyAttributeValue(session, team, comp+season, attr_name, old_value, new_value, attr_def)
result = 'Attribute %s Modified From %s to %s For Team %s' % (attr_name,old_value,new_value,team)
session.commit()
except ValueError as reason:
result = 'Error Modifying Scouting Addribute %s For Team %s: %s' % (attr_name,team,reason)
session.remove()
return result
示例5: get_team_score_breakdown_json
# 需要导入模块: import WebCommonUtils [as 别名]
# 或者: from WebCommonUtils import get_attrdef_filename [as 别名]
def get_team_score_breakdown_json(global_config, name, comp=None, store_json_file=False):
global_config['logger'].debug( 'GET Team Score Breakdown: %s', name )
if comp == None:
comp = global_config['this_competition'] + global_config['this_season']
season = global_config['this_season']
else:
season = WebCommonUtils.map_comp_to_season(comp)
session = DbSession.open_db_session(global_config['db_name'] + season)
attrdef_filename = WebCommonUtils.get_attrdef_filename(comp=comp)
attr_definitions = AttributeDefinitions.AttrDefinitions(global_config)
attr_definitions.parse(attrdef_filename)
result = []
result.append('{ "score_breakdown": [\n')
team_attributes = DataModel.getTeamAttributesInOrder(session, name, comp)
for attribute in team_attributes:
attr_def = attr_definitions.get_definition( attribute.attr_name )
if attr_def:
try:
stat_type = attr_def['Statistic_Type']
except:
stat_type = 'Total'
weight = int(float(attr_def['Weight']))
if weight != 0:
if stat_type == 'Average':
value = int(attribute.cumulative_value/attribute.num_occurs)
else:
value = int(attribute.cumulative_value)
data_str = '{"attr_name": "%s", "raw_score": %d, "weighted_score": %d}' % (attribute.attr_name,int(value),int(weight*value))
result.append(data_str)
result.append(',\n')
if len(team_attributes) > 0:
result = result[:-1]
result.append('\n')
result.append(']}')
json_str = ''.join(result)
if store_json_file is True:
try:
FileSync.put( global_config, '%s/EventData/TeamData/team%s_scouting_scorebreakdown.json' % (comp,name), 'text', json_str)
except:
raise
session.remove()
return json_str
示例6: process_attr_def_form
# 需要导入模块: import WebCommonUtils [as 别名]
# 或者: from WebCommonUtils import get_attrdef_filename [as 别名]
def process_attr_def_form(global_config, form):
global_config['logger'].debug( 'Process Attribute Definitions Form' )
attrdef_filename = WebCommonUtils.get_attrdef_filename(global_config['this_competition'])
if attrdef_filename is not None:
attr_definitions = AttributeDefinitions.AttrDefinitions(global_config)
attr_definitions.parse(attrdef_filename)
attr_dict = attr_definitions.get_definitions()
for key, attr_def in sorted(attr_dict.items()):
attr_def['Weight'] = form[key].value
attr_definitions.write_attr_overrides();
competition = global_config['this_competition'] + global_config['this_season']
if competition == None:
raise Exception( 'Competition Not Specified!')
DataModel.recalculate_scoring(global_config, competition, attr_definitions)
示例7: get_team_attributes_page
# 需要导入模块: import WebCommonUtils [as 别名]
# 或者: from WebCommonUtils import get_attrdef_filename [as 别名]
def get_team_attributes_page(global_config):
global_config['logger'].debug( 'GET Team Attributes' )
session = DbSession.open_db_session(global_config['db_name'] + global_config['this_season'])
comp = global_config['this_competition'] + global_config['this_season']
attrdef_filename = WebCommonUtils.get_attrdef_filename(comp=comp)
attr_definitions = AttributeDefinitions.AttrDefinitions(global_config)
attr_definitions.parse(attrdef_filename)
web.header('Content-Type', 'application/json')
result = []
result.append('{ "attributes": [\n')
team_rankings = DataModel.getTeamsInRankOrder(session, comp)
for team_entry in team_rankings:
result.append("{ 'Team': " + str(team_entry.team))
result.append(", 'Score': " + '%.2f' % team_entry.score )
team_attributes = DataModel.getTeamAttributesInOrder(session, team_entry.team, comp)
for attribute in team_attributes:
attr_def = attr_definitions.get_definition( attribute.attr_name )
if attr_def:
weight = int(float(attr_def['Weight']))
if weight != 0:
result.append( ", '" + attribute.attr_name + "': ")
if ( attr_def['Statistic_Type'] == 'Total'):
#result.append( str(attribute.cumulative_value) )
result.append( DataModel.mapValueToString(attribute.cumulative_value, attribute.all_values, attr_def, True) )
elif ( attr_def['Statistic_Type'] == 'Average'):
#result.append( str(attribute.avg_value) )
result.append( DataModel.mapValueToString(attribute.avg_value, attribute.all_values, attr_def, True) )
else:
#result.append( str(attribute.attr_value) )
result.append( DataModel.mapValueToString(attribute.attr_value, attribute.all_values, attr_def, True) )
result.append(' }')
result.append(',\n')
if len(team_rankings) > 0:
result = result[:-1]
result.append('\n')
result.append(']}')
session.remove()
return ''.join(result)
示例8: get_attr_def_form
# 需要导入模块: import WebCommonUtils [as 别名]
# 或者: from WebCommonUtils import get_attrdef_filename [as 别名]
def get_attr_def_form(global_config):
global_config['logger'].debug( 'GET Attribute Definitions Form' )
form = attrdef_form()
attrdef_filename = WebCommonUtils.get_attrdef_filename(global_config['this_competition'])
if attrdef_filename is not None:
attr_definitions = AttributeDefinitions.AttrDefinitions(global_config)
attr_definitions.parse(attrdef_filename)
attr_dict = attr_definitions.get_definitions()
for key, attr_def in sorted(attr_dict.items()):
try:
weight = float(attr_def['Weight'])
except:
weight = 0.0
form[key].value = str(int(weight))
return form
示例9: get_team_attr_rankings_page
# 需要导入模块: import WebCommonUtils [as 别名]
# 或者: from WebCommonUtils import get_attrdef_filename [as 别名]
def get_team_attr_rankings_page(global_config, comp, attr_name):
global_config['logger'].debug( 'GET Team Attribute Rankings' )
session = DbSession.open_db_session(global_config['db_name'] + global_config['this_season'])
attrdef_filename = WebCommonUtils.get_attrdef_filename(comp=comp)
attr_definitions = AttributeDefinitions.AttrDefinitions(global_config)
attr_definitions.parse(attrdef_filename)
attr = attr_definitions.get_definition(attr_name)
try:
stat_type = attr['Statistic_Type']
except:
stat_type = 'Total'
web.header('Content-Type', 'application/json')
result = []
result.append('{ "rankings": [\n')
if stat_type == 'Average':
team_rankings = DataModel.getTeamAttributesInAverageRankOrder(session, comp, attr_name, False)
else:
team_rankings = DataModel.getTeamAttributesInRankOrder(session, comp, attr_name, False)
for team in team_rankings:
if stat_type == 'Average':
value = int(team.cumulative_value/team.num_occurs)
else:
value = int(team.cumulative_value)
data_str = '{ "team": %d, "value": %d }' % (team.team,value)
result.append(data_str)
result.append(',\n')
if len(team_rankings) > 0:
result = result[:-1]
result.append('\n')
result.append(']}')
session.remove()
return ''.join(result)
示例10: get_team_attr_rankings_json
# 需要导入模块: import WebCommonUtils [as 别名]
# 或者: from WebCommonUtils import get_attrdef_filename [as 别名]
def get_team_attr_rankings_json(global_config, comp=None, attr_name=None):
global_config['logger'].debug( 'GET Team Attribute Rankings Json' )
store_data_to_file = False
if comp == None:
comp = global_config['this_competition'] + global_config['this_season']
season = global_config['this_season']
else:
season = WebCommonUtils.map_comp_to_season(comp)
session = DbSession.open_db_session(global_config['db_name'] + season)
attrdef_filename = WebCommonUtils.get_attrdef_filename(comp=comp)
attr_definitions = AttributeDefinitions.AttrDefinitions()
attr_definitions.parse(attrdef_filename)
attr_def = attr_definitions.get_definition(attr_name)
try:
stat_type = attr_def['Statistic_Type']
except:
stat_type = 'Total'
web.header('Content-Type', 'application/json')
result = []
result.append('{ "attr_name" : "%s",\n' % attr_name)
# add the columns bases on the attribute definition type
result.append(' "columns" : [\n')
result.append(' { "sTitle": "Team" }')
result.append(',\n')
columns = []
if attr_def['Type'] == 'Map_Integer':
map_values = attr_def['Map_Values'].split(':')
for map_value in map_values:
item_name = map_value.split('=')[0]
columns.append(item_name)
result.append(' { "sTitle": "%s" }' % item_name)
result.append(',\n')
result = result[:-1]
result.append('\n')
result.append(' ],\n')
if stat_type == 'Average':
team_rankings = DataModel.getTeamAttributesInAverageRankOrder(session, comp, attr_name)
else:
team_rankings = DataModel.getTeamAttributesInRankOrder(session, comp, attr_name)
result.append(' "rankings" : [\n')
for team_attr in team_rankings:
data_str = ' [ %d,' % team_attr.team
value_dict = DataModel.mapAllValuesToDict(attr_def, team_attr.all_values)
for column in columns:
try:
value = value_dict[column]
except:
value = 0
data_str += ' %d,' % value
data_str = data_str.rstrip(',')
data_str += ' ]'
result.append(data_str)
result.append(',\n')
if len(team_rankings) > 0:
result = result[:-1]
result.append('\n')
result.append(' ]\n}')
json_str = ''.join(result)
if store_data_to_file is True:
try:
file_name = 'attrrankings_%s' % attr_name
FileSync.put( global_config, '%s/EventData/%s.json' % (comp,file_name), 'text', json_str)
except:
raise
session.remove()
return json_str
示例11: get_team_rankings_json
# 需要导入模块: import WebCommonUtils [as 别名]
# 或者: from WebCommonUtils import get_attrdef_filename [as 别名]
def get_team_rankings_json(global_config, season, event, attr_filters=[], filter_name=None,
thumbnails = False, store_json_file=False):
global_config['logger'].debug( 'GET Team Rankings Json' )
store_data_to_file = False
comp = WebCommonUtils.map_event_code_to_comp(event, season)
session = DbSession.open_db_session(global_config['db_name'] + season)
result = []
result.append('{ "rankings": [\n')
rank_added = False
if len(attr_filters) == 0:
team_rankings = DataModel.getTeamsInRankOrder(session, comp, False)
for team in team_rankings:
# round the score to an integer value
team.score = float(int(team.score))
if team.score > 0:
thumbnails_snippet = ''
if thumbnails:
thumbnails_snippet = ',\n' + get_team_scouting_thumbnails_json_snippet(global_config, comp, str(team.team))
result.append( ' { "score": %0.1f, "competition": "%s", "team": %d%s }' % (team.score, comp, team.team,thumbnails_snippet))
result.append(',\n')
rank_added = True
else:
# we'll need the attribute definitions in order to retrieve the correct attribute value
# and attribute weighting
attrdef_filename = WebCommonUtils.get_attrdef_filename(comp=comp)
attr_definitions = AttributeDefinitions.AttrDefinitions(global_config)
attr_definitions.parse(attrdef_filename)
team_rank_dict = dict()
for attr_filter in attr_filters:
try:
attr_name, attr_value = attr_filter.split('=')
except:
attr_name = attr_filter
attr_value = None
attr_def = attr_definitions.get_definition(attr_name)
if attr_value is None:
team_rankings = DataModel.getTeamAttributesInRankOrder(session, comp, attr_name, False)
for team in team_rankings:
try:
stat_type = attr_def['Statistic_Type']
except:
stat_type = 'Total'
weight = int(float(attr_def['Weight']))
if stat_type == 'Average':
score = int(team.cumulative_value/team.num_occurs*weight)
else:
score = int(team.cumulative_value*weight)
try:
team_rank_dict[team.team] += score
except:
team_rank_dict[team.team] = score
else:
team_rankings = DataModel.getTeamAttributesWithValue(session, comp, attr_name, attr_value, False)
for team in team_rankings:
score = team.all_values.count(attr_value)
try:
team_rank_dict[team.team] += score
except:
team_rank_dict[team.team] = score
sorted_team_rank = sorted(team_rank_dict.items(), key=operator.itemgetter(1))
for team, score in sorted_team_rank:
# round the score to an integer value
score = float(int(score))
if score > 0:
thumbnails_snippet = ''
if thumbnails:
thumbnails_snippet = ',\n' + get_team_scouting_thumbnails_json_snippet(global_config, comp, str(team))
result.append( ' { "score": %0.1f, "competition": "%s", "team": %d%s }' % (score, comp, team, thumbnails_snippet))
result.append(',\n')
rank_added = True
if rank_added == True:
result = result[:-1]
result.append(']}')
json_str = ''.join(result)
if store_json_file is True:
try:
if filter_name is None:
file_name = 'scoutingrankings'
else:
file_name = 'scoutingrankings_%s' % filter_name
#.........这里部分代码省略.........
示例12: get_team_datafiles_page
# 需要导入模块: import WebCommonUtils [as 别名]
# 或者: from WebCommonUtils import get_attrdef_filename [as 别名]
def get_team_datafiles_page(global_config, name, display_notes=True):
global_config['logger'].debug( 'GET Team Data Files: %s', name )
if global_config['attr_definitions'] == None:
return None
session = DbSession.open_db_session(global_config['db_name'] + global_config['this_season'])
page=''
team_info = DataModel.getTeamInfo(session, int(name))
if team_info:
page += '<h3>Team Info</h3>'
page += '<li>Team Nickname: ' + team_info.nickname + '</li>'
page += '<li>Affiliation: ' + team_info.fullname + '</li>'
page += '<li>Location: ' + team_info.location + '</li>'
page += '<li>Rookie Season: ' + str(team_info.rookie_season) + '</li>'
page += '<li>Website: <a href="' + team_info.website + '">' + team_info.website + '</a></li>'
page += '<br>'
competitions = []
this_comp = global_config['this_competition']
season = global_config['this_season']
competitions.append(this_comp+season)
competitions_str = global_config['other_competitions']
competitions_str = competitions_str.replace(this_comp,'')
if competitions_str.count(',') > 0:
other_comps = competitions_str.split(',')
for other_comp in other_comps:
if other_comp != '':
competitions.append(other_comp+season)
elif competitions_str != '':
competitions.append(competitions_str+season)
for comp in competitions:
if comp != '':
attrdef_filename = WebCommonUtils.get_attrdef_filename(comp=comp)
attr_definitions = AttributeDefinitions.AttrDefinitions(global_config)
attr_definitions.parse(attrdef_filename)
input_dir = './static/data/' + comp + '/ScoutingData/'
pattern = 'Team' + name + '_' + '[a-zA-Z0-9_]*.txt'
datafiles = get_datafiles(input_dir, re.compile(pattern), False, global_config['logger'])
input_dir = './static/data/' + comp + '/ScoutingPictures/'
pattern = 'Team' + name + '_' + '[a-zA-Z0-9_]*.jpg|mp4'
mediafiles = get_datafiles(input_dir, re.compile(pattern), False, global_config['logger'])
if len(datafiles) == 0 and len(mediafiles) == 0:
continue
page += '<hr>'
page += '<h3> ' + comp + '</h3>'
team_attributes = DataModel.getTeamAttributesInOrder(session, name, comp)
if len(team_attributes) > 0:
page += '<ul>'
page += '<h3>Scouting Data Summary:</h3>'
page += '<ul>'
page += '<table border="1" cellspacing="5">'
page += '<tr>'
page += '<th>Attribute Name</th>'
page += '<th>Matches</th>'
page += '<th>Cumulative Value</th>'
page += '<th>Average Value</th>'
#page += '<th>Last Value</th>'
page += '<th>All Values</th>'
page += '</tr>'
for attribute in team_attributes:
attr_def = attr_definitions.get_definition( attribute.attr_name )
include_attr = False
if attr_def:
if attr_def.has_key('Include_In_Team_Display') \
and attr_def['Include_In_Team_Display'] == 'Yes':
include_attr = True
elif attr_def.has_key('Include_In_Report') \
and attr_def['Include_In_Report'] == 'Yes':
include_attr = True
elif attr_def.has_key('Weight') \
and attr_def['Weight'] != '0':
include_attr = True
if include_attr == True:
page += '<tr>'
if attr_def.has_key('Display_Name'):
page += '<td>%s</td>' % attr_def['Display_Name']
else:
page += '<td>%s</td>' % attr_def['Name']
page += '<td>%s</td>' % str(attribute.num_occurs)
page += '<td>%s</td>' % str(attribute.cumulative_value)
page += '<td>%0.2f</td>' % (attribute.avg_value)
#page += '<td>%s</td>' % str(attribute.attr_value)
page += '<td>%s</td>' % attribute.all_values
page += '</tr>'
#.........这里部分代码省略.........
示例13: get_team_scouting_data_summary_json
# 需要导入模块: import WebCommonUtils [as 别名]
# 或者: from WebCommonUtils import get_attrdef_filename [as 别名]
def get_team_scouting_data_summary_json(global_config, comp, name, attr_filter=[], filter_name=None, store_json_file=False):
global_config['logger'].debug( 'GET Team %s Scouting Data For Competition %s', name, comp )
season = WebCommonUtils.map_comp_to_season(comp)
session = DbSession.open_db_session(global_config['db_name'] + season)
if global_config['attr_definitions'] == None:
return None
attrdef_filename = WebCommonUtils.get_attrdef_filename(comp=comp)
attr_definitions = AttributeDefinitions.AttrDefinitions(global_config)
attr_definitions.parse(attrdef_filename)
result = []
result.append('{ "competition" : "%s", "team" : "%s",\n' % (comp,name))
result.append(' "scouting_data_summary" : [\n')
team_attributes = DataModel.getTeamAttributesInOrder(session, name, comp)
if len(team_attributes) > 0:
some_attr_added = False
for attribute in team_attributes:
attr_def = attr_definitions.get_definition( attribute.attr_name )
include_attr = False
if attr_def:
if attr_def.has_key('Include_In_Team_Display') \
and attr_def['Include_In_Team_Display'] == 'Yes':
include_attr = True
elif attr_def.has_key('Include_In_Report') \
and attr_def['Include_In_Report'] == 'Yes':
include_attr = True
elif attr_def.has_key('Weight') \
and attr_def['Weight'] != '0':
include_attr = True
# if an attribute filter has been provided, only include the attribute data if the
# attribute is in the filter
if len(attr_filter) > 0:
if attr_def['Name'] not in attr_filter:
include_attr = False
if include_attr == True:
some_attr_added = True
if attr_def.has_key('Display_Name'):
attr_name = attr_def['Display_Name']
else:
attr_name = attr_def['Name']
category = attr_def.get('Sub_Category', '')
result.append(' { "name": "%s", "matches": "%s", "cumulative_value": "%s", "average_value": "%s", "all_values": "%s", "category": "%s" }' % \
(attr_name,str(attribute.num_occurs),str(attribute.cumulative_value),str(round(attribute.avg_value,1)),\
DataModel.mapAllValuesToShortenedString(attr_def, attribute.all_values), category) )
result.append(',\n')
if some_attr_added:
result = result[:-1]
result.append(' ] }\n')
json_str = ''.join(result)
if store_json_file is True:
try:
FileSync.put( global_config, '%s/EventData/TeamData/team%s_scouting_data_summary.json' % (comp,name), 'text', json_str)
except:
raise
session.remove()
return json_str
示例14: get_attr_tree_json
# 需要导入模块: import WebCommonUtils [as 别名]
# 或者: from WebCommonUtils import get_attrdef_filename [as 别名]
def get_attr_tree_json(global_config, filter_name = None, store_data_to_file=False):
global_config['logger'].debug( 'GET Attribute Definitions Tree JSON' )
attrdef_filename = WebCommonUtils.get_attrdef_filename(global_config['this_competition'])
if attrdef_filename is None:
return None
attr_definitions = AttributeDefinitions.AttrDefinitions(global_config)
attr_definitions.parse(attrdef_filename)
competition = global_config['this_competition'] + global_config['this_season']
#categories = attr_definitions.get_sub_categories()
attr_filter = get_saved_filter(filter_name)
result = []
result.append('{ "item": [\n')
if filter_name != None:
checked = 0
else:
checked = 1
opened = 1
result.append(' { "text": "%s", "open": %d, "checked": %d, "id": "Skip_%s", "item": [ \n' % ('All Attributes',opened,checked,'All'))
category_dict = attr_definitions.get_attr_dict_by_category()
for category, attrlist in category_dict.iteritems():
if category != 'Uncategorized':
result.append(' { "text": "%s", "checked": %d, "id": "Skip_%s", "item": [ \n' % (category,checked,category))
for attrname in sorted(attrlist):
checked_ind = 0
if filter_name is None:
# if there is no specified filter, then set the checked indicator based on the overall setting
checked_ind = checked
else:
# otherwise, if a filter is specified, then set the checked indicator based on if the attribute
# name is specified in the filter list
if attrname in attr_filter:
checked_ind = 1
tree_item_str = get_attr_def_item_json( global_config, attr_definitions.get_definition(attrname), attr_filter, checked_ind, attrname )
result.append(tree_item_str)
result.append(',\n')
if len(attrlist) > 0:
result = result[:-1]
result.append('\n')
result.append( ' ] }')
result.append(',\n')
attrlist = category_dict['Uncategorized']
if len( attrlist ) > 0:
for attrname in sorted(attrlist):
checked_ind = 0
if filter_name is None:
# if there is no specified filter, then set the checked indicator based on the overall setting
checked_ind = checked
else:
# otherwise, if a filter is specified, then set the checked indicator based on if the attribute
# name is specified in the filter list
if attrname in attr_filter:
checked_ind = 1
tree_item_str = get_attr_def_item_json( global_config, attr_definitions.get_definition(attrname), attr_filter, checked_ind, attrname )
result.append(tree_item_str)
result.append(',\n')
result = result[:-1]
result.append('],\n "id": 1 \n}\n')
result.append('],\n "id": 0 \n}\n')
json_str = ''.join(result)
if store_data_to_file:
try:
if filter_name == None:
file_name = 'attrtree.json'
else:
file_name = 'attrtree_%s.json' % filter_name
FileSync.put( global_config, '%s/EventData/%s' % (competition,file_name), 'text', json_str)
except:
raise
return json_str