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)
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
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)
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)
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)
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)
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)
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