PageRenderTime 67ms CodeModel.GetById 23ms RepoModel.GetById 1ms app.codeStats 0ms

/src/web/helpers.py

https://github.com/fireyy/spyder
Python | 222 lines | 190 code | 12 blank | 20 comment | 5 complexity | 8bfab190bcdaa4800ef5b3efd54f106b MD5 | raw file
  1. #coding: utf-8
  2. import re, urlparse, random
  3. from datetime import datetime
  4. from flask import current_app, g, session, redirect, url_for, request, make_response
  5. import functools
  6. from web.models import Field, Seed_fields, Seed_tag, Tags
  7. #from flaskext.themes import static_file_url, render_theme_template
  8. #
  9. #_punct_re = re.compile(r'[\t !"#$%&\'()*\-/<=>?@\[\\\]^_`{|},.]+')
  10. #
  11. ##cached = functools.partial(cache.cached, unless= lambda: g.user is not None)
  12. #
  13. #def get_theme():
  14. # return current_app.config['THEME']
  15. #
  16. #def render_template(template, **context):
  17. # return render_theme_template(get_theme(), template, **context)
  18. #
  19. #def domain(url):
  20. # rv = urlparse.urlparse(url).netloc
  21. # if rv.startswith("www."):
  22. # rv = rv[4:]
  23. # return rv
  24. __all__ = [
  25. 'auth',
  26. "getSiteStatus",
  27. "getPageTypeText",
  28. "getSeedTypeText",
  29. "timesince",
  30. "getSeedFieldsBySid",
  31. "getSeedFieldsByType",
  32. "checkboxVal",
  33. "createSalt",
  34. "getTagsBySeedId",
  35. "getFeildIdByTitle",
  36. "getFeildTitleById",
  37. "setReferer",
  38. "getReferer",
  39. "clearReferer",
  40. ]
  41. def auth(func):
  42. @functools.wraps(func)
  43. def wrap(*args, **kwargs):
  44. error = None
  45. #if ("uid" in session and not isinstance(session["uid"], int) and session["uid"] <= 0) or ("uid" not in session):
  46. if not session.get('uid'):
  47. error = u'请登录'
  48. return redirect(url_for('user.login', error=error))
  49. return func(*args, **kwargs)
  50. return wrap
  51. def requires_roles(*roles):
  52. def wrapper(f):
  53. @wraps(f)
  54. def wrapped(*args, **kwargs):
  55. if get_current_user_role() not in roles:
  56. return error_response()
  57. return f(*args, **kwargs)
  58. return wrapped
  59. return wrapper
  60. def getPermissions(group):
  61. if group is "visitor":
  62. return 1
  63. elif group is "editor":
  64. return 2
  65. else:
  66. return 3
  67. return 1
  68. def getSiteStatus(n):
  69. status = [u"正常",u"繁忙",u"拥挤",u"未知"]
  70. return status[n]
  71. def getPageTypeText(n):
  72. text = {
  73. "list": u"列表页",
  74. "content": u"内容页"
  75. }
  76. return text[n]
  77. def getSeedTypeText(n):
  78. text = {
  79. "article": u"文章",
  80. "game": u"游戏",
  81. "kaifu": u"开服",
  82. "kaice": u"开测",
  83. "gift": u"礼包",
  84. "company": u"厂商",
  85. "gallery": u"图库"
  86. }
  87. return text[n]
  88. def timesince(dt, default=None):
  89. """
  90. Returns string representing "time since" e.g.
  91. 3 days ago, 5 hours ago etc.
  92. """
  93. if default is None:
  94. default = u"刚刚"
  95. dt = datetime.fromtimestamp(dt);
  96. now = datetime.now()
  97. diff = now - dt
  98. periods = (
  99. (diff.days / 365, u"年"),
  100. (diff.days / 30, u"个月"),
  101. (diff.days / 7, u"星期"),
  102. (diff.days, u"天"),
  103. (diff.seconds / 3600, u"小时"),
  104. (diff.seconds / 60, u"分钟"),
  105. (diff.seconds, u"秒"),
  106. )
  107. for period, singular in periods:
  108. if period <= 0:
  109. continue
  110. singular = u"%d%s前" % (period, singular)
  111. return singular
  112. return default
  113. def somefunc(name):
  114. """
  115. """
  116. return True
  117. def getSeedFieldsBySid(sid, seed_type):
  118. seed_fields = Seed_fields(current_app)
  119. #fields = seed_fields.list(sid)
  120. field = Field(current_app)
  121. datas = field.list(seed_type)
  122. new = []
  123. for data in datas:
  124. new2 = {}
  125. #tmp = field.view(data.field_id)[0]
  126. new2["name"] = data["name"]
  127. new2["title"] = data["title"]
  128. new2["type"] = data["type"]
  129. new2["id"] = data["id"]
  130. v = seed_fields.view(sid, data["id"]).list()
  131. if len(v) > 0:
  132. new2["value"] = v[0]["value"]
  133. new2["page_type"] = v[0]["page_type"]
  134. new2["fetch_all"] = v[0]["fetch_all"]
  135. else:
  136. new2["value"] = ""
  137. new2["page_type"] = ""
  138. new2["fetch_all"] = 0
  139. new.append(new2)
  140. return new
  141. def getSeedFieldsByType(t):
  142. field = Field(current_app)
  143. fields = field.list(t)
  144. return fields
  145. def checkboxVal(v):
  146. if v is None: v = 0
  147. return v
  148. def createSalt():
  149. ALPHABET = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
  150. chars=[]
  151. for i in range(4):
  152. chars.append(random.choice(ALPHABET))
  153. return "".join(chars)
  154. def getTagsBySeedId(seed_id):
  155. tags = []
  156. if seed_id:
  157. seed_tag = Seed_tag(current_app)
  158. tags_modle = Tags(current_app)
  159. datas = seed_tag.list(seed_id)
  160. for data in datas:
  161. tid = data["tid"]
  162. ishere = tags_modle.view(tid).list()[0]
  163. tags.append(ishere)
  164. return tags
  165. def getFeildIdByTitle(title,seed_type):
  166. field = Field(current_app)
  167. fields = field.list(seed_type)
  168. guid_rule_datas = title.split(",")
  169. guid_rule = []
  170. for field in fields:
  171. for guid_rule_data in guid_rule_datas:
  172. if field.title == guid_rule_data:
  173. guid_rule.append(str(field.id))
  174. return ",".join(guid_rule)
  175. def getFeildTitleById(fid,seed_type):
  176. field = Field(current_app)
  177. fields = field.list(seed_type)
  178. guid_rule_datas = fid.split(",")
  179. guid_rule = []
  180. for field in fields:
  181. for guid_rule_data in guid_rule_datas:
  182. if field["id"] == int(guid_rule_data):
  183. guid_rule.append(field["title"])
  184. return ",".join(guid_rule)
  185. def setReferer():
  186. session["myreferer"] = request.referrer
  187. return session["myreferer"]
  188. def getReferer():
  189. return session["myreferer"]
  190. def clearReferer():
  191. return session.pop("myreferer", None)