def checkRequirement(self, rule):
# unusable rules
if not rule or type(rule) != element.Tag or rule['ruletype'] not in allowed_rule_type or rule['per_complete'] in disallowed_per_complete:
return 10000 # return a impossible number
if rule.requirement and rule.requirement.has_attr('numgroups'):
n = int(rule.requirement['numgroups'])
shortlist = list()
for child_rule in rule.find_all('rule'):
# in case there are multiple subrules
if child_rule.has_attr('per_complete') and child_rule.get('per_complete') not in disallowed_per_complete \
and child_rule['ruletype'] in allowed_rule_type:
shortlist.append(self.checkRequirement(child_rule))
# sort the list and choose the first n (smallest) subrules
return sum(sorted(shortlist)[:n])
else:
return int(rule.requirement['classes_begin']) - int(rule.classes_applied.text)
评论列表
文章目录