def __call__(self): self.id = self.request.form.get('id','') self.portlet_manager = self.request.form.get('manager','') self.portlet_name = self.request.form.get('name','') self.portlet_key = self.request.form.get('key','') if self.context.getDefaultPage(): self.default_page = self.context.getDefaultPage() self.raw_absolute_url = self.context.absolute_url().replace('/' + self.default_page, '') #context_path = self.context.absolute_url_path().replace('/' + self.default_page, '') if 'form.buttons.apply' in self.request.form: # Ordering images = [ {} for i in self.request.form] for arg in sorted(self.request.form): if arg.startswith('form.index.'): i = int(arg.split('.').pop()) images[i]['index'] = self.request.form.get(arg) if arg.startswith('form.active.'): i = int(arg.split('.').pop()) images[i]['image_path'] = self.request.form.get(arg) images[i]['restriction_path'] = get_restricted_path(self.context, self.request) images = filter(lambda x: x, images) images = filter(lambda x: 'restriction_path' in x, images) # Upload Files files = self.request.form.get('files', []) if not isinstance(files, list) and files: files = [files] for file in files: filename = safe_unicode(file.filename) data = file.read() img_obj = api.content.create(type='linkable_image', title=filename, container=self.slider_folder) wrapped_data = NamedBlobImage(data=data, filename=filename) img_obj.image = wrapped_data api.content.transition(img_obj, 'publish') img_obj.reindexObject() # Add to existing images images.append({}) i = len(images)-1 images[i]['index'] = str(i) images[i]['image_path'] = img_obj.absolute_url_path() images[i]['restriction_path'] = get_restricted_path(self.context, self.request) self.save_content(images) if 'referer' in self.request.form: self.request.response.redirect(self.request.form.get('referer')) return self.template()
def save_content(self, incoming_image_data): #context_path = self.context.absolute_url_path().replace('/' + self.default_page, '') all_image_data = parse_images(self.portlet.data) keep_image_data = filter(lambda x: x['restriction_path'] != get_restricted_path(self.context, self.request), all_image_data) self.portlet.data.show_images = unparse_images(keep_image_data + incoming_image_data)