def getRate(self): manager = IRatingsManager(self.context) rate = manager.getRating( OVERALL_RATING_DEFINITION_NAME, self.request.principal.id) if rate is None: return u'--' else: return rate.value
def setRate(self, value): manager = IRatingsManager(self.context) if value == u'--': manager.remove( OVERALL_RATING_DEFINITION_NAME, self.request.principal.id) else: manager.rate( OVERALL_RATING_DEFINITION_NAME, value, self.request.principal.id) # Invoke ObjectModifedEvent to reindex the rated object in catalog event.notify(ObjectModifiedEvent(self.context))
def average(self, defn = overallRatingDefinition): manager = IRatingsManager(self.context) total = 0.0 rates = manager.getRatings(OVERALL_RATING_DEFINITION_NAME) if not rates: return None for rate in rates: total += defn.scoreSystem.getNumericalValue(rate.value) average = total / len(rates) return average
def evolve(context): """Add tzinfo to timestamp of ratings""" for ratable in findObjectsProviding(getRootFolder(context), IRatable): manager = IRatingsManager(ratable) for d in manager._storage.values(): for rating in d.values(): if rating._timestamp.tzinfo is None: rating._timestamp = rating._timestamp.replace(tzinfo=UTC)