Example #1
0
    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
Example #2
0
 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
Example #3
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()
Example #4
0
    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
Example #5
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
Example #6
0
    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()
Example #8
0
    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)
        }
Example #9
0
 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()
Example #10
0
 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()
Example #11
0
    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
Example #12
0
 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