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.
- {xnote_web-0.2.2 → xnote_web-0.2.4}/PKG-INFO +2 -2
- {xnote_web-0.2.2 → xnote_web-0.2.4}/README.md +1 -1
- {xnote_web-0.2.2 → xnote_web-0.2.4}/config/file/preview.properties +2 -1
- {xnote_web-0.2.2 → xnote_web-0.2.4}/config/lang/zh.properties +1 -1
- xnote_web-0.2.4/config/version.txt +1 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/code_style.md +2 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/api/report_weather.py +6 -7
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/base.html +2 -1
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/date/contribution_calendar.html +5 -43
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/date/month_picker.html +5 -2
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/form/form.html +1 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/table/table.html +5 -0
- xnote_web-0.2.4/handlers/common/table/table_script.html +2 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/title/base_title.html +1 -1
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/fs.py +2 -2
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/fs_image.py +1 -1
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/fs_upload.py +4 -4
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/component/message_edit.html +0 -28
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/component/message_input.html +0 -1
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/dao.py +89 -17
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/message.py +5 -18
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/message_model.py +37 -12
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/message_tag.py +26 -1
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/message_utils.py +12 -8
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/page/message_edit_dialog.html +0 -1
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/page/message_list_ajax.html +1 -1
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/page/message_tag_ajax.html +10 -12
- xnote_web-0.2.4/handlers/message/page/message_tag_search_dialog.html +27 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/comment.py +27 -4
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/note_ext_info.html +1 -1
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/dao_comment.py +21 -7
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/html_importer.py +66 -40
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/note_stat.py +41 -10
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/comment/comment.html +18 -2
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/comment/comment_edit_dialog.html +4 -1
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/comment/comment_list_ajax.html +20 -6
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/html_importer.html +1 -1
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plugin/base/base_plugin_title.html +1 -1
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plugin/dao.py +10 -8
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plugin/header/plugin_header_normal.html +1 -1
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plugin/models.py +11 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plugin/plugin_config.py +1 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plugin/plugin_page.py +14 -22
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/search/pydoc.py +1 -1
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/backup.py +9 -6
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/cache_admin.py +7 -4
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/clipboard.py +30 -78
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/component/db_kv_nav.html +1 -1
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/component/db_nav.html +3 -7
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/crontab.py +4 -3
- xnote_web-0.2.4/handlers/system/dao_cron.py +19 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/db_admin.py +13 -4
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/db/db_index_v2.html +1 -1
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/db/db_meta.html +0 -11
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/system_info.html +3 -8
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/system_sync.html +1 -6
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/system_sync_cluster_info.html +1 -1
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/system_sync_follower_view.html +1 -1
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/system_boot.py +3 -5
- xnote_web-0.2.2/handlers/system/system.py → xnote_web-0.2.4/handlers/system/system_index.py +10 -2
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/system_info.py +9 -2
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/system_sync/node_follower.py +0 -7
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/system_sync/system_sync_controller.py +5 -2
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/system_sync/system_sync_proxy.py +0 -6
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/test/component/example_nav.html +1 -1
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/test/example_handler.py +94 -5
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/test/test_dbutil_handler.py +4 -3
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/barcode.html +2 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/hash.html +2 -1
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/hex.html +8 -6
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/qrcode.html +8 -3
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/shell.html +23 -29
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/urlcoder.html +1 -1
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/user/login.py +6 -5
- xnote_web-0.2.4/handlers/user/logout.py +20 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/user/user.py +35 -5
- {xnote_web-0.2.2 → xnote_web-0.2.4}/setup.py +1 -1
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/app.build.css +118 -98
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/base/common-form.css +13 -1
- xnote_web-0.2.4/static/css/base/common-link.css +71 -0
- xnote_web-0.2.4/static/css/base/common-list.css +39 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/base/common.css +0 -98
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/base/reset.css +1 -3
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/common-card.css +4 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/note.css +0 -1
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/app.build.js +56 -2
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/marked-ext.js +3 -1
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/message/message.js +9 -15
- xnote_web-0.2.4/static/js/xnote-ui/x-table.js +55 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/xnote-ui/x-upload.js +2 -2
- {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_app.py +2 -2
- xnote_web-0.2.4/tests/test_base_note.py +44 -0
- xnote_web-0.2.4/tests/test_comment.py +139 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_message.py +11 -7
- {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_note.py +1 -117
- xnote_web-0.2.4/tests/test_plugin.py +34 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_user.py +11 -2
- {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_xutils.py +2 -2
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/core/models.py +19 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/core/xauth.py +104 -66
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/core/xconfig.py +11 -2
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/core/xmanager.py +15 -8
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/core/xnote_app.py +3 -4
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/core/xnote_code_builder.py +3 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/core/xnote_event.py +7 -1
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/core/xtables.py +24 -1
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/core/xtables_kv.py +11 -6
- xnote_web-0.2.4/xnote/plugin/__init__.py +5 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/plugin/base.py +4 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/plugin/calendar.py +16 -6
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/plugin/component.py +27 -1
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/plugin/container.py +5 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/plugin/form.py +17 -3
- xnote_web-0.2.4/xnote/plugin/itemlist.py +79 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/plugin/plugin.py +7 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/plugin/sidebar.py +4 -1
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/plugin/tab.py +4 -4
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/plugin/table.py +1 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/plugin/table_plugin.py +6 -1
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/service/comment_service.py +12 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/service/tag_service.py +8 -1
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_010.py +1 -1
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_020.py +11 -1
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_web.egg-info/PKG-INFO +2 -2
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_web.egg-info/SOURCES.txt +11 -5
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/__init__.py +2 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/dbutil_base.py +35 -25
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/dbutil_cache.py +1 -1
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/dbutil_helper.py +4 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/dbutil_table.py +10 -8
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/dbutil_table_v2.py +2 -2
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/encode.py +12 -3
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/exeutil.py +1 -1
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/fsutil.py +43 -37
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/functions.py +22 -2
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/imports.py +9 -28
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/interfaces.py +2 -1
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/netutil.py +2 -0
- xnote_web-0.2.4/xutils/number_utils.py +41 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/sqldb/table_manager.py +46 -20
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/sqldb/table_proxy.py +2 -2
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/text_parser.py +1 -1
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/tornado/escape.py +13 -20
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/tornado/template.py +13 -4
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/tornado/util.py +8 -25
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/webutil.py +12 -9
- xnote_web-0.2.2/config/version.txt +0 -1
- xnote_web-0.2.2/handlers/common/table/table_script.html +0 -56
- xnote_web-0.2.2/handlers/message/page/message_tag_select.html +0 -96
- xnote_web-0.2.2/handlers/system/dao_cron.py +0 -31
- xnote_web-0.2.2/handlers/user/logout.py +0 -15
- xnote_web-0.2.2/handlers/user/page/userinfo.html +0 -63
- xnote_web-0.2.2/xnote/plugin/__init__.py +0 -5
- xnote_web-0.2.2/xutils/numutil.py +0 -23
- {xnote_web-0.2.2 → xnote_web-0.2.4}/COPYING +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/MANIFEST.in +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/config/boot/boot.default.properties +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/config/boot/boot.docker.properties +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/config/boot/boot.min.properties +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/config/boot/boot.sae.properties +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/config/boot/boot.sqlite.properties +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/config/boot/boot.test.properties +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/config/cron/cron.json +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/config/file/audio.properties +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/config/file/code.properties +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/config/file/image.properties +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/config/file/mime-types.properties +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/config/file/text.properties +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/config/file/video.properties +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/config/file/zip.properties +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/config/lang/en.properties +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/config/note/category.ddc.properties +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/config/note/category.properties +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/config/note/smart_group.ini +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/config/plugin/form_plugin.tpl.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/config/plugin/plugin.tpl.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/config/plugin/plugins.ini +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/config/requirements.full.txt +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/config/requirements.min.txt +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/config/requirements.mysql.txt +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/config/requirements.test.txt +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/config/requirements.txt +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/config/requirements.win.txt +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/config/user/invalid_names.list +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/config/user/user_config.default.properties +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/architecture.md +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/changelog.md +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/code_style_css.md +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/commands.md +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/database.md +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/db_migrate.md +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/plugins.md +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/architecture.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/architecture.svg +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/architecture_2.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/command_listdir.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/command_rmfolder.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/screenshot01.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/screenshot02.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/screenshot03.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/task_web.PNG +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v1.2_editor.PNG +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v1.2_list.PNG +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v1.2_mobile.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v1.2_search.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v1.3_desktop01.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v1.4.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v1.5.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v2.0.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v2.1_home.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v2.2_20190331.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v2.3_20190411.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v2.3_home.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v2.4_home.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v2.4_home2.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v2.5_20200502.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v2.5_home.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v2.5_recent.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v2.6_home.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v2.7_home.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v2.8_home.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v2.9.2_home.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote_v20191111.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/screenshots/xnote/346/236/266/346/236/204.png" +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/search_extension.md +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/docs/upload_to_pip.md +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/__init__.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/admin/__init__.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/admin/admin_test.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/admin/func_admin.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/admin/job_admin.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/admin/repair_admin.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/api/__init__.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/api/alarm.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/api/check_network.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/api/encode.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/api/getip.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/api/http_headers.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/api/ipv6.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/api/readbook.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/api/report_time.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/api/tts.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/base.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/code/__init__.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/code/code_edit.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/code/code_lines.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/code/code_search.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/code/page/code_edit.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/code/page/code_lines.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/code/page/code_search.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/code/page/preview.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/code/page/wiki_edit.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/code/preview.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/README.md +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/back.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/base/README.md +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/base/pagination.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/base_bottom.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/base_footer.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/base_head.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/base_nav.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/base_simple.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/base_title.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/button/back_button.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/hook/message_search_btn_hook.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/hook/search_box_hook.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/layout/base_layout.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/layout/wide_left.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/mod_notice.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/nav/base_nav_left.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/nav/base_nav_project.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/nav/base_nav_top.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/nav/content_nav.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/page/notfound.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/pagination.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/script/debug_script.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/script/geo_location.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/script/image_fix_1.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/script/image_fix_2.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/script/load_codemirror.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/script/load_jexcel.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/script/load_laydate.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/script/load_layui.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/script/load_markdown.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/script/load_select2.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/script/load_vue.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/script/require_init.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/script/safe_script.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/script/textarea_script.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/script/translate_script.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/search/search_box.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/search/search_mobile.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/search_box.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/sidebar/app_index.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/sidebar/default.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/table/info_table.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/table/table_v2.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/text/empty_text.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/theme/sidebar.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/theme/sidebar_left.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/common/wide_base.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/cron/__init__.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/cron/cron_stats.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/cron/diskclean.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/dict/__init__.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/dict/dict.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/dict/dict_dao.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/dict/dict_search.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/dict/models.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/dict/page/dict_add.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/dict/page/dict_edit.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/dict/page/dict_edit_base.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/dict/page/dict_list.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/dict/page/dict_sidebar.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/dict/page/dict_type_tab.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/dict/page/dict_update.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/dict/page/relevant_list.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/error.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/__init__.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/component/clipboard-dialog.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/component/css/fs_css.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/component/filelist_gallery.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/component/filelist_simple.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/component/fs_sidebar.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/component/fs_title.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/component/move_file_dialog.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/component/options/fs_options.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/component/options/fs_options_buttons.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/component/options/fs_options_buttons.mobile.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/component/options_css.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/component/plugins-dialog.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/component/script/file_op_script.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/fs_add.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/fs_api.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/fs_cache.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/fs_checker.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/fs_find.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/fs_helper.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/fs_hex.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/fs_index.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/fs_mode.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/fs_plugins.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/fs_preview.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/fs_text.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/mod_aside.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/mod_fs_upload.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/page/fs.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/page/fs_bookmark.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/page/fs_grid.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/page/fs_index.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/page/fs_not_readable.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/page/fs_plugins.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/page/fs_shell.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/page/fs_sidebar.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/page/fs_text.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/page/fs_text_v1.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/fs/page/fs_upload.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/index.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/index.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/__init__.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/card/msg_edit_card.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/component/message_date_right.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/component/message_event.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/component/message_header.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/component/message_keyword_info.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/component/message_layout.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/component/message_sub_link.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/component/message_tab.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/component/message_tab_log.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/component/message_tag_list.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/component/message_title.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/component/right/tags.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/component/script/tab_script.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/component/select_topic_dialog.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/component/show_topic_dialog.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/component/tag/orderby_tab.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/component/tag/tag_left.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/message_date.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/message_log.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/message_month_tags.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/message_search.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/message_task.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/page/message.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/page/message_calendar.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/page/message_list_by_day.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/page/message_list_content.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/page/message_list_view.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/page/message_search.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/page/message_search_head.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/page/message_tag_system.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/page/task_done_index.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/page/task_index.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/page/task_tab.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/page/task_tag_index.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/message/service.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/mod_fs_path.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/mod_pagenation.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/__init__.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/ajax/edit_symbol_dialog.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/ajax/group_detail_dialog.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/ajax/group_option_dialog.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/ajax/option_dialog.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/ajax/select_note_dialog.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/ajax/share_group_dialog.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/ajax/share_note_dialog.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/card/README.md +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/card/hot_notes.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/card/note_contents_left.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/card/note_date_picker.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/card/note_groups.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/card/note_types.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/card/plan_detail.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/card/plan_note_card.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/card/plan_sidebar.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/card/recent_created_notes.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/card/recent_update_groups.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/card/recent_update_notes.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/card/sticky_notes.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/card/task_memo.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/attribute/note_category.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/batch_move.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/button/fixed_bottom_buttons.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/button/fixed_buttons.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/create_note_header.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/css/edit_css.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/css/gallery_css.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/detail_left.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/editor/editor_default_vars.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/editor/gallery.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/editor/markdown.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/editor/markdown_edit.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/editor/markdown_edit.mobile.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/editor/post.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/editor/table_lang.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/editor/table_myexcel.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/filter/group_tag_filter.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/filter/note_tag_filter.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/filter/type_filter.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/group_select.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/group_select_tree.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/group_special_folder.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/header/common_header.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/header/group_detail_header.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/mobile/group_category_switch.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/mod_aside.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/note_list_component.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/note_list_expand.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/note_list_item_tags.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/note_list_no_card.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/note_orderby.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/note_path.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/option/create_option.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/option/group_option.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/option/group_option_dropdown.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/option/note_dropdown.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/root_dropdown.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/script/all_script.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/script/create_script.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/script/delete_script.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/script/group_select_script.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/script/note_copy_script.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/script/note_option_script.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/script/note_template.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/script/orderby_script.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/script/rename_script.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/script/share_script.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/script/status_script.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/script/tag_manage_script.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/script/tag_script.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/share_dialog.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/sidebar/group_list_sidebar.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/sidebar/group_manage_sidebar.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/sidebar/group_sidebar.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/sidebar/markdown_edit_sidebar.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/sidebar/note_sidebar.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/sidebar/share_sidebar.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/sort/note_sort_tab.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/tab/group_list_nav.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/tab/group_list_nav_desktop.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/tab/group_list_nav_mobile.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/timeline/timeline_body.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/timeline/timeline_create_option.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/view_css.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/view_footer.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/view_header.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/view_header_alias.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/component/view_header_tag.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/constant.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/dao.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/dao_api.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/dao_book.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/dao_category.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/dao_delete.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/dao_draft.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/dao_edit.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/dao_log.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/dao_read.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/dao_relation.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/dao_share.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/dao_tag.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/models.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/note_api.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/note_calendar.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/note_category.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/note_checklist.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/note_edit.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/note_fix.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/note_group.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/note_helper.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/note_relation.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/note_service.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/note_tag.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/note_tag_manage.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/note_timeline.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/note_view.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/note_workspace.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/batch/gallery_manage.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/batch/group_manage.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/batch/group_manage_category.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/batch/note_manage.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/category.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/comment/comment_user_page.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/create.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/detail/checklist_detail.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/detail/form_detail.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/detail/group_detail.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/detail/group_detail_body.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/detail/group_detail_filter.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/detail/note_detail.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/detail/table_detail.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/group_list.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/history_list.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/index/note_index.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/index/note_workspace.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/index/note_workspace.mobile.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/list_by_date.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/note_calendar.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/note_default.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/note_list.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/note_recent.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/note_relation.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/note_relation_row.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/note_share.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/note_tools.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/old/category_old.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/old/create_log.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/old/group_list_archived.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/old/list_by_date_old.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/old/notice.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/old/project_list_old.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/old/upload_file.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/print.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/taginfo.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/taglist.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/taglist_row.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/taglist_subtab.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/taglist_tab.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/note/page/timeline/timeline.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plan/__init__.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plan/dao.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plan/page/month_plan.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plan/plan.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plugin/__init__.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plugin/base/base_form_plugin.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plugin/base/base_plugin.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plugin/base/base_plugin_body.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plugin/header/plugin_category.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plugin/header/plugin_header_note.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plugin/page/grid.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plugin/page/plugins_v1.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plugin/page/plugins_v2.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plugin/page/plugins_v3.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plugin/plugin_create.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plugin/plugin_upload.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plugin/plugin_util.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/plugin/service.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/search/__init__.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/search/ajax/search_dialog.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/search/ajax/search_dialog_detail.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/search/api.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/search/calc.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/search/component/search_pagination.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/search/component/search_sidebar.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/search/component/search_tab.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/search/mute.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/search/note.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/search/page/search_history.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/search/page/search_result.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/search/reminder.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/search/scripts.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/search/search.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/search/search.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/search/search_aside.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/search/search_rules.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/search/tools.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/settings/__init__.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/settings/model.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/settings/page/properties.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/settings/page/settings.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/settings/page/settings_admin.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/settings/page/settings_note.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/settings/page/settings_search.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/settings/page/settings_sidebar.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/settings/page/settings_tab.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/settings/settings.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/__init__.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/command.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/component/admin_nav.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/component/system_css.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/component/system_log_tab.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/component/thread_nav.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/db_index.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/db_migrate_tools.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/db_refresh.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/db_shell.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/db_upgrade.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/handler_profile.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/mod_aside.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/network_profile.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/crontab_edit.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/db/db_admin.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/db/db_backup.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/db/db_index.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/db/db_struct.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/db/sqldb_detail.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/db/sqldb_list.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/history.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/module_detail.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/module_list.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/script.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/sqlite.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/system_admin.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/system_index.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/system_info_list.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/system_info_text.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/system_sync_leader.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/page/template_cache.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/script.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/stats.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/system_config.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/system_event.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/system_log.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/system_module.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/system_sync/config.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/system_sync/dao.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/system_sync/models.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/system_sync/node_base.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/system_sync/node_leader.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/system_sync/system_sync_indexer.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/system_todo.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/template_cache.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/system/thread_info.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/test/__init__.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/test/component/example_nav_tab.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/test/exception.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/test/page/example_btn.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/test/page/example_dialog.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/test/page/example_dropdown.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/test/page/example_hammer.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/test/page/example_index.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/test/page/example_tab.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/test/page/example_tag.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/test/page/example_text.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/test/test_handler.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/__init__.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/base64.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/browser_info.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/camera.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/chat_demo.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/code_template.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/color.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/datetime.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/iframe_viewer.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/img2gray.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/img_merge.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/img_split.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/layui_test.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/multi_win.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/notebook.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/notebook.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/port_scanner.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/random_string.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/responsive.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/runjs.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/search_compare.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/speech_recognition.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/tcc.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/terminal.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/text_convert.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/text_diff.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/text_set.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/text_tab.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/tools.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/tts.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/vue_test.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/tools/webuploader.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/user/__init__.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/user/component/user_script.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/user/dao.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/user/page/change_password.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/user/page/login.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/user/page/user.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/user/page/user_manage.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/user/page/user_op_log.html +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/webdav/__init__.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/handlers/webdav/webdav.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/__init__.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/html2text.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/leveldb-x64.dll +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/leveldb.dll +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/leveldbpy.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/smallseg.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/__init__.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/application.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/browser.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/contrib/__init__.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/contrib/template.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/db.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/debugerror.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/form.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/http.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/httpserver.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/net.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/py3helpers.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/session.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/template.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/test.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/utils.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/webapi.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/webopenid.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/wsgi.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/wsgiserver/LICENSE.txt +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/wsgiserver/__init__.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/wsgiserver/ssl_builtin.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/wsgiserver/ssl_pyopenssl.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/wsgiserver/wsgiserver2.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/web/wsgiserver/wsgiserver3.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/lib/wget.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/setup.cfg +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/__init__.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/audio/todo_done.mp3 +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/app.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/base/common-button.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/base/common-dialog.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/base/common-dropdown.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/base/common-icon.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/base/common-layout.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/base/common-markdown.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/base/common-mobile.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/base/common-page.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/base/common-photo.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/base/common-tab.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/base/common-table.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/base/common-tag.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/base/layout-second-nav.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/base/reset-wide.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/common-left.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/common-react.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/font-awesome.min.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/message.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/plugins.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/search.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/timeline.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/css/todo.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/favicon.ico +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/favicon.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/fonts/fontawesome-webfont.woff +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/fonts/fontawesome-webfont.woff2 +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/checked.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/file.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/file2.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/folder.gif +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/folder2.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/folder3.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icon_application.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icon_application.svg +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icon_csv.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icon_dict.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icon_dict.svg +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icon_folder_settings.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icon_recent.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icon_recent.svg +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icon_right.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icon_script.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icon_script.svg +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icon_search.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icon_search.svg +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icon_settings_applications.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icon_settings_applications.svg +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icon_shell.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icon_shell.svg +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icon_txt.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icons/icon_barcode.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icons/icon_game.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icons/icon_network.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/image/icons/icon_work.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/Lexer.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/admin.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/app.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/autocss.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/base/ajax.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/base/array.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/base/datetime.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/base/jq-ext.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/base/misc.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/base/string.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/base/url.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/codemirror-addon/xnote-search.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/colors.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/components/date-picker.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/console.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/editor-csv.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/editor.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/fs/fs.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/note.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/old/TagEditor.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/old/fileEditor.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/plan/plan.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/plugin/plugin.form.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/upload.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/utils.build.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/xnote-ui/layer.photos.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/xnote-ui/x-audio.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/xnote-ui/x-core.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/xnote-ui/x-device.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/xnote-ui/x-dialog.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/xnote-ui/x-dropdown.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/xnote-ui/x-event.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/xnote-ui/x-ext.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/xnote-ui/x-init.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/xnote-ui/x-layout.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/xnote-ui/x-photo.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/xnote-ui/x-tab.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/xnote-ui/x-template.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/js/xnote-ui/x-url.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/JsBarcode/JsBarcode.all.min.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/art-template/template-web-4.13.2.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/base64.js/base64.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/bootstrap/bootstrap-3.3.5.min.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/clipboard/clipboard-2.0.4.min.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/5.41.0/codemirror.min.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/5.41.0/codemirror.min.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/5.65.12/codemirror.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/5.65.12/codemirror.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/addon/dialog/dialog.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/addon/dialog/dialog.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/addon/hint/anyword-hint.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/addon/hint/css-hint.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/addon/hint/html-hint.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/addon/hint/javascript-hint.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/addon/hint/show-hint.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/addon/hint/show-hint.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/addon/hint/sql-hint.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/addon/hint/xml-hint.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/addon/search/jump-to-line.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/addon/search/search.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/addon/search/searchcursor.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/codemirror.min.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/codemirror.min.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/keymap/sublime.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/mode/clike/clike.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/mode/css.min.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/mode/javascript.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/mode/markdown.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/mode/php.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/mode/properties.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/mode/python.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/mode/shell.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/mode/sql.min.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/theme/eclipse.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/theme/monokai.min.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/codemirror/theme/xq-light.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/csv.js/csv.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/d3/d3-v3.5.17.min.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/exif-js/exif.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/font-awesome-4.7.0/HELP-US-OUT.txt +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/font-awesome-4.7.0/css/font-awesome.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/font-awesome-4.7.0/css/font-awesome.min.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/font-awesome-4.7.0/fonts/FontAwesome.otf +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/font-awesome-4.7.0/fonts/fontawesome-webfont.eot +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/font-awesome-4.7.0/fonts/fontawesome-webfont.svg +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/font-awesome-4.7.0/fonts/fontawesome-webfont.ttf +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/font-awesome-4.7.0/fonts/fontawesome-webfont.woff +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/font-awesome-4.7.0/fonts/fontawesome-webfont.woff2 +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/highlight.js/11.6.0/highlight.min.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/highlight.js/11.6.0/styles/default.min.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/highlight.js/11.7.0/styles/a11y-dark.min.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jexcel/2.0.2/jexcel.min.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jexcel/2.0.2/jquery.jcalendar.min.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jexcel/2.0.2/jquery.jcalendar.min.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jexcel/2.0.2/jquery.jdropdown.min.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jexcel/2.0.2/jquery.jdropdown.min.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jexcel/2.0.2/jquery.jexcel.min.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jexcel/2.0.2/jquery.jexcel.min.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jquery/jquery-1.12.4.min.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jquery-url-parser/purl.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jquery-url-parser/purl.min.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jquery.qrcode/jquery.qrcode.min.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jquery.terminal/dterm.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jquery.terminal/jquery.terminal-1.3.1.min.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jquery.terminal/jquery.terminal-1.3.1.min.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jsdiff/diff.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jspreadsheet-ce-4.6.0/README.md +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jspreadsheet-ce-4.6.0/WEBCOMPONENT.md +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jspreadsheet-ce-4.6.0/deps/jsuites.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jspreadsheet-ce-4.6.0/deps/jsuites.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jspreadsheet-ce-4.6.0/dist/jexcel.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jspreadsheet-ce-4.6.0/dist/jexcel.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jspreadsheet-ce-4.6.0/dist/jexcel.theme.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jspreadsheet-ce-4.6.0/docker-compose.yml +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jspreadsheet-ce-4.6.0/lang/de_DE.json +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jspreadsheet-ce-4.6.0/lang/en_GB.json +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jspreadsheet-ce-4.6.0/lang/fr_FR.json +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jspreadsheet-ce-4.6.0/lang/it_IT.json +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jspreadsheet-ce-4.6.0/lang/pt_BR.json +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jspreadsheet-ce-4.6.0/lang/zh_CN.json +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jspreadsheet-ce-4.6.0/package.json +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/jspreadsheet-ce-4.6.0/webcomponent-spreadsheet.md +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layDate-v5.0.9/laydate.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layDate-v5.0.9/theme/default/font/iconfont.eot +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layDate-v5.0.9/theme/default/font/iconfont.svg +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layDate-v5.0.9/theme/default/font/iconfont.ttf +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layDate-v5.0.9/theme/default/font/iconfont.woff +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layDate-v5.0.9/theme/default/laydate.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layer/layer.full.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layer/layer.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layer/mobile/layer.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layer/mobile/need/layer.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layer/theme/default/icon-ext.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layer/theme/default/icon.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layer/theme/default/layer.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layer/theme/default/loading-0.gif +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layer/theme/default/loading-1.gif +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layer/theme/default/loading-2.gif +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layer.mobile-v2.0/README.md +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layui/2.9.17/css/layui.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layui/2.9.17/font/iconfont.eot +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layui/2.9.17/font/iconfont.svg +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layui/2.9.17/font/iconfont.ttf +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layui/2.9.17/font/iconfont.woff +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layui/2.9.17/font/iconfont.woff2 +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/layui/2.9.17/layui.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/marked/marked.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/md5/md5.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/package-lock.json +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/package.json +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/pure-css/pure-3.0.0.min.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/quarkjs/quark.base-1.0.0.min.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/requirejs/require-2.3.6.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/select2/4.0.13/select2.min.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/select2/4.0.13/select2.min.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/utf.js/utf-v1.0.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/vue/vue-2.2.6.min.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/vue/vue-2.7.9.min.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/wangEditor/wangEditor-3.1.1.min.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/webuploader/README.md +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/webuploader/Uploader.swf +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/webuploader/webuploader.css +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/lib/webuploader/webuploader.nolog.min.js +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/xnote.pdn +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/static/xnote.png +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/__init__.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/a.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_admin.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_api.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_base.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_dict.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_exif.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_fs.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_migrate.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_search.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_service.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_system_sync.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_text_parser.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_xauth.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_xmanager.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_xtemplate.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_xutils_cache.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_xutils_db.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_xutils_db_hash_table.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_xutils_db_table.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/tests/test_xutils_sqldb.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/__init__.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/core/__init__.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/core/autoreload.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/core/xmanager_log.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/core/xnote_hooks.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/core/xnote_trace.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/core/xnote_user_config.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/core/xtemplate.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/service/__init__.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/service/job_service.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/service/lock_service.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote/service/search_service.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/__init__.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/base.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_000.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_001.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_002.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_003.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_004.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_005.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_006.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_007.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_008.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_009.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_011.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_012.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_013.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_014.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_015.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_016.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_017.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_018.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_migrate/upgrade_019.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_web.egg-info/dependency_links.txt +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xnote_web.egg-info/top_level.txt +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/base.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/cacheutil.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/code/__init__.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/code/pack.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/config.py +0 -0
- /xnote_web-0.2.2/xutils/csvutil.py → /xnote_web-0.2.4/xutils/csv_utils.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/dateutil.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/__init__.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/binlog.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/dbutil_deque.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/dbutil_hash.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/dbutil_id_gen.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/dbutil_set.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/dbutil_sortedset.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/dbutil_table_index.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/driver_leveldb.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/driver_leveldbpy.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/driver_lmdb.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/driver_mysql.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/driver_mysql_enhance.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/driver_sqlite.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/driver_ssdb.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/filters.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/lock.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/db/shard.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/dbutil.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/func_util.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/htmlutil.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/jsonutil.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/lists.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/lockutil.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/logutil.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/markdown_util.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/mem_util.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/osutil.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/six.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/sqldb/__init__.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/sqldb/table_config.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/sqldb/utils.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/text_parser_properties.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/textutil.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/textutil_url.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/tokenizer.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/tornado/__init__.py +0 -0
- {xnote_web-0.2.2 → xnote_web-0.2.4}/xutils/tornado/log.py +0 -0
- {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.
|
|
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网址
|
|
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网址
|
|
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}
|
|
@@ -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
|
-
|
|
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.
|
|
25
|
-
city_name = xutils.
|
|
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:
|
|
101
|
+
width: 26px;
|
|
136
102
|
float: left;
|
|
137
103
|
}
|
|
138
104
|
|
|
139
105
|
.month-3-cols {
|
|
140
|
-
width:
|
|
106
|
+
width: 39px;
|
|
141
107
|
float: left;
|
|
142
108
|
}
|
|
143
109
|
|
|
144
110
|
.month-4-cols {
|
|
145
111
|
float: left;
|
|
146
|
-
width:
|
|
112
|
+
width: 52px;
|
|
147
113
|
}
|
|
148
114
|
|
|
149
115
|
.month-5-cols {
|
|
150
116
|
float: left;
|
|
151
|
-
width:
|
|
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
|
-
|
|
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
|
|
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 %}
|
|
@@ -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">
|
|
@@ -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
|
-
|
|
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)
|
|
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
|
|
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);"><无匹配标签></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("
|
|
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 =
|
|
202
|
-
limit=limit,
|
|
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 =
|
|
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(
|
|
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
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
431
|
-
if
|
|
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.
|
|
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
|
|