mirror of
https://github.com/FunnyWolf/agentic-soc-platform.git
synced 2026-08-22 13:12:56 +02:00
49 lines
1.9 KiB
Python
49 lines
1.9 KiB
Python
from django.conf import settings
|
|
from django.db import models
|
|
|
|
|
|
class UserTablePreference(models.Model):
|
|
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="table_preferences")
|
|
table_key = models.CharField(max_length=120)
|
|
page_size = models.PositiveIntegerField(null=True, blank=True)
|
|
column_settings = models.JSONField(null=True, blank=True)
|
|
created_at = models.DateTimeField(auto_now_add=True)
|
|
updated_at = models.DateTimeField(auto_now=True)
|
|
|
|
class Meta:
|
|
db_table = "user_table_preferences"
|
|
constraints = [
|
|
models.UniqueConstraint(fields=["user", "table_key"], name="utp_user_table_uniq"),
|
|
]
|
|
indexes = [
|
|
models.Index(fields=["user", "table_key"], name="utp_user_table_idx"),
|
|
]
|
|
|
|
def __str__(self):
|
|
return f"{self.user_id}:{self.table_key}"
|
|
|
|
|
|
class SavedTableFilter(models.Model):
|
|
class Visibility(models.TextChoices):
|
|
PRIVATE = "private", "Private"
|
|
SHARED = "shared", "Shared"
|
|
|
|
owner = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="saved_table_filters")
|
|
table_key = models.CharField(max_length=120)
|
|
name = models.CharField(max_length=120)
|
|
state = models.JSONField(default=dict)
|
|
visibility = models.CharField(max_length=20, choices=Visibility.choices, default=Visibility.PRIVATE)
|
|
created_at = models.DateTimeField(auto_now_add=True)
|
|
updated_at = models.DateTimeField(auto_now=True)
|
|
|
|
class Meta:
|
|
db_table = "saved_table_filters"
|
|
ordering = ["-updated_at", "-id"]
|
|
indexes = [
|
|
models.Index(fields=["table_key", "visibility"], name="stf_table_visibility_idx"),
|
|
models.Index(fields=["owner", "table_key"], name="stf_owner_table_idx"),
|
|
]
|
|
|
|
def __str__(self):
|
|
return f"{self.name} ({self.table_key})"
|