| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- from rest_framework.permissions import BasePermission
- from django.core.cache import cache as default_cache
- from utils.db_utils import MongoDBTools
- class RegisterViewPermission(BasePermission):
- def has_permission(self, request, view):
- try:
- user = request.user
- if user['username'] == "管理员":
- return True
- else:
- return False
- except:
- return False
- class ModulePermission(BasePermission):
- def has_permission(self, request, view):
- try:
- user = request.user
- user_modules = user.get("user_modules")
- path = request.path
- if path.startswith("/equipment") and user_modules == "1":
- return True
- else:
- return False
- except:
- return False
- class QXZDeviceDetailPermission(BasePermission):
- message = "非此账户下设备"
-
- def has_permission(self, request, view):
- uid = request.user
- # uid = 896
- device_id = request.query_params.get("device_id")
- if device_id is None:
- return True
- qxz_list_cache = default_cache.get(str(uid)+"_qxz_list")
- if qxz_list_cache:
- if device_id in qxz_list_cache:
- return True
- else:
- return False
- else:
- wheres = {
- "device_type_id":5,
- '$or': [
- {'owner_uid': uid},
- {'user_dealer': uid}
- ]
- }
- project = {
- 'device_id': '$device_id',
- }
- m = MongoDBTools(db_name='smartfarming', table_name='sa_device')
- data = m.find_many(wheres=wheres, options=project)
- qxz_list_cache = []
- for item in data:
- qxz_list_cache.append(item["device_id"])
- default_cache.set(str(uid)+"_qxz_list", qxz_list_cache,60*5)
- if device_id in qxz_list_cache:
- return True
- else:
- return False
|