Added the user list in the Mia core application.
This commit is contained in:
		| @@ -19,7 +19,7 @@ | ||||
|  | ||||
| """ | ||||
| from dirtyfields import DirtyFieldsMixin | ||||
| from django.db import models | ||||
| from django.db import models, connection, OperationalError | ||||
|  | ||||
| from mia_core.utils import get_multi_lingual_attr, set_multi_lingual_attr | ||||
|  | ||||
| @@ -116,3 +116,37 @@ class User(DirtyFieldsMixin, models.Model): | ||||
|     class Meta: | ||||
|         db_table = "users" | ||||
|         app_label = "mia_core" | ||||
|  | ||||
|     def is_in_use(self): | ||||
|         """Returns whether this user is in use. | ||||
|  | ||||
|         Returns: | ||||
|             bool: True if this user is in use, or False otherwise. | ||||
|         """ | ||||
|         for table in connection.introspection.table_names(): | ||||
|             if self._is_in_use_with(F"SELECT * FROM {table}" | ||||
|                                     " WHERE createdby=%s OR updatedby=%s"): | ||||
|                 return True | ||||
|             if self._is_in_use_with( | ||||
|                     F"SELECT * FROM {table}" | ||||
|                     " WHERE created_by_id=%s OR updated_by_id=%s"): | ||||
|                 return True | ||||
|         return False | ||||
|  | ||||
|     def _is_in_use_with(self, sql): | ||||
|         """Returns whether this user is in use with a specific SQL statement. | ||||
|  | ||||
|         Args: | ||||
|             sql (str): The SQL query statement | ||||
|  | ||||
|         Returns: | ||||
|             bool: True if this user is in use, or False otherwise. | ||||
|         """ | ||||
|         with connection.cursor() as cursor: | ||||
|             try: | ||||
|                 cursor.execute(sql, [self.pk, self.pk]) | ||||
|             except OperationalError: | ||||
|                 return False | ||||
|             if cursor.fetchone() is None: | ||||
|                 return False | ||||
|             return True | ||||
|   | ||||
		Reference in New Issue
	
	Block a user