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 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