permissions.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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. # uid = 896
  31. device_id = request.query_params.get("device_id")
  32. if device_id is None:
  33. return True
  34. qxz_list_cache = default_cache.get(str(uid)+"_qxz_list")
  35. if qxz_list_cache:
  36. if device_id in qxz_list_cache:
  37. return True
  38. else:
  39. return False
  40. else:
  41. wheres = {
  42. "device_type_id":5,
  43. '$or': [
  44. {'owner_uid': uid},
  45. {'user_dealer': uid}
  46. ]
  47. }
  48. project = {
  49. 'device_id': '$device_id',
  50. }
  51. m = MongoDBTools(db_name='smartfarming', table_name='sa_device')
  52. data = m.find_many(wheres=wheres, options=project)
  53. qxz_list_cache = []
  54. for item in data:
  55. qxz_list_cache.append(item["device_id"])
  56. default_cache.set(str(uid)+"_qxz_list", qxz_list_cache,60*5)
  57. if device_id in qxz_list_cache:
  58. return True
  59. else:
  60. return False