0
0
mirror of https://github.com/PostHog/posthog.git synced 2024-12-01 04:12:23 +01:00
posthog/ee/models/dashboard_privilege.py
Michael Matloka 8b5ecc9f6f
Dashboard permissions base (#8394)
* Add models for dashboard permissions

* Update migrations

* Add basic API capabilities

* Add basic dashboard perms UI

* Update test_insight.ambr

* Fix typing

* Split RestrictionLevel into RestrictionLevel&PrivilegeLevel for clarity

* Update migrations post-merge
2022-02-02 17:16:35 +01:00

30 lines
1.2 KiB
Python

from django.db import models
from posthog.models.dashboard import Dashboard
from posthog.models.utils import UUIDModel, sane_repr
# We call models that grant a user access to some resource (which isn't a grouping of users) a "privilege"
class DashboardPrivilege(UUIDModel):
dashboard: models.ForeignKey = models.ForeignKey(
"posthog.Dashboard", on_delete=models.CASCADE, related_name="privileges", related_query_name="privilege",
)
user: models.ForeignKey = models.ForeignKey(
"posthog.User",
on_delete=models.CASCADE,
related_name="explicit_dashboard_privileges",
related_query_name="explicit_dashboard_privilege",
)
level: models.PositiveSmallIntegerField = models.PositiveSmallIntegerField(
choices=Dashboard.RestrictionLevel.choices
)
added_at: models.DateTimeField = models.DateTimeField(auto_now_add=True)
updated_at: models.DateTimeField = models.DateTimeField(auto_now=True)
class Meta:
constraints = [
models.UniqueConstraint(fields=["dashboard", "user"], name="unique_explicit_dashboard_privilege"),
]
__repr__ = sane_repr("dashboard", "user", "level")