def list_all_urls(cls): st = StorageBackend(cls.BASE_DIR, '') dirs = st.list_dir('.') urls = [] for d in dirs: st = StorageBackend(cls.BASE_DIR, d) for f in st.list_dir('.'): urls.append("/media/upload/%s/%s/%s" % (cls.BASE_DIR, d, f)) return urls
def load_by_filename_album(self, filename, album, user=None): self.album = album self.storage = StorageBackend('album', str(self.album.id), filename) if user: self.user = user self.storage_new = StorageBackend('draft/new', user.username, filename)
class ImageHandlerSimple(ImageHandlerBase): FILENAME_SUFIX_SIZE = 3 BASE_DIR = '' def __init__(self): super(ImageHandlerSimple, self).__init__() self.image_sizes = settings.SIMPLE_IMAGE_SIZES def load(self, filename, image=None): self._rimage = image name, ext = os.path.splitext(filename) sufix = name[-self.FILENAME_SUFIX_SIZE:] self.storage = StorageBackend(self.BASE_DIR, sufix, filename) def load_by_url(self, url): parsed = urlparse.urlparse(url) filename = parsed.path.split('/')[-1] if not filename: return self.load(filename) if self.is_file(): return self.single_url() content = urlopen(url, timeout=3) self.load(filename, content) def is_file(self): return self.storage.is_file(self.storage.filename) def is_image(self): opened = True try: Image.open(self._rimage) except: opened = False self._rimage.seek(0) return opened def save(self): if not self._rimage: return self.storage.save_file(self._rimage.read(), self.storage.filename) self._rimage.close() def single_url(self): return self.storage.get_url(self.storage.filename)
def delete_junk(draft): files = [] content = draft.get_content_object() rel_fields = content.get('__rel_fields__', {}) photos = rel_fields.get('photos', []) if not photos: return for img in photos: image = img.get('image') if image: handler = ImageHandler() handler.load_by_draft(image, draft) files += handler.files() storage = StorageBackend('draft', str(draft.id)) storage.remove_base_contents(except_files=files)
class ImageHandlerAlbumCoverTemp(ImageHandlerSimple): def load(self, filename, image=None): self._rimage = image self.storage = StorageBackend('tmp', 'cover', filename) def store(self): handler = ImageHandlerAlbumCover() handler.load(self.storage.filename) handler.storage.copy_files([self.storage._p(self.storage.filename)]) return handler
def load(self, filename, image=None): self._rimage = image self.storage = StorageBackend('tmp', 'cover', filename)
def load(self, filename, image=None): self._rimage = image name, ext = os.path.splitext(filename) sufix = name[-self.FILENAME_SUFIX_SIZE:] self.storage = StorageBackend(self.BASE_DIR, sufix, filename)
def load_by_album(self, album): self.album = album self.storage = StorageBackend('album', str(self.album.id))
def load_by_draft(self, filename, draft): self.draft = draft self.user = draft.user self.storage = StorageBackend('draft', str(draft.id), filename) self.storage_new = StorageBackend('draft/new', self.user.username, filename)
def load_by_filename_user(self, filename, user): self.user = user self.storage = StorageBackend('draft/new', user.username, filename)
def load_by_image_user(self, image, user): self._rimage = image self.user = user self.storage = StorageBackend('draft/new', user.username, image.name)
class ImageHandler(ImageHandlerBase): def __init__(self): super(ImageHandler, self).__init__() self.user = None self.draft = None self.album = None self.image_sizes = settings.IMAGE_SIZES def load_by_image_user(self, image, user): self._rimage = image self.user = user self.storage = StorageBackend('draft/new', user.username, image.name) def load_by_filename_user(self, filename, user): self.user = user self.storage = StorageBackend('draft/new', user.username, filename) def load_by_draft(self, filename, draft): self.draft = draft self.user = draft.user self.storage = StorageBackend('draft', str(draft.id), filename) self.storage_new = StorageBackend('draft/new', self.user.username, filename) def load_by_filename_album(self, filename, album, user=None): self.album = album self.storage = StorageBackend('album', str(self.album.id), filename) if user: self.user = user self.storage_new = StorageBackend('draft/new', user.username, filename) def load_by_album(self, album): self.album = album self.storage = StorageBackend('album', str(self.album.id)) def copy_new_images_to_draft(self, user): newhandler = ImageHandler() newhandler.load_by_filename_user(self.storage.filename, user) self.storage.copy_files(newhandler.paths()) def copy_album_images_to_draft(self, album): newhandler = ImageHandler() newhandler.load_by_filename_album(self.storage.filename, album) self.storage.copy_files(newhandler.paths()) def copy_images_to_album(self, draft): newhandler = ImageHandler() newhandler.load_by_draft(self.storage.filename, draft) self.storage.copy_files(newhandler.paths()) @staticmethod def delete_junk(draft): files = [] content = draft.get_content_object() rel_fields = content.get('__rel_fields__', {}) photos = rel_fields.get('photos', []) if not photos: return for img in photos: image = img.get('image') if image: handler = ImageHandler() handler.load_by_draft(image, draft) files += handler.files() storage = StorageBackend('draft', str(draft.id)) storage.remove_base_contents(except_files=files)