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 send_email(self, log: ProcessLogger = None, subject: str = None, text: str = None, html: str = None): from apps.notifications.notifications import send_email link = self.get_link(abs_path=True, as_html=False) default_subject = 'Document Files Ready to Download' default_msg_template = 'You can download your documents {}' default_text = default_msg_template.format(link) default_html = default_msg_template.format(f'<a href="{link}">here</a>') send_email( log=log or ProcessLogger(), dst_user=self.user, subject=subject or default_subject, txt=text or default_text, html=html or default_html) self.email_sent = True self.save()
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 delete_document_from_cache(user: User, document: Document): document_type = document.document_type table_name = doc_fields_table_name(document.document_type.code) handlers = build_field_handlers(document_type, table_name) with connection.cursor() as cursor: document_fields_before = _get_document_fields(cursor=cursor, document_id=document.pk, table_name=table_name, handlers=handlers) _delete_document_from_cache(cursor, document.pk) log = ProcessLogger() fire_document_fields_changed( cache_document_fields, log=log, document_event=DocumentEvent.DELETED.value, document=document, field_handlers={h.field_code: h for h in handlers}, fields_before=document_fields_before, fields_after=None, changed_by_user=user)
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 .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)
def document_type_delete_listener(sender, **kwargs): document_type = kwargs.get('document_type') from apps.rawdb.field_value_tables import _delete_document_fields_table _delete_document_fields_table(ProcessLogger(), document_type.code)