user_challenge.py 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  1. from .tool.func import *
  2. def do_make_challenge_design(img, title, info, disable = 0):
  3. if disable == 1:
  4. table_style = 'style="border: 2px solid green"'
  5. else:
  6. table_style = 'style="border: 2px solid red"'
  7. return '''
  8. <table id="main_table_set" ''' + table_style + '''>
  9. <tr>
  10. <td id="main_table_width_quarter" rowspan="2">
  11. <span style="font-size: 64px;">''' + img + '''</span>
  12. </td>
  13. <td>
  14. <span style="font-size: 32px;">''' + title + '''</span>
  15. </td>
  16. </tr>
  17. <tr>
  18. <td>''' + info + '''</td>
  19. </table>
  20. <hr class="main_hr">
  21. '''
  22. def user_challenge():
  23. with get_db_connect() as conn:
  24. curs = conn.cursor()
  25. ip = ip_check()
  26. if ip_or_user(ip) == 1:
  27. return redirect('/user')
  28. if flask.request.method == 'POST':
  29. user_exp = 0
  30. curs.execute(db_change('select count(*) from history where ip = ?'), [ip])
  31. db_data = curs.fetchall()
  32. if not db_data:
  33. db_data = [[0]]
  34. user_exp += 5 * db_data[0][0]
  35. if db_data[0][0] >= 1:
  36. curs.execute(db_change("delete from user_set where id = ? and name = 'challenge_first_contribute'"), [ip])
  37. curs.execute(db_change("insert into user_set (name, id, data) values ('challenge_first_contribute', ?, '1')"), [ip])
  38. user_exp += 500
  39. if db_data[0][0] >= 10:
  40. curs.execute(db_change("delete from user_set where id = ? and name = 'challenge_tenth_contribute'"), [ip])
  41. curs.execute(db_change("insert into user_set (name, id, data) values ('challenge_tenth_contribute', ?, '1')"), [ip])
  42. user_exp += 1000
  43. if db_data[0][0] >= 100:
  44. curs.execute(db_change("delete from user_set where id = ? and name = 'challenge_hundredth_contribute'"), [ip])
  45. curs.execute(db_change("insert into user_set (name, id, data) values ('challenge_hundredth_contribute', ?, '1')"), [ip])
  46. user_exp += 3000
  47. if db_data[0][0] >= 1000:
  48. curs.execute(db_change("delete from user_set where id = ? and name = 'challenge_thousandth_contribute'"), [ip])
  49. curs.execute(db_change("insert into user_set (name, id, data) values ('challenge_thousandth_contribute', ?, '1')"), [ip])
  50. user_exp += 10000
  51. curs.execute(db_change("select count(*) from topic where ip = ?"), [ip])
  52. db_data = curs.fetchall()
  53. if not db_data:
  54. db_data = [[0]]
  55. user_exp += 5 * db_data[0][0]
  56. if db_data[0][0] >= 1:
  57. curs.execute(db_change("delete from user_set where id = ? and name = 'challenge_first_discussion'"), [ip])
  58. curs.execute(db_change("insert into user_set (name, id, data) values ('challenge_first_discussion', ?, '1')"), [ip])
  59. user_exp += 500
  60. if db_data[0][0] >= 10:
  61. curs.execute(db_change("delete from user_set where id = ? and name = 'challenge_tenth_discussion'"), [ip])
  62. curs.execute(db_change("insert into user_set (name, id, data) values ('challenge_tenth_discussion', ?, '1')"), [ip])
  63. user_exp += 1000
  64. if db_data[0][0] >= 100:
  65. curs.execute(db_change("delete from user_set where id = ? and name = 'challenge_hundredth_discussion'"), [ip])
  66. curs.execute(db_change("insert into user_set (name, id, data) values ('challenge_hundredth_discussion', ?, '1')"), [ip])
  67. user_exp += 3000
  68. if db_data[0][0] >= 1000:
  69. curs.execute(db_change("delete from user_set where id = ? and name = 'challenge_thousandth_discussion'"), [ip])
  70. curs.execute(db_change("insert into user_set (name, id, data) values ('challenge_thousandth_discussion', ?, '1')"), [ip])
  71. user_exp += 10000
  72. curs.execute(db_change('select data from user_set where name = ? and id = ?'), ['challenge_admin', ip])
  73. db_data = curs.fetchall()
  74. if admin_check('all') == 1 or db_data:
  75. curs.execute(db_change("delete from user_set where id = ? and name = 'challenge_admin'"), [ip])
  76. curs.execute(db_change("insert into user_set (name, id, data) values ('challenge_admin', ?, '1')"), [ip])
  77. user_exp += 10000
  78. exp = user_exp
  79. level = 0
  80. while 1:
  81. if exp >= (500 + level * 50):
  82. exp -= (500 + level * 50)
  83. level += 1
  84. else:
  85. break
  86. curs.execute(db_change("delete from user_set where id = ? and name = 'level'"), [ip])
  87. curs.execute(db_change("insert into user_set (name, id, data) values ('level', ?, ?)"), [ip, level])
  88. curs.execute(db_change("delete from user_set where id = ? and name = 'experience'"), [ip])
  89. curs.execute(db_change("insert into user_set (name, id, data) values ('experience', ?, ?)"), [ip, exp])
  90. return redirect('/challenge')
  91. else:
  92. data_html_green = ''
  93. data_html_red = ''
  94. data_html_green += do_make_challenge_design(
  95. '🌳',
  96. load_lang('challenge_title_register'),
  97. load_lang('challenge_info_register', 1),
  98. 1
  99. )
  100. curs.execute(db_change('select data from user_set where name = ? and id = ?'), ['challenge_first_contribute', ip])
  101. db_data = curs.fetchall()
  102. disable = 1 if db_data else 0
  103. data_html = do_make_challenge_design(
  104. '🔰',
  105. load_lang('challenge_title_first_contribute'),
  106. load_lang('challenge_info_first_contribute', 1),
  107. disable
  108. )
  109. if disable == 1:
  110. data_html_green += data_html
  111. else:
  112. data_html_red += data_html
  113. curs.execute(db_change('select data from user_set where name = ? and id = ?'), ['challenge_tenth_contribute', ip])
  114. db_data = curs.fetchall()
  115. disable = 1 if db_data else 0
  116. data_html = do_make_challenge_design(
  117. '📝',
  118. load_lang('challenge_title_tenth_contribute'),
  119. load_lang('challenge_info_tenth_contribute', 1),
  120. disable
  121. )
  122. if disable == 1:
  123. data_html_green += data_html
  124. else:
  125. data_html_red += data_html
  126. curs.execute(db_change('select data from user_set where name = ? and id = ?'), ['challenge_hundredth_contribute', ip])
  127. db_data = curs.fetchall()
  128. disable = 1 if db_data else 0
  129. data_html = do_make_challenge_design(
  130. '🖊️',
  131. load_lang('challenge_title_hundredth_contribute'),
  132. load_lang('challenge_info_hundredth_contribute', 1),
  133. disable
  134. )
  135. if disable == 1:
  136. data_html_green += data_html
  137. else:
  138. data_html_red += data_html
  139. curs.execute(db_change('select data from user_set where name = ? and id = ?'), ['challenge_thousandth_contribute', ip])
  140. db_data = curs.fetchall()
  141. disable = 1 if db_data else 0
  142. data_html = do_make_challenge_design(
  143. '🏅',
  144. load_lang('challenge_title_thousandth_contribute'),
  145. load_lang('challenge_info_thousandth_contribute', 1),
  146. disable
  147. )
  148. if disable == 1:
  149. data_html_green += data_html
  150. else:
  151. data_html_red += data_html
  152. curs.execute(db_change('select data from user_set where name = ? and id = ?'), ['challenge_first_discussion', ip])
  153. db_data = curs.fetchall()
  154. disable = 1 if db_data else 0
  155. data_html = do_make_challenge_design(
  156. '💬',
  157. load_lang('challenge_title_first_discussion'),
  158. load_lang('challenge_info_first_discussion', 1),
  159. disable
  160. )
  161. if disable == 1:
  162. data_html_green += data_html
  163. else:
  164. data_html_red += data_html
  165. curs.execute(db_change('select data from user_set where name = ? and id = ?'), ['challenge_tenth_discussion', ip])
  166. db_data = curs.fetchall()
  167. disable = 1 if db_data else 0
  168. data_html = do_make_challenge_design(
  169. '💡',
  170. load_lang('challenge_title_tenth_discussion'),
  171. load_lang('challenge_info_tenth_discussion', 1),
  172. disable
  173. )
  174. if disable == 1:
  175. data_html_green += data_html
  176. else:
  177. data_html_red += data_html
  178. curs.execute(db_change('select data from user_set where name = ? and id = ?'), ['challenge_hundredth_discussion', ip])
  179. db_data = curs.fetchall()
  180. disable = 1 if db_data else 0
  181. data_html = do_make_challenge_design(
  182. '📢',
  183. load_lang('challenge_title_hundredth_discussion'),
  184. load_lang('challenge_info_hundredth_discussion', 1),
  185. disable
  186. )
  187. if disable == 1:
  188. data_html_green += data_html
  189. else:
  190. data_html_red += data_html
  191. curs.execute(db_change('select data from user_set where name = ? and id = ?'), ['challenge_thousandth_discussion', ip])
  192. db_data = curs.fetchall()
  193. disable = 1 if db_data else 0
  194. data_html = do_make_challenge_design(
  195. '📜',
  196. load_lang('challenge_title_thousandth_discussion'),
  197. load_lang('challenge_info_thousandth_discussion', 1),
  198. disable
  199. )
  200. if disable == 1:
  201. data_html_green += data_html
  202. else:
  203. data_html_red += data_html
  204. data_html = data_html_green + data_html_red
  205. curs.execute(db_change('select data from user_set where name = ? and id = ?'), ['challenge_admin', ip])
  206. db_data = curs.fetchall()
  207. disable = 1 if db_data else 0
  208. data_html = do_make_challenge_design(
  209. '✅',
  210. load_lang('challenge_title_admin'),
  211. load_lang('challenge_info_admin', 1),
  212. disable
  213. )
  214. if disable == 1:
  215. data_html_green += data_html
  216. else:
  217. data_html_red += data_html
  218. data_html = data_html_green + data_html_red
  219. return easy_minify(flask.render_template(skin_check(),
  220. imp = [load_lang('challenge_and_level_manage'), wiki_set(), wiki_custom(), wiki_css([0, 0])],
  221. data = data_html + '''
  222. <form method="post">
  223. <div id="opennamu_get_user_info">''' + html.escape(ip) + '''</div>
  224. <hr class="main_hr">
  225. <button id="opennamu_save_button" type="submit">''' + load_lang('reload') + '''</button>
  226. </form>
  227. ''',
  228. menu = [['user', load_lang('return')]]
  229. ))