mirror of
https://github.com/netzbegruenung/green-spider.git
synced 2024-05-01 16:44:51 +02:00
Fix link raters (social media links, contact link) (#95)
* Fix rating for contact_link and social_media_link * Skip checks when dependencies not met
This commit is contained in:
parent
eac5feb4f5
commit
d0e3a4210f
|
@ -56,6 +56,15 @@ def perform_checks(input_url):
|
||||||
for check_name, check in check_modules:
|
for check_name, check in check_modules:
|
||||||
checker = check.Checker(config=config,
|
checker = check.Checker(config=config,
|
||||||
previous_results=results)
|
previous_results=results)
|
||||||
|
|
||||||
|
# see if dependencies are met
|
||||||
|
dependencies = checker.depends_on_results()
|
||||||
|
if dependencies != []:
|
||||||
|
for dep in dependencies:
|
||||||
|
if (dep not in results or results[dep] is None or results[dep] == {} or results[dep] == []):
|
||||||
|
logging.debug("Skipping check %s as dependency %s is not met" % (check_name, dep))
|
||||||
|
continue
|
||||||
|
|
||||||
result = checker.run()
|
result = checker.run()
|
||||||
results[check_name] = result
|
results[check_name] = result
|
||||||
|
|
||||||
|
|
|
@ -10,10 +10,17 @@ class AbstractChecker(object):
|
||||||
# Key is the name of the checker that has generated the result.
|
# Key is the name of the checker that has generated the result.
|
||||||
self._previous_results = previous_results
|
self._previous_results = previous_results
|
||||||
|
|
||||||
|
def depends_on_results(self):
|
||||||
|
"""
|
||||||
|
Should return the name(s) of checks this one depends on.
|
||||||
|
Empty list means this check has no prerequisites.
|
||||||
|
"""
|
||||||
|
return []
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
"""Executes the check routine, returns result dict"""
|
"""Executes the check routine, returns result dict"""
|
||||||
raise NotImplementedError()
|
raise NotImplementedError()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def config(self):
|
def config(self):
|
||||||
return self._config
|
return self._config
|
||||||
|
|
|
@ -15,6 +15,9 @@ class Checker(AbstractChecker):
|
||||||
def __init__(self, config, previous_results=None):
|
def __init__(self, config, previous_results=None):
|
||||||
super().__init__(config, previous_results)
|
super().__init__(config, previous_results)
|
||||||
|
|
||||||
|
def depends_on_results(self):
|
||||||
|
return ['page_content', 'html_head', 'dns_resolution']
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
assert 'page_content' in self.previous_results
|
assert 'page_content' in self.previous_results
|
||||||
assert 'html_head' in self.previous_results
|
assert 'html_head' in self.previous_results
|
||||||
|
|
|
@ -11,7 +11,10 @@ from checks.abstract_checker import AbstractChecker
|
||||||
class Checker(AbstractChecker):
|
class Checker(AbstractChecker):
|
||||||
def __init__(self, config, previous_results=None):
|
def __init__(self, config, previous_results=None):
|
||||||
super().__init__(config, previous_results)
|
super().__init__(config, previous_results)
|
||||||
|
|
||||||
|
def depends_on_results(self):
|
||||||
|
return ['page_content']
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
assert 'page_content' in self.previous_results
|
assert 'page_content' in self.previous_results
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,9 @@ class Checker(AbstractChecker):
|
||||||
def __init__(self, config, previous_results=None):
|
def __init__(self, config, previous_results=None):
|
||||||
super().__init__(config, previous_results)
|
super().__init__(config, previous_results)
|
||||||
|
|
||||||
|
def depends_on_results(self):
|
||||||
|
return ['dns_resolution']
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
headers = {
|
headers = {
|
||||||
"User-Agent": self.config.user_agent
|
"User-Agent": self.config.user_agent
|
||||||
|
|
|
@ -31,7 +31,7 @@ class Rater(AbstractRater):
|
||||||
# make sure we only count 1 for this url
|
# make sure we only count 1 for this url
|
||||||
break
|
break
|
||||||
|
|
||||||
if urls_with_contact_link == urls:
|
if urls > 0 and urls_with_contact_link == urls:
|
||||||
score = self.max_score
|
score = self.max_score
|
||||||
value = True
|
value = True
|
||||||
|
|
||||||
|
|
|
@ -52,7 +52,7 @@ class Rater(AbstractRater):
|
||||||
# make sure we only count 1 for this url
|
# make sure we only count 1 for this url
|
||||||
break
|
break
|
||||||
|
|
||||||
if urls_with_social_media_links == urls:
|
if urls > 0 and urls_with_social_media_links == urls:
|
||||||
score = self.max_score
|
score = self.max_score
|
||||||
value = True
|
value = True
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue