Example #1
0
 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
Example #2
0
 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)
Example #3
0
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)
Example #4
0
    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)
Example #5
0
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
Example #6
0
 def load(self, filename, image=None):
     self._rimage = image
     self.storage = StorageBackend('tmp', 'cover', filename)
Example #7
0
 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)
Example #8
0
 def load_by_album(self, album):
     self.album = album
     self.storage = StorageBackend('album', str(self.album.id))
Example #9
0
 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)
Example #10
0
 def load_by_filename_user(self, filename, user):
     self.user = user
     self.storage = StorageBackend('draft/new', user.username, filename)
Example #11
0
 def load_by_image_user(self, image, user):
     self._rimage = image
     self.user = user
     self.storage = StorageBackend('draft/new', user.username, image.name)
Example #12
0
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)