Make the ToS text in-line and hook up thick-box in the help-text.
This way the user can see the ToS in scrollable form between the
link_id and the 'agree to tos' checkbox. Also, when clicking on the
link to the 'side-wide terms of service' a thickbox will pop up and
display the Terms of Service in an overlay.
Patch by: "Mario Ferraro" <fadinlight@gmail.com>
"""
Utility functions for handling images.
Requires PIL, as you might imagine.
"""
from django.core.files import File
class ImageFile(File):
"""
A mixin for use alongside django.core.files.base.File, which provides
additional features for dealing with images.
"""
def _get_width(self):
return self._get_image_dimensions()[0]
width = property(_get_width)
def _get_height(self):
return self._get_image_dimensions()[1]
height = property(_get_height)
def _get_image_dimensions(self):
if not hasattr(self, '_dimensions_cache'):
self._dimensions_cache = get_image_dimensions(self)
return self._dimensions_cache
def get_image_dimensions(file_or_path):
"""Returns the (width, height) of an image, given an open file or a path."""
from PIL import ImageFile as PILImageFile
p = PILImageFile.Parser()
if hasattr(file_or_path, 'read'):
file = file_or_path
else:
file = open(file_or_path, 'rb')
while 1:
data = file.read(1024)
if not data:
break
p.feed(data)
if p.image:
return p.image.size
return None