############################################################################## # ScoDoc # Copyright (c) 1999 - 2022 Emmanuel Viennet. All rights reserved. # See LICENSE ############################################################################## """Cache pour résultats (super classe) """ from app.models import FormSemestre class ResultatsCache: """Résultats cachés (via redis) L'attribut _cached_attrs donne la liste des noms des attributs à cacher (doivent être sérialisables facilement, se limiter à des types simples) store() enregistre les attributs dans le cache, et load_cached() les recharge. """ _cached_attrs = () # virtual def __init__(self, formsemestre: FormSemestre, cache_class=None): self.formsemestre: FormSemestre = formsemestre self.cache_class = cache_class def load_cached(self) -> bool: "Load cached dataframes, returns False si pas en cache" data = self.cache_class.get(self.formsemestre.id) if not data: return False for attr in self._cached_attrs: setattr(self, attr, data[attr]) return True def store(self): "Cache our data" self.cache_class.set( self.formsemestre.id, {attr: getattr(self, attr) for attr in self._cached_attrs}, )