def _build_layers(self): layers = self.db.get_layers() for l in layers: logger.debug('process layer %d in domain %d', l.id, l.domain_id) layer = Layer(l.id, self.domains[l.domain_id]) self.layers[l.id] = layer
def from_db(cls, row): diversion = Diversion.valid(row.diversion) logger.debug('row: %s', row) ret = json.loads(row.parameters) if row.parameters else {} parameters = [Parameter(name, value) for name, value in ret.items()] ret = json.loads(row.conditions) if row.conditions else {} conditions = [Condition(name, args) for name, args in ret.items()] return cls(row.id, row.layer_id, diversion, '%s' % row.start_time, '%s' % row.end_time, None, parameters, conditions)
def _build_domains(self): domains = self.db.get_domains() # TODO: polish this stupid bfs method # find root domain root_domain = None for d in domains: if d.id == d.parent_id: root_domain = Domain.from_num(d.id, 0, d.buckets_num) self.domains[d.id] = root_domain logger.debug('root domain %d, buckets_num %d', d.id, d.buckets_num) break # find subdomain for d in domains: if d.parent_id == root_domain.id and d.id != root_domain.id: logger.debug('process subdomain %d, buckets_num %d', d.id, d.buckets_num) bucketRanges = root_domain.assign(d.id, d.buckets_num) self.domains[d.id] = Domain(d.id, bucketRanges)