Skip to content

Commit

Permalink
Merge branch 'stable/3.7.x' into custom_crop
Browse files Browse the repository at this point in the history
  • Loading branch information
fgmacedo committed Apr 14, 2016
2 parents 3986383 + 0a85075 commit ff2f62f
Showing 1 changed file with 15 additions and 45 deletions.
60 changes: 15 additions & 45 deletions filebrowser/base.py
Expand Up @@ -6,11 +6,11 @@
import platform
import tempfile
import time
import warnings

from django.core.files import File
from django.utils.encoding import python_2_unicode_compatible, smart_str
from django.utils.six import string_types
from django.utils.functional import cached_property

from filebrowser.settings import EXTENSIONS, VERSIONS, ADMIN_VERSIONS, VERSIONS_BASEDIR, VERSION_QUALITY, STRICT_PIL, IMAGE_MAXBLOCK, DEFAULT_PERMISSIONS
from filebrowser.utils import path_strip, process_image
Expand Down Expand Up @@ -81,12 +81,9 @@ def sort_by_attr(self, seq, attr):
attr = (attr, )
return sorted(seq, key=attrgetter(*attr))

_is_folder_stored = None
@property
@cached_property
def is_folder(self):
if self._is_folder_stored is None:
self._is_folder_stored = self.site.storage.isdir(self.path)
return self._is_folder_stored
return self.site.storage.isdir(self.path)

def listing(self):
"List all files for path"
Expand Down Expand Up @@ -258,38 +255,21 @@ def _get_file_type(self):
# datetime
# exists

_filetype_stored = None
@property
@cached_property
def filetype(self):
"Filetype as defined with EXTENSIONS"
if self._filetype_stored is not None:
return self._filetype_stored
if self.is_folder:
self._filetype_stored = 'Folder'
else:
self._filetype_stored = self._get_file_type()
return self._filetype_stored
return 'Folder' if self.is_folder else self._get_file_type()

_filesize_stored = None
@property
@cached_property
def filesize(self):
"Filesize in bytes"
if self._filesize_stored is not None:
return self._filesize_stored
if self.exists:
self._filesize_stored = self.site.storage.size(self.path)
return self._filesize_stored
return None
return self.site.storage.size(self.path) if self.exists else None

_date_stored = None
@property
@cached_property
def date(self):
"Modified time (from site.storage) as float (mktime)"
if self._date_stored is not None:
return self._date_stored
if self.exists:
self._date_stored = time.mktime(self.site.storage.modified_time(self.path).timetuple())
return self._date_stored
return time.mktime(self.site.storage.modified_time(self.path).timetuple())
return None

@property
Expand All @@ -299,13 +279,10 @@ def datetime(self):
return datetime.datetime.fromtimestamp(self.date)
return None

_exists_stored = None
@property
@cached_property
def exists(self):
"True, if the path exists, False otherwise"
if self._exists_stored is None:
self._exists_stored = self.site.storage.exists(self.path)
return self._exists_stored
return self.site.storage.exists(self.path)

# PATH/URL ATTRIBUTES/PROPERTIES
# path (see init)
Expand Down Expand Up @@ -341,20 +318,16 @@ def url(self):
# aspectratio
# orientation

_dimensions_stored = None
@property
@cached_property
def dimensions(self):
"Image dimensions as a tuple"
if self.filetype != 'Image':
return None
if self._dimensions_stored is not None:
return self._dimensions_stored
try:
im = Image.open(self.site.storage.open(self.path))
self._dimensions_stored = im.size
return im.size
except:
pass
return self._dimensions_stored

@property
def width(self):
Expand Down Expand Up @@ -391,13 +364,10 @@ def orientation(self):
# is_folder
# is_empty

_is_folder_stored = None
@property
@cached_property
def is_folder(self):
"True, if path is a folder"
if self._is_folder_stored is None:
self._is_folder_stored = self.site.storage.isdir(self.path)
return self._is_folder_stored
return self.site.storage.isdir(self.path)

@property
def is_empty(self):
Expand Down

0 comments on commit ff2f62f

Please sign in to comment.