def cache_document_fields_for_doc_ids(task: ExtendedTask, doc_ids: Set):
    # This task is added to exclude-from-tracking list and is not seen in task list at /advanced
    # Also if running it as a aub-task it will not participate in the parent task's progress.
    log = CeleryTaskLogger(task)
    for doc in Document.all_objects.filter(pk__in=doc_ids) \
            .select_related('document_type', 'assignee', 'status'):  # type: Document
        cache_document_fields(log, doc)
Ejemplo n.º 2
0
 def document_change_listener(event: events.DocumentChangedEvent):
     from apps.rawdb.app_vars import APP_VAR_DISABLE_RAW_DB_CACHING
     if APP_VAR_DISABLE_RAW_DB_CACHING.val:
         return
     from apps.rawdb.field_value_tables import cache_document_fields
     log = event.log or ProcessLogger()
     cache_document_fields(
         log=log,
         document=event.document,
         cache_generic_fields=event.generic_fields_changed,
         cache_user_fields=event.user_fields_changed,
         pre_detected_field_codes_to_suggested_values=event.
         pre_detected_field_values)
 def _maybe_save_reverse_similarity_value(self, log: ProcessLogger,
                                          field: DocumentField,
                                          document: Document,
                                          other_doc_id) -> bool:
     if not DocumentFieldValue.objects.filter(document_id=other_doc_id,
                                              field=field,
                                              value=document.pk).exists():
         other_document = Document.all_objects.get(pk=other_doc_id)
         DocumentFieldValue(document=other_document,
                            field=field,
                            value=document.pk).save()
         cache_document_fields(log=log,
                               document=other_document,
                               cache_generic_fields=False,
                               cache_user_fields=True)
Ejemplo n.º 4
0
def cache_document_fields_for_doc_ids(task: ExtendedTask,
                                      doc_ids: Iterable,
                                      changed_by_user_id: int = None,
                                      cache_system_fields: FieldSpec = True,
                                      cache_generic_fields: FieldSpec = True,
                                      cache_user_fields: bool = True):
    log = CeleryTaskLogger(task)
    changed_by_user = User.objects.get(pk=changed_by_user_id) if changed_by_user_id is not None else None
    for doc in Document.all_objects.filter(pk__in=doc_ids) \
            .select_related('document_type', 'assignee', 'status'):  # type: Document
        try:
            cache_document_fields(log, doc, changed_by_user=changed_by_user,
                                  cache_system_fields=cache_system_fields,
                                  cache_generic_fields=cache_generic_fields,
                                  cache_user_fields=cache_user_fields)
        except Document.DoesNotExist:
            pass
 def _maybe_save_reverse_similarity_value(self,
                                          log: ProcessLogger,
                                          field: DocumentField,
                                          document: Document,
                                          other_doc_id) -> bool:
     field_repo = DocumentFieldRepository()
     if not field_repo.field_value_exists(other_doc_id, field.pk, [document.pk]):
         other_document = Document.all_objects.get(pk=other_doc_id)
         field_repo.update_field_value_with_dto(document=other_document,
                                                field=field,
                                                field_value_dto=FieldValueDTO(field_value=[document.pk]),
                                                merge=True)
         cache_document_fields(log=log,
                               document=other_document,
                               cache_system_fields=False,
                               cache_generic_fields=False,
                               cache_user_fields=[field.code])
Ejemplo n.º 6
0
def document_change_listener_impl(sender,
                                  signal,
                                  log: ProcessLogger,
                                  document: Document,
                                  system_fields_changed: FieldSpec = True,
                                  generic_fields_changed: FieldSpec = True,
                                  user_fields_changed: bool = True,
                                  changed_by_user: User = None,
                                  document_initial_load: bool = False):
    from apps.rawdb.app_vars import APP_VAR_DISABLE_RAW_DB_CACHING
    if APP_VAR_DISABLE_RAW_DB_CACHING.val:
        return
    from apps.rawdb.field_value_tables import cache_document_fields
    log = log or ProcessLogger()
    cache_document_fields(log=log,
                          document=document,
                          cache_system_fields=system_fields_changed,
                          cache_generic_fields=generic_fields_changed,
                          cache_user_fields=user_fields_changed,
                          changed_by_user=changed_by_user,
                          document_initial_load=document_initial_load)
Ejemplo n.º 7
0
def cache_fields_for_docs_queryset(
        task: ExtendedTask,
        doc_qr,
        changed_by_user: User = None,
        document_initial_load: bool = False,
        generic_fields_changed: bool = True,
        user_fields_changed: bool = True,
        pre_detected_field_values: Optional[Dict[str, Any]] = None,
        old_field_values: Dict[int, Dict[str, Any]] = None):
    from apps.rawdb.field_value_tables import cache_document_fields
    old_field_values = old_field_values or {}
    for doc in doc_qr.select_related('document_type', 'project',
                                     'status'):  # type: Document
        log = CeleryTaskLogger(task)
        cache_document_fields(log=log,
                              document=doc,
                              cache_generic_fields=generic_fields_changed,
                              cache_user_fields=user_fields_changed,
                              pre_detected_field_codes_to_suggested_values=
                              pre_detected_field_values,
                              changed_by_user=changed_by_user,
                              document_initial_load=document_initial_load,
                              old_field_values=old_field_values.get(doc.pk))
Ejemplo n.º 8
0
def document_change_listener_impl(
        _sender,
        signal,
        log: ProcessLogger,
        document: Document,
        system_fields_changed: bool = True,
        generic_fields_changed: bool = True,
        user_fields_changed: bool = True,
        pre_detected_field_values: Optional[Dict[str, Any]] = None,
        changed_by_user: User = None,
        document_initial_load: bool = False):
    from apps.rawdb.app_vars import APP_VAR_DISABLE_RAW_DB_CACHING
    if APP_VAR_DISABLE_RAW_DB_CACHING.val:
        return
    from apps.rawdb.field_value_tables import cache_document_fields
    log = log or ProcessLogger()
    cache_document_fields(
        log=log,
        document=document,
        cache_generic_fields=generic_fields_changed,
        cache_user_fields=user_fields_changed,
        pre_detected_field_codes_to_suggested_values=pre_detected_field_values,
        changed_by_user=changed_by_user,
        document_initial_load=document_initial_load)