Customizable dashboard views

This commit is contained in:
shamoon
2024-04-16 20:19:58 -07:00
parent 7a0334f353
commit 38e79aa1d9
13 changed files with 452 additions and 72 deletions

View File

@@ -0,0 +1,52 @@
# Generated by Django 4.2.11 on 2024-04-16 18:35
import django.core.validators
import multiselectfield.db.fields
from django.db import migrations
from django.db import models
class Migration(migrations.Migration):
dependencies = [
("documents", "1046_workflowaction_remove_all_correspondents_and_more"),
]
operations = [
migrations.AddField(
model_name="savedview",
name="dashboard_view_mode",
field=models.CharField(
choices=[("table", "Table"), ("small_cards", "Small Cards")],
default="table",
max_length=128,
verbose_name="Dashboard view display mode",
),
),
migrations.AddField(
model_name="savedview",
name="dashboard_view_limit",
field=models.PositiveIntegerField(
default=10,
validators=[django.core.validators.MinValueValidator(1)],
verbose_name="Dashboard view limit",
),
),
migrations.AddField(
model_name="savedview",
name="dashboard_view_table_columns",
field=multiselectfield.db.fields.MultiSelectField(
choices=[
("title", "Title"),
("created", "Created"),
("added", "Added"),
("tag", "Tags"),
("documenttype", "Document Type"),
("correspondent", "Correspondent"),
("storagepath", "Storage Path"),
],
default="created,title,tags,correspondent",
max_length=128,
),
),
]

View File

@@ -394,6 +394,19 @@ class Log(models.Model):
class SavedView(ModelWithOwner):
class DashboardViewDisplayMode(models.TextChoices):
TABLE = ("table", _("Table"))
SMALL_CARDS = ("small_cards", _("Small Cards"))
class DashboardViewTableColumns(models.TextChoices):
TITLE = ("title", _("Title"))
CREATED = ("created", _("Created"))
ADDED = ("added", _("Added"))
TAGS = ("tag"), _("Tags")
DOCUMENT_TYPE = ("documenttype", _("Document Type"))
CORRESPONDENT = ("correspondent", _("Correspondent"))
STORAGE_PATH = ("storagepath", _("Storage Path"))
name = models.CharField(_("name"), max_length=128)
show_on_dashboard = models.BooleanField(
@@ -411,6 +424,26 @@ class SavedView(ModelWithOwner):
)
sort_reverse = models.BooleanField(_("sort reverse"), default=False)
dashboard_view_limit = models.PositiveIntegerField(
_("Dashboard view limit"),
default=10,
validators=[MinValueValidator(1)],
)
dashboard_view_mode = models.CharField(
max_length=128,
verbose_name=_("Dashboard view display mode"),
choices=DashboardViewDisplayMode.choices,
default=DashboardViewDisplayMode.TABLE,
)
dashboard_view_table_columns = MultiSelectField(
max_length=128,
verbose_name=_("Dashboard view table display columns"),
choices=DashboardViewTableColumns.choices,
default=f"{DashboardViewTableColumns.CREATED},{DashboardViewTableColumns.TITLE},{DashboardViewTableColumns.TAGS},{DashboardViewTableColumns.CORRESPONDENT}",
)
class Meta:
ordering = ("name",)
verbose_name = _("saved view")

View File

@@ -804,6 +804,10 @@ class SavedViewFilterRuleSerializer(serializers.ModelSerializer):
class SavedViewSerializer(OwnedObjectSerializer):
filter_rules = SavedViewFilterRuleSerializer(many=True)
dashboard_view_table_columns = fields.MultipleChoiceField(
choices=SavedView.DashboardViewTableColumns.choices,
required=False,
)
class Meta:
model = SavedView
@@ -815,6 +819,9 @@ class SavedViewSerializer(OwnedObjectSerializer):
"sort_field",
"sort_reverse",
"filter_rules",
"dashboard_view_limit",
"dashboard_view_mode",
"dashboard_view_table_columns",
"owner",
"permissions",
"user_can_change",