permissions.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. from rest_framework.permissions import BasePermission
  2. from django.core.cache import cache as default_cache
  3. from utils.db_utils import MongoDBTools
  4. class RegisterViewPermission(BasePermission):
  5. def has_permission(self, request, view):
  6. try:
  7. user = request.user
  8. if user['username'] == "管理员":
  9. return True
  10. else:
  11. return False
  12. except:
  13. return False
  14. class ModulePermission(BasePermission):
  15. def has_permission(self, request, view):
  16. try:
  17. user = request.user
  18. user_modules = user.get("user_modules")
  19. path = request.path
  20. if path.startswith("/equipment") and user_modules == "1":
  21. return True
  22. else:
  23. return False
  24. except:
  25. return False
  26. class QXZDeviceDetailPermission(BasePermission):
  27. message = "非此账户下设备"
  28. def has_permission(self, request, view):
  29. uid = request.user
  30. device_id = request.query_params.get("device_id")
  31. if device_id is None:
  32. return True
  33. qxz_list_cache = default_cache.get(str(uid)+"_qxz_list")
  34. if qxz_list_cache:
  35. if device_id in qxz_list_cache:
  36. return True
  37. else:
  38. return False
  39. else:
  40. wheres = {
  41. "device_type_id":5,
  42. '$or': [
  43. {'owner_uid': uid},
  44. {'user_dealer': uid}
  45. ]
  46. }
  47. project = {
  48. 'device_id': '$device_id',
  49. }
  50. m = MongoDBTools(db_name='smartfarming', table_name='sa_device')
  51. data = m.find_many(wheres=wheres, options=project)
  52. qxz_list_cache = []
  53. for item in data:
  54. qxz_list_cache.append(item["device_id"])
  55. default_cache.set(str(uid)+"_qxz_list", qxz_list_cache,60*5)
  56. if device_id in qxz_list_cache:
  57. return True
  58. else:
  59. return False