This commit is contained in:
2026-05-05 01:32:27 +03:30
parent cfe60f6729
commit 39efd537bf
27 changed files with 1874 additions and 101 deletions
+1
View File
@@ -41,6 +41,7 @@ class RouteFeatureAccessMiddleware(MiddlewareMixin):
"products",
"sensors",
"sensors__sensor_catalog",
"sensors__device_catalogs",
).get(farm_uuid=farm_uuid, owner=user)
except FarmHub.DoesNotExist:
return JsonResponse(
+1 -1
View File
@@ -70,7 +70,7 @@ class AccessRule(models.Model):
subscription_plans = models.ManyToManyField("SubscriptionPlan", related_name="access_rules", blank=True)
farm_types = models.ManyToManyField("farm_hub.FarmType", related_name="access_rules", blank=True)
products = models.ManyToManyField("farm_hub.Product", related_name="access_rules", blank=True)
sensor_catalogs = models.ManyToManyField("device_hub.SensorCatalog", related_name="access_rules", blank=True)
sensor_catalogs = models.ManyToManyField("device_hub.DeviceCatalog", related_name="access_rules", blank=True)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
+1
View File
@@ -27,6 +27,7 @@ class FeatureAccessPermission(BasePermission):
"products",
"sensors",
"sensors__sensor_catalog",
"sensors__device_catalogs",
).get(farm_uuid=farm_uuid, owner=request.user)
except FarmHub.DoesNotExist:
self.message = f"Access to feature `{feature_code}` is denied."
+7 -6
View File
@@ -109,16 +109,17 @@ def build_farm_access_profile(farm):
"products",
"sensors",
"sensors__sensor_catalog",
"sensors__device_catalogs",
).get(pk=farm.pk)
subscription_plan = get_effective_subscription_plan(farm)
product_ids = list(farm.products.values_list("id", flat=True))
sensor_catalog_ids = list(
farm.sensors.exclude(sensor_catalog__isnull=True).values_list("sensor_catalog_id", flat=True)
)
sensor_catalog_codes = set(
farm.sensors.exclude(sensor_catalog__isnull=True).values_list("sensor_catalog__code", flat=True)
)
sensor_catalog_ids = set()
sensor_catalog_codes = set()
for sensor in farm.sensors.all():
for catalog in sensor.get_device_catalogs():
sensor_catalog_ids.add(catalog.id)
sensor_catalog_codes.add(catalog.code)
features = {
feature.code: {
+1
View File
@@ -31,6 +31,7 @@ class FarmFeatureAuthorizationView(APIView):
"products",
"sensors",
"sensors__sensor_catalog",
"sensors__device_catalogs",
).get(
farm_uuid=farm_uuid,
owner=request.user,