xnote-web 0.2.2__tar.gz → 0.2.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1063) hide show
  1. {xnote_web-0.2.2 → xnote_web-0.2.4}/PKG-INFO +2 -2
  2. {xnote_web-0.2.2 → xnote_web-0.2.4}/README.md +1 -1
  3. {xnote_web-0.2.2 → xnote_web-0.2.4}/config/file/preview.properties +2 -1
  4. {xnote_web-0.2.2 → xnote_web-0.2.4}/config/lang/zh.properties +1 -1
  5. xnote_web-0.2.4/config/version.txt +1 -0
  6. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/code_style.md +2 -0
  7. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/api/report_weather.py +6 -7
  8. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/base.html +2 -1
  9. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/date/contribution_calendar.html +5 -43
  10. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/date/month_picker.html +5 -2
  11. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/form/form.html +1 -0
  12. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/table/table.html +5 -0
  13. xnote_web-0.2.4/handlers/common/table/table_script.html +2 -0
  14. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/title/base_title.html +1 -1
  15. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/fs.py +2 -2
  16. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/fs_image.py +1 -1
  17. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/fs_upload.py +4 -4
  18. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/component/message_edit.html +0 -28
  19. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/component/message_input.html +0 -1
  20. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/dao.py +89 -17
  21. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/message.py +5 -18
  22. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/message_model.py +37 -12
  23. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/message_tag.py +26 -1
  24. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/message_utils.py +12 -8
  25. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/page/message_edit_dialog.html +0 -1
  26. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/page/message_list_ajax.html +1 -1
  27. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/page/message_tag_ajax.html +10 -12
  28. xnote_web-0.2.4/handlers/message/page/message_tag_search_dialog.html +27 -0
  29. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/comment.py +27 -4
  30. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/note_ext_info.html +1 -1
  31. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/dao_comment.py +21 -7
  32. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/html_importer.py +66 -40
  33. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/note_stat.py +41 -10
  34. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/comment/comment.html +18 -2
  35. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/comment/comment_edit_dialog.html +4 -1
  36. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/comment/comment_list_ajax.html +20 -6
  37. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/html_importer.html +1 -1
  38. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plugin/base/base_plugin_title.html +1 -1
  39. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plugin/dao.py +10 -8
  40. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plugin/header/plugin_header_normal.html +1 -1
  41. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plugin/models.py +11 -0
  42. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plugin/plugin_config.py +1 -0
  43. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plugin/plugin_page.py +14 -22
  44. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/search/pydoc.py +1 -1
  45. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/backup.py +9 -6
  46. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/cache_admin.py +7 -4
  47. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/clipboard.py +30 -78
  48. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/component/db_kv_nav.html +1 -1
  49. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/component/db_nav.html +3 -7
  50. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/crontab.py +4 -3
  51. xnote_web-0.2.4/handlers/system/dao_cron.py +19 -0
  52. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/db_admin.py +13 -4
  53. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/db/db_index_v2.html +1 -1
  54. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/db/db_meta.html +0 -11
  55. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/system_info.html +3 -8
  56. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/system_sync.html +1 -6
  57. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/system_sync_cluster_info.html +1 -1
  58. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/system_sync_follower_view.html +1 -1
  59. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/system_boot.py +3 -5
  60. xnote_web-0.2.2/handlers/system/system.py → xnote_web-0.2.4/handlers/system/system_index.py +10 -2
  61. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/system_info.py +9 -2
  62. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/system_sync/node_follower.py +0 -7
  63. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/system_sync/system_sync_controller.py +5 -2
  64. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/system_sync/system_sync_proxy.py +0 -6
  65. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/test/component/example_nav.html +1 -1
  66. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/test/example_handler.py +94 -5
  67. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/test/test_dbutil_handler.py +4 -3
  68. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/barcode.html +2 -0
  69. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/hash.html +2 -1
  70. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/hex.html +8 -6
  71. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/qrcode.html +8 -3
  72. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/shell.html +23 -29
  73. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/urlcoder.html +1 -1
  74. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/user/login.py +6 -5
  75. xnote_web-0.2.4/handlers/user/logout.py +20 -0
  76. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/user/user.py +35 -5
  77. {xnote_web-0.2.2 → xnote_web-0.2.4}/setup.py +1 -1
  78. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/app.build.css +118 -98
  79. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/base/common-form.css +13 -1
  80. xnote_web-0.2.4/static/css/base/common-link.css +71 -0
  81. xnote_web-0.2.4/static/css/base/common-list.css +39 -0
  82. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/base/common.css +0 -98
  83. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/base/reset.css +1 -3
  84. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/common-card.css +4 -0
  85. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/note.css +0 -1
  86. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/app.build.js +56 -2
  87. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/marked-ext.js +3 -1
  88. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/message/message.js +9 -15
  89. xnote_web-0.2.4/static/js/xnote-ui/x-table.js +55 -0
  90. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/xnote-ui/x-upload.js +2 -2
  91. {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_app.py +2 -2
  92. xnote_web-0.2.4/tests/test_base_note.py +44 -0
  93. xnote_web-0.2.4/tests/test_comment.py +139 -0
  94. {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_message.py +11 -7
  95. {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_note.py +1 -117
  96. xnote_web-0.2.4/tests/test_plugin.py +34 -0
  97. {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_user.py +11 -2
  98. {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_xutils.py +2 -2
  99. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/core/models.py +19 -0
  100. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/core/xauth.py +104 -66
  101. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/core/xconfig.py +11 -2
  102. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/core/xmanager.py +15 -8
  103. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/core/xnote_app.py +3 -4
  104. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/core/xnote_code_builder.py +3 -0
  105. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/core/xnote_event.py +7 -1
  106. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/core/xtables.py +24 -1
  107. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/core/xtables_kv.py +11 -6
  108. xnote_web-0.2.4/xnote/plugin/__init__.py +5 -0
  109. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/plugin/base.py +4 -0
  110. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/plugin/calendar.py +16 -6
  111. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/plugin/component.py +27 -1
  112. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/plugin/container.py +5 -0
  113. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/plugin/form.py +17 -3
  114. xnote_web-0.2.4/xnote/plugin/itemlist.py +79 -0
  115. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/plugin/plugin.py +7 -0
  116. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/plugin/sidebar.py +4 -1
  117. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/plugin/tab.py +4 -4
  118. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/plugin/table.py +1 -0
  119. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/plugin/table_plugin.py +6 -1
  120. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/service/comment_service.py +12 -0
  121. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/service/tag_service.py +8 -1
  122. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_010.py +1 -1
  123. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_020.py +11 -1
  124. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_web.egg-info/PKG-INFO +2 -2
  125. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_web.egg-info/SOURCES.txt +11 -5
  126. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/__init__.py +2 -0
  127. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/dbutil_base.py +35 -25
  128. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/dbutil_cache.py +1 -1
  129. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/dbutil_helper.py +4 -0
  130. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/dbutil_table.py +10 -8
  131. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/dbutil_table_v2.py +2 -2
  132. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/encode.py +12 -3
  133. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/exeutil.py +1 -1
  134. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/fsutil.py +43 -37
  135. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/functions.py +22 -2
  136. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/imports.py +9 -28
  137. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/interfaces.py +2 -1
  138. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/netutil.py +2 -0
  139. xnote_web-0.2.4/xutils/number_utils.py +41 -0
  140. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/sqldb/table_manager.py +46 -20
  141. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/sqldb/table_proxy.py +2 -2
  142. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/text_parser.py +1 -1
  143. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/tornado/escape.py +13 -20
  144. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/tornado/template.py +13 -4
  145. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/tornado/util.py +8 -25
  146. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/webutil.py +12 -9
  147. xnote_web-0.2.2/config/version.txt +0 -1
  148. xnote_web-0.2.2/handlers/common/table/table_script.html +0 -56
  149. xnote_web-0.2.2/handlers/message/page/message_tag_select.html +0 -96
  150. xnote_web-0.2.2/handlers/system/dao_cron.py +0 -31
  151. xnote_web-0.2.2/handlers/user/logout.py +0 -15
  152. xnote_web-0.2.2/handlers/user/page/userinfo.html +0 -63
  153. xnote_web-0.2.2/xnote/plugin/__init__.py +0 -5
  154. xnote_web-0.2.2/xutils/numutil.py +0 -23
  155. {xnote_web-0.2.2 → xnote_web-0.2.4}/COPYING +0 -0
  156. {xnote_web-0.2.2 → xnote_web-0.2.4}/MANIFEST.in +0 -0
  157. {xnote_web-0.2.2 → xnote_web-0.2.4}/config/boot/boot.default.properties +0 -0
  158. {xnote_web-0.2.2 → xnote_web-0.2.4}/config/boot/boot.docker.properties +0 -0
  159. {xnote_web-0.2.2 → xnote_web-0.2.4}/config/boot/boot.min.properties +0 -0
  160. {xnote_web-0.2.2 → xnote_web-0.2.4}/config/boot/boot.sae.properties +0 -0
  161. {xnote_web-0.2.2 → xnote_web-0.2.4}/config/boot/boot.sqlite.properties +0 -0
  162. {xnote_web-0.2.2 → xnote_web-0.2.4}/config/boot/boot.test.properties +0 -0
  163. {xnote_web-0.2.2 → xnote_web-0.2.4}/config/cron/cron.json +0 -0
  164. {xnote_web-0.2.2 → xnote_web-0.2.4}/config/file/audio.properties +0 -0
  165. {xnote_web-0.2.2 → xnote_web-0.2.4}/config/file/code.properties +0 -0
  166. {xnote_web-0.2.2 → xnote_web-0.2.4}/config/file/image.properties +0 -0
  167. {xnote_web-0.2.2 → xnote_web-0.2.4}/config/file/mime-types.properties +0 -0
  168. {xnote_web-0.2.2 → xnote_web-0.2.4}/config/file/text.properties +0 -0
  169. {xnote_web-0.2.2 → xnote_web-0.2.4}/config/file/video.properties +0 -0
  170. {xnote_web-0.2.2 → xnote_web-0.2.4}/config/file/zip.properties +0 -0
  171. {xnote_web-0.2.2 → xnote_web-0.2.4}/config/lang/en.properties +0 -0
  172. {xnote_web-0.2.2 → xnote_web-0.2.4}/config/note/category.ddc.properties +0 -0
  173. {xnote_web-0.2.2 → xnote_web-0.2.4}/config/note/category.properties +0 -0
  174. {xnote_web-0.2.2 → xnote_web-0.2.4}/config/note/smart_group.ini +0 -0
  175. {xnote_web-0.2.2 → xnote_web-0.2.4}/config/plugin/form_plugin.tpl.py +0 -0
  176. {xnote_web-0.2.2 → xnote_web-0.2.4}/config/plugin/plugin.tpl.py +0 -0
  177. {xnote_web-0.2.2 → xnote_web-0.2.4}/config/plugin/plugins.ini +0 -0
  178. {xnote_web-0.2.2 → xnote_web-0.2.4}/config/requirements.full.txt +0 -0
  179. {xnote_web-0.2.2 → xnote_web-0.2.4}/config/requirements.min.txt +0 -0
  180. {xnote_web-0.2.2 → xnote_web-0.2.4}/config/requirements.mysql.txt +0 -0
  181. {xnote_web-0.2.2 → xnote_web-0.2.4}/config/requirements.test.txt +0 -0
  182. {xnote_web-0.2.2 → xnote_web-0.2.4}/config/requirements.txt +0 -0
  183. {xnote_web-0.2.2 → xnote_web-0.2.4}/config/requirements.win.txt +0 -0
  184. {xnote_web-0.2.2 → xnote_web-0.2.4}/config/user/invalid_names.list +0 -0
  185. {xnote_web-0.2.2 → xnote_web-0.2.4}/config/user/user_config.default.properties +0 -0
  186. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/architecture.md +0 -0
  187. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/changelog.md +0 -0
  188. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/code_style_css.md +0 -0
  189. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/commands.md +0 -0
  190. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/database.md +0 -0
  191. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/db_migrate.md +0 -0
  192. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/plugins.md +0 -0
  193. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/architecture.png +0 -0
  194. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/architecture.svg +0 -0
  195. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/architecture_2.png +0 -0
  196. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/command_listdir.png +0 -0
  197. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/command_rmfolder.png +0 -0
  198. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/screenshot01.png +0 -0
  199. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/screenshot02.png +0 -0
  200. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/screenshot03.png +0 -0
  201. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/task_web.PNG +0 -0
  202. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v1.2_editor.PNG +0 -0
  203. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v1.2_list.PNG +0 -0
  204. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v1.2_mobile.png +0 -0
  205. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v1.2_search.png +0 -0
  206. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v1.3_desktop01.png +0 -0
  207. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v1.4.png +0 -0
  208. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v1.5.png +0 -0
  209. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v2.0.png +0 -0
  210. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v2.1_home.png +0 -0
  211. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v2.2_20190331.png +0 -0
  212. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v2.3_20190411.png +0 -0
  213. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v2.3_home.png +0 -0
  214. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v2.4_home.png +0 -0
  215. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v2.4_home2.png +0 -0
  216. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v2.5_20200502.png +0 -0
  217. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v2.5_home.png +0 -0
  218. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v2.5_recent.png +0 -0
  219. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v2.6_home.png +0 -0
  220. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v2.7_home.png +0 -0
  221. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v2.8_home.png +0 -0
  222. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v2.9.2_home.png +0 -0
  223. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v20191111.png +0 -0
  224. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote/346/236/266/346/236/204.png" +0 -0
  225. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/search_extension.md +0 -0
  226. {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/upload_to_pip.md +0 -0
  227. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/__init__.py +0 -0
  228. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/admin/__init__.py +0 -0
  229. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/admin/admin_test.py +0 -0
  230. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/admin/func_admin.py +0 -0
  231. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/admin/job_admin.py +0 -0
  232. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/admin/repair_admin.py +0 -0
  233. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/api/__init__.py +0 -0
  234. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/api/alarm.py +0 -0
  235. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/api/check_network.py +0 -0
  236. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/api/encode.py +0 -0
  237. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/api/getip.py +0 -0
  238. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/api/http_headers.py +0 -0
  239. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/api/ipv6.py +0 -0
  240. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/api/readbook.py +0 -0
  241. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/api/report_time.py +0 -0
  242. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/api/tts.py +0 -0
  243. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/base.html +0 -0
  244. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/code/__init__.py +0 -0
  245. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/code/code_edit.py +0 -0
  246. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/code/code_lines.py +0 -0
  247. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/code/code_search.py +0 -0
  248. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/code/page/code_edit.html +0 -0
  249. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/code/page/code_lines.html +0 -0
  250. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/code/page/code_search.html +0 -0
  251. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/code/page/preview.html +0 -0
  252. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/code/page/wiki_edit.html +0 -0
  253. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/code/preview.py +0 -0
  254. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/README.md +0 -0
  255. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/back.html +0 -0
  256. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/base/README.md +0 -0
  257. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/base/pagination.html +0 -0
  258. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/base_bottom.html +0 -0
  259. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/base_footer.html +0 -0
  260. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/base_head.html +0 -0
  261. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/base_nav.html +0 -0
  262. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/base_simple.html +0 -0
  263. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/base_title.html +0 -0
  264. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/button/back_button.html +0 -0
  265. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/hook/message_search_btn_hook.html +0 -0
  266. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/hook/search_box_hook.html +0 -0
  267. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/layout/base_layout.html +0 -0
  268. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/layout/wide_left.html +0 -0
  269. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/mod_notice.html +0 -0
  270. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/nav/base_nav_left.html +0 -0
  271. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/nav/base_nav_project.html +0 -0
  272. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/nav/base_nav_top.html +0 -0
  273. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/nav/content_nav.html +0 -0
  274. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/page/notfound.html +0 -0
  275. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/pagination.html +0 -0
  276. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/script/debug_script.html +0 -0
  277. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/script/geo_location.html +0 -0
  278. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/script/image_fix_1.html +0 -0
  279. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/script/image_fix_2.html +0 -0
  280. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/script/load_codemirror.html +0 -0
  281. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/script/load_jexcel.html +0 -0
  282. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/script/load_laydate.html +0 -0
  283. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/script/load_layui.html +0 -0
  284. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/script/load_markdown.html +0 -0
  285. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/script/load_select2.html +0 -0
  286. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/script/load_vue.html +0 -0
  287. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/script/require_init.html +0 -0
  288. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/script/safe_script.html +0 -0
  289. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/script/textarea_script.html +0 -0
  290. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/script/translate_script.html +0 -0
  291. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/search/search_box.html +0 -0
  292. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/search/search_mobile.html +0 -0
  293. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/search_box.html +0 -0
  294. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/sidebar/app_index.html +0 -0
  295. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/sidebar/default.html +0 -0
  296. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/table/info_table.html +0 -0
  297. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/table/table_v2.html +0 -0
  298. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/text/empty_text.html +0 -0
  299. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/theme/sidebar.html +0 -0
  300. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/theme/sidebar_left.html +0 -0
  301. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/wide_base.html +0 -0
  302. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/cron/__init__.py +0 -0
  303. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/cron/cron_stats.py +0 -0
  304. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/cron/diskclean.py +0 -0
  305. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/dict/__init__.py +0 -0
  306. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/dict/dict.py +0 -0
  307. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/dict/dict_dao.py +0 -0
  308. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/dict/dict_search.py +0 -0
  309. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/dict/models.py +0 -0
  310. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/dict/page/dict_add.html +0 -0
  311. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/dict/page/dict_edit.html +0 -0
  312. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/dict/page/dict_edit_base.html +0 -0
  313. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/dict/page/dict_list.html +0 -0
  314. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/dict/page/dict_sidebar.html +0 -0
  315. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/dict/page/dict_type_tab.html +0 -0
  316. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/dict/page/dict_update.html +0 -0
  317. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/dict/page/relevant_list.html +0 -0
  318. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/error.html +0 -0
  319. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/__init__.py +0 -0
  320. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/component/clipboard-dialog.html +0 -0
  321. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/component/css/fs_css.html +0 -0
  322. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/component/filelist_gallery.html +0 -0
  323. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/component/filelist_simple.html +0 -0
  324. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/component/fs_sidebar.html +0 -0
  325. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/component/fs_title.html +0 -0
  326. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/component/move_file_dialog.html +0 -0
  327. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/component/options/fs_options.html +0 -0
  328. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/component/options/fs_options_buttons.html +0 -0
  329. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/component/options/fs_options_buttons.mobile.html +0 -0
  330. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/component/options_css.html +0 -0
  331. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/component/plugins-dialog.html +0 -0
  332. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/component/script/file_op_script.html +0 -0
  333. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/fs_add.py +0 -0
  334. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/fs_api.py +0 -0
  335. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/fs_cache.py +0 -0
  336. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/fs_checker.py +0 -0
  337. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/fs_find.py +0 -0
  338. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/fs_helper.py +0 -0
  339. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/fs_hex.py +0 -0
  340. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/fs_index.py +0 -0
  341. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/fs_mode.py +0 -0
  342. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/fs_plugins.py +0 -0
  343. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/fs_preview.py +0 -0
  344. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/fs_text.py +0 -0
  345. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/mod_aside.html +0 -0
  346. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/mod_fs_upload.html +0 -0
  347. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/page/fs.html +0 -0
  348. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/page/fs_bookmark.html +0 -0
  349. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/page/fs_grid.html +0 -0
  350. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/page/fs_index.html +0 -0
  351. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/page/fs_not_readable.html +0 -0
  352. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/page/fs_plugins.html +0 -0
  353. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/page/fs_shell.html +0 -0
  354. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/page/fs_sidebar.html +0 -0
  355. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/page/fs_text.html +0 -0
  356. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/page/fs_text_v1.html +0 -0
  357. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/page/fs_upload.html +0 -0
  358. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/index.html +0 -0
  359. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/index.py +0 -0
  360. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/__init__.py +0 -0
  361. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/card/msg_edit_card.html +0 -0
  362. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/component/message_date_right.html +0 -0
  363. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/component/message_event.html +0 -0
  364. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/component/message_header.html +0 -0
  365. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/component/message_keyword_info.html +0 -0
  366. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/component/message_layout.html +0 -0
  367. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/component/message_sub_link.html +0 -0
  368. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/component/message_tab.html +0 -0
  369. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/component/message_tab_log.html +0 -0
  370. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/component/message_tag_list.html +0 -0
  371. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/component/message_title.html +0 -0
  372. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/component/right/tags.html +0 -0
  373. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/component/script/tab_script.html +0 -0
  374. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/component/select_topic_dialog.html +0 -0
  375. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/component/show_topic_dialog.html +0 -0
  376. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/component/tag/orderby_tab.html +0 -0
  377. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/component/tag/tag_left.html +0 -0
  378. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/message_date.py +0 -0
  379. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/message_log.py +0 -0
  380. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/message_month_tags.py +0 -0
  381. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/message_search.py +0 -0
  382. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/message_task.py +0 -0
  383. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/page/message.html +0 -0
  384. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/page/message_calendar.html +0 -0
  385. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/page/message_list_by_day.html +0 -0
  386. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/page/message_list_content.html +0 -0
  387. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/page/message_list_view.html +0 -0
  388. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/page/message_search.html +0 -0
  389. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/page/message_search_head.html +0 -0
  390. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/page/message_tag_system.html +0 -0
  391. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/page/task_done_index.html +0 -0
  392. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/page/task_index.html +0 -0
  393. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/page/task_tab.html +0 -0
  394. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/page/task_tag_index.html +0 -0
  395. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/service.py +0 -0
  396. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/mod_fs_path.html +0 -0
  397. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/mod_pagenation.html +0 -0
  398. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/__init__.py +0 -0
  399. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/ajax/edit_symbol_dialog.html +0 -0
  400. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/ajax/group_detail_dialog.html +0 -0
  401. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/ajax/group_option_dialog.html +0 -0
  402. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/ajax/option_dialog.html +0 -0
  403. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/ajax/select_note_dialog.html +0 -0
  404. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/ajax/share_group_dialog.html +0 -0
  405. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/ajax/share_note_dialog.html +0 -0
  406. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/card/README.md +0 -0
  407. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/card/hot_notes.html +0 -0
  408. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/card/note_contents_left.html +0 -0
  409. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/card/note_date_picker.html +0 -0
  410. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/card/note_groups.html +0 -0
  411. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/card/note_types.html +0 -0
  412. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/card/plan_detail.html +0 -0
  413. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/card/plan_note_card.html +0 -0
  414. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/card/plan_sidebar.html +0 -0
  415. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/card/recent_created_notes.html +0 -0
  416. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/card/recent_update_groups.html +0 -0
  417. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/card/recent_update_notes.html +0 -0
  418. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/card/sticky_notes.html +0 -0
  419. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/card/task_memo.html +0 -0
  420. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/attribute/note_category.html +0 -0
  421. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/batch_move.html +0 -0
  422. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/button/fixed_bottom_buttons.html +0 -0
  423. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/button/fixed_buttons.html +0 -0
  424. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/create_note_header.html +0 -0
  425. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/css/edit_css.html +0 -0
  426. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/css/gallery_css.html +0 -0
  427. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/detail_left.html +0 -0
  428. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/editor/editor_default_vars.html +0 -0
  429. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/editor/gallery.html +0 -0
  430. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/editor/markdown.html +0 -0
  431. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/editor/markdown_edit.html +0 -0
  432. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/editor/markdown_edit.mobile.html +0 -0
  433. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/editor/post.html +0 -0
  434. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/editor/table_lang.html +0 -0
  435. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/editor/table_myexcel.html +0 -0
  436. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/filter/group_tag_filter.html +0 -0
  437. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/filter/note_tag_filter.html +0 -0
  438. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/filter/type_filter.html +0 -0
  439. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/group_select.html +0 -0
  440. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/group_select_tree.html +0 -0
  441. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/group_special_folder.html +0 -0
  442. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/header/common_header.html +0 -0
  443. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/header/group_detail_header.html +0 -0
  444. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/mobile/group_category_switch.html +0 -0
  445. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/mod_aside.html +0 -0
  446. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/note_list_component.html +0 -0
  447. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/note_list_expand.html +0 -0
  448. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/note_list_item_tags.html +0 -0
  449. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/note_list_no_card.html +0 -0
  450. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/note_orderby.html +0 -0
  451. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/note_path.html +0 -0
  452. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/option/create_option.html +0 -0
  453. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/option/group_option.html +0 -0
  454. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/option/group_option_dropdown.html +0 -0
  455. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/option/note_dropdown.html +0 -0
  456. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/root_dropdown.html +0 -0
  457. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/script/all_script.html +0 -0
  458. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/script/create_script.html +0 -0
  459. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/script/delete_script.html +0 -0
  460. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/script/group_select_script.html +0 -0
  461. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/script/note_copy_script.html +0 -0
  462. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/script/note_option_script.html +0 -0
  463. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/script/note_template.html +0 -0
  464. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/script/orderby_script.html +0 -0
  465. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/script/rename_script.html +0 -0
  466. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/script/share_script.html +0 -0
  467. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/script/status_script.html +0 -0
  468. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/script/tag_manage_script.html +0 -0
  469. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/script/tag_script.html +0 -0
  470. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/share_dialog.html +0 -0
  471. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/sidebar/group_list_sidebar.html +0 -0
  472. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/sidebar/group_manage_sidebar.html +0 -0
  473. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/sidebar/group_sidebar.html +0 -0
  474. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/sidebar/markdown_edit_sidebar.html +0 -0
  475. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/sidebar/note_sidebar.html +0 -0
  476. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/sidebar/share_sidebar.html +0 -0
  477. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/sort/note_sort_tab.html +0 -0
  478. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/tab/group_list_nav.html +0 -0
  479. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/tab/group_list_nav_desktop.html +0 -0
  480. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/tab/group_list_nav_mobile.html +0 -0
  481. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/timeline/timeline_body.html +0 -0
  482. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/timeline/timeline_create_option.html +0 -0
  483. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/view_css.html +0 -0
  484. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/view_footer.html +0 -0
  485. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/view_header.html +0 -0
  486. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/view_header_alias.html +0 -0
  487. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/view_header_tag.html +0 -0
  488. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/constant.py +0 -0
  489. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/dao.py +0 -0
  490. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/dao_api.py +0 -0
  491. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/dao_book.py +0 -0
  492. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/dao_category.py +0 -0
  493. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/dao_delete.py +0 -0
  494. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/dao_draft.py +0 -0
  495. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/dao_edit.py +0 -0
  496. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/dao_log.py +0 -0
  497. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/dao_read.py +0 -0
  498. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/dao_relation.py +0 -0
  499. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/dao_share.py +0 -0
  500. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/dao_tag.py +0 -0
  501. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/models.py +0 -0
  502. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/note_api.py +0 -0
  503. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/note_calendar.py +0 -0
  504. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/note_category.py +0 -0
  505. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/note_checklist.py +0 -0
  506. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/note_edit.py +0 -0
  507. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/note_fix.py +0 -0
  508. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/note_group.py +0 -0
  509. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/note_helper.py +0 -0
  510. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/note_relation.py +0 -0
  511. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/note_service.py +0 -0
  512. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/note_tag.py +0 -0
  513. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/note_tag_manage.py +0 -0
  514. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/note_timeline.py +0 -0
  515. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/note_view.py +0 -0
  516. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/note_workspace.py +0 -0
  517. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/batch/gallery_manage.html +0 -0
  518. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/batch/group_manage.html +0 -0
  519. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/batch/group_manage_category.html +0 -0
  520. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/batch/note_manage.html +0 -0
  521. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/category.html +0 -0
  522. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/comment/comment_user_page.html +0 -0
  523. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/create.html +0 -0
  524. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/detail/checklist_detail.html +0 -0
  525. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/detail/form_detail.html +0 -0
  526. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/detail/group_detail.html +0 -0
  527. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/detail/group_detail_body.html +0 -0
  528. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/detail/group_detail_filter.html +0 -0
  529. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/detail/note_detail.html +0 -0
  530. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/detail/table_detail.html +0 -0
  531. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/group_list.html +0 -0
  532. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/history_list.html +0 -0
  533. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/index/note_index.html +0 -0
  534. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/index/note_workspace.html +0 -0
  535. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/index/note_workspace.mobile.html +0 -0
  536. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/list_by_date.html +0 -0
  537. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/note_calendar.html +0 -0
  538. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/note_default.html +0 -0
  539. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/note_list.html +0 -0
  540. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/note_recent.html +0 -0
  541. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/note_relation.html +0 -0
  542. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/note_relation_row.html +0 -0
  543. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/note_share.html +0 -0
  544. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/note_tools.html +0 -0
  545. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/old/category_old.html +0 -0
  546. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/old/create_log.html +0 -0
  547. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/old/group_list_archived.html +0 -0
  548. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/old/list_by_date_old.html +0 -0
  549. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/old/notice.html +0 -0
  550. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/old/project_list_old.html +0 -0
  551. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/old/upload_file.html +0 -0
  552. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/print.html +0 -0
  553. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/taginfo.html +0 -0
  554. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/taglist.html +0 -0
  555. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/taglist_row.html +0 -0
  556. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/taglist_subtab.html +0 -0
  557. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/taglist_tab.html +0 -0
  558. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/timeline/timeline.html +0 -0
  559. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plan/__init__.py +0 -0
  560. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plan/dao.py +0 -0
  561. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plan/page/month_plan.html +0 -0
  562. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plan/plan.py +0 -0
  563. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plugin/__init__.py +0 -0
  564. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plugin/base/base_form_plugin.html +0 -0
  565. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plugin/base/base_plugin.html +0 -0
  566. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plugin/base/base_plugin_body.html +0 -0
  567. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plugin/header/plugin_category.html +0 -0
  568. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plugin/header/plugin_header_note.html +0 -0
  569. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plugin/page/grid.html +0 -0
  570. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plugin/page/plugins_v1.html +0 -0
  571. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plugin/page/plugins_v2.html +0 -0
  572. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plugin/page/plugins_v3.html +0 -0
  573. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plugin/plugin_create.py +0 -0
  574. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plugin/plugin_upload.py +0 -0
  575. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plugin/plugin_util.py +0 -0
  576. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plugin/service.py +0 -0
  577. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/search/__init__.py +0 -0
  578. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/search/ajax/search_dialog.html +0 -0
  579. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/search/ajax/search_dialog_detail.html +0 -0
  580. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/search/api.py +0 -0
  581. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/search/calc.py +0 -0
  582. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/search/component/search_pagination.html +0 -0
  583. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/search/component/search_sidebar.html +0 -0
  584. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/search/component/search_tab.html +0 -0
  585. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/search/mute.py +0 -0
  586. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/search/note.py +0 -0
  587. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/search/page/search_history.html +0 -0
  588. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/search/page/search_result.html +0 -0
  589. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/search/reminder.py +0 -0
  590. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/search/scripts.py +0 -0
  591. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/search/search.html +0 -0
  592. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/search/search.py +0 -0
  593. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/search/search_aside.html +0 -0
  594. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/search/search_rules.html +0 -0
  595. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/search/tools.py +0 -0
  596. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/settings/__init__.py +0 -0
  597. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/settings/model.py +0 -0
  598. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/settings/page/properties.html +0 -0
  599. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/settings/page/settings.html +0 -0
  600. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/settings/page/settings_admin.html +0 -0
  601. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/settings/page/settings_note.html +0 -0
  602. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/settings/page/settings_search.html +0 -0
  603. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/settings/page/settings_sidebar.html +0 -0
  604. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/settings/page/settings_tab.html +0 -0
  605. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/settings/settings.py +0 -0
  606. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/__init__.py +0 -0
  607. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/command.py +0 -0
  608. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/component/admin_nav.html +0 -0
  609. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/component/system_css.html +0 -0
  610. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/component/system_log_tab.html +0 -0
  611. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/component/thread_nav.html +0 -0
  612. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/db_index.py +0 -0
  613. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/db_migrate_tools.py +0 -0
  614. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/db_refresh.py +0 -0
  615. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/db_shell.py +0 -0
  616. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/db_upgrade.py +0 -0
  617. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/handler_profile.py +0 -0
  618. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/mod_aside.html +0 -0
  619. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/network_profile.py +0 -0
  620. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/crontab_edit.html +0 -0
  621. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/db/db_admin.html +0 -0
  622. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/db/db_backup.html +0 -0
  623. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/db/db_index.html +0 -0
  624. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/db/db_struct.html +0 -0
  625. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/db/sqldb_detail.html +0 -0
  626. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/db/sqldb_list.html +0 -0
  627. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/history.html +0 -0
  628. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/module_detail.html +0 -0
  629. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/module_list.html +0 -0
  630. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/script.html +0 -0
  631. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/sqlite.html +0 -0
  632. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/system_admin.html +0 -0
  633. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/system_index.html +0 -0
  634. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/system_info_list.html +0 -0
  635. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/system_info_text.html +0 -0
  636. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/system_sync_leader.html +0 -0
  637. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/template_cache.html +0 -0
  638. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/script.py +0 -0
  639. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/stats.py +0 -0
  640. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/system_config.py +0 -0
  641. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/system_event.py +0 -0
  642. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/system_log.py +0 -0
  643. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/system_module.py +0 -0
  644. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/system_sync/config.py +0 -0
  645. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/system_sync/dao.py +0 -0
  646. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/system_sync/models.py +0 -0
  647. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/system_sync/node_base.py +0 -0
  648. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/system_sync/node_leader.py +0 -0
  649. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/system_sync/system_sync_indexer.py +0 -0
  650. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/system_todo.py +0 -0
  651. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/template_cache.py +0 -0
  652. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/thread_info.py +0 -0
  653. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/test/__init__.py +0 -0
  654. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/test/component/example_nav_tab.html +0 -0
  655. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/test/exception.py +0 -0
  656. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/test/page/example_btn.html +0 -0
  657. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/test/page/example_dialog.html +0 -0
  658. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/test/page/example_dropdown.html +0 -0
  659. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/test/page/example_hammer.html +0 -0
  660. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/test/page/example_index.html +0 -0
  661. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/test/page/example_tab.html +0 -0
  662. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/test/page/example_tag.html +0 -0
  663. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/test/page/example_text.html +0 -0
  664. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/test/test_handler.py +0 -0
  665. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/__init__.py +0 -0
  666. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/base64.html +0 -0
  667. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/browser_info.html +0 -0
  668. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/camera.html +0 -0
  669. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/chat_demo.html +0 -0
  670. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/code_template.html +0 -0
  671. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/color.html +0 -0
  672. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/datetime.html +0 -0
  673. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/iframe_viewer.html +0 -0
  674. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/img2gray.html +0 -0
  675. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/img_merge.html +0 -0
  676. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/img_split.html +0 -0
  677. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/layui_test.html +0 -0
  678. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/multi_win.html +0 -0
  679. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/notebook.html +0 -0
  680. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/notebook.py +0 -0
  681. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/port_scanner.py +0 -0
  682. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/random_string.html +0 -0
  683. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/responsive.html +0 -0
  684. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/runjs.html +0 -0
  685. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/search_compare.html +0 -0
  686. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/speech_recognition.html +0 -0
  687. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/tcc.html +0 -0
  688. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/terminal.html +0 -0
  689. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/text_convert.html +0 -0
  690. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/text_diff.html +0 -0
  691. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/text_set.html +0 -0
  692. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/text_tab.html +0 -0
  693. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/tools.py +0 -0
  694. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/tts.html +0 -0
  695. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/vue_test.html +0 -0
  696. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/webuploader.html +0 -0
  697. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/user/__init__.py +0 -0
  698. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/user/component/user_script.html +0 -0
  699. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/user/dao.py +0 -0
  700. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/user/page/change_password.html +0 -0
  701. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/user/page/login.html +0 -0
  702. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/user/page/user.html +0 -0
  703. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/user/page/user_manage.html +0 -0
  704. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/user/page/user_op_log.html +0 -0
  705. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/webdav/__init__.py +0 -0
  706. {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/webdav/webdav.py +0 -0
  707. {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/__init__.py +0 -0
  708. {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/html2text.py +0 -0
  709. {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/leveldb-x64.dll +0 -0
  710. {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/leveldb.dll +0 -0
  711. {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/leveldbpy.py +0 -0
  712. {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/smallseg.py +0 -0
  713. {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/__init__.py +0 -0
  714. {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/application.py +0 -0
  715. {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/browser.py +0 -0
  716. {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/contrib/__init__.py +0 -0
  717. {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/contrib/template.py +0 -0
  718. {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/db.py +0 -0
  719. {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/debugerror.py +0 -0
  720. {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/form.py +0 -0
  721. {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/http.py +0 -0
  722. {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/httpserver.py +0 -0
  723. {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/net.py +0 -0
  724. {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/py3helpers.py +0 -0
  725. {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/session.py +0 -0
  726. {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/template.py +0 -0
  727. {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/test.py +0 -0
  728. {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/utils.py +0 -0
  729. {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/webapi.py +0 -0
  730. {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/webopenid.py +0 -0
  731. {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/wsgi.py +0 -0
  732. {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/wsgiserver/LICENSE.txt +0 -0
  733. {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/wsgiserver/__init__.py +0 -0
  734. {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/wsgiserver/ssl_builtin.py +0 -0
  735. {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/wsgiserver/ssl_pyopenssl.py +0 -0
  736. {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/wsgiserver/wsgiserver2.py +0 -0
  737. {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/wsgiserver/wsgiserver3.py +0 -0
  738. {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/wget.py +0 -0
  739. {xnote_web-0.2.2 → xnote_web-0.2.4}/setup.cfg +0 -0
  740. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/__init__.py +0 -0
  741. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/audio/todo_done.mp3 +0 -0
  742. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/app.css +0 -0
  743. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/base/common-button.css +0 -0
  744. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/base/common-dialog.css +0 -0
  745. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/base/common-dropdown.css +0 -0
  746. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/base/common-icon.css +0 -0
  747. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/base/common-layout.css +0 -0
  748. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/base/common-markdown.css +0 -0
  749. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/base/common-mobile.css +0 -0
  750. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/base/common-page.css +0 -0
  751. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/base/common-photo.css +0 -0
  752. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/base/common-tab.css +0 -0
  753. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/base/common-table.css +0 -0
  754. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/base/common-tag.css +0 -0
  755. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/base/layout-second-nav.css +0 -0
  756. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/base/reset-wide.css +0 -0
  757. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/common-left.css +0 -0
  758. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/common-react.css +0 -0
  759. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/font-awesome.min.css +0 -0
  760. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/message.css +0 -0
  761. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/plugins.css +0 -0
  762. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/search.css +0 -0
  763. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/timeline.css +0 -0
  764. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/todo.css +0 -0
  765. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/favicon.ico +0 -0
  766. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/favicon.png +0 -0
  767. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/fonts/fontawesome-webfont.woff +0 -0
  768. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/fonts/fontawesome-webfont.woff2 +0 -0
  769. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/checked.png +0 -0
  770. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/file.png +0 -0
  771. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/file2.png +0 -0
  772. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/folder.gif +0 -0
  773. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/folder2.png +0 -0
  774. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/folder3.png +0 -0
  775. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icon_application.png +0 -0
  776. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icon_application.svg +0 -0
  777. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icon_csv.png +0 -0
  778. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icon_dict.png +0 -0
  779. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icon_dict.svg +0 -0
  780. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icon_folder_settings.png +0 -0
  781. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icon_recent.png +0 -0
  782. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icon_recent.svg +0 -0
  783. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icon_right.png +0 -0
  784. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icon_script.png +0 -0
  785. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icon_script.svg +0 -0
  786. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icon_search.png +0 -0
  787. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icon_search.svg +0 -0
  788. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icon_settings_applications.png +0 -0
  789. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icon_settings_applications.svg +0 -0
  790. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icon_shell.png +0 -0
  791. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icon_shell.svg +0 -0
  792. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icon_txt.png +0 -0
  793. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icons/icon_barcode.png +0 -0
  794. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icons/icon_game.png +0 -0
  795. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icons/icon_network.png +0 -0
  796. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icons/icon_work.png +0 -0
  797. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/Lexer.js +0 -0
  798. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/admin.js +0 -0
  799. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/app.js +0 -0
  800. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/autocss.js +0 -0
  801. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/base/ajax.js +0 -0
  802. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/base/array.js +0 -0
  803. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/base/datetime.js +0 -0
  804. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/base/jq-ext.js +0 -0
  805. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/base/misc.js +0 -0
  806. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/base/string.js +0 -0
  807. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/base/url.js +0 -0
  808. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/codemirror-addon/xnote-search.js +0 -0
  809. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/colors.js +0 -0
  810. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/components/date-picker.js +0 -0
  811. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/console.js +0 -0
  812. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/editor-csv.js +0 -0
  813. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/editor.js +0 -0
  814. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/fs/fs.js +0 -0
  815. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/note.js +0 -0
  816. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/old/TagEditor.js +0 -0
  817. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/old/fileEditor.js +0 -0
  818. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/plan/plan.js +0 -0
  819. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/plugin/plugin.form.js +0 -0
  820. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/upload.js +0 -0
  821. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/utils.build.js +0 -0
  822. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/xnote-ui/layer.photos.js +0 -0
  823. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/xnote-ui/x-audio.js +0 -0
  824. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/xnote-ui/x-core.js +0 -0
  825. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/xnote-ui/x-device.js +0 -0
  826. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/xnote-ui/x-dialog.js +0 -0
  827. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/xnote-ui/x-dropdown.js +0 -0
  828. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/xnote-ui/x-event.js +0 -0
  829. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/xnote-ui/x-ext.js +0 -0
  830. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/xnote-ui/x-init.js +0 -0
  831. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/xnote-ui/x-layout.js +0 -0
  832. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/xnote-ui/x-photo.js +0 -0
  833. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/xnote-ui/x-tab.js +0 -0
  834. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/xnote-ui/x-template.js +0 -0
  835. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/xnote-ui/x-url.js +0 -0
  836. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/JsBarcode/JsBarcode.all.min.js +0 -0
  837. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/art-template/template-web-4.13.2.js +0 -0
  838. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/base64.js/base64.js +0 -0
  839. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/bootstrap/bootstrap-3.3.5.min.css +0 -0
  840. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/clipboard/clipboard-2.0.4.min.js +0 -0
  841. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/5.41.0/codemirror.min.css +0 -0
  842. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/5.41.0/codemirror.min.js +0 -0
  843. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/5.65.12/codemirror.css +0 -0
  844. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/5.65.12/codemirror.js +0 -0
  845. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/addon/dialog/dialog.css +0 -0
  846. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/addon/dialog/dialog.js +0 -0
  847. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/addon/hint/anyword-hint.js +0 -0
  848. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/addon/hint/css-hint.js +0 -0
  849. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/addon/hint/html-hint.js +0 -0
  850. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/addon/hint/javascript-hint.js +0 -0
  851. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/addon/hint/show-hint.css +0 -0
  852. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/addon/hint/show-hint.js +0 -0
  853. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/addon/hint/sql-hint.js +0 -0
  854. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/addon/hint/xml-hint.js +0 -0
  855. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/addon/search/jump-to-line.js +0 -0
  856. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/addon/search/search.js +0 -0
  857. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/addon/search/searchcursor.js +0 -0
  858. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/codemirror.min.css +0 -0
  859. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/codemirror.min.js +0 -0
  860. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/keymap/sublime.js +0 -0
  861. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/mode/clike/clike.js +0 -0
  862. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/mode/css.min.js +0 -0
  863. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/mode/javascript.js +0 -0
  864. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/mode/markdown.js +0 -0
  865. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/mode/php.js +0 -0
  866. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/mode/properties.js +0 -0
  867. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/mode/python.js +0 -0
  868. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/mode/shell.js +0 -0
  869. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/mode/sql.min.js +0 -0
  870. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/theme/eclipse.css +0 -0
  871. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/theme/monokai.min.css +0 -0
  872. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/theme/xq-light.css +0 -0
  873. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/csv.js/csv.js +0 -0
  874. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/d3/d3-v3.5.17.min.js +0 -0
  875. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/exif-js/exif.js +0 -0
  876. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/font-awesome-4.7.0/HELP-US-OUT.txt +0 -0
  877. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/font-awesome-4.7.0/css/font-awesome.css +0 -0
  878. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/font-awesome-4.7.0/css/font-awesome.min.css +0 -0
  879. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/font-awesome-4.7.0/fonts/FontAwesome.otf +0 -0
  880. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/font-awesome-4.7.0/fonts/fontawesome-webfont.eot +0 -0
  881. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/font-awesome-4.7.0/fonts/fontawesome-webfont.svg +0 -0
  882. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/font-awesome-4.7.0/fonts/fontawesome-webfont.ttf +0 -0
  883. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/font-awesome-4.7.0/fonts/fontawesome-webfont.woff +0 -0
  884. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/font-awesome-4.7.0/fonts/fontawesome-webfont.woff2 +0 -0
  885. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/highlight.js/11.6.0/highlight.min.js +0 -0
  886. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/highlight.js/11.6.0/styles/default.min.css +0 -0
  887. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/highlight.js/11.7.0/styles/a11y-dark.min.css +0 -0
  888. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jexcel/2.0.2/jexcel.min.js +0 -0
  889. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jexcel/2.0.2/jquery.jcalendar.min.css +0 -0
  890. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jexcel/2.0.2/jquery.jcalendar.min.js +0 -0
  891. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jexcel/2.0.2/jquery.jdropdown.min.css +0 -0
  892. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jexcel/2.0.2/jquery.jdropdown.min.js +0 -0
  893. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jexcel/2.0.2/jquery.jexcel.min.css +0 -0
  894. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jexcel/2.0.2/jquery.jexcel.min.js +0 -0
  895. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jquery/jquery-1.12.4.min.js +0 -0
  896. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jquery-url-parser/purl.js +0 -0
  897. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jquery-url-parser/purl.min.js +0 -0
  898. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jquery.qrcode/jquery.qrcode.min.js +0 -0
  899. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jquery.terminal/dterm.js +0 -0
  900. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jquery.terminal/jquery.terminal-1.3.1.min.css +0 -0
  901. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jquery.terminal/jquery.terminal-1.3.1.min.js +0 -0
  902. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jsdiff/diff.js +0 -0
  903. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jspreadsheet-ce-4.6.0/README.md +0 -0
  904. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jspreadsheet-ce-4.6.0/WEBCOMPONENT.md +0 -0
  905. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jspreadsheet-ce-4.6.0/deps/jsuites.css +0 -0
  906. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jspreadsheet-ce-4.6.0/deps/jsuites.js +0 -0
  907. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jspreadsheet-ce-4.6.0/dist/jexcel.css +0 -0
  908. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jspreadsheet-ce-4.6.0/dist/jexcel.js +0 -0
  909. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jspreadsheet-ce-4.6.0/dist/jexcel.theme.css +0 -0
  910. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jspreadsheet-ce-4.6.0/docker-compose.yml +0 -0
  911. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jspreadsheet-ce-4.6.0/lang/de_DE.json +0 -0
  912. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jspreadsheet-ce-4.6.0/lang/en_GB.json +0 -0
  913. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jspreadsheet-ce-4.6.0/lang/fr_FR.json +0 -0
  914. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jspreadsheet-ce-4.6.0/lang/it_IT.json +0 -0
  915. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jspreadsheet-ce-4.6.0/lang/pt_BR.json +0 -0
  916. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jspreadsheet-ce-4.6.0/lang/zh_CN.json +0 -0
  917. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jspreadsheet-ce-4.6.0/package.json +0 -0
  918. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jspreadsheet-ce-4.6.0/webcomponent-spreadsheet.md +0 -0
  919. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layDate-v5.0.9/laydate.js +0 -0
  920. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layDate-v5.0.9/theme/default/font/iconfont.eot +0 -0
  921. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layDate-v5.0.9/theme/default/font/iconfont.svg +0 -0
  922. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layDate-v5.0.9/theme/default/font/iconfont.ttf +0 -0
  923. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layDate-v5.0.9/theme/default/font/iconfont.woff +0 -0
  924. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layDate-v5.0.9/theme/default/laydate.css +0 -0
  925. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layer/layer.full.js +0 -0
  926. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layer/layer.js +0 -0
  927. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layer/mobile/layer.js +0 -0
  928. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layer/mobile/need/layer.css +0 -0
  929. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layer/theme/default/icon-ext.png +0 -0
  930. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layer/theme/default/icon.png +0 -0
  931. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layer/theme/default/layer.css +0 -0
  932. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layer/theme/default/loading-0.gif +0 -0
  933. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layer/theme/default/loading-1.gif +0 -0
  934. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layer/theme/default/loading-2.gif +0 -0
  935. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layer.mobile-v2.0/README.md +0 -0
  936. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layui/2.9.17/css/layui.css +0 -0
  937. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layui/2.9.17/font/iconfont.eot +0 -0
  938. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layui/2.9.17/font/iconfont.svg +0 -0
  939. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layui/2.9.17/font/iconfont.ttf +0 -0
  940. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layui/2.9.17/font/iconfont.woff +0 -0
  941. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layui/2.9.17/font/iconfont.woff2 +0 -0
  942. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layui/2.9.17/layui.js +0 -0
  943. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/marked/marked.js +0 -0
  944. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/md5/md5.js +0 -0
  945. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/package-lock.json +0 -0
  946. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/package.json +0 -0
  947. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/pure-css/pure-3.0.0.min.css +0 -0
  948. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/quarkjs/quark.base-1.0.0.min.js +0 -0
  949. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/requirejs/require-2.3.6.js +0 -0
  950. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/select2/4.0.13/select2.min.css +0 -0
  951. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/select2/4.0.13/select2.min.js +0 -0
  952. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/utf.js/utf-v1.0.js +0 -0
  953. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/vue/vue-2.2.6.min.js +0 -0
  954. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/vue/vue-2.7.9.min.js +0 -0
  955. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/wangEditor/wangEditor-3.1.1.min.js +0 -0
  956. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/webuploader/README.md +0 -0
  957. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/webuploader/Uploader.swf +0 -0
  958. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/webuploader/webuploader.css +0 -0
  959. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/webuploader/webuploader.nolog.min.js +0 -0
  960. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/xnote.pdn +0 -0
  961. {xnote_web-0.2.2 → xnote_web-0.2.4}/static/xnote.png +0 -0
  962. {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/__init__.py +0 -0
  963. {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/a.py +0 -0
  964. {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_admin.py +0 -0
  965. {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_api.py +0 -0
  966. {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_base.py +0 -0
  967. {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_dict.py +0 -0
  968. {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_exif.py +0 -0
  969. {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_fs.py +0 -0
  970. {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_migrate.py +0 -0
  971. {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_search.py +0 -0
  972. {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_service.py +0 -0
  973. {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_system_sync.py +0 -0
  974. {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_text_parser.py +0 -0
  975. {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_xauth.py +0 -0
  976. {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_xmanager.py +0 -0
  977. {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_xtemplate.py +0 -0
  978. {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_xutils_cache.py +0 -0
  979. {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_xutils_db.py +0 -0
  980. {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_xutils_db_hash_table.py +0 -0
  981. {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_xutils_db_table.py +0 -0
  982. {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_xutils_sqldb.py +0 -0
  983. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/__init__.py +0 -0
  984. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/core/__init__.py +0 -0
  985. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/core/autoreload.py +0 -0
  986. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/core/xmanager_log.py +0 -0
  987. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/core/xnote_hooks.py +0 -0
  988. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/core/xnote_trace.py +0 -0
  989. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/core/xnote_user_config.py +0 -0
  990. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/core/xtemplate.py +0 -0
  991. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/service/__init__.py +0 -0
  992. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/service/job_service.py +0 -0
  993. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/service/lock_service.py +0 -0
  994. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/service/search_service.py +0 -0
  995. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/__init__.py +0 -0
  996. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/base.py +0 -0
  997. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_000.py +0 -0
  998. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_001.py +0 -0
  999. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_002.py +0 -0
  1000. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_003.py +0 -0
  1001. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_004.py +0 -0
  1002. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_005.py +0 -0
  1003. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_006.py +0 -0
  1004. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_007.py +0 -0
  1005. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_008.py +0 -0
  1006. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_009.py +0 -0
  1007. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_011.py +0 -0
  1008. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_012.py +0 -0
  1009. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_013.py +0 -0
  1010. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_014.py +0 -0
  1011. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_015.py +0 -0
  1012. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_016.py +0 -0
  1013. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_017.py +0 -0
  1014. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_018.py +0 -0
  1015. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_019.py +0 -0
  1016. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_web.egg-info/dependency_links.txt +0 -0
  1017. {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_web.egg-info/top_level.txt +0 -0
  1018. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/base.py +0 -0
  1019. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/cacheutil.py +0 -0
  1020. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/code/__init__.py +0 -0
  1021. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/code/pack.py +0 -0
  1022. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/config.py +0 -0
  1023. /xnote_web-0.2.2/xutils/csvutil.py → /xnote_web-0.2.4/xutils/csv_utils.py +0 -0
  1024. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/dateutil.py +0 -0
  1025. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/__init__.py +0 -0
  1026. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/binlog.py +0 -0
  1027. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/dbutil_deque.py +0 -0
  1028. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/dbutil_hash.py +0 -0
  1029. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/dbutil_id_gen.py +0 -0
  1030. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/dbutil_set.py +0 -0
  1031. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/dbutil_sortedset.py +0 -0
  1032. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/dbutil_table_index.py +0 -0
  1033. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/driver_leveldb.py +0 -0
  1034. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/driver_leveldbpy.py +0 -0
  1035. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/driver_lmdb.py +0 -0
  1036. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/driver_mysql.py +0 -0
  1037. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/driver_mysql_enhance.py +0 -0
  1038. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/driver_sqlite.py +0 -0
  1039. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/driver_ssdb.py +0 -0
  1040. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/filters.py +0 -0
  1041. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/lock.py +0 -0
  1042. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/shard.py +0 -0
  1043. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/dbutil.py +0 -0
  1044. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/func_util.py +0 -0
  1045. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/htmlutil.py +0 -0
  1046. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/jsonutil.py +0 -0
  1047. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/lists.py +0 -0
  1048. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/lockutil.py +0 -0
  1049. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/logutil.py +0 -0
  1050. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/markdown_util.py +0 -0
  1051. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/mem_util.py +0 -0
  1052. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/osutil.py +0 -0
  1053. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/six.py +0 -0
  1054. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/sqldb/__init__.py +0 -0
  1055. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/sqldb/table_config.py +0 -0
  1056. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/sqldb/utils.py +0 -0
  1057. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/text_parser_properties.py +0 -0
  1058. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/textutil.py +0 -0
  1059. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/textutil_url.py +0 -0
  1060. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/tokenizer.py +0 -0
  1061. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/tornado/__init__.py +0 -0
  1062. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/tornado/log.py +0 -0
  1063. {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/ziputil.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: xnote_web
3
- Version: 0.2.2
3
+ Version: 0.2.4
4
4
  Summary: xnote-web框架
5
5
  Author: mark
6
6
  Author-email: 578749341@qq.com
@@ -29,7 +29,7 @@ xnote是一款面向个人的轻量级笔记系统,提供多种维度的数据
29
29
 
30
30
  如果你热爱技术爱折腾、需要多元的数据处理能力、希望完全掌控自己的文档数据,本产品将会是一个不错的尝试,欢迎试用反馈。
31
31
 
32
- - 体验demo网址 https://1k5u680558.goho.co/
32
+ - 体验demo网址 http://101.43.99.188:5557
33
33
  - 测试账号 user01/123456, user02/123456 友情提示:管理员会不定期清理数据,请勿存放重要数据
34
34
 
35
35
  以下是一些页面展示
@@ -17,7 +17,7 @@ xnote是一款面向个人的轻量级笔记系统,提供多种维度的数据
17
17
 
18
18
  如果你热爱技术爱折腾、需要多元的数据处理能力、希望完全掌控自己的文档数据,本产品将会是一个不错的尝试,欢迎试用反馈。
19
19
 
20
- - 体验demo网址 https://1k5u680558.goho.co/
20
+ - 体验demo网址 http://101.43.99.188:5557
21
21
  - 测试账号 user01/123456, user02/123456 友情提示:管理员会不定期清理数据,请勿存放重要数据
22
22
 
23
23
  以下是一些页面展示
@@ -4,6 +4,7 @@
4
4
  .html=/fs/~{path}?embed={embed}
5
5
  .htm=/fs/~{path}?embed={embed}
6
6
  .db=/system/sqlite?path={path}&embed={embed}
7
+ .sqlite=/system/sqlite?path={path}&embed={embed}
7
8
  .txt=/fs_text?path={path}&embed={embed}
8
9
  .pdf=/fs/~{path}?embed={embed}
9
- .mp4=/fs/~{path}?embed={embed}
10
+ .mp4=/fs/~{path}?embed={embed}
@@ -48,7 +48,7 @@ Menu_Settings = 系统设置
48
48
  Menu_Refresh = 系统刷新
49
49
  Menu_Modules = 模块说明
50
50
  Menu_CSS = CSS配置
51
- Menu_Plugin = 插件管理
51
+ Menu_Plugin = 插件中心
52
52
  Language = 语言
53
53
  Music = 音乐
54
54
  Note Categories = 笔记分类
@@ -0,0 +1 @@
1
+ develop-2025.07.24
@@ -55,6 +55,8 @@ my_package # 带下划线的包名
55
55
  - NoteListHandler 笔记列表处理器
56
56
  - TaskManager 任务管理器
57
57
  - NoteTaskManager 笔记任务管理器
58
+ - NoteDao 笔记的数据操作对象
59
+ - NoteRecord 笔记的数据库记录(建议用Record替代DO,因为DO和Dao容易混淆)
58
60
  - 分层命名规则:
59
61
  - 视图层(handlers): 具体的功能,有状态,包括API和页面,处理业务逻辑
60
62
  - 核心层(core): 基于功能抽象出来的通用能力,适用于WEB应用,有状态,只处理功能逻辑,不感知业务逻辑
@@ -5,13 +5,13 @@
5
5
  """Description here"""
6
6
 
7
7
  import re
8
+ import xutils
8
9
  try:
9
10
  from bs4 import BeautifulSoup
10
11
  except ImportError:
11
12
  bs4 = None
12
- import xutils
13
- import xtables
14
- import xconfig
13
+
14
+ from xnote.core import xconfig, xtables, xauth
15
15
  from xutils import u, six
16
16
 
17
17
  """
@@ -20,11 +20,10 @@ from xutils import u, six
20
20
 
21
21
  class handler:
22
22
 
23
+ @xauth.admin_required()
23
24
  def GET(self):
24
- city_code = xutils.get_argument("city_code", "101020100")
25
- city_name = xutils.get_argument("city_name", "上海")
26
- city_name = xutils.u(city_name)
27
-
25
+ city_code = xutils.get_argument_str("city_code", "101020100")
26
+ city_name = xutils.get_argument_str("city_name", "上海")
28
27
  message = None
29
28
 
30
29
  db = xtables.get_record_table()
@@ -15,7 +15,8 @@
15
15
  <noscript>
16
16
  <strong class="align-center row">抱歉,您的浏览器不支持访问该网站,建议更换更新版本的浏览器,例如Chrome/Firefox/Safari等</strong>
17
17
  </noscript>
18
-
18
+ <input type="file" id="baseFilePicker" class="hide" multiple/>
19
+
19
20
  <div class="root">
20
21
  <!-- 导航/菜单栏 -->
21
22
  {% include common/base_nav.html %}
@@ -1,38 +1,4 @@
1
1
  <style>
2
- .calendar-header {
3
- justify-content: space-between;
4
- align-items: center;
5
- margin-bottom: 10px;
6
- }
7
-
8
- .calendar-title {
9
- font-size: 14px;
10
- font-weight: 600;
11
- color: #24292e;
12
- }
13
-
14
- .calendar-controls {
15
- align-items: center;
16
- gap: 8px;
17
- }
18
-
19
- .calendar-year {
20
- font-size: 14px;
21
- color: #586069;
22
- }
23
-
24
- .calendar-nav {
25
- background: none;
26
- border: none;
27
- cursor: pointer;
28
- color: #959da5;
29
- padding: 4px;
30
- }
31
-
32
- .calendar-nav:hover {
33
- color: #24292e;
34
- }
35
-
36
2
  .legend {
37
3
  float: left;
38
4
  margin-bottom: 10px;
@@ -132,23 +98,23 @@
132
98
  }
133
99
 
134
100
  .month-2-cols {
135
- width: 27px;
101
+ width: 26px;
136
102
  float: left;
137
103
  }
138
104
 
139
105
  .month-3-cols {
140
- width: 40px;
106
+ width: 39px;
141
107
  float: left;
142
108
  }
143
109
 
144
110
  .month-4-cols {
145
111
  float: left;
146
- width: 53px;
112
+ width: 52px;
147
113
  }
148
114
 
149
115
  .month-5-cols {
150
116
  float: left;
151
- width: 66px;
117
+ width: 65px;
152
118
  }
153
119
 
154
120
  .stats {
@@ -224,11 +190,7 @@
224
190
  <div class="row calendar-row" style="{{calendar.row_style}}">
225
191
  <div class="weekday-label">{{row.label}}</div>
226
192
  {% for cell in row.items %}
227
- {% if cell.count > 0 %}
228
- <div class="calendar-day {{cell.css_class}}" data-tip="{{cell.tip}}" onmouseenter="showTooltip(event, this);" onmouseleave="hideTooltip()"></div>
229
- {% else %}
230
- <div class="calendar-day {{cell.css_class}}"></div>
231
- {% end %}
193
+ <div class="calendar-day {{cell.css_class}}" data-tip="{{cell.tip}}" onmouseenter="showTooltip(event, this);" onmouseleave="hideTooltip()"></div>
232
194
  {% end %}
233
195
  </div>
234
196
  {% end %}
@@ -19,9 +19,12 @@
19
19
  select.year {
20
20
  width: 100px;
21
21
  }
22
+ select.month {
23
+ width: 60px;
24
+ }
22
25
  </style>
23
26
 
24
- <div class="card btn-line-height">
27
+ <div class="card">
25
28
  <div class="date-box">
26
29
  <a class="prev-month-link btn btn-default">上个月</a>
27
30
  <select class="year" name="year" value="{{year}}">
@@ -29,7 +32,7 @@
29
32
  <option value="{{j}}">{{j}}年</option>
30
33
  {% end %}
31
34
  </select>
32
- <select name="month" value="{{month}}">
35
+ <select class="month" name="month" value="{{month}}">
33
36
  {% for i in range(0,13) %}
34
37
  {% if i == 0 %}
35
38
  {% if show_full_year %}
@@ -5,6 +5,7 @@
5
5
  .form-row {
6
6
  margin-top: 0px;
7
7
  margin-bottom: 10px;
8
+ padding-left: 10px;
8
9
  width: 100%;
9
10
  float: left;
10
11
  }
@@ -1,6 +1,11 @@
1
1
  {% init xnote_table_var = "table" %}
2
2
  {% set _xnote_table = globals()[xnote_table_var] %}
3
3
 
4
+
5
+ {% if _xnote_table.action_bar.visible %}
6
+ {% render _xnote_table.action_bar %}
7
+ {% end %}
8
+
4
9
  {% raw _xnote_table.action_bar_html %}
5
10
 
6
11
  <div class="overflow-table-container">
@@ -0,0 +1,2 @@
1
+ {% include common/script/load_select2.html %}
2
+ {% include common/script/load_laydate.html %}
@@ -5,7 +5,7 @@
5
5
  <!-- <a href="{{_server_home}}/system/index" class="link">系统</a> › -->
6
6
  <h3 class="card-title btn-line-height">
7
7
  {% if parent_link %}
8
- <a class="link2" href="{{parent_link.href}}">{{parent_link.text}}</a>
8
+ <a class="link2 path-link" href="{{parent_link.href}}">{{parent_link.text}}</a>
9
9
  <span>/</span>
10
10
  {% end %}
11
11
 
@@ -245,7 +245,7 @@ class FileSystemHandler:
245
245
  # 处理不了,返回所有的数据
246
246
  yield self.read_all(path, blocksize)
247
247
 
248
- def read_all(self, path, blocksize):
248
+ def read_all(self, path, blocksize: int):
249
249
  total_size = os.stat(path).st_size
250
250
  web.header("Content-Length", total_size)
251
251
  with open(path, "rb") as fp:
@@ -255,7 +255,7 @@ class FileSystemHandler:
255
255
  yield block
256
256
  block = fp.read(blocksize)
257
257
 
258
- def read_thumbnail(self, path, blocksize, version="v1"):
258
+ def read_thumbnail(self, path, blocksize: int, version="v1"):
259
259
  # TODO 限制进程数量
260
260
  # 在SAE环境中,pillow处理图片后无法释放内存,改成用子进程处理
261
261
  data = fs_image.create_thumbnail_data(path, version)
@@ -68,7 +68,7 @@ def do_create_thumbnail(path: str, version="v1", debug=False):
68
68
  with subprocess.Popen(args, stdout=subprocess.PIPE) as proc:
69
69
  assert proc.stdout != None
70
70
  buf = proc.stdout.read()
71
- if buf.strip() == "":
71
+ if len(buf.strip()) == 0:
72
72
  return None
73
73
  return base64.b64decode(buf.decode("utf-8"))
74
74
 
@@ -61,8 +61,7 @@ def get_display_name(fpath, parent):
61
61
  return xutils.unquote(path)
62
62
 
63
63
  def get_webpath(fpath):
64
- rpath = xutils.get_relative_path(fpath, xconfig.DATA_DIR)
65
- return "/data/" + rpath
64
+ return fsutil.get_safe_webpath(fpath)
66
65
 
67
66
 
68
67
  def upload_link_by_month(year, month, delta=0):
@@ -132,7 +131,7 @@ def get_auto_file_path(filename: str):
132
131
  # 虽然概率极低,最好还是check下文件名是否重复
133
132
  if os.path.exists(fpath):
134
133
  raise Exception("文件名冲突,请重试")
135
- return os.path.abspath(fpath), get_webpath(fpath)
134
+ return os.path.abspath(fpath)
136
135
 
137
136
 
138
137
  def get_upload_file_path(user, filename, upload_dir="files", rename_conflict=False):
@@ -236,7 +235,8 @@ class UploadHandler:
236
235
  dirs = os.path.dirname(filepath)
237
236
  fsutil.makedirs(dirs)
238
237
  else:
239
- filepath, webpath = get_auto_file_path(filename)
238
+ filepath = get_auto_file_path(filename)
239
+ webpath = get_webpath(filepath)
240
240
 
241
241
  tmp_file = os.path.join(xconfig.FileConfig.tmp_dir, "upload." + filename)
242
242
  ctx.tmp_file = tmp_file
@@ -1,31 +1,3 @@
1
- <script type="text/template" id="msgTagListTpl">
2
- <div class="main-content-bg row">
3
- <div class="row">
4
- <input type="text" class="msg nav-search-input" placeholder="搜索标签"
5
- onkeyup="xnote.action.message.handleTopicSearchKeyUp(event);"/>
6
- <button class="nav-search-btn btn-default">
7
- <i class="fa fa-search"></i>
8
- </button>
9
- </div>
10
-
11
- <div class="card top-offset-1">
12
- <a class="list-item empty-item hide" onclick="xnote.action.message.selectTopic(this);">&lt;无匹配标签&gt;</a>
13
- {{!if itemList.length == 0}}
14
- <a onclick="xnote.action.message.selectTopic(this);" class="list-item topic-item">请输入标签</a>
15
- {{!/if}}
16
- {{!each itemList msg}}
17
- <a onclick="xnote.action.message.selectTopic(this);" class="list-item topic-item">{{!msg.tag_code}}</a>
18
- {{!/each}}
19
- </div>
20
-
21
- <div class="msg-dialog-bottom-bar">
22
- <div class="float-right">
23
- <input type="button" class="send-button btn btn-default"
24
- onclick="xnote.action.message.closeTopicDiloag();" value="关闭">
25
- </div>
26
- </div>
27
- </div>
28
- </script>
29
1
 
30
2
  <script type="text/javascript">
31
3
 
@@ -8,7 +8,6 @@
8
8
  <div class="message-input-box card">
9
9
  <textarea class="col-md-12 input-box" rows=3 autoHeight=true
10
10
  placeholder="{{message_placeholder}}">{{filter_default_content(default_content)}}</textarea>
11
- <input type="file" id="filePicker" class="hide" multiple/>
12
11
 
13
12
  <div class="col-md-12 btn-line-height">
14
13
  {% if show_tag_btn %}
@@ -6,13 +6,16 @@ import xutils
6
6
  import re
7
7
  import logging
8
8
  import typing
9
+ import types
10
+
9
11
  from xnote.core import xconfig, xmanager, xtables, xauth
10
12
 
11
13
  from xutils import dbutil, cacheutil, textutil, Storage, functions
12
14
  from xutils import dateutil
15
+ from xutils.functions import safe_list
13
16
  from xnote.core.xtemplate import T
14
17
  from xnote.service.search_service import SearchHistoryDO, SearchHistoryType, SearchHistoryService
15
- from xutils.db.dbutil_helper import new_from_dict
18
+ from xutils.db.dbutil_helper import new_from_dict, PageBuilder, batch_iter
16
19
  from xnote.service import MsgTagBindService as _MsgTagBindService
17
20
  from xnote.service import TagTypeEnum
18
21
  from .message_model import is_task_tag
@@ -27,11 +30,11 @@ from .message_model import MessageTagEnum, MessageSecondTypeEnum
27
30
  from xnote.service import TagInfoDO
28
31
 
29
32
 
30
- _msg_db = dbutil.get_table("msg_v2")
33
+ _msg_db = dbutil.get_table("msg_v3")
31
34
  _msg_stat_cache = cacheutil.PrefixedCache("msgStat:")
32
35
  _msg_history_db = dbutil.get_table_v2("msg_history")
33
-
34
36
  _debug = False
37
+ _search_batch_size = 200
35
38
 
36
39
  def build_task_index(kw):
37
40
  pass
@@ -175,7 +178,7 @@ def search_message(user_id: int, key: str, offset=0, limit=20, *, search_tags=No
175
178
 
176
179
  words = get_words_from_key(key)
177
180
 
178
- def search_func_default(key, value):
181
+ def search_func_default(key, value:MessageDO):
179
182
  if value.content is None:
180
183
  return False
181
184
  if no_tag is True and has_tag_fast(value.content):
@@ -198,13 +201,13 @@ def search_message(user_id: int, key: str, offset=0, limit=20, *, search_tags=No
198
201
  if count_only:
199
202
  chatlist = []
200
203
  else:
201
- chatlist = _msg_db.list(filter_func=search_func, offset=offset,
202
- limit=limit, reverse=True, user_name=str(user_id))
204
+ chatlist = MessageDao.list_with_filter(filter_func=search_func, offset=offset,
205
+ limit=limit, user_id = user_id, tag_list=safe_list(search_tags), order="ctime desc")
203
206
  # 按照创建时间倒排 (按日期补充的随手记的key不是按时间顺序的)
204
207
 
205
208
  chatlist = MessageDO.from_dict_list(chatlist)
206
209
  chatlist.sort(key = lambda x:x.change_time, reverse=True)
207
- amount = _msg_db.count(filter_func=search_func, user_name=str(user_id))
210
+ amount = MessageDao.count_with_filter(filter_func=search_func, user_id=user_id, tag_list=safe_list(search_tags))
208
211
  return chatlist, amount
209
212
 
210
213
 
@@ -217,12 +220,12 @@ def search_message_by_user_tag(user_id=0, key="", offset=0, limit=20, second_typ
217
220
  return MessageDao.batch_get_by_ids(user_id, msg_ids), count
218
221
 
219
222
 
220
- def check_before_delete(id):
223
+ def check_before_delete(id: str):
221
224
  if not id.startswith(VALID_MESSAGE_PREFIX_TUPLE):
222
225
  raise Exception("[delete] invalid message id:%s" % id)
223
226
 
224
227
 
225
- def delete_message_by_id(id):
228
+ def delete_message_by_id(id: str):
226
229
  # type: (str) -> None
227
230
  check_before_delete(id)
228
231
 
@@ -251,17 +254,25 @@ def kv_count_message(user: str, status):
251
254
  def count_message(user, status):
252
255
  return kv_count_message(user, status)
253
256
 
254
- def get_message_by_key(full_key, user_name=""):
257
+ def get_message_by_key(full_key:str, user_name=""):
255
258
  if full_key == None:
256
259
  return None
257
260
  if not full_key.startswith(_msg_db.prefix):
258
261
  return None
262
+ int_id = int(_msg_db._get_id_from_key(full_key))
263
+ index = MsgIndexDao.get_by_id(int_id)
264
+ if index == None:
265
+ return None
266
+
259
267
  value = _msg_db.get_by_key(full_key)
260
268
  if value != None:
261
269
  value = MessageDO.from_dict(value)
262
270
  value.id = full_key
271
+ value.update_index(index)
263
272
  if user_name != "" and user_name != value.user:
264
273
  return None
274
+ else:
275
+ value = MessageDO.from_index(index)
265
276
  return value
266
277
 
267
278
  get_message_by_id = get_message_by_key
@@ -591,7 +602,7 @@ class MsgIndexDao:
591
602
  return cls.db.count(where=where, vars=vars)
592
603
 
593
604
  @classmethod
594
- def list(cls, user_id=0, tag="", date_prefix="", date_start="", date_end="", offset=0, limit=10, order="change_time desc"):
605
+ def list(cls, user_id=0, tag="", tag_list=[], date_prefix="", date_start="", date_end="", offset=0, limit=10, order="change_time desc"):
595
606
  where = "1=1"
596
607
  if user_id != 0:
597
608
  where += " AND user_id=$user_id"
@@ -603,8 +614,10 @@ class MsgIndexDao:
603
614
  where += " AND date >= $date_start"
604
615
  if date_end != "":
605
616
  where += " AND date < $date_end"
617
+ if len(tag_list) > 0:
618
+ where += " AND tag in $tag_list"
606
619
 
607
- vars = dict(user_id=user_id, tag=tag, date_prefix=date_prefix+"%", date_start=date_start, date_end=date_end)
620
+ vars = dict(user_id=user_id, tag=tag, date_prefix=date_prefix+"%", date_start=date_start, date_end=date_end, tag_list=tag_list)
608
621
  result = cls.db.select(where=where, vars=vars,offset=offset,limit=limit,order=order)
609
622
  return MsgIndex.from_dict_list(result)
610
623
 
@@ -648,7 +661,7 @@ class MsgIndexDao:
648
661
  def iter_batch(cls, user_id=0, batch_size=20):
649
662
  where = ""
650
663
  if user_id != 0:
651
- where = "user_id=$user_id"
664
+ where = " AND user_id=$user_id"
652
665
  for batch in cls.db.iter_batch(batch_size=batch_size, where=where, vars=dict(user_id=user_id)):
653
666
  yield MsgIndex.from_dict_list(batch)
654
667
 
@@ -741,7 +754,7 @@ class MsgTagInfoDao:
741
754
  record.user_id = user_id
742
755
  record.tag_code = content
743
756
  new_id = cls.db.insert(**record.to_save_dict())
744
- record.tag_id = int(new_id)
757
+ record.tag_id = int(new_id) # type: ignore
745
758
  return record
746
759
 
747
760
  @classmethod
@@ -777,6 +790,23 @@ class MsgTagBindDao:
777
790
  class MessageDao:
778
791
  """message的主数据接口,使用KV存储"""
779
792
 
793
+ @staticmethod
794
+ def get_by_int_id(int_id: int, user_id=0):
795
+ index = MsgIndexDao.get_by_id(int_id)
796
+ if index == None:
797
+ return None
798
+
799
+ value = _msg_db.get_by_id(int_id)
800
+ if value != None:
801
+ value = MessageDO.from_dict(value)
802
+ value.id = f"msg_v3:{int_id}"
803
+ value.update_index(index)
804
+ if user_id != 0 and user_id != value.user_id:
805
+ return None
806
+ else:
807
+ value = MessageDO.from_index(index)
808
+ return value
809
+
780
810
  @staticmethod
781
811
  def get_by_id(full_key):
782
812
  return get_message_by_key(full_key)
@@ -789,7 +819,7 @@ class MessageDao:
789
819
  def batch_get_by_ids(user_id=0, ids=[]):
790
820
  key_list = []
791
821
  for item in ids:
792
- key_list.append(_msg_db._build_key(str(user_id), str(item)))
822
+ key_list.append(_msg_db._build_key(str(item)))
793
823
  return MessageDao.batch_get_by_keys(key_list)
794
824
 
795
825
  @staticmethod
@@ -838,6 +868,19 @@ class MessageDao:
838
868
  def delete_by_key(full_key):
839
869
  return delete_message_by_id(full_key)
840
870
 
871
+ @classmethod
872
+ def delete_by_int_id(cls, int_id=0):
873
+ old = cls.get_by_int_id(int_id)
874
+
875
+ if old == None:
876
+ return
877
+ _msg_db.delete_by_id(int_id)
878
+ MsgIndexDao.delete_by_id(int_id)
879
+
880
+ xmanager.fire("message.remove", Storage(id=int_id))
881
+ execute_after_delete(old)
882
+
883
+
841
884
  @staticmethod
842
885
  def add_search_history(user, search_key, cost_time=0):
843
886
  return add_search_history(user, search_key, cost_time)
@@ -864,7 +907,7 @@ class MessageDao:
864
907
  for index in index_list:
865
908
  id_list.append(str(index.id))
866
909
 
867
- dict_result = _msg_db.batch_get_by_id(id_list, user_name=str(user_id))
910
+ dict_result = _msg_db.batch_get_by_id(id_list)
868
911
  result = []
869
912
  for index in index_list:
870
913
  msg = dict_result.get(str(index.id))
@@ -872,6 +915,9 @@ class MessageDao:
872
915
  new_msg = MessageDO.from_dict(msg)
873
916
  new_msg.change_time = index.change_time
874
917
  result.append(new_msg)
918
+ else:
919
+ new_msg = MessageDO.from_index(index)
920
+ result.append(new_msg)
875
921
  return result
876
922
 
877
923
  @classmethod
@@ -879,10 +925,36 @@ class MessageDao:
879
925
  for index_batch in MsgIndexDao.iter_batch():
880
926
  keys = []
881
927
  for index in index_batch:
882
- keys.append(_msg_db._build_key(str(index.user_id), str(index.id)))
928
+ keys.append(_msg_db._build_key(str(index.id)))
883
929
 
884
930
  yield from cls.batch_get_by_keys(keys)
885
931
 
932
+ @classmethod
933
+ def list_with_filter(cls, offset=0, limit=20, user_id=0, filter_func=None, tag_list=[], order="ctime desc"):
934
+ assert isinstance(filter_func, types.FunctionType)
935
+ page = PageBuilder(offset=offset, limit=limit)
936
+ index_list = MsgIndexDao.list(user_id=user_id, limit=10000, order=order, tag_list=tag_list)
937
+ for item_batch in batch_iter(index_list, batch_size=_search_batch_size):
938
+ msg_list = MessageDao.batch_get_by_index_list(item_batch)
939
+ for msg_item in msg_list:
940
+ if filter_func(msg_item._key, msg_item):
941
+ page.add_record(msg_item)
942
+ if page.reached_limit:
943
+ return page.records
944
+ return page.records
945
+
946
+ @classmethod
947
+ def count_with_filter(cls, user_id=0, filter_func=None, tag_list=[]):
948
+ assert isinstance(filter_func, types.FunctionType)
949
+ amount = 0
950
+ index_list = MsgIndexDao.list(user_id=user_id, limit=10000, tag_list=tag_list)
951
+ for item_batch in batch_iter(index_list, batch_size=_search_batch_size):
952
+ msg_list = MessageDao.batch_get_by_index_list(item_batch)
953
+ for msg_item in msg_list:
954
+ if filter_func(msg_item._key, msg_item):
955
+ amount += 1
956
+ return amount
957
+
886
958
  xutils.register_func("message.create", create_message)
887
959
  xutils.register_func("message.update", update_message)
888
960
  xutils.register_func("message.search", search_message)
@@ -402,14 +402,14 @@ class TouchAjaxHandler:
402
402
  class DeleteAjaxHandler:
403
403
 
404
404
  def delete_msg(self, msg: msg_dao.MessageDO):
405
- if msg.user != xauth.current_name():
405
+ if msg.user_id != xauth.current_user_id():
406
406
  return webutil.FailedResult(code="fail", message="no permission")
407
407
 
408
408
  # 先保存历史
409
409
  MessageDao.add_history(msg)
410
410
 
411
411
  # 删除并刷新统计信息
412
- MessageDao.delete_by_key(msg.id)
412
+ MessageDao.delete_by_int_id(msg.int_id)
413
413
  if msg.tag == "done" and msg.ref != None:
414
414
  MessageDao.delete_by_key(msg.ref)
415
415
 
@@ -427,12 +427,12 @@ class DeleteAjaxHandler:
427
427
 
428
428
  @xauth.login_required()
429
429
  def POST(self):
430
- id = xutils.get_argument_str("id")
431
- if id == "":
430
+ int_id = xutils.get_argument_int("id")
431
+ if int_id == 0:
432
432
  return failure(message="id为空")
433
433
 
434
434
  try:
435
- msg = MessageDao.get_by_id(id)
435
+ msg = MessageDao.get_by_int_id(int_id)
436
436
  if msg != None:
437
437
  return self.delete_msg(msg)
438
438
  return webutil.FailedResult(message="数据不存在")
@@ -584,9 +584,6 @@ class MessagePageHandler:
584
584
  if tag in ("date", "log.date"):
585
585
  return self.do_view_by_date(date)
586
586
 
587
- if tag == "key" and op == "select":
588
- return self.do_select_key()
589
-
590
587
  if tag == "api.tag_list":
591
588
  return self.get_tag_list()
592
589
 
@@ -601,16 +598,6 @@ class MessagePageHandler:
601
598
 
602
599
  return LogPageHandler().do_get()
603
600
 
604
- def do_select_key(self):
605
- user_name = xauth.current_name()
606
- offset = 0
607
- msg_list, amount = dao.list_by_tag(
608
- user_name, "key", offset, MAX_LIST_LIMIT)
609
-
610
- return xtemplate.render("message/page/message_tag_select.html",
611
- msg_list=msg_list,
612
- show_nav=False)
613
-
614
601
  def get_tag_list(self):
615
602
  return message_tag.get_tag_list()
616
603