Пример #1
0
def copyAllSubFolders(folder, target_folder):
    #TODO Need to copy subfolders tree contents

    logging.info('copyAllSubFolder(): Start')

    #Create new folder element to copy the folder
    new_folder = Folder(parent=genFolderParentKey())

    #Copy the folder to new folder
    logging.info('copyAllSubFolders: copying folder |' + folder.name +
                 '| to: |' + target_folder.name)
    new_folder.populate(
        **folder.to_dict()
    )  #to_dict returns the dictionary of 'folder' and '.populate()' will save the value pairs to new folder

    #change necessary parameters
    new_folder.parent_folder = target_folder.key  #parent of new folder should be the target folder
    new_folder.date_c = datetime.datetime.now()
    new_folder.date_m = datetime.datetime.now()
    new_folder.path = target_folder.path + new_folder.name + '/'  #path is calcuated from the give target folder's path

    #save new folder
    new_folder.put()

    #find and copy files in this folder
    subLinks = Link.query(Link.parent_folder == folder.key).fetch()
    for subLink in subLinks:
        logging.info("Copying Link: " + subLink.name)

        #Create new link
        new_link = Link(parent=genLinkParentKey())

        #Copy the links to new folder
        logging.info('copyAllSubFolders: copying file |' + subLink.name +
                     '| to: |' + target_folder.name)
        new_link.populate(
            **subLink.to_dict()
        )  #to_dict returns the dictionary of 'subLink' and '.populate()' will save the value pairs to new link

        new_link.parent_folder = new_folder.key  #parent of new folder should be the one provided by the user
        new_link.date_c = datetime.datetime.now()
        new_link.date_m = datetime.datetime.now()
        new_link.path = new_folder.path

        #save new link
        new_link.put()

    #find and copy the subfolders in this folder
    subfolders = Folder.query(Folder.parent_folder == folder.key).fetch()
    for subfolder in subfolders:
        copyAllSubFolders(subfolder, new_folder)

    return "success"
Пример #2
0
def addFolder(params):
    logging.info('addFolder(): Start')

    folder = Folder(parent=genFolderParentKey(
    ))  #Create a datastore entity with parent as the key generated above

    #assign form data to entity properties
    if 'name' in params:
        folder.name = params['name']
    else:
        folder.name = 'Folder'

    if 'icon' in params:
        folder.icon = params['icon']
    else:
        folder.icon = '/images/folder-icon.png'

    if 'color' in params:
        folder.color = params['color']
    else:
        folder.color = 'Default'

    folder.date_c = datetime.datetime.now()
    folder.date_m = datetime.datetime.now()
    folder.n_items = 0  #this value needs to be calculated and populated.

    if 'view' in params:
        folder.view = params['view']
    else:
        folder.view = 'Default'

    if 'parent_folder_key' in params:
        folder.parent_folder = params['parent_folder_key']
        folder.path = params['parent_folder_key'].get(
        ).path + folder.name + '/'  #calculate path from parent folder and save - parent folder path + my name

        #increment parent folder's items count and save. Do it only  if current folder is not root,
        params['parent_folder_key'].get().n_items += 1
        params['parent_folder_key'].get().put()

        #TODO if no parent folder mentioned, set parent as links

    logging.info('Adding Folder - ' + folder.name)

    new_folder_key = folder.put()  #save the folder and capture the key

    return new_folder_key  # return the folder key
Пример #3
0
def addRootFolder():
    logging.info('addRootFolder(): Start')

    folder = Folder(parent=genFolderParentKey(
    ))  #Create a datastore entity with parent as the key generated above

    #No need of param checks as the call is guaranteed to be internal.
    folder.name = "root"
    folder.icon = None
    folder.color = None
    folder.date_c = datetime.datetime.now()
    folder.date_m = datetime.datetime.now()
    folder.n_items = 0  #this value needs to be calculated and populated.
    folder.view = None
    folder.path = '/'
    folder.parent_folder = None

    return folder.put()