def puntos_equipo(self, indicador=None): qs_departamento = Departamento.objects.filter( colaboradores__puntuaciones__rubrica__semana__competencia=self) filtros = {} if indicador: filtros[ 'colaboradores__puntuaciones__rubrica__indicador'] = indicador qs_departamento = qs_departamento.annotate( puntos=models.Avg('colaboradores__puntuaciones__porcentaje', output_field=models.DecimalField( max_digits=5, decimal_places=2), filter=models.Q(**filtros))) else: qs_departamento = qs_departamento.annotate( puntos=models.Avg('colaboradores__puntuaciones__porcentaje', output_field=models.DecimalField( max_digits=5, decimal_places=2))) return qs_departamento
def get_star_rating(self): """ Updates and returns the current avg star rating for an item. """ rvws = self.reviews.all() if rvws.exists(): self.rating = rvws.aggregate(models.Avg('rating'))['rating__avg'] self.save() return self.rating return 0
def delete(self, *args, **kwargs): super().delete(*args, **kwargs) # Update number of raters and rate average in book when user rate a book self.book.raters = self.book.user_ratings.count() self.book.avg_ratings = floor( self.book.user_ratings.aggregate(models.Avg("rate")).get( "rate__avg" ) ) self.book.save()
def get_ratio(self): """Obtener el ratio del recurso. Returns: float: Ratio medio del recurso. """ ratio = self.ratio_resource.aggregate(models.Avg('score')) if ratio['score__avg']: return ratio['score__avg'] return 0
def aggregated_user_data(cls, user_id): record_set = consumption_data.objects.filter( user_id=user_id).values('user_id') record_set = record_set.annotate(sum=models.Sum('consumption'), avg=models.Avg('consumption')) record_set = dict(user_id=record_set[0]['user_id'], avg=round(record_set[0]['avg'], 2), sum=round(record_set[0]['sum'], 2)) return record_set
def get_mma(self): if not hasattr(self, '_mma'): mma_anteriores = Dado.objects.filter(acao=self.acao, data__lte=self.data) if mma_anteriores.count() >= MMA_INTERVAL: media_vf = mma_anteriores.order_by('-data')[:MMA_INTERVAL].aggregate(models.Avg('valor_fechamento')) self._mma = media_vf.get('valor_fechamento__avg') else: self._mma = None return self._mma
def adjust_default_row(cls): defaults = cls.get_default_intervals() for field in cls._meta.get_fields(): if not re.match(r'[0-9]+\_[0-9]+', field.name): continue avg = list(cls.objects.all().aggregate(models.Avg( field.name)).values())[0] setattr(defaults, field.name, avg) defaults.save()
def rating_values(self, character_id): result = CharacterRating.objects.filter( character_id=character_id).aggregate( max_rating=models.Max('rating'), avg_rating=models.Avg('rating')) avg_rating = result['avg_rating'] if result['avg_rating'] else 0 return { 'max_rating': result['max_rating'], 'average_rating': round(avg_rating, 1) }
def update_score(self): score_owner_object = self.get_score_owner_object() avg_score = score_owner_object.criterion_scores.filter( criterion__category_id=self.criterion_category_id).aggregate( models.Avg('score')) avg_score = avg_score.get('score__avg') if avg_score is not None: self.score = round(avg_score, 2) self.save(update_fields=['score']) else: self.delete()
def save(self, *args, **kwargs): created = True if not self.id else False super().save(*args, **kwargs) if created: # Update number of raters in book when user rate a book self.book.raters = self.book.user_ratings.count() self.book.avg_ratings = floor( self.book.user_ratings.aggregate(models.Avg("rate")).get( "rate__avg" ) ) self.book.save()
def avg_rating(self): dict = {} ratings = ChapterRating.objects.filter(chapter__work=self) avg_rating = ratings.aggregate(models.Avg('score'))['score__avg'] if avg_rating: dict['rating'] = round(avg_rating / 2.0, 1) dict['count'] = ratings.count() else: dict['rating'] = 0.0 dict['count'] = 0 return dict
def _extra(self, extra_clause, extra_name='datetime'): query_set = self.extra({ extra_name: extra_clause }).values(extra_name).annotate( average_pot=models.Avg('average_pot'), players_per_flop=models.Avg('players_per_flop'), unique_player_count=models.Avg('unique_player_count'), entry_count=models.Avg('entry_count'), one_tabler_count=models.Avg('one_tabler_count'), two_tabler_count=models.Avg('two_tabler_count'), three_tabler_count=models.Avg('three_tabler_count'), four_tabler_count=models.Avg('four_tabler_count'), ) return query_set