本文整理汇总了Python中pyasm.search.SearchType.column_exists方法的典型用法代码示例。如果您正苦于以下问题:Python SearchType.column_exists方法的具体用法?Python SearchType.column_exists怎么用?Python SearchType.column_exists使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pyasm.search.SearchType
的用法示例。
在下文中一共展示了SearchType.column_exists方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: copy_sobject
# 需要导入模块: from pyasm.search import SearchType [as 别名]
# 或者: from pyasm.search.SearchType import column_exists [as 别名]
def copy_sobject(my, sobject, dst_search_type, context=None, checkin_mode='inplace'):
new_sobject = SearchType.create(dst_search_type)
search_type = SearchType.get(dst_search_type)
columns = SearchType.get_columns(dst_search_type)
data = sobject.get_data()
for name, value in data.items():
if name in ['id','pipeline_code']:
continue
if name not in columns:
continue
if not value:
continue
if name == "code":
value = Common.get_next_sobject_code(sobject, 'code')
if not value:
continue
new_sobject.set_value(name, value)
if SearchType.column_exists(dst_search_type, "project_code"):
project_code = Project.get_project_code()
new_sobject.set_value("project_code", project_code)
new_sobject.commit()
# get all of the current snapshots and file paths associated
if not context:
snapshots = Snapshot.get_all_current_by_sobject(sobject)
else:
snapshots = [Snapshot.get_current_by_sobject(sobject, context)]
if not snapshots:
return
msgs = []
for snapshot in snapshots:
#file_paths = snapshot.get_all_lib_paths()
file_paths_dict = snapshot.get_all_paths_dict()
file_types = file_paths_dict.keys()
if not file_types:
continue
# make sure the paths match the file_types
file_paths = [file_paths_dict.get(x)[0] for x in file_types]
mode = checkin_mode
# checkin the files (inplace)
try:
context = snapshot.get_value('context')
checkin = FileCheckin(new_sobject, context=context, file_paths=file_paths, file_types=file_types, mode=mode)
checkin.execute()
#print "done: ", context, new_sobject.get_related_sobjects("sthpw/snapshot")
except CheckinException, e:
msgs.append('Post-process Check-in Error for %s: %s ' %(context, e.__str__()))
示例2: execute
# 需要导入模块: from pyasm.search import SearchType [as 别名]
# 或者: from pyasm.search.SearchType import column_exists [as 别名]
def execute(my):
collection_key = my.kwargs.get("collection_key")
search_keys = my.kwargs.get("search_keys")
collection = Search.get_by_search_key(collection_key)
if not collection:
raise Exception("Collection does not exist")
search_type = collection.get_base_search_type()
parts = search_type.split("/")
collection_type = "%s/%s_in_%s" % (parts[0], parts[1], parts[1])
search = Search(collection_type)
search.add_filter("parent_code", collection.get_code())
items = search.get_sobjects()
search_codes = [x.get_value("search_code") for x in items]
search_codes = set(search_codes)
has_keywords = SearchType.column_exists(search_type, "keywords")
if has_keywords:
collection_keywords = collection.get_value("keywords", no_exception=True)
collection_keywords = collection_keywords.split(" ")
collection_keywords = set(collection_keywords)
# create new items
sobjects = Search.get_by_search_keys(search_keys)
for sobject in sobjects:
if sobject.get_code() in search_codes:
continue
new_item = SearchType.create(collection_type)
new_item.set_value("parent_code", collection.get_code())
new_item.set_value("search_code", sobject.get_code())
new_item.commit()
# copy the metadata of the collection
if has_keywords:
keywords = sobject.get_value("keywords")
keywords = keywords.split(" ")
keywords = set(keywords)
keywords = keywords.union(collection_keywords)
keywords = " ".join(keywords)
sobject.set_value("keywords", keywords)
sobject.commit()
示例3: resolve_search_type_relationship
# 需要导入模块: from pyasm.search import SearchType [as 别名]
# 或者: from pyasm.search.SearchType import column_exists [as 别名]
def resolve_search_type_relationship(self, attrs, search_type, search_type2):
# determine the direction of the relationship
my_is_from = attrs['from'] == search_type
relationship = attrs.get('relationship')
assert relationship == 'search_type'
if my_is_from:
has_code = SearchType.column_exists(search_type2, "code")
if has_code:
relationship = 'search_code'
else:
relationship = 'search_id'
else:
has_code = SearchType.column_exists(search_type, "code")
if has_code:
relationship = 'search_code'
else:
relationship = 'search_id'
return relationship
示例4: get_defaults
# 需要导入模块: from pyasm.search import SearchType [as 别名]
# 或者: from pyasm.search.SearchType import column_exists [as 别名]
def get_defaults(my):
'''specifies the defaults for this sobject'''
pipeline_code =''
task_process = my.get_value("process")
parent = None
if task_process:
# TODO: this is slow. Need presearch all of the parents
parent = my.get_parent()
if parent:
parent_pipeline_code = parent.get_value('pipeline_code', no_exception=True)
pipeline = Pipeline.get_by_code(parent_pipeline_code)
if pipeline:
attributes = pipeline.get_process_attrs(task_process)
pipeline_code = attributes.get('task_pipeline')
if not pipeline_code:
node_type = attributes.get('type')
if node_type == "approval":
pipeline_code = "approval"
elif node_type == "task":
pipeline_code = "approval"
if not pipeline_code:
pipeline_code = 'task'
# in case it's a subpipeline
context = task_process
context=my._add_context_suffix(context,task_process,parent)
# then use the project as a parent
project = Project.get()
search_type = "sthpw/project"
search_id = project.get_id()
defaults = {
"pipeline_code": pipeline_code,
"project_code": Project.get_project_code(),
"context": context,
"search_type": search_type,
"search_id": search_id
}
if SearchType.column_exists("sthpw/task", "search_code"):
search_code = project.get_code()
defaults['search_code'] = search_code
return defaults
示例5: get_content_wdg
# 需要导入模块: from pyasm.search import SearchType [as 别名]
# 或者: from pyasm.search.SearchType import column_exists [as 别名]
def get_content_wdg(my):
my.search_type = my.kwargs.get("search_type")
my.collection_key = my.kwargs.get("collection_key")
top = DivWdg()
top.add_class("spt_collection_top")
if not SearchType.column_exists(my.search_type, "_is_collection"):
msg_div = DivWdg()
top.add(msg_div)
msg_div.add("Search Type [%s] does not support collections" % my.search_type)
msg_div.add_style("padding: 40px")
msg_div.add_style("width: 300px")
msg_div.add_style("margin: 100px auto")
msg_div.add_border()
return top
top.add_style("margin: 5px 20px")
table = Table()
top.add(table)
table.add_row()
table.add_style("width: 100%")
#tr, header = table.add_row_cell()
#header.add_style("height: 40px")
table.add_row()
left = table.add_cell()
left.add_style("vertical-align: top")
left.add_style("width: 300px")
left.add_style("max-width: 300px")
left.add_style("height: auto")
right = table.add_cell()
right.add_style("vertical-align: top")
right.add_style("width: auto")
right.add_style("height: auto")
left.add(my.get_collection_wdg())
right.add(my.get_right_content_wdg())
return top
示例6: get_search_col
# 需要导入模块: from pyasm.search import SearchType [as 别名]
# 或者: from pyasm.search.SearchType import column_exists [as 别名]
def get_search_col(cls, search_type, simple_search_view=''):
'''Get the appropriate keyword search col based on column existence in this sType'''
if simple_search_view:
from pyasm.widget import WidgetConfigView
config = WidgetConfigView.get_by_search_type(search_type, simple_search_view)
# assume the keyword filter is named "keyword"
options = config.get_display_options('keyword')
column = options.get('column')
if column:
return column
for col in cls.SEARCH_COLS:
if SearchType.column_exists(search_type, col):
return col
return cls.SEARCH_COLS[-1]
示例7: get_display
# 需要导入模块: from pyasm.search import SearchType [as 别名]
# 或者: from pyasm.search.SearchType import column_exists [as 别名]
def get_display(self):
#project = Project.get()
schema = Schema.get()
# no hierarchy to prevent all sthpw and parent sTypes
search_type_names = schema.get_search_types(hierarchy=False)
search = Search('sthpw/search_object')
search.add_filters('search_type', search_type_names)
search_types = search.get_sobjects()
task_search_type = SearchType.get("sthpw/task")
search_types.append(task_search_type)
values = [ x.get_value("search_type") for x in search_types]
filtered = []
labels = []
for x in search_types:
base_type = x.get_base_key()
exists = SearchType.column_exists(base_type, "pipeline_code")
if not exists:
continue
label = "%s (%s)" % (x.get_value("title"), x.get_value("search_type"))
labels.append(label)
filtered.append(base_type)
values = filtered
sobject = self.get_current_sobject()
if not sobject:
value = ""
else:
value = sobject.get_value(self.get_name() )
self.set_option("values", values)
self.set_option("labels", labels)
self.add_empty_option("-- Select --")
if value:
self.set_value(value)
return super(SearchTypeWithPipelineInputWdg, self).get_display()
示例8: _test_create
# 需要导入模块: from pyasm.search import SearchType [as 别名]
# 或者: from pyasm.search.SearchType import column_exists [as 别名]
def _test_create(my):
search = Search("unittest/person")
persons = search.get_sobjects()
person = persons[0]
snapshot_type = "file"
snapshot = Snapshot.create(person, context="publish", snapshot_type=snapshot_type)
version = snapshot.get_value("version")
my.assertEquals( 1, version )
search_type = snapshot.get_value("search_type")
my.assertEquals( search_type, person.get_search_type() )
search_code = snapshot.get_value("search_code")
my.assertEquals( search_code, person.get_value("code") )
# also check search_id
if SearchType.column_exists("sthpw/snapshot", "search_id"):
search_code = snapshot.get_value("search_id")
my.assertEquals( search_code, person.get_value("id") )
test_person = snapshot.get_sobject()
my.assertEquals(test_person.get_code(), person.get_code())
示例9: resolve_relationship_attrs
# 需要导入模块: from pyasm.search import SearchType [as 别名]
# 或者: from pyasm.search.SearchType import column_exists [as 别名]
def resolve_relationship_attrs(self, attrs, search_type, search_type2):
if attrs.get("relationship") not in ("search_type","search_code","search_id"):
return attrs
search_type_obj = SearchType.get(search_type)
search_type_obj2 = SearchType.get(search_type2)
my_is_from = attrs['from'] == search_type_obj.get_base_key()
db_resource = SearchType.get_db_resource_by_search_type(search_type)
db_resource2 = SearchType.get_db_resource_by_search_type(search_type2)
db_impl = db_resource.get_database_impl()
db_impl2 = db_resource2.get_database_impl()
# <connect from="sthpw/note" to="*"
# type='hierarchy' relationship='search_type'/>
prefix = attrs.get("prefix")
if prefix:
prefix = "%s_" % prefix
else:
prefix = ""
if my_is_from:
if db_impl2.get_database_type() == "MongoDb":
attrs['from_col'] = '%ssearch_code' % prefix
attrs['to_col'] = db_impl2.get_id_col(db_resource2,search_type2)
attrs['relationship'] = 'search_code'
else:
code_column = "%ssearch_code" % prefix
has_code = SearchType.column_exists(search_type, code_column)
if has_code:
attrs['from_col'] = '%ssearch_code' % prefix
attrs['to_col'] = 'code'
attrs['relationship'] = 'search_code'
else:
attrs['from_col'] = '%ssearch_id' % prefix
attrs['to_col'] = db_impl2.get_id_col(db_resource2,search_type2)
attrs['relationship'] = 'search_id'
else:
if db_impl.get_database_type() == "MongoDb":
attrs['to_col'] = '%ssearch_code' % prefix
attrs['from_col'] = db_impl.get_id_col(db_resource,search_type)
attrs['relationship'] = 'search_code'
else:
code_column = "%ssearch_code" % prefix
has_code = SearchType.column_exists(search_type2, code_column)
if has_code:
attrs['from_col'] = 'code'
attrs['to_col'] = '%ssearch_code' % prefix
attrs['relationship'] = 'search_code'
else:
attrs['from_col'] = db_impl.get_id_col(db_resource,search_type)
attrs['to_col'] = '%ssearch_id' % prefix
attrs['relationship'] = 'search_id'
return attrs
示例10: get_data_wdg
# 需要导入模块: from pyasm.search import SearchType [as 别名]
# 或者: from pyasm.search.SearchType import column_exists [as 别名]
def get_data_wdg(my):
div = DivWdg()
from pyasm.biz import Pipeline
from pyasm.widget import SelectWdg
search_type_obj = SearchType.get(my.search_type)
base_type = search_type_obj.get_base_key()
search = Search("sthpw/pipeline")
search.add_filter("search_type", base_type)
pipelines = search.get_sobjects()
if pipelines:
pipeline = pipelines[0]
process_names = pipeline.get_process_names()
if process_names:
table = Table()
div.add(table)
table.add_row()
table.add_cell("Process: ")
select = SelectWdg("process")
table.add_cell(select)
process_names.append("---")
process_names.append("publish")
process_names.append("icon")
select.set_option("values", process_names)
####
buttons = Table()
div.add(buttons)
buttons.add_row()
#button = IconButtonWdg(title="Fill in Data", icon=IconWdg.EDIT)
button = ActionButtonWdg(title="Metadata")
button.add_style("float: left")
button.add_style("margin-top: -3px")
buttons.add_cell(button)
select_label = DivWdg("Update mode");
select_label.add_style("float: left")
select_label.add_style("margin-top: -3px")
select_label.add_style("margin-left: 20px")
buttons.add_cell(select_label)
update_mode_option = my.kwargs.get("update_mode")
if not update_mode_option:
update_mode_option = "true"
update_mode = SelectWdg(name="update mode")
update_mode.add_class("spt_update_mode_select")
update_mode.set_option("values", ["false", "true", "sequence"])
update_mode.set_option("labels", ["Off", "On", "Sequence"])
update_mode.set_option("default", update_mode_option)
update_mode.add_style("float: left")
update_mode.add_style("margin-top: -3px")
update_mode.add_style("margin-left: 5px")
update_mode.add_style("margin-right: 5px")
buttons.add_cell(update_mode)
update_info = DivWdg()
update_info.add_class("glyphicon")
update_info.add_class("glyphicon-info-sign")
update_info.add_style("float: left")
update_info.add_style("margin-top: -3px")
update_info.add_style("margin-left: 10px")
update_info.add_behavior( {
'type': 'click_up',
'cbjs_action': '''
spt.info("When update mode is on, if a file shares the name of one other file in the asset library, the file will update on ingest. If more than one file shares the name of an ingested asset, a new asset is created.<br> If sequence mode is selected, the system will update the sobject on ingest if a file sequence sharing the same name already exists.", {type: 'html'});
'''
} )
buttons.add_cell(update_info);
dialog = DialogWdg(display="false", show_title=False)
div.add(dialog)
dialog.set_as_activator(button, offset={'x':-10,'y':10})
dialog_data_div = DivWdg()
dialog_data_div.add_color("background", "background")
dialog_data_div.add_style("padding", "20px")
dialog.add(dialog_data_div)
# Order folders by date
name_div = DivWdg()
dialog_data_div.add(name_div)
name_div.add_style("margin: 15px 0px")
if SearchType.column_exists(my.search_type, "relative_dir"):
category_div = DivWdg()
name_div.add(category_div)
checkbox = RadioWdg("category")
checkbox.set_option("value", "none")
category_div.add(checkbox)
category_div.add(" No categories")
category_div.add_style("margin-bottom: 5px")
checkbox.set_option("checked", "true")
#.........这里部分代码省略.........
示例11: execute
# 需要导入模块: from pyasm.search import SearchType [as 别名]
# 或者: from pyasm.search.SearchType import column_exists [as 别名]
def execute(my):
filenames = my.kwargs.get("filenames")
upload_dir = Environment.get_upload_dir()
base_dir = upload_dir
search_type = my.kwargs.get("search_type")
key = my.kwargs.get("key")
relative_dir = my.kwargs.get("relative_dir")
if not relative_dir:
project_code = Project.get_project_code()
search_type_obj = SearchType.get(search_type)
table = search_type_obj.get_table()
relative_dir = "%s/%s" % (project_code, table)
server = TacticServerStub.get()
parent_key = my.kwargs.get("parent_key")
category = my.kwargs.get("category")
keywords = my.kwargs.get("keywords")
extra_data = my.kwargs.get("extra_data")
if extra_data:
extra_data = jsonloads(extra_data)
else:
extra_data = {}
# TODO: use this to generate a category
category_script_path = my.kwargs.get("category_script_path")
"""
ie:
from pyasm.checkin import ExifMetadataParser
parser = ExifMetadataParser(path=file_path)
tags = parser.get_metadata()
date = tags.get("EXIF DateTimeOriginal")
return date.split(" ")[0]
"""
if not SearchType.column_exists(search_type, "name"):
raise TacticException('The Ingestion puts the file name into the name column which is the minimal requirement. Please first create a "name" column for this sType.')
for count, filename in enumerate(filenames):
# first see if this sobjects still exists
search = Search(search_type)
search.add_filter("name", filename)
if relative_dir and search.column_exists("relative_dir"):
search.add_filter("relative_dir", relative_dir)
sobject = search.get_sobject()
# else create a new one
if not sobject:
sobject = SearchType.create(search_type)
sobject.set_value("name", filename)
if relative_dir and sobject.column_exists("relative_dir"):
sobject.set_value("relative_dir", relative_dir)
# extract metadata
file_path = "%s/%s" % (base_dir, File.get_filesystem_name(filename))
# TEST: convert on upload
try:
convert = my.kwargs.get("convert")
if convert:
message_key = "IngestConvert001"
cmd = ConvertCbk(**convert)
cmd.execute()
except Exception, e:
print "WARNING: ", e
if not os.path.exists(file_path):
raise Exception("Path [%s] does not exist" % file_path)
# get the metadata from this image
if SearchType.column_exists(search_type, "relative_dir"):
if category and category not in ['none', None]:
from pyasm.checkin import ExifMetadataParser
parser = ExifMetadataParser(path=file_path)
tags = parser.get_metadata()
date = tags.get("EXIF DateTimeOriginal")
if not date:
date_str = "No-Date"
else:
date_str = str(date)
# this can't be parsed correctly by dateutils
parts = date_str.split(" ")
date_str = parts[0].replace(":", "-")
#.........这里部分代码省略.........
示例12: get_data_wdg
# 需要导入模块: from pyasm.search import SearchType [as 别名]
# 或者: from pyasm.search.SearchType import column_exists [as 别名]
def get_data_wdg(my):
div = DivWdg()
from pyasm.biz import Pipeline
from pyasm.widget import SelectWdg
search_type_obj = SearchType.get(my.search_type)
base_type = search_type_obj.get_base_key()
search = Search("sthpw/pipeline")
search.add_filter("search_type", base_type)
pipelines = search.get_sobjects()
if pipelines:
pipeline = pipelines[0]
process_names = pipeline.get_process_names()
if process_names:
table = Table()
div.add(table)
table.add_row()
table.add_cell("Process: ")
select = SelectWdg("process")
table.add_cell(select)
process_names.append("---")
process_names.append("publish")
process_names.append("icon")
select.set_option("values", process_names)
####
buttons = Table()
div.add(buttons)
buttons.add_row()
button = IconButtonWdg(title="Add Data", icon=IconWdg.FOLDER)
buttons.add_cell(button)
dialog = DialogWdg(display="false", show_title=False)
div.add(dialog)
dialog.set_as_activator(button, offset={'x':-10,'y':10})
dialog_data_div = DivWdg()
dialog_data_div.add_color("background", "background")
dialog_data_div.add_style("padding", "20px")
dialog.add(dialog_data_div)
# Order folders by date
name_div = DivWdg()
dialog_data_div.add(name_div)
name_div.add_style("margin: 15px 0px")
if SearchType.column_exists(my.search_type, "relative_dir"):
category_div = DivWdg()
name_div.add(category_div)
checkbox = RadioWdg("category")
checkbox.set_option("value", "none")
category_div.add(checkbox)
category_div.add(" No categories")
category_div.add_style("margin-bottom: 5px")
checkbox.set_option("checked", "true")
category_div = DivWdg()
name_div.add(category_div)
checkbox = RadioWdg("category")
checkbox.set_option("value", "by_day")
category_div.add(checkbox)
category_div.add(" Categorize files by Day")
category_div.add_style("margin-bottom: 5px")
category_div = DivWdg()
name_div.add(category_div)
checkbox = RadioWdg("category")
checkbox.set_option("value", "by_week")
category_div.add(checkbox)
category_div.add(" Categorize files by Week")
category_div.add_style("margin-bottom: 5px")
category_div = DivWdg()
name_div.add(category_div)
checkbox = RadioWdg("category")
checkbox.set_option("value", "by_year")
category_div.add(checkbox)
category_div.add(" Categorize files by Year")
category_div.add_style("margin-bottom: 5px")
"""
checkbox = RadioWdg("category")
checkbox.set_option("value", "custom")
name_div.add(checkbox)
name_div.add(" Custom")
"""
name_div.add("<br/>")
#.........这里部分代码省略.........
示例13: get_display
# 需要导入模块: from pyasm.search import SearchType [as 别名]
# 或者: from pyasm.search.SearchType import column_exists [as 别名]
#.........这里部分代码省略.........
reports.append(report_data)
"""
report_data = {
'title': 'Tasks Completed This Week',
'class_name': 'tactic.ui.panel.ViewPanelWdg',
'kwargs': {
'search_type': 'sthpw/task',
'view': 'table'
},
}
reports.append(report_data)
"""
if category == 'list_item_reports' or not category:
search_types = Project.get().get_search_types()
for search_type in search_types:
base_key = search_type.get_base_key()
key = {'project': project.get_code(), 'code': base_key}
key2 = {'project': project.get_code(), 'code': '*'}
key3 = {'code': base_key}
key4 = {'code': '*'}
keys = [key, key2, key3, key4]
if not top.check_access("search_type", keys, "view", default="deny"):
continue
if not SearchType.column_exists(base_key, "pipeline_code"):
continue
thumb_div = DivWdg()
image = thumb_div
thumb_div.add_border()
thumb_div.set_box_shadow("1px 1px 1px 1px")
thumb_div.add_style("width: 60px")
thumb = ThumbWdg()
thumb_div.add(thumb)
thumb.set_sobject(search_type)
thumb.set_icon_size(60)
report_data = {
'title': '%s Workflow Status' % search_type.get_title(),
'description': 'Number of items in each process',
'class_name': 'tactic.ui.report.stype_report_wdg.STypeReportWdg',
'kwargs': {
'search_type': base_key
},
'image': thumb_div
}
reports.append(report_data)
report_data = {
'title': '%s Labor Cost Report' % search_type.get_title(),
'description': 'Labor Cost Breakdown for each Item',
'class_name': 'tactic.ui.panel.ViewPanelWdg',
'kwargs': {
'search_type': search_type.get_code(),
'view': "table",
示例14: execute
# 需要导入模块: from pyasm.search import SearchType [as 别名]
# 或者: from pyasm.search.SearchType import column_exists [as 别名]
def execute(my):
file_path = my.kwargs.get("path")
project_code = my.kwargs.get("project_code")
base_dir = my.kwargs.get("base_dir")
search_type = my.kwargs.get("search_type")
process = my.kwargs.get("process")
watch_script_path = my.kwargs.get("script_path")
if not process:
process = "publish"
basename = os.path.basename(file_path)
context = my.kwargs.get("context")
if not context:
context = '%s/%s' % (process, basename)
# find the relative_dir and relative_path
relative_path = file_path.replace("%s/" % base_dir, "")
relative_dir = os.path.dirname(relative_path)
file_name = os.path.basename(file_path)
log_path = '%s/TACTIC_log.txt' %(base_dir)
my.create_checkin_log()
# Define asset type of the file
asset_type = my.get_asset_type(file_path)
description = "drop folder check-in of %s" %file_name
from client.tactic_client_lib import TacticServerStub
server = TacticServerStub.get(protocol='local')
server.set_project(project_code)
transaction = Transaction.get(create=True)
server.start(title='Check-in of media', description='Check-in of media')
server_return_value = {}
try:
filters = [
[ 'name', '=', file_name ],
#[ 'relative_dir', '=', relative_dir ]
]
sobj = server.query(search_type, filters=filters, single=True)
if not sobj:
# create sobject if it does not yet exist
sobj = SearchType.create(search_type)
if SearchType.column_exists(search_type, "name"):
sobj.set_value("name", basename)
if SearchType.column_exists(search_type, "media_type"):
sobj.set_value("media_type", asset_type)
if SearchType.column_exists(search_type, "relative_dir"):
sobj.set_value("relative_dir", relative_dir)
if SearchType.column_exists(search_type, "keywords"):
relative_path = relative_path
keywords = Common.get_keywords_from_path(relative_path)
keywords = " ".join( keywords )
sobj.set_value("keywords", keywords)
sobj.commit()
search_key = sobj.get_search_key()
else:
search_key = sobj.get("__search_key__")
#task = server.create_task(sobj.get('__search_key__'),process='publish')
#server.update(task, {'status': 'New'})
server_return_value = server.simple_checkin(search_key, context, file_path, description=description, mode='move')
if watch_script_path:
cmd = PythonCmd(script_path=watch_script_path,search_type=search_type,drop_path=file_path,search_key=search_key)
cmd.execute()
except Exception, e:
print "Error occurred", e
error_message=str(e)
import traceback
tb = sys.exc_info()[2]
stacktrace = traceback.format_tb(tb)
stacktrace_str = "".join(stacktrace)
print "-"*50
print stacktrace_str
version_num='Error:'
system_time=strftime("%Y/%m/%d %H:%M", gmtime())
pre_log=file_name+(50-len(file_name))*' '+system_time+(33-len(system_time))*' '+version_num+(15-len(version_num))*' ' +error_message+'\n'\
+ stacktrace_str + '\n' + watch_script_path
#.........这里部分代码省略.........
示例15: execute
# 需要导入模块: from pyasm.search import SearchType [as 别名]
# 或者: from pyasm.search.SearchType import column_exists [as 别名]
def execute(my):
filenames = my.kwargs.get("filenames")
upload_dir = Environment.get_upload_dir()
base_dir = upload_dir
update_mode = my.kwargs.get("update_mode")
search_type = my.kwargs.get("search_type")
key = my.kwargs.get("key")
relative_dir = my.kwargs.get("relative_dir")
if not relative_dir:
project_code = Project.get_project_code()
search_type_obj = SearchType.get(search_type)
table = search_type_obj.get_table()
relative_dir = "%s/%s" % (project_code, table)
server = TacticServerStub.get()
parent_key = my.kwargs.get("parent_key")
category = my.kwargs.get("category")
keywords = my.kwargs.get("keywords")
update_data = my.kwargs.get("update_data")
extra_data = my.kwargs.get("extra_data")
if extra_data:
extra_data = jsonloads(extra_data)
else:
extra_data = {}
# TODO: use this to generate a category
category_script_path = my.kwargs.get("category_script_path")
"""
ie:
from pyasm.checkin import ExifMetadataParser
parser = ExifMetadataParser(path=file_path)
tags = parser.get_metadata()
date = tags.get("EXIF DateTimeOriginal")
return date.split(" ")[0]
"""
if not SearchType.column_exists(search_type, "name"):
raise TacticException('The Ingestion puts the file name into the name column which is the minimal requirement. Please first create a "name" column for this sType.')
input_prefix = update_data.get('input_prefix')
non_seq_filenames = []
# For sequence mode, take all filenames, and regenerate the filenames based on the function "find_sequences"
if update_mode == "sequence":
non_seq_filenames_dict, seq_digit_length = my.find_sequences(filenames)
# non_seq_filenames is a list of filenames that are stored in the None key,
# which are the filenames that are not part of a sequence, or does not contain
# a sequence pattern.
non_seq_filenames = non_seq_filenames_dict[None]
# delete the None key from list so filenames can be used in the latter for loop
del non_seq_filenames_dict[None]
filenames = non_seq_filenames_dict.keys()
if filenames == []:
raise TacticException('No sequences are found in files. Please follow the pattern of [filename] + [digits] + [file extension (optional)]. Examples: [abc_1001.png, abc_1002.png] [abc.1001.mp3, abc.1002.mp3] [abc_100_1001.png, abc_100_1002.png]')
for count, filename in enumerate(filenames):
# Check if files should be updated.
# If so, attempt to find one to update.
# If more than one is found, do not update.
if update_mode in ["true", "True"]:
# first see if this sobjects still exists
search = Search(search_type)
search.add_filter("name", filename)
if relative_dir and search.column_exists("relative_dir"):
search.add_filter("relative_dir", relative_dir)
sobjects = search.get_sobjects()
if len(sobjects) > 1:
sobject = None
elif len(sobjects) == 1:
sobject = sobjects[0]
else:
sobject = None
elif update_mode == "sequence":
if not FileGroup.is_sequence(filename):
raise TacticException('Please modify sequence naming to have at least three digits.')
search = Search(search_type)
search.add_filter("name", filename)
if relative_dir and search.column_exists("relative_dir"):
search.add_filter("relative_dir", relative_dir)
sobjects = search.get_sobjects()
if sobjects:
sobject = sobjects[0]
else:
sobject = None
else:
sobject = None
# Create a new file
if not sobject:
sobject = SearchType.create(search_type)
#.........这里部分代码省略.........