def cache_generic_values(doc: Document, save: bool = True,
                         log: ProcessLogger = None):
    doc.generic_data = get_generic_values(doc)

    if save:
        doc.save(update_fields=['generic_data'])
        events.on_document_change(events.DocumentChangedEvent(log=log,
                                                              document=doc,
                                                              system_fields_changed=False,
                                                              generic_fields_changed=True,
                                                              user_fields_changed=False,
                                                              pre_detected_field_values=None))
def cache_generic_values(doc: Document,
                         save: bool = True,
                         log: ProcessLogger = None,
                         fire_doc_changed_event: bool = True):
    doc.generic_data = get_generic_values(doc)

    if save:
        doc.save(update_fields=['generic_data'])
        if fire_doc_changed_event:
            signals.fire_document_changed(sender=cache_generic_values,
                                          log=log,
                                          document=doc,
                                          system_fields_changed=False,
                                          generic_fields_changed=True,
                                          user_fields_changed=False,
                                          pre_detected_field_values=None)
Example #3
0
def cache_generic_values(doc: Document, save: bool = True):
    document_qs = Document.objects.filter(pk=doc.pk) \
        .annotate(cluster_id=Max('documentcluster'),
                  parties=StringAgg('textunit__partyusage__party__name',
                                    delimiter=', ',
                                    distinct=True),
                  max_currency_amount=Max('textunit__currencyusage__amount'),
                  max_currency_name=Max('textunit__currencyusage__currency'),
                  min_date=Min('textunit__dateusage__date'),
                  max_date=Max('textunit__dateusage__date'))
    values = document_qs.values('cluster_id', 'parties', 'max_currency_amount',
                                'max_currency_name', 'min_date',
                                'max_date').first()
    doc.generic_data = values

    if save:
        doc.save(update_fields=['generic_data'])