def get_object_from_ccm(four_part_name, ccm, ccm_cache_path): """Try to get the object's meta data from Synergy""" # convert the four-part-name to a synergy object: delim = ccm.delim() synergy_object = SynergyObject(four_part_name, delim) try: res = ccm.query( "name='{0}' and version='{1}' and type='{2}' and instance='{3}'". format( synergy_object.get_name(), synergy_object.get_version(), synergy_object.get_type(), synergy_object.get_instance())).format("%objectname").format( "%owner").format("%status").format("%create_time").format( "%task").run() except SynergyException: raise ObjectCacheException( "Couldn't query four-part-name of %s from Synergy" % four_part_name) if res: synergy_object.status = res[0]['status'] synergy_object.author = res[0]['owner'] synergy_object.created_time = datetime.strptime( res[0]['create_time'], "%a %b %d %H:%M:%S %Y") tasks = [] for t in res[0]['task'].split(','): if t != '<void>': if ':task:' not in t: tasks.append(task_to_four_part(t, delim)) else: tasks.append(t) synergy_object.tasks = tasks else: raise ObjectCacheException("Couldn't extract %s's info from Synergy" % four_part_name) if synergy_object.get_type() == 'project': object = create_project_object(synergy_object, ccm) elif synergy_object.get_type() == 'task': object = create_task_object(synergy_object, ccm) else: object = create_file_or_dir_object(synergy_object, ccm) # Common among all objects object.predecessors = get_predecessors(object, ccm) object.successors = get_successors(object, ccm) attributes = get_non_blacklisted_attributes(object, ccm) object.set_attributes(attributes) if object.get_type() == 'dir': object = fill_changed_entries(object, ccm) # Add database info to cache object object.info_databases.append(ccm.get_database_name()) # write the file to the cache update_cache(object, ccm, ccm_cache_path) return object
def get_object_from_ccm(four_part_name, ccm, ccm_cache_path): """Try to get the object's meta data from Synergy""" # convert the four-part-name to a synergy object: delim = ccm.delim() synergy_object = SynergyObject(four_part_name, delim) try: res = ccm.query("name='{0}' and version='{1}' and type='{2}' and instance='{3}'".format(synergy_object.get_name(), synergy_object.get_version(), synergy_object.get_type(), synergy_object.get_instance())).format("%objectname").format("%owner").format("%status").format("%create_time").format("%task").run() except SynergyException: raise ObjectCacheException("Couldn't query four-part-name of %s from Synergy" % four_part_name) if res: synergy_object.status = res[0]['status'] synergy_object.author = res[0]['owner'] synergy_object.created_time = datetime.strptime(res[0]['create_time'], "%a %b %d %H:%M:%S %Y") tasks = [] for t in res[0]['task'].split(','): if t != '<void>': if ':task:' not in t: tasks.append(task_to_four_part(t, delim)) else: tasks.append(t) synergy_object.tasks = tasks else: raise ObjectCacheException("Couldn't extract %s's info from Synergy" % four_part_name) if synergy_object.get_type() == 'project': object = create_project_object(synergy_object, ccm) elif synergy_object.get_type() == 'task': object = create_task_object(synergy_object, ccm) else: object = create_file_or_dir_object(synergy_object, ccm) # Common among all objects object.predecessors = get_predecessors(object, ccm) object.successors = get_successors(object, ccm) attributes = get_non_blacklisted_attributes(object, ccm) object.set_attributes(attributes) if object.get_type() == 'dir': object = fill_changed_entries(object, ccm) # Add database info to cache object object.info_databases.append(ccm.get_database_name()) # write the file to the cache update_cache(object, ccm, ccm_cache_path) return object