拍爱

rgroup.py 5.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. # -*- coding: utf-8 -*-
  2. from django.core.serializers.json import DjangoJSONEncoder
  3. from utils.redis.connect import r
  4. from utils.redis.rkeys import (GROUP_INFO, GROUP_PHOTO_COMMENT_LIST, GROUP_PHOTO_DATA, GROUP_PHOTO_THUMB_UP,
  5. GROUP_PHOTO_THUMB_UP_LIST, GROUP_PHOTO_WATCHER_SET, GROUP_USERS_INFO,
  6. GROUP_USERS_KV_INFO)
  7. # 群组信息相关
  8. def set_group_info(group):
  9. """ 设置群组信息 """
  10. group_data = group.data
  11. r.setexjson(GROUP_INFO % group.group_id, r.REDIS_EXPIRED_ONE_MONTH, group_data, cls=DjangoJSONEncoder)
  12. return group_data
  13. def set_group_info_by_id(group_id):
  14. """ 设置群组信息 """
  15. from group.models import GroupInfo
  16. try:
  17. group = GroupInfo.objects.get(group_id=group_id)
  18. except GroupInfo.DoesNotExist:
  19. return {}
  20. return set_group_info(group)
  21. def get_group_info(group_id):
  22. """ 获取群组信息 """
  23. return r.getjson(GROUP_INFO % group_id) or set_group_info_by_id(group_id)
  24. # 群组用户信息相关
  25. def set_group_users_info(group):
  26. """ 设置群组用户信息 """
  27. group_users = group.users(admin=False)
  28. group_users_data = {
  29. 'group_users': group_users,
  30. 'admin_id': group.admin_id,
  31. }
  32. r.setexjson(GROUP_USERS_INFO % group.group_id, r.REDIS_EXPIRED_ONE_MONTH, group_users_data, cls=DjangoJSONEncoder)
  33. group_users_kv_data = {user_info.get('user_id', ''): user_info for user_info in group_users.get('passed', [])}
  34. r.setexjson(GROUP_USERS_KV_INFO % group.group_id, r.REDIS_EXPIRED_ONE_MONTH, group_users_kv_data, cls=DjangoJSONEncoder)
  35. return group_users_data, group_users_kv_data
  36. def set_group_users_info_by_id(group_id):
  37. """ 设置群组用户信息 """
  38. from group.models import GroupInfo
  39. try:
  40. group = GroupInfo.objects.get(group_id=group_id)
  41. except GroupInfo.DoesNotExist:
  42. return {}, {}
  43. return set_group_users_info(group)
  44. def get_group_users_info(group_id, user_id):
  45. """ 获取群组用户信息 """
  46. group_users_data = r.getjson(GROUP_USERS_INFO % group_id) or set_group_users_info_by_id(group_id)[0]
  47. group_users, admin_id = group_users_data.get('group_users', {}), group_users_data.get('admin_id', '')
  48. if group_users and user_id != admin_id:
  49. [group_users.pop(k) for k in ['applying_count', 'applying']]
  50. return group_users
  51. def get_group_users_kv_info(group_id):
  52. """ 获取群组用户信息 """
  53. return r.getjson(GROUP_USERS_KV_INFO % group_id) or set_group_users_info_by_id(group_id)[1]
  54. # 群组照片相关
  55. def set_group_photo_data(group_id):
  56. """ 设置群组照片数据信息 """
  57. from group.models import GroupPhotoInfo
  58. group_photos = GroupPhotoInfo.objects.filter(group_id=group_id, status=True)
  59. group_photos = [photo.photo_data for photo in group_photos]
  60. r.setjson(GROUP_PHOTO_DATA % group_id, group_photos)
  61. return group_photos
  62. def get_group_photo_data(group_id):
  63. """ 获取群组照片数据信息 """
  64. return r.getjson(GROUP_PHOTO_DATA % group_id, default='[]') or set_group_photo_data(group_id)
  65. def set_group_photo_thumbup_flag(photo_id, user_id):
  66. """ 设置群组照片用户点赞标识信息 """
  67. r.setex(GROUP_PHOTO_THUMB_UP % (photo_id, user_id), r.REDIS_EXPIRED_ONE_MONTH, True)
  68. def del_group_photo_thumbup_flag(photo_id, user_id):
  69. """ 删除群组照片用户点赞标识信息 """
  70. r.delete(GROUP_PHOTO_THUMB_UP % (photo_id, user_id))
  71. def get_group_photo_thumbup_flag(photo_id, user_id):
  72. """ 获取群组照片用户点赞标识信息 """
  73. if r.exists(GROUP_PHOTO_THUMB_UP % (photo_id, user_id)):
  74. return True
  75. else:
  76. from group.models import PhotoThumbUpInfo
  77. if PhotoThumbUpInfo.objects.filter(photo_id=photo_id, user_id=user_id, thumbup=True).exists():
  78. set_group_photo_thumbup_flag(photo_id, user_id)
  79. return True
  80. else:
  81. return False
  82. def set_group_photo_comment_list(photo_id):
  83. """ 设置群组照片用户评论列表 """
  84. from group.models import PhotoCommentInfo
  85. photo_comments = PhotoCommentInfo.objects.filter(photo_id=photo_id)
  86. photo_comments = [comment.comment_info for comment in photo_comments]
  87. r.setjson(GROUP_PHOTO_COMMENT_LIST % photo_id, photo_comments, cls=DjangoJSONEncoder)
  88. return photo_comments
  89. def get_group_photo_comment_list(photo_id):
  90. """ 获取群组照片用户评论列表 """
  91. return r.getjson(GROUP_PHOTO_COMMENT_LIST % photo_id, default='[]') or set_group_photo_comment_list(photo_id)
  92. def set_group_photo_thumbup_list(photo_id):
  93. """ 设置群组照片用户点赞列表 """
  94. from group.models import PhotoThumbUpInfo
  95. photo_thumbups = PhotoThumbUpInfo.objects.filter(photo_id=photo_id, thumbup=True)
  96. photo_thumbups = [thumbup.thumbup_info for thumbup in photo_thumbups]
  97. r.setjson(GROUP_PHOTO_THUMB_UP_LIST % photo_id, photo_thumbups, cls=DjangoJSONEncoder)
  98. return photo_thumbups
  99. def get_group_photo_thumbup_list(photo_id):
  100. """ 获取群组照片用户点赞列表 """
  101. return r.getjson(GROUP_PHOTO_THUMB_UP_LIST % photo_id, default='[]') or set_group_photo_thumbup_list(photo_id)
  102. def get_group_photo_watchers(photo_id):
  103. """ 获取群组照片用户关注列表 """
  104. return r.smembers(GROUP_PHOTO_WATCHER_SET % photo_id)