本文整理汇总了Python中superdesk.errors.ParserError.newsmlOneParserError方法的典型用法代码示例。如果您正苦于以下问题:Python ParserError.newsmlOneParserError方法的具体用法?Python ParserError.newsmlOneParserError怎么用?Python ParserError.newsmlOneParserError使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类superdesk.errors.ParserError
的用法示例。
在下文中一共展示了ParserError.newsmlOneParserError方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _update
# 需要导入模块: from superdesk.errors import ParserError [as 别名]
# 或者: from superdesk.errors.ParserError import newsmlOneParserError [as 别名]
def _update(self, provider):
self.provider = provider
self.path = provider.get('config', {}).get('path', None)
if not self.path:
return
for filename in get_sorted_files(self.path, sort_by=FileSortAttributes.created):
try:
if os.path.isfile(os.path.join(self.path, filename)):
filepath = os.path.join(self.path, filename)
stat = os.lstat(filepath)
last_updated = datetime.fromtimestamp(stat.st_mtime, tz=utc)
if self.is_latest_content(last_updated, provider.get('last_updated')):
with open(os.path.join(self.path, filename), 'r') as f:
item = self.parser.parse_message(etree.fromstring(f.read()), provider)
self.add_timestamps(item)
self.move_file(self.path, filename, provider=provider, success=True)
yield [item]
else:
self.move_file(self.path, filename, provider=provider, success=True)
except etreeParserError as ex:
logger.exception("Ingest Type: AFP - File: {0} could not be processed".format(filename), ex)
self.move_file(self.path, filename, provider=provider, success=False)
raise ParserError.newsmlOneParserError(ex, provider)
except ParserError as ex:
self.move_file(self.path, filename, provider=provider, success=False)
except Exception as ex:
self.move_file(self.path, filename, provider=provider, success=False)
raise ProviderError.ingestError(ex, provider)
push_notification('ingest:update')
示例2: parse
# 需要导入模块: from superdesk.errors import ParserError [as 别名]
# 或者: from superdesk.errors.ParserError import newsmlOneParserError [as 别名]
def parse(self, xml, provider=None):
item = {}
try:
self.root = xml
parsed_el = xml.find('NewsItem/NewsComponent/AdministrativeMetadata/Source')
if parsed_el is not None:
item['original_source'] = parsed_el.find('Party').get('FormalName', '')
parsed_el = xml.find('NewsEnvelope/TransmissionId')
if parsed_el is not None:
item['ingest_provider_sequence'] = parsed_el.text
parsed_el = xml.find('NewsEnvelope/Priority')
item['priority'] = self.map_priority(parsed_el.text if parsed_el is not None else None)
self.parse_news_identifier(item, xml)
self.parse_newslines(item, xml)
self.parse_news_management(item, xml)
parsed_el = xml.findall('NewsItem/NewsComponent/DescriptiveMetadata/Language')
if parsed_el is not None:
language = self.parse_attributes_as_dictionary(parsed_el)
item['language'] = language[0]['FormalName'] if len(language) else ''
keywords = xml.findall('NewsItem/NewsComponent/DescriptiveMetadata/Property')
item['keywords'] = self.parse_attribute_values(keywords, 'Keyword')
subjects = xml.findall('NewsItem/NewsComponent/DescriptiveMetadata/SubjectCode/SubjectDetail')
subjects += xml.findall('NewsItem/NewsComponent/DescriptiveMetadata/SubjectCode/SubjectMatter')
subjects += xml.findall('NewsItem/NewsComponent/DescriptiveMetadata/SubjectCode/Subject')
item['subject'] = self.format_subjects(subjects)
# item['ContentItem'] = self.parse_attributes_as_dictionary(
# tree.find('NewsItem/NewsComponent/ContentItem'))
# item['Content'] = etree.tostring(
# tree.find('NewsItem/NewsComponent/ContentItem/DataContent/nitf/body/body.content'))
item['body_html'] = etree.tostring(
xml.find('NewsItem/NewsComponent/ContentItem/DataContent/nitf/body/body.content'),
encoding='unicode').replace('<body.content>', '').replace('</body.content>', '')
parsed_el = xml.findall('NewsItem/NewsComponent/ContentItem/Characteristics/Property')
characteristics = self.parse_attribute_values(parsed_el, 'Words')
item['word_count'] = characteristics[0] if len(characteristics) else None
parsed_el = xml.find('NewsItem/NewsComponent/RightsMetadata/UsageRights/UsageType')
if parsed_el is not None:
item.setdefault('usageterms', parsed_el.text)
parsed_el = xml.findall('NewsItem/NewsComponent/DescriptiveMetadata/Genre')
if parsed_el is not None:
item['genre'] = []
for el in parsed_el:
item['genre'].append({'name': el.get('FormalName')})
return self.populate_fields(item)
except Exception as ex:
raise ParserError.newsmlOneParserError(ex, provider)
示例3: test_raise_newsmlOneParserError
# 需要导入模块: from superdesk.errors import ParserError [as 别名]
# 或者: from superdesk.errors.ParserError import newsmlOneParserError [as 别名]
def test_raise_newsmlOneParserError(self):
with assert_raises(ParserError) as error_context:
try:
raise Exception("Testing newsmlOneParserError")
except Exception as ex:
raise ParserError.newsmlOneParserError(ex, self.provider)
exception = error_context.exception
self.assertTrue(exception.code == 1004)
self.assertTrue(exception.message == "NewsML1 input could not be processed")
self.assertIsNotNone(exception.system_exception)
self.assertEqual(exception.system_exception.args[0], "Testing newsmlOneParserError")
self.assertEqual(len(self.mock_logger_handler.messages['error']), 1)
self.assertEqual(self.mock_logger_handler.messages['error'][0],
"ParserError Error 1004 - NewsML1 input could not be processed: "
"Testing newsmlOneParserError on channel TestProvider")
示例4: parse
# 需要导入模块: from superdesk.errors import ParserError [as 别名]
# 或者: from superdesk.errors.ParserError import newsmlOneParserError [as 别名]
def parse(self, xml, provider=None):
item = {}
try:
self.root = xml
parsed_el = xml.find("NewsItem/NewsComponent/AdministrativeMetadata/Source")
if parsed_el is not None:
item["original_source"] = parsed_el.find("Party").get("FormalName", "")
parsed_el = xml.find("NewsEnvelope/TransmissionId")
if parsed_el is not None:
item["ingest_provider_sequence"] = parsed_el.text
parsed_el = xml.find("NewsEnvelope/Priority")
item["priority"] = self.map_priority(parsed_el.text if parsed_el else None)
self.parse_news_identifier(item, xml)
self.parse_newslines(item, xml)
self.parse_news_management(item, xml)
parsed_el = xml.findall("NewsItem/NewsComponent/DescriptiveMetadata/Language")
if parsed_el is not None:
language = self.parse_attributes_as_dictionary(parsed_el)
item["language"] = language[0]["FormalName"] if len(language) else ""
keywords = xml.findall("NewsItem/NewsComponent/DescriptiveMetadata/Property")
item["keywords"] = self.parse_attribute_values(keywords, "Keyword")
subjects = xml.findall("NewsItem/NewsComponent/DescriptiveMetadata/SubjectCode/SubjectDetail")
subjects += xml.findall("NewsItem/NewsComponent/DescriptiveMetadata/SubjectCode/SubjectMatter")
subjects += xml.findall("NewsItem/NewsComponent/DescriptiveMetadata/SubjectCode/Subject")
item["subject"] = self.format_subjects(subjects)
# item['ContentItem'] = self.parse_attributes_as_dictionary(
# tree.find('NewsItem/NewsComponent/ContentItem'))
# item['Content'] = etree.tostring(
# tree.find('NewsItem/NewsComponent/ContentItem/DataContent/nitf/body/body.content'))
item["body_html"] = (
etree.tostring(
xml.find("NewsItem/NewsComponent/ContentItem/DataContent/nitf/body/body.content"),
encoding="unicode",
)
.replace("<body.content>", "")
.replace("</body.content>", "")
)
parsed_el = xml.findall("NewsItem/NewsComponent/ContentItem/Characteristics/Property")
characteristics = self.parse_attribute_values(parsed_el, "Words")
item["word_count"] = characteristics[0] if len(characteristics) else None
parsed_el = xml.find("NewsItem/NewsComponent/RightsMetadata/UsageRights/UsageType")
if parsed_el is not None:
item.setdefault("usageterms", parsed_el.text)
parsed_el = xml.findall("NewsItem/NewsComponent/DescriptiveMetadata/Genre")
if parsed_el is not None:
item["genre"] = []
for el in parsed_el:
item["genre"].append({"name": el.get("FormalName")})
return self.populate_fields(item)
except Exception as ex:
raise ParserError.newsmlOneParserError(ex, provider)