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)
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)
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])
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)
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))
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)