def render(self, context): """Called when the page is actually rendered.""" obj = resolve_variable(self.obj, context) imageid = getattr(obj, 'name', obj) if not imageid: return '' if self.options.get('urlonly', False): return unicode(huimages.imageurl(imageid)) else: if self.options.get('nolink', False): return huimages.scaled_tag(imageid, self.options.get('size', '1024x768')) else: return unicode('<a class="imagelink" href="%s">%s</a>' % (huimages.imageurl(imageid), huimages.scaled_tag(imageid, self.options.get('size', '1024x768'))))
def __init__(self, field, obj): self.field = field self.parent_obj = obj self.original_image = getattr(self.parent_obj, self.field.attname) self.original_image_path = os.path.join(settings.MEDIA_ROOT, str(self.original_image)) self.mangled_name = str(self.original_image) # md5.new('sehkr1tt-%s-%r-%r' % (str(self.original_image), time.time(), id(self))).hexdigest() self.scaled_image_base = os.path.join(settings.MEDIA_ROOT, ',', self.mangled_name) self.broken_image = None # imageid is used for webstorage self.imageid = None # if broken.gif exists we send that if there are any problems during scaling if not os.path.exists(self.original_image_path): # check if we are using web based storage imageid = str(self.original_image) if imageid in huimages._setup_couchdb(): self.original_image_path = huimages.imageurl(imageid) self.imageid = imageid else: self.broken_image = os.path.join(settings.MEDIA_ROOT, 'broken.gif') for size in _sizes: setattr(self, '%s_path' % (size), curry(self.scaled_filename, size)) setattr(self, '%s' % (size), curry(self.scaled_url, size)) setattr(self, '%s_dimensions' % (size), curry(self.scaled_dimensions, size)) setattr(self, '%s_tag' % (size), curry(self.scaled_tag, size))
def scaled_url(self, size='thumb'): """Scales an image according to 'size' and returns the URL of the scaled image.""" if self.imageid: return huimages.imageurl(self.imageid, size) if not self.original_image: return '' outpath = self.scaled_filename(size) url = outpath[len(settings.MEDIA_ROOT):] if url.startswith('/'): url = url[1:] return urlparse.urljoin(settings.MEDIA_URL, url).replace('\\', '/')
def url(self, name): """Return the URL where an Image can be accessed.""" return huimages.imageurl(name)