Esempio n. 1
0
def get_offering_costs(invoice_items):
    price = Ceil(F('quantity') * F('unit_price') * 100) / 100
    tax_rate = F('invoice__tax_percent') / 100
    return invoice_items.values('invoice__year', 'invoice__month').annotate(
        computed_price=Sum(price, output_field=FloatField()),
        computed_tax=Sum(price * tax_rate, output_field=FloatField()),
    )
Esempio n. 2
0
class Restaurant(models.Model):
    restaurant_ID = AutoField(primary_key=True)
    owner = models.ForeignKey(UserProfile,
                              on_delete=models.CASCADE,
                              null=True,
                              blank=True)
    name = CharField(max_length=100)
    slug = models.SlugField(unique=True)
    address = CharField(max_length=100, blank=True, null=True)
    overview = CharField(max_length=100)
    detailed = CharField(max_length=300, blank=True, null=True)
    phone_number = IntegerField(blank=True, null=True)
    email_address = EmailField(blank=True, null=True)
    rating = IntegerField(default=0)
    price = IntegerField(default=0)
    picture = models.ImageField(upload_to='images/', null=True)
    lat = FloatField(default=55.8642)
    lng = FloatField(default=-4.2518)

    def save(self, *args, **kwargs):
        self.slug = slugify(self.name)
        super(Restaurant, self).save(*args, **kwargs)

    def __str__(self):
        return self.name
Esempio n. 3
0
def hot_problems(duration, limit):
    cache_key = 'hot_problems:%d:%d' % (duration.total_seconds(), limit)
    qs = cache.get(cache_key)
    if qs is None:
        qs = Problem.objects.filter(is_public=True, submission__date__gt=timezone.now() - duration, points__gt=3, points__lt=25)
        qs0 = qs.annotate(k=Count('submission__user', distinct=True)).order_by('-k').values_list('k', flat=True)
        
        if not qs0:
            return []
        # make this an aggregate
        mx = float(qs0[0])

        qs = qs.annotate(unique_user_count=Count('submission__user', distinct=True))  
        # fix braindamage in excluding CE  
        qs = qs.annotate(submission_volume=Count(Case(
                When(submission__result='AC', then=1),
                When(submission__result='WA', then=1),
                When(submission__result='IR', then=1),
                When(submission__result='RTE', then=1),
                When(submission__result='TLE', then=1),
                When(submission__result='OLE', then=1),
                output_field=FloatField(),
            )))
        qs = qs.annotate(ac_volume=Count(Case(
                When(submission__result='AC', then=1),
                output_field=FloatField(),
            )))
        qs = qs.filter(unique_user_count__gt=max(mx / 3.0, 1))

        qs = qs.annotate(ordering=ExpressionWrapper(0.5 * F('points') * (0.4 * F('ac_volume') / F('submission_volume') + 0.6 * F('ac_rate')) + 100 * e ** (F('unique_user_count') / mx), output_field=FloatField())).order_by('-ordering').defer('description')[:limit]

        cache.set(cache_key, qs, 900)
    return qs
Esempio n. 4
0
 def _resolve_output_field(self):
     source_fields = self.get_source_fields()
     if any(isinstance(s, DecimalField) for s in source_fields):
         return DecimalField()
     if any(isinstance(s, IntegerField) for s in source_fields):
         return FloatField()
     return super()._resolve_output_field() if source_fields else FloatField()
Esempio n. 5
0
class Village(Model):
    id = IntegerField(verbose_name=_('village id'),
                      primary_key=True,
                      unique=True,
                      blank=False,
                      null=False)
    name = CharField(max_length=128,
                     verbose_name=_('village name'),
                     unique=True,
                     blank=False,
                     db_index=True)
    x = FloatField(verbose_name=_('coordinate x'))
    y = FloatField(verbose_name=_('coordinate y'))
    created = DateTimeField(verbose_name=_('created'),
                            auto_now=True,
                            auto_now_add=True)
    owner = ForeignKey(User,
                       verbose_name=_('owner'),
                       db_constraint=False,
                       null=True,
                       blank=True)

    def __unicode__(self):
        return u'[%000000000d] %s' % (self.id, self.name)

    class Meta:
        verbose_name = _('village')
        verbose_name_plural = _('villages')
        unique_together = (('x', 'y'), )
        index_together = (('x', 'y'), )
Esempio n. 6
0
class Multiplicativo_metodo(models.Model):
    a = FloatField()
    xo = FloatField()
    m = FloatField()
    n = FloatField()

    class Cuadrado_metodo(models.Model):
        x = FloatField()
        d = FloatField()
        nr = FloatField()
Esempio n. 7
0
class MutationalSignatureMinimisationResult(models.Model):
    mutational_signature = models.ForeignKey(MutationalSignature, on_delete=CASCADE)
    result_type = models.CharField(max_length=1, choices=MinimisationResultType.choices)
    iteration = models.IntegerField()
    solution_array = ArrayField(FloatField())
    fit_data = ArrayField(FloatField())
    diff_data = ArrayField(FloatField())
    ls_sum_diff = models.FloatField()
    la_sum_diff = models.FloatField()

    class Meta:
        unique_together = ("mutational_signature", "result_type", "iteration")
Esempio n. 8
0
    def search(self, config, start, stop, score_field=None):
        # TODO: Handle MatchAll nested inside other search query classes.
        if isinstance(self.query, MatchAll):
            return self.queryset[start:stop]

        elif isinstance(self.query, Not) and isinstance(
                self.query.subquery, MatchAll):
            return self.queryset.none()

        if isinstance(
                self.query, Not
        ):  # If the outermost operator is a Not, we invert the query. This is done because, if every search term is negated, the Not() will return no results, an we want to match all results instead.
            query = self.query.subquery
            negated = True
        else:
            query = self.query
            negated = False

        search_query = self.build_search_query(query)
        match_expression = MatchExpression(
            search_query,
            columns=["title", "body"],
            output_field=BooleanField()
        )  # For example: MATCH (`title`, `body`) AGAINST ('+query' IN BOOLEAN MODE)
        score_expression = MatchExpression(
            search_query, columns=["title"],
            output_field=FloatField()) * F("title_norm") + MatchExpression(
                search_query, columns=["body"], output_field=FloatField())

        index_entries = IndexEntry.objects.annotate(
            score=score_expression).filter(
                content_type_id__in=get_descendants_content_types_pks(
                    self.queryset.model))
        if not negated:
            index_entries = index_entries.filter(match_expression)
            if (
                    self.order_by_relevance
            ):  # Only applies to the case where the outermost query is not a Not(), because if it is, the relevance score is always 0 (anything that matches is excluded from the results).
                index_entries = index_entries.order_by(score_expression.desc())
        else:
            index_entries = index_entries.exclude(match_expression)

        index_entries = index_entries[start:stop]  # Trim the results

        object_ids = {
            index_entry.object_id
            for index_entry in index_entries
        }  # Get the set of IDs from the indexed objects, removes duplicates too

        results = self.queryset.filter(id__in=object_ids)

        return results
Esempio n. 9
0
class MapModel(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    passengers_number = IntegerField(default=1)
    passengers_signed = IntegerField(default=0)
    price = FloatField(default=0.0)
    date = DateField(default=datetime.now())
    hour = IntegerField(default=12)
    address_start = map_fields.AddressField(max_length=500)
    address_end = map_fields.AddressField(max_length=500)
    address_start_lat = FloatField()
    address_start_lng = FloatField()
    address_end_lat = FloatField()
    address_end_lng = FloatField()
    waypoints = JSONField()
Esempio n. 10
0
 def species_fitness(self):
     return Organism.objects.filter(
         population=self.pk).values('species__rel_index').annotate(
             ydata=ExpressionWrapper(Sum('fitness') /
                                     Count('species__rel_index'),
                                     output_field=FloatField()),
             xdata=F('species__rel_index'))
Esempio n. 11
0
 def calcula_total_geral(self, *args, **kwargs):
     self.tt = EstoqueItens.objects.filter(
         estoque=self.estoque).values().aggregate(
             Sum('valor_item', output_field=FloatField()))
     self.tt = list(self.tt.values())[0]
     self.tt = round(self.tt, 2)
     return str(self.tt)
Esempio n. 12
0
class First(models.Aggregate):
    function = 'first'
    name = 'first'
    output_field = FloatField()

    def __init__(self, expression, bucket):
        super().__init__(expression, bucket)
Esempio n. 13
0
class Habitation(Model):
    title = CharField(max_length=20)
    rooms_nb = IntegerField()
    area = IntegerField()
    id_address = OneToOneField(
        Address, on_delete=CASCADE, blank=True,
        null=True)  # Shop-django / Django-address package
    description = TextField()
    compatibility_score = FloatField()
    is_furnished = BooleanField()
    price = IntegerField()
    id_user_poster = ForeignKey(
        CroomiesUser, on_delete=CASCADE, blank=True, null=True
    )  #il s'agit du gars qui met l'annonce #! remove blank=true et null=true
    id_time_slots = ForeignKey(Time_slots,
                               on_delete=CASCADE,
                               blank=True,
                               null=True)
    id_date_slots = ForeignKey(Date_slots,
                               on_delete=CASCADE,
                               blank=True,
                               null=True)

    def __str__(self):
        return "%s %s" % (self.title, self.description)
Esempio n. 14
0
 def get_context_data(self, **kwargs):
     context = super(PathJsonList, self).get_context_data(**kwargs)
     context["sumPath"] = round(
         self.object_list.aggregate(sumPath=Coalesce(
             Sum(Length('geom'), output_field=FloatField()), 0))['sumPath']
         / 1000, 1)
     return context
Esempio n. 15
0
def gerar_relatorio(request):

    data_fin = datetime.now()
    data_ini = data_fin - timedelta(30)

    vendas = ordem_de_venda.objects.filter(
        ativo=True, venda=True, data_de_venda__range=[data_ini, data_fin]
    ).select_related('id_lote_medicamento').select_related(
        'id_medicamento').values(
            'id_lote_medicamento__id_medicamento__nome_medicamento').annotate(
                quant=Sum('quantidade', output_Field=FloatField()),
                valor=Sum(
                    'valor_total_venda',
                    output_Field=FloatField())).annotate(avg=ExpressionWrapper(
                        F('valor') /
                        F('quant'), output_field=FloatField())).order_by()

    response = HttpResponse(content_type='application/vnd.ms-excel')
    response['Content-Disposition'] = 'attachment; filename = Expenses' + str(
        datetime.now()) + '.xls'
    wb = xlwt.Workbook(encoding='utf-8')
    ws = wb.add_sheet('Expenses')
    row_num = 0
    font_style = xlwt.XFStyle()
    font_style.font.bold = True

    columns = [
        'id_lote_medicamento__id_medicamento__nome_medicamento', 'quant',
        'valor', 'avg'
    ]

    font_style = xlwt.XFStyle

    ws.write(row_num, 0, "Medicamento")
    ws.write(row_num, 1, "Quantidade")
    ws.write(row_num, 2, "Valor")
    ws.write(row_num, 3, "Preço médio")

    for row in vendas:
        row_num += 1

        for col_num in range(len(columns)):

            ws.write(row_num, col_num, str(row[columns[col_num]]))

    wb.save(response)
    return response
Esempio n. 16
0
    def getRentalsForSummary(current_date=None):

        result_dict = {}

        created_today_filter = Q(created_date__date=current_date)
        ends_today_filter = Q(end_date__date=current_date)
        paid_filter = Q(paid=True)
        unpaid_filter = Q(Q(paid=False) | Q(paid__isnull=True))

        rentals = Rental.objects.filter(
            ends_today_filter).annotate(
            rent_duration=ExpressionWrapper(
                ( (F('end_date')  - F('start_date')) * 0.000001 \
                / Value('3600', IntegerField() )),
                output_field=DecimalField(decimal_places=1)
            )
        )

        rent_subquery = rentals.filter(rentaldetail=OuterRef('id'))

        rentals_detail = RentalDetail.objects.filter(
            rental__in=rentals).select_related('rental').annotate(
                rent_duration=Subquery(rent_subquery.values('rent_duration'))
            ).annotate(item_rent_gross_amt=ExpressionWrapper(
                F('rent_duration') * F('price') * F('quantity'),
                output_field=FloatField()))

        rent_detail_subquery = rentals_detail.filter(
            rental_id=OuterRef('id')).values('item_rent_gross_amt')
        test = rent_detail_subquery.values('rental_id').annotate(
            total=Sum('item_rent_gross_amt')).values('total')

        rentals = rentals.prefetch_related(
            Prefetch('rentaldetail_set',
                     rentals_detail)).annotate(total_rent_amt=Subquery(test))

        students_with_rentals = Student.objects.filter(
            Q(rental__in=rentals)).prefetch_related(
                Prefetch(
                    'rental_set',
                    rentals)).annotate(student_total_rent_amt=Subquery(
                        rentals.values('student_id').annotate(
                            total_amt=Sum('total_rent_amt')).values(
                                'total_amt'))).order_by('name').distinct()

        # Aggregates used for overall summary

        rentals_counts = rentals.aggregate(
            ends_today=Count('*'),
            paid=Count('paid', filter=paid_filter),
        )
        total_rentals_value = rentals_detail.aggregate(
            sum=Sum('item_rent_gross_amt'))

        result_dict['count'] = rentals_counts
        result_dict['total_profit'] = total_rentals_value
        result_dict['students'] = students_with_rentals

        return result_dict
Esempio n. 17
0
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)

        if (self.kwargs):
            self.current_date = self.kwargs['summary_date']

        lessons_today = Lesson.objects.filter(
            start_date=self.current_date).order_by('start_time')
        # .annotate(
        #                 students_detail_duration_sum=Sum('lessondetail__duration')
        #             )

        lesson_detail = LessonDetail.objects.filter(
            Q(lesson__in=lessons_today))

        instructors_with_lessons = self.queryset.prefetch_related(
            Prefetch('lessons', lessons_today)).annotate(
                lessondetail_duration_sum=Sum(
                    'lessons__lessondetail__duration',
                    filter=Q(lessons__lessondetail__in=lesson_detail))
            ).annotate(instructor_lessons_duration_sum=Sum(
                'lessons__duration', filter=Q(
                    lessons__in=lessons_today))).annotate(
                        lessons_price_sum=Sum(
                            'lessons__lessondetail__price',
                            filter=Q(lessons__lessondetail__in=lesson_detail)))

        context['rentals'] = RentalView.getRentalsForSummary(self.current_date)
        context['instructors_with_lessons'] = instructors_with_lessons

        context['profit'] = lesson_detail.values(
            'duration', 'pay_rate',
            'lesson_id').annotate(lesson_cost=ExpressionWrapper(
                F('duration') *
                F('pay_rate'), output_field=FloatField())).aggregate(
                    total_profit=Sum('lesson_cost'))

        # context['duration_sum'] = lessons_today.aggregate(sum=(Sum('duration')))
        context['duration_sum'] = lesson_detail.aggregate(
            sum=(Sum('duration')))
        context['lesson_detail'] = lesson_detail
        context['single_lessons_count'] = lessons_today.filter(
            group_lesson=False).count()
        context['group_lessons_count'] = lessons_today.filter(
            group_lesson=True).count()
        context['completed_count'] = lessons_today.filter(
            completed=True).count()
        context['lessons_count'] = lessons_today.count()
        # context['hours'] = range(7,22)
        context['current_date'] = self.current_date
        context['current_time'] = datetime.today().hour

        context['previous_date'] = self.current_date - timedelta(days=1)
        context['next_date'] = datetime.date(self.current_date +
                                             timedelta(days=1))

        return context
Esempio n. 18
0
class Flavor(Model):
    name = CharField(max_length=255)
    label = CharField(max_length=255)
    parent = ForeignKey("self", blank=True, null=True, on_delete=SET_NULL)
    float_value = FloatField(null=True)
    decimal_value = DecimalField(null=True, max_digits=10, decimal_places=2)

    def __str__(self):
        return self.name
Esempio n. 19
0
class Shape(models.Model):
    type = models.CharField(max_length=16, choices=ShapeType.choices())
    occluded = models.BooleanField(default=False)
    z_order = models.IntegerField(default=0)
    points = FloatArrayField()
    rotation = FloatField(default=0)

    class Meta:
        abstract = True
        default_permissions = ()
Esempio n. 20
0
class Variance(Aggregate):
    name = 'Variance'
    output_field = FloatField()

    def __init__(self, expression, sample=False, **extra):
        self.function = 'VAR_SAMP' if sample else 'VAR_POP'
        super().__init__(expression, **extra)

    def _get_repr_options(self):
        return {**super()._get_repr_options(), 'sample': self.function == 'VAR_SAMP'}
Esempio n. 21
0
def gerar_relatorio_pessoa(request, pessoa_cpf):

    id_pessoa = cliente.objects.filter(ativo=True, cpf = pessoa_cpf).\
    values('nome_cliente', 'id_cliente')

    id = id_pessoa[0]['id_cliente']

    vendas = ordem_de_venda.objects.filter(ativo=True,venda=True, id_cliente = id). \
    select_related('id_lote_medicamento', 'id_cliente').select_related('id_medicamento').\
    values('id_lote_medicamento__id_medicamento__nome_medicamento'). \
    annotate(quant = Sum('quantidade', output_Field = FloatField()), \
    nCompras = Count('quantidade', output_Field = FloatField()), \
    aux = ExpressionWrapper(F('percentual_desconto')*F('quantidade'), output_field=FloatField()), \
    diaS = Sum(ExtractDay('data_de_venda')*F('quantidade'), output_Field = FloatField())). \
    annotate(descS = Sum('aux')). \
    annotate( avg = ExpressionWrapper( F('quant')/F('nCompras'), output_field=FloatField())). \
    annotate( desc = ExpressionWrapper( F('descS')/F('quant'), output_field=FloatField())). \
    annotate( dia = ExpressionWrapper( F('diaS')/F('quant'), output_field=FloatField())). \
    order_by('quant')

    dt = datetime.now()

    response = HttpResponse(content_type='application/vnd.ms-excel')
    response[
        'Content-Disposition'] = 'attachment; filename = Relatório de vendas - ' + id_pessoa[
            0]['nome_cliente'] + str(date(dt.year, dt.month, dt.day)) + '.xls'

    wb = xlwt.Workbook(encoding='utf-8')
    ws = wb.add_sheet('Pessoas')
    row_num = 0

    columns = [
        'id_lote_medicamento__id_medicamento__nome_medicamento', 'avg', 'dia',
        'desc', 'quant'
    ]

    style = xlwt.XFStyle()
    font = xlwt.Font()
    font.bold = True
    style.font = font
    style_string = "font: bold on; borders: bottom dashed"
    style = xlwt.easyxf(style_string)

    ws.write(row_num, 0, "Medicamento", style=style)
    ws.write(row_num, 1, "Média por compra", style=style)
    ws.write(row_num, 2, "Dia médio", style=style)
    ws.write(row_num, 3, "Desconto médio", style=style)
    ws.write(row_num, 4, "Quantidade comprada", style=style)

    for row in vendas:
        row_num += 1

        for col_num in range(len(columns)):

            ws.write(row_num, col_num, row[columns[col_num]])

    wb.save(response)
    return response
Esempio n. 22
0
def get_items_in_location(char_loc, item_source=None):
    loc = ItemLocation.objects.get(character_location=char_loc,
                                   corp_hanger=None)
    if item_source is None:
        item_source = InventoryItem.objects.filter(quantity__gt=0)
    unstacked_items = (item_source.filter(
        stack__isnull=True, contract__isnull=True,
        location=loc).annotate(estimated_profit_sum=ExpressionWrapper(
            Coalesce(F("item__cached_lowest_sell"), 0) *
            (F("quantity") + Coalesce(F("marketorder__quantity"), 0)),
            output_field=FloatField(),
        )).order_by("-estimated_profit_sum"))
    stacked_items = item_source.filter(
        stack__isnull=False, contract__isnull=True,
        location=loc).order_by("-item__cached_lowest_sell")
    stacks = {}
    stacks_by_item: Dict[int, List[Any]] = {}
    for item in stacked_items.all():
        if item.stack.id not in stacks:
            stacks[item.stack.id] = {
                "type": "stack",
                "stack": item.stack,
                "stack_id": item.stack.id,
                "item": item.item,
                "quantity": item.quantity,
            }
            if item.item.name not in stacks_by_item:
                stacks_by_item[item.item.name] = []
            stacks_by_item[item.item.name].append(stacks[item.stack.id])
        else:
            stack = stacks[item.stack.id]
            if item.item != stack["item"]:
                raise forms.ValidationError("Invalid Stack Found: " +
                                            item.stack.id)
            stack["quantity"] = stack["quantity"] + item.quantity
    total_in_loc = len(unstacked_items) + len(
        stacked_items.values("stack").distinct())

    return {
        "total_in_loc": total_in_loc,
        "loc": char_loc,
        "char": char_loc.character,
        "unstacked": unstacked_items,
        "stacks": {
            k: stacks[k]
            for k in sorted(
                stacks,
                key=lambda x: stacks[x]["stack"].estimated_profit() or to_isk(
                    0),
                reverse=True,
            )
        },
        "stacks_by_item": stacks_by_item,
    }
Esempio n. 23
0
class Assessment(TimeStampedModel):
    assessor = ForeignKey(User, related_name="assessment")
    engagement = ForeignKey(Engagement, related_name="assessments")
    field_data = json.JSONField(blank=True, null=True)
    notes = TextField(blank=True, null=True)
    points_awarded = FloatField(default=0.0)
    has_awarded = BooleanField(default=False)

    def __unicode__(self):
        return "%s assessed %s on %s" % (self.assessor, self.engagement.user,
                                         self.engagement.assignment.worksheet)
Esempio n. 24
0
class Variance(Aggregate):
    name = "Variance"
    output_field = FloatField()

    def __init__(self, expression, sample=False, **extra):
        self.function = "VAR_SAMP" if sample else "VAR_POP"
        super().__init__(expression, **extra)

    def _get_repr_options(self):
        options = super()._get_repr_options()
        return dict(options, sample=self.function == "VAR_SAMP")
Esempio n. 25
0
class StdDev(Aggregate):
    name = 'StdDev'
    output_field = FloatField()

    def __init__(self, expression, sample=False, **extra):
        self.function = 'STDDEV_SAMP' if sample else 'STDDEV_POP'
        super().__init__(expression, **extra)

    def _get_repr_options(self):
        options = super()._get_repr_options()
        return dict(options, sample=self.function == 'STDDEV_SAMP')
Esempio n. 26
0
class BM25(Func):
    function = 'bm25'
    output_field = FloatField()

    def __init__(
        self
    ):
        expressions = tuple()
        super().__init__(*expressions)

    def as_sql(self, compiler: SQLCompiler, connection: BaseDatabaseWrapper, function=None, template=None):
        sql, params = 'bm25(wagtailsearch_indexentry_fts)', []
        return sql, params
Esempio n. 27
0
 def as_sqlite(self, compiler, connection, **extra_context):
     if not getattr(connection.ops, 'spatialite', False) or connection.ops.spatial_version >= (5, 0, 0):
         return self.as_sql(compiler, connection)
     # This function is usually ATan2(y, x), returning the inverse tangent
     # of y / x, but it's ATan2(x, y) on SpatiaLite < 5.0.0.
     # Cast integers to float to avoid inconsistent/buggy behavior if the
     # arguments are mixed between integer and float or decimal.
     # https://www.gaia-gis.it/fossil/libspatialite/tktview?name=0f72cca3a2
     clone = self.copy()
     clone.set_source_expressions([
         Cast(expression, FloatField()) if isinstance(expression.output_field, IntegerField)
         else expression for expression in self.get_source_expressions()[::-1]
     ])
     return clone.as_sql(compiler, connection, **extra_context)
Esempio n. 28
0
class Flavor(Model):
    name = CharField(max_length=255)
    label = CharField(max_length=255)
    parent = ForeignKey("self", blank=True, null=True, on_delete=SET_NULL)
    float_value = FloatField(blank=True, null=True)
    decimal_value = DecimalField(blank=True,
                                 null=True,
                                 max_digits=10,
                                 decimal_places=2)
    uuid = UUIDField(default=uuid.uuid4)
    datetime = DateTimeField(blank=True, null=True)
    date = DateField(blank=True, null=True)
    time = TimeField(blank=True, null=True)
    duration = DurationField(blank=True, null=True)

    def __str__(self):
        return self.name
Esempio n. 29
0
    def get(self, request):
        query = None
        user_id = request.GET.get('user', None)
        
        if user_id is None:
            return JsonResponse(None, safe=False)
        
        total_count = BookStore.objects.filter(user__pk=user_id).count()
        # categorical value sum, average
        # Cast Float value
        query = BookStore.objects.values('book_format').annotate(
            sum_format=Count('book_format')
            ).annotate(avg_format=Cast(F('sum_format'), FloatField()) / Cast(total_count, FloatField())
            ).values('book_format', 'sum_format', 'avg_format')

        print(list(query))
        
        return JsonResponse(list(query), safe=False)
Esempio n. 30
0
class MutationalSignature(models.Model):
    sample = models.ForeignKey(Sample, on_delete=CASCADE)
    calculator = models.ForeignKey(MutationalSignatureCalculator, on_delete=CASCADE)
    import_status = models.CharField(max_length=1, choices=ImportStatus.choices, default=ImportStatus.CREATED)
    summary = models.TextField()
    mean = ArrayField(FloatField(), null=True)
    num_snps = models.IntegerField(null=True)

    class Meta:
        unique_together = ("sample", "calculator")

    def __str__(self):
        if self.import_status == ImportStatus.SUCCESS:
            description = self.summary
        else:
            import_status = self.get_import_status_display()
            description = f"MutationalSignature {self.pk}, import_status={import_status}"
        return description