def test_can_get_by_key_id_group_by_domain(self): domains = [DomainFactory.create(name="g%d.com" % i) for i in xrange(2)] keys = [KeyFactory.create(name="random.fact.%s" % i) for i in xrange(3)] for i in range(3): for j in range(i + 1): ViolationFactory.create(key=keys[i], domain=domains[j % 2]) violations = Violation.get_by_key_id_group_by_domain(self.db, keys[1].id) expect(violations).to_be_like([("g0.com", 1), ("g1.com", 1)]) violations = Violation.get_by_key_id_group_by_domain(self.db, keys[2].id) expect(violations).to_be_like([("g0.com", 2), ("g1.com", 1)])
def get(self, key_name): violations = self.application.violation_definitions violation_title = violations[key_name]['title'] key_id = violations[key_name]['key'].id domains = Violation.get_by_key_id_group_by_domain(self.db, key_id) violation = { 'title': violation_title, 'domains': [{'name': name, 'count': count} for (name, count) in domains], 'total': sum(count for (name, count) in domains) } self.write_json(violation) self.finish()