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"
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
def compile_java(file_id): #first traslate traslate_java(file_id) file = File.objects.get(id=file_id) folder = file.folder user = folder.user galatea_code = GALATEA + "galatea.jar " code = "javac -cp "+ galatea_code + folder.path + "/*.java" #print code value = subprocess.check_output([code], shell=True) #print value #get all the file in this folder for root, dirs, files in os.walk(folder.path): root_folder = Folder.objects.get(path=root, name = os.path.basename(root)) for dir in dirs: folders = Folder.objects.filter(father=root_folder.id) esta = False for folder in folders: if folder.name == dir: esta = True if not esta: folder = Folder() folder.name = dir folder.path = root_folder.path + "/" + dir folder.user = user folder.father = root_folder.id folder.active = True folder.save() #print dirs for file in files: files_folder = File.objects.filter(folder = root_folder.id) esta = False for f in files_folder: if f.name == file: esta = True if not esta: if (os.path.splitext(file)[1] != ".class"): f = File() f.name = file f.folder = root_folder f.active = True f.save() return value
def create_root_folder(user_id): root = MEDIA_ROOT user = User.objects.get(id=user_id) directory = root +"/"+ user.username print directory if not os.path.exists(directory): try: folder = Folder() folder.name = user.username folder.path = directory folder.user = user folder.save() os.makedirs(directory) except Exception, e: return False else: return True
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()
def create_new_folder(user_id,father_id,name): root = MEDIA_ROOT user = User.objects.get(id=user_id) father = Folder.objects.get(id=father_id) directory = father.path +"/"+ name id_folder = 0 print directory if not os.path.exists(directory): try: folder = Folder() folder.name = name folder.path = directory folder.user = user folder.father = father.id folder.active = True folder.save() id_folder = folder.id os.makedirs(directory) except Exception, e: return id_folder else: return id_folder