def render(self, **kwargs): """render a file field and the file preview """ html = Base.render(self, **kwargs) value = self.field.value if value: html += self.render_readonly() # add the old value for objects not yet stored old_value = "%s--old" % self.name html += h.hidden_field(old_value, value=value) return html
def deserialize(self): if self._path: return self._path data = Base.deserialize(self) if self._data is not None and self._filename: filename = normalized_basename(self._filename) self._path = self.relative_path(filename) filepath = os.path.join(self.storage_path, self._path.replace("/", os.sep)) dirname = os.path.dirname(filepath) if not os.path.isdir(dirname): os.makedirs(dirname) fd = open(filepath, "wb") fd.write(data) fd.close() return self._path # get value from old_value if needed old_value = "%s--old" % self.name checkbox_name = "%s--remove" % self.name if not data and not self.params.has_key(checkbox_name) and self.params.has_key(old_value): return self.params[old_value] return data is not None and data or ""
def __init__(self, *args, **kwargs): if not self.storage_path or not os.path.isdir(self.storage_path): raise ValueError("storage_path must be set to a valid path. Got %r" % self.storage_path) Base.__init__(self, *args, **kwargs) self._path = None