def _process(self): title = f'{self.template.title} (copy)' new_template = DesignerTemplate(title=title, type=self.template.type, **self.target_dict) data = deepcopy(self.template.data) image_items = [ item for item in data['items'] if item['type'] == 'fixed_image' ] for image_item in image_items: old_image = DesignerImageFile.get(image_item['image_id']) new_image = DesignerImageFile(filename=old_image.filename, content_type=old_image.content_type, template=new_template) with old_image.open() as f: new_image.save(f) image_item['image_id'] = new_image.id new_template.data = data if self.template.background_image: background = self.template.background_image new_background = DesignerImageFile( filename=background.filename, content_type=background.content_type, template=new_template) with background.open() as f: new_background.save(f) else: new_background = None new_template.background_image = new_background flash( _("Created copy of template '{}'").format(self.template.title), 'success') return jsonify_data( html=_render_template_list(self.target, event=self.event_or_none))
def render(cls, item): buf = DesignerImageFile.get(item['image_id']).open() return Image.open(buf)