refactor level to get_xyz_...

This commit is contained in:
Victor Shyba 2020-11-05 22:47:35 -03:00 committed by Lex Berezhny
parent 4e0728572d
commit e4449d2ec7
3 changed files with 14 additions and 13 deletions

View file

@ -18,7 +18,7 @@ log = logging.getLogger(__name__)
def resolve_claims(**constraints): def resolve_claims(**constraints):
censor = context().get_resolve_censor() censor = context().get_resolve_censor()
rows = context().fetchall(select_claims(**constraints)) rows = context().fetchall(select_claims(**constraints))
rows = censor.apply(rows, level=2) rows = censor.apply(rows)
return rows_to_txos(rows), censor return rows_to_txos(rows), censor

View file

@ -85,11 +85,13 @@ class QueryContext:
def raise_unsupported_dialect(self): def raise_unsupported_dialect(self):
raise RuntimeError(f'Unsupported database dialect: {self.engine.dialect.name}.') raise RuntimeError(f'Unsupported database dialect: {self.engine.dialect.name}.')
def get_resolve_censor(self) -> Censor: @classmethod
return Censor(self.blocked_streams, self.blocked_channels) def get_resolve_censor(cls) -> Censor:
return Censor(level=2)
def get_search_censor(self) -> Censor: @classmethod
return Censor(self.filtered_streams, self.filtered_channels) def get_search_censor(cls) -> Censor:
return Censor(level=1)
def pg_copy(self, table, rows): def pg_copy(self, table, rows):
with self.engine.begin() as c: with self.engine.begin() as c:

View file

@ -24,19 +24,18 @@ def set_reference(reference, claim_hash, rows):
class Censor: class Censor:
__slots__ = 'streams', 'channels', 'censored', 'total' __slots__ = 'level', 'censored', 'total'
def __init__(self, streams: dict = None, channels: dict = None): def __init__(self, level=1):
self.streams = streams or {} self.level = level
self.channels = channels or {}
self.censored = {} self.censored = {}
self.total = 0 self.total = 0
def apply(self, rows, level=1): def apply(self, rows):
return [row for row in rows if not self.censor(row, level)] return [row for row in rows if not self.censor(row)]
def censor(self, row, level=1) -> bool: def censor(self, row) -> bool:
was_censored = row['censor_type'] >= level was_censored = row['censor_type'] >= self.level
if was_censored: if was_censored:
censoring_channel_hash = row['censor_owner_hash'] censoring_channel_hash = row['censor_owner_hash']
self.censored.setdefault(censoring_channel_hash, 0) self.censored.setdefault(censoring_channel_hash, 0)