Ejemplo n.º 1
0
    def create(self, docs, **kwargs):
        """Generate highlights text item for given package.

        If doc.preview is True it won't save the item, only return.
        """
        service = superdesk.get_resource_service('archive')
        for doc in docs:
            preview = doc.get('preview', False)
            package = service.find_one(req=None, _id=doc['package'])
            if not package:
                superdesk.abort(404)

            doc.clear()
            doc['type'] = 'text'
            doc['headline'] = package.get('headline')
            doc['slugline'] = package.get('slugline')
            doc['byline'] = package.get('byline')
            doc['task'] = package.get('task')
            doc['family_id'] = package.get('guid')

            body = []
            for group in package.get('groups', []):
                for ref in group.get('refs', []):
                    if 'residRef' in ref:
                        item = service.find_one(req=None,
                                                _id=ref.get('residRef'))
                        body.append(item_to_str(item))
                        body.append('<p></p>')
            doc['body_html'] = join_html(body)

        if preview:
            return ['' for doc in docs]
        else:
            return service.post(docs, **kwargs)
Ejemplo n.º 2
0
    def create(self, docs, **kwargs):
        """Generate highlights text item for given package.

        If doc.preview is True it won't save the item, only return.
        """
        service = superdesk.get_resource_service('archive')
        for doc in docs:
            preview = doc.get('preview', False)
            package = service.find_one(req=None, _id=doc['package'])
            if not package:
                superdesk.abort(404)

            doc.clear()
            doc['type'] = 'text'
            doc['headline'] = package.get('headline')
            doc['slugline'] = package.get('slugline')
            doc['byline'] = package.get('byline')
            doc['task'] = package.get('task')
            doc['family_id'] = package.get('guid')

            body = []
            for group in package.get('groups', []):
                for ref in group.get('refs', []):
                    if 'residRef' in ref:
                        item = service.find_one(req=None, _id=ref.get('residRef'))
                        body.append(item_to_str(item))
                        body.append('<p></p>')
            doc['body_html'] = join_html(body)

        if preview:
            return ['' for doc in docs]
        else:
            return service.post(docs, **kwargs)
Ejemplo n.º 3
0
    def create(self, docs, **kwargs):
        """Generate highlights text item for given package.

        If doc.preview is True it won't save the item, only return.
        """
        service = superdesk.get_resource_service('archive')
        for doc in docs:
            preview = doc.get('preview', False)
            package = service.find_one(req=None, _id=doc['package'])
            if not package:
                superdesk.abort(404)
            export = doc.get('export')
            template = get_template(package.get('highlight'))
            stringTemplate = None
            if template and 'body_html' in template.get('data', {}):
                stringTemplate = template['data']['body_html']

            doc.clear()
            doc[ITEM_TYPE] = CONTENT_TYPE.TEXT
            doc['family_id'] = package.get('guid')
            doc[ITEM_STATE] = CONTENT_STATE.SUBMITTED
            doc[config.VERSION] = 1

            for field in package:
                if field not in PACKAGE_FIELDS:
                    doc[field] = package[field]

            items = []
            for group in package.get('groups', []):
                for ref in group.get('refs', []):
                    if 'residRef' in ref:
                        item = service.find_one(req=None, _id=ref.get('residRef'))
                        if item:
                            if not (export or preview) and \
                                    (item.get('lock_session') or item.get('state') != 'published'):
                                message = 'Locked or not published items in highlight list.'
                                raise SuperdeskApiError.forbiddenError(message)

                            items.append(item)
                            if not preview:
                                app.on_archive_item_updated(
                                    {'highlight_id': package.get('highlight'),
                                     'highlight_name': get_highlight_name(package.get('highlight'))}, item,
                                    ITEM_EXPORT_HIGHLIGHT)

            if stringTemplate:
                doc['body_html'] = render_template_string(stringTemplate, package=package, items=items)
            else:
                doc['body_html'] = render_template('default_highlight_template.txt', package=package, items=items)
        if preview:
            return ['' for doc in docs]
        else:
            ids = service.post(docs, **kwargs)
            for id in ids:
                app.on_archive_item_updated(
                    {'highlight_id': package.get('highlight'),
                     'highlight_name': get_highlight_name(package.get('highlight'))}, {'_id': id},
                    ITEM_CREATE_HIGHLIGHT)
            return ids
Ejemplo n.º 4
0
    def create(self, docs, **kwargs):
        """Generate highlights text item for given package.

        If doc.preview is True it won't save the item, only return.
        """
        service = superdesk.get_resource_service('archive')
        for doc in docs:
            preview = doc.get('preview', False)
            package = service.find_one(req=None, _id=doc['package'])
            if not package:
                superdesk.abort(404)
            export = doc.get('export')
            template = get_template(package.get('highlight'))
            stringTemplate = None
            if template and 'body_html' in template.get('data', {}):
                stringTemplate = template['data']['body_html']

            doc.clear()
            doc[ITEM_TYPE] = CONTENT_TYPE.TEXT
            doc['family_id'] = package.get('guid')
            doc[ITEM_STATE] = CONTENT_STATE.SUBMITTED
            doc[config.VERSION] = 1

            for field in package:
                if field not in PACKAGE_FIELDS:
                    doc[field] = package[field]

            items = []
            for group in package.get('groups', []):
                for ref in group.get('refs', []):
                    if 'residRef' in ref:
                        item = service.find_one(req=None,
                                                _id=ref.get('residRef'))
                        if item:
                            if not (export or preview) and \
                                    (item.get('lock_session') or item.get('state') != 'published'):
                                message = 'Locked or not published items in highlight list.'
                                raise SuperdeskApiError.forbiddenError(message)

                            items.append(item)

            if stringTemplate:
                doc['body_html'] = render_template_string(stringTemplate,
                                                          package=package,
                                                          items=items)
            else:
                doc['body_html'] = render_template(
                    'default_highlight_template.txt',
                    package=package,
                    items=items)
        if preview:
            return ['' for doc in docs]
        else:
            return service.post(docs, **kwargs)
Ejemplo n.º 5
0
    def create(self, docs, **kwargs):
        """Generate highlights text item for given package.

        If doc.preview is True it won't save the item, only return.
        """
        service = superdesk.get_resource_service('archive')
        for doc in docs:
            preview = doc.get('preview', False)
            package = service.find_one(req=None, _id=doc['package'])
            if not package:
                superdesk.abort(404)
            export = doc.get('export')
            stringTemplate = get_template(package.get('highlight'))

            doc.clear()
            doc[ITEM_TYPE] = CONTENT_TYPE.TEXT
            doc['headline'] = package.get('headline')
            doc['slugline'] = package.get('slugline')
            doc['byline'] = package.get('byline')
            doc['task'] = package.get('task')
            doc['family_id'] = package.get('guid')

            items = []
            for group in package.get('groups', []):
                for ref in group.get('refs', []):
                    if 'residRef' in ref:
                        item = service.find_one(req=None,
                                                _id=ref.get('residRef'))
                        if item:
                            if not (export or preview) and \
                                    (item.get('lock_session') or item.get('state') != 'published'):
                                message = 'Locked or not published items in highlight list.'
                                raise SuperdeskApiError.forbiddenError(message)

                            items.append(item)

            if stringTemplate:
                doc['body_html'] = render_template_string(stringTemplate,
                                                          package=package,
                                                          items=items)
            else:
                doc['body_html'] = render_template(
                    'default_highlight_template.txt',
                    package=package,
                    items=items)
        if preview:
            return [doc['body_html'] for doc in docs]
        else:
            return service.post(docs, **kwargs)
Ejemplo n.º 6
0
    def create(self, docs, **kwargs):
        """Generate highlights text item for given package.

        If doc.preview is True it won't save the item, only return.
        """
        service = superdesk.get_resource_service('archive')
        for doc in docs:
            preview = doc.get('preview', False)
            package = service.find_one(req=None, _id=doc['package'])
            if not package:
                superdesk.abort(404)
            stringTemplate = get_template(package.get('highlight'))

            doc.clear()
            doc[ITEM_TYPE] = CONTENT_TYPE.TEXT
            doc['headline'] = package.get('headline')
            doc['slugline'] = package.get('slugline')
            doc['byline'] = package.get('byline')
            doc['task'] = package.get('task')
            doc['family_id'] = package.get('guid')

            items = []
            for group in package.get('groups', []):
                for ref in group.get('refs', []):
                    if 'residRef' in ref:
                        item = service.find_one(req=None,
                                                _id=ref.get('residRef'))
                        if item:
                            html = item.get('body_html')
                            if html:
                                soup = BeautifulSoup(html, "html.parser")
                                item['first_paragraph_body_html'] = str(soup.p)
                            items.append(item)

            if stringTemplate:
                template = Template(stringTemplate)
                doc['body_html'] = template.render(package=package,
                                                   items=items)
            else:
                doc['body_html'] = render_template(
                    'default_highlight_template.txt',
                    package=package,
                    items=items)
        if preview:
            return ['' for doc in docs]
        else:
            return service.post(docs, **kwargs)
Ejemplo n.º 7
0
    def create(self, docs, **kwargs):
        """Generate highlights text item for given package.

        If doc.preview is True it won't save the item, only return.
        """
        service = superdesk.get_resource_service('archive')
        for doc in docs:
            preview = doc.get('preview', False)
            package = service.find_one(req=None, _id=doc['package'])
            if not package:
                superdesk.abort(404)
            export = doc.get('export')
            stringTemplate = get_template(package.get('highlight'))

            doc.clear()
            doc[ITEM_TYPE] = CONTENT_TYPE.TEXT
            doc['headline'] = package.get('headline')
            doc['slugline'] = package.get('slugline')
            doc['byline'] = package.get('byline')
            doc['task'] = package.get('task')
            doc['family_id'] = package.get('guid')

            items = []
            for group in package.get('groups', []):
                for ref in group.get('refs', []):
                    if 'residRef' in ref:
                        item = service.find_one(req=None, _id=ref.get('residRef'))
                        if item:
                            if not (export or preview) and \
                                    (item.get('lock_session') or item.get('state') != 'published'):
                                message = 'Locked or not published items in highlight list.'
                                raise SuperdeskApiError.forbiddenError(message)

                            items.append(item)

            if stringTemplate:
                doc['body_html'] = render_template_string(stringTemplate, package=package, items=items)
            else:
                doc['body_html'] = render_template('default_highlight_template.txt', package=package, items=items)
        if preview:
            return [doc['body_html'] for doc in docs]
        else:
            return service.post(docs, **kwargs)
Ejemplo n.º 8
0
    def create(self, docs, **kwargs):
        """Generate highlights text item for given package.

        If doc.preview is True it won't save the item, only return.
        """
        service = superdesk.get_resource_service('archive')
        for doc in docs:
            preview = doc.get('preview', False)
            package = service.find_one(req=None, _id=doc['package'])
            if not package:
                superdesk.abort(404)
            stringTemplate = getTemplate(package.get('highlight'))

            doc.clear()
            doc[ITEM_TYPE] = CONTENT_TYPE.TEXT
            doc['headline'] = package.get('headline')
            doc['slugline'] = package.get('slugline')
            doc['byline'] = package.get('byline')
            doc['task'] = package.get('task')
            doc['family_id'] = package.get('guid')

            items = []
            for group in package.get('groups', []):
                for ref in group.get('refs', []):
                    if 'residRef' in ref:
                        item = service.find_one(req=None, _id=ref.get('residRef'))
                        if item:
                            html = item.get('body_html')
                            if html:
                                soup = BeautifulSoup(html)
                                item['first_paragraph_body_html'] = str(soup.p)
                            items.append(item)

            if stringTemplate:
                template = Template(stringTemplate)
                doc['body_html'] = template.render(package=package, items=items)
            else:
                doc['body_html'] = render_template('default_highlight_template.txt', package=package, items=items)
        if preview:
            return ['' for doc in docs]
        else:
            return service.post(docs, **kwargs)
Ejemplo n.º 9
0
    def create(self, docs, **kwargs):
        """Generate highlights text item for given package.

        If doc.preview is True it won't save the item, only return.
        """
        service = superdesk.get_resource_service("archive")
        for doc in docs:
            preview = doc.get("preview", False)
            package = service.find_one(req=None, _id=doc["package"])
            if not package:
                superdesk.abort(404)
            export = doc.get("export")
            template = get_template(package.get("highlight"))
            stringTemplate = None
            if template and template.get("data") and template["data"].get(
                    "body_html"):
                stringTemplate = template["data"]["body_html"]

            doc.clear()
            doc[ITEM_TYPE] = CONTENT_TYPE.TEXT
            doc["family_id"] = package.get("guid")
            doc[ITEM_STATE] = CONTENT_STATE.SUBMITTED
            doc[config.VERSION] = 1

            for field in package:
                if field not in PACKAGE_FIELDS:
                    doc[field] = package[field]

            items = []
            for group in package.get("groups", []):
                for ref in group.get("refs", []):
                    if "residRef" in ref:
                        item = service.find_one(req=None,
                                                _id=ref.get("residRef"))
                        if item:
                            if not (export or preview) and (
                                    item.get("lock_session")
                                    or item.get("state") != "published"):
                                message = "Locked or not published items in highlight list."
                                raise SuperdeskApiError.forbiddenError(message)

                            items.append(item)
                            if not preview:
                                app.on_archive_item_updated(
                                    {
                                        "highlight_id":
                                        package.get("highlight"),
                                        "highlight_name":
                                        get_highlight_name(
                                            package.get("highlight")),
                                    },
                                    item,
                                    ITEM_EXPORT_HIGHLIGHT,
                                )

            if stringTemplate:
                doc["body_html"] = render_template_string(stringTemplate,
                                                          package=package,
                                                          items=items)
            else:
                doc["body_html"] = render_template(
                    "default_highlight_template.txt",
                    package=package,
                    items=items)
        if preview:
            return ["" for doc in docs]
        else:
            ids = service.post(docs, **kwargs)
            for id in ids:
                app.on_archive_item_updated(
                    {
                        "highlight_id":
                        package.get("highlight"),
                        "highlight_name":
                        get_highlight_name(package.get("highlight")),
                    },
                    {"_id": id},
                    ITEM_CREATE_HIGHLIGHT,
                )
            return ids