Example #1
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 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()
Example #3
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)
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)