Esempio n. 1
0
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
Esempio n. 2
0
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