blob: 7971e55c35b477c3f623b71cb1750558669ddd37 [file]
import marshmallow as ma
from app.utility.base_object import BaseObject
class VisibilitySchema(ma.Schema):
score = ma.fields.Integer()
adjustments = ma.fields.List(ma.fields.Integer())
@ma.post_load
def build_visibility(self, data, **_):
return Visibility(**data)
class Visibility(BaseObject):
MIN_SCORE = 1
MAX_SCORE = 100
schema = VisibilitySchema()
@property
def display(self):
return self.clean(dict(score=self.score))
@property
def score(self):
total_score = self._score + sum([a.offset for a in self.adjustments])
if total_score > self.MAX_SCORE:
return self.MAX_SCORE
elif total_score < self.MIN_SCORE:
return self.MIN_SCORE
return total_score
def __init__(self):
super().__init__()
self._score = 50
self.adjustments = []
def apply(self, adjustment):
self.adjustments.append(adjustment)