def transfer_s3_structure_to_db(name, path, parent_directory, is_dir=False): if parent_directory is not None: par_dir = Directory.get(Directory.key == parent_directory) else: par_dir = FakeDirectory() par_dir.id = None if is_dir: try: Directory.get(Directory.key == path) return False except DoesNotExist: Directory.create( name = name, key = path, parent_directory = par_dir.id ) return True else: try: Image.get(Image.key == path) return False except DoesNotExist: Image.create( name = name, key = path, directory = par_dir.id ) return True
def get_contents(self): db_id = Directory.get(Directory.key == self.key).id directories = Directory.select().where(Directory.parent_directory == db_id) has_probes = False try: has_probes = Directory.get(Directory.key == directories .first().key).images.first() except: pass if has_probes: directories = [DirectoryTree(d.name, d.key).get_contents() for d in directories] self.directories = [d.serialized for d in directories] else: self.directories = [DirectoryTree(d.name, d.key).serialized for d in directories] self.images = [image.serialized for image in Image.select().where(Image.directory == db_id)] if self.images: stack_title = self.key[:-1] try: stack_id = Stack.get(Stack.title == stack_title).id except models.DoesNotExist: images = Image.select().where(Image.directory == db_id) stack = models.Stack.create(title=stack_title) for image in images: try: models.StackImage.create(stack=stack, image = image.id) except Exception as ex: print ex stack_id = stack.id self.stack_id = stack_id return self
def build_directory_tree(root_directory_key, root_directory_name): directory_db_model = Directory.get(Directory.key == root_directory_key) root_directory = DirectoryTree(root_directory_name, root_directory_key) root_directory = get_directory_contents(root_directory) root_directory.directories = [build_directory_tree(directory.key, directory.name) for directory in root_directory.directories] # images = Image.select().where(Image.directory.key == directory_db_model.key) images = directory_db_model.images root_directory.images = [image.serialized for image in images] return root_directory
def get_directory_contents(directory_model): directory = Directory.get(Directory.key == directory_model.key) directories = Directory.select().where(Directory.parent_directory == directory.id) directory_model.directories = [directory for directory in directories] return directory_model