Coverage for src/crawler/cmds/xml_cmds.py: 24%
48 statements
« prev ^ index » next coverage.py v7.9.0, created at 2025-07-30 09:47 +0000
« prev ^ index » next coverage.py v7.9.0, created at 2025-07-30 09:47 +0000
1import logging
3from ptf.cmds.xml_cmds import (
4 addOrUpdateBookXmlCmd,
5 addOrUpdateContainerXmlCmd,
6 addOrUpdateIssueXmlCmd,
7 importEntireCollectionXmlCmd,
8)
9from ptf.models import Container
11from crawler.models import ContainerSource
13logger = logging.getLogger(__name__)
16def add_source_to_container(source_domain: str, container: Container):
17 from crawler import factory
19 source_cls = factory.get_crawler_class(source_domain)
20 if not source_cls:
21 logger.warning(
22 f"Couldn't insert source {source_domain} to container : source not implemented"
23 )
24 return False
26 source = source_cls.get_or_create_source()
27 ContainerSource.objects.get_or_create(
28 source=source,
29 container=container,
30 )
31 logger.debug(f"Source {source_domain} successfully added to container {container.pid}")
32 return True
35class addOrUpdateGDMLIssueXmlCmd(addOrUpdateIssueXmlCmd):
36 def internal_do(self):
37 obj = super().internal_do()
38 if not obj or not self.xissue:
39 logger.debug("Skipping source insertion : database object or xissue is not set")
40 return obj
42 source_str = self.xissue.source
43 if not source_str:
44 if not self.add_link_to_source:
45 logger.debug(
46 "Skipping source insertion : add_link_to_source is false and xissue.source is None"
47 )
48 return obj
49 source_str = "NUMDAM"
51 add_source_to_container(source_str, obj)
52 return obj
55class addOrUpdateGDMLBookXmlCmd(addOrUpdateBookXmlCmd):
56 def internal_do(self):
57 obj = super().internal_do()
58 if not obj or not self.xbook:
59 logger.debug(
60 "Skipping source insertion : no database object was returned or xbook.source is not set"
61 )
62 return obj
64 source_str = self.xbook.source
65 if not source_str:
66 if not self.add_link_to_source:
67 logger.debug(
68 "Skipping source insertion : add_link_to_source is false and xbook.source is None"
69 )
70 return obj
71 source_str = "NUMDAM"
73 add_source_to_container(source_str, obj)
74 return obj
77class addOrUpdateGDMLContainerXmlCmd(addOrUpdateContainerXmlCmd):
78 addOrUpdateIssueXmlCmdOverride = addOrUpdateGDMLIssueXmlCmd
79 addOrUpdateBookXmlCmdOverride = addOrUpdateGDMLBookXmlCmd
82class importGDMLCollectionXmlCmd(importEntireCollectionXmlCmd):
83 addOrUpdateContainerXmlCmdOverride = addOrUpdateGDMLContainerXmlCmd