filters.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. #*************************************************************************
  2. # Copyright © 2015 JiangLin. All rights reserved.
  3. # File Name: jinja2_filter.py
  4. # Author:JiangLin
  5. # Mail:xiyang0807@gmail.com
  6. # Created Time: 2016-02-16 21:38:02
  7. #*************************************************************************
  8. #!/usr/bin/env python
  9. # -*- coding=UTF-8 -*-
  10. from maple import redis_data
  11. from flask_login import current_user
  12. def join_time(uid,gid):
  13. from maple.group.models import UserGroup
  14. return UserGroup.load_join_time(uid,gid).join_time
  15. def groups(kind):
  16. from maple.group.models import Group
  17. return Group.load_by_kind(kind)
  18. def safe_clean(text):
  19. from flask import Markup
  20. from bleach import clean
  21. tags = ['b','i','font','br','blockquote']
  22. attrs = {
  23. '*':['style'],
  24. 'font':['color']
  25. }
  26. styles = ['color']
  27. return Markup(clean(text,tags = tags,
  28. attributes = attrs,
  29. styles = styles))
  30. def safe_markdown(text):
  31. from flask import Markup
  32. from misaka import Markdown, HtmlRenderer
  33. html = HtmlRenderer()
  34. markdown = Markdown(html)
  35. return Markup(markdown(text))
  36. def judge(id,mode):
  37. if mode == 'collect':
  38. from maple.question.models import Collector
  39. collect = Collector.load_by_id(id,current_user.id)
  40. if collect:
  41. return True
  42. else:
  43. return False
  44. if mode == 'love':
  45. from maple.question.models import Lover
  46. lover = Lover.load_by_id(id,current_user.id)
  47. if lover:
  48. return True
  49. else:
  50. return False
  51. if mode == 'daily':
  52. user = 'user' + ':' + 'daily' + ':' + str(id)
  53. if redis_data.exists(user):
  54. return True
  55. else:
  56. return False
  57. if mode == 'notice':
  58. user = 'user' + ':' + str(id)
  59. notice = redis_data.hget(user,'notice')
  60. if not notice:
  61. notice = 0
  62. else:
  63. notice = int(notice)
  64. return notice
  65. def load_read_count(id):
  66. read = redis_data.hget('question:%s'%str(id),'read')
  67. replies = redis_data.hget('question:%s'%str(id),'replies')
  68. if not read:
  69. read = 0
  70. else:
  71. read = int(read)
  72. if not replies:
  73. replies = 0
  74. else:
  75. replies = int(replies)
  76. return replies,read
  77. def load_user_count(id):
  78. topic = redis_data.hget('user:%s'%str(current_user.id),'topic')
  79. all_topic = redis_data.hget('user:%s'%str(current_user.id),'all_topic')
  80. collect = redis_data.hget('user:%s'%str(current_user.id),'collect')
  81. if not topic:
  82. topic = 0
  83. else:
  84. topic = int(topic)
  85. if not all_topic:
  86. all_topic = 0
  87. else:
  88. all_topic = int(all_topic)
  89. if not collect:
  90. collect = 0
  91. else:
  92. collect = int(collect)
  93. return topic,all_topic,collect
  94. def load_forums_count(id):
  95. topic = redis_data.hget('forums:count','topic')
  96. group = redis_data.hget('forums:count','group')
  97. user = redis_data.hget('forums:count','user')
  98. if not topic:
  99. topic = 0
  100. else:
  101. topic = int(topic)
  102. if not group:
  103. group = 0
  104. else:
  105. group = int(group)
  106. if not user:
  107. user = 0
  108. else:
  109. user = int(user)
  110. return topic,group,user