Пример #1
0
    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))
Пример #2
0
 def render(cls, item):
     buf = DesignerImageFile.get(item['image_id']).open()
     return Image.open(buf)