From b46ed32d54a8e658c1936be8359ce8048c6d0669 Mon Sep 17 00:00:00 2001 From: LiuR <3011722925@qq.com> Date: Sun, 9 Nov 2025 18:28:26 +0800 Subject: [PATCH] delete others --- Django | 1 - README.md | 2 + doc/lr报告.docx | 0 doc/第五周报告.docx | Bin 0 -> 150369 bytes doc/软件界面设计说明书.docx | Bin 0 -> 931452 bytes src/DjangoBlog-master/.coveragerc | 10 + src/DjangoBlog-master/.dockerignore | 11 + src/DjangoBlog-master/.gitattributes | 6 + .../.github/ISSUE_TEMPLATE.md | 18 + .../.github/workflows/codeql-analysis.yml | 47 + .../.github/workflows/django.yml | 136 +++ .../.github/workflows/docker.yml | 43 + .../.github/workflows/publish-release.yml | 39 + src/DjangoBlog-master/.gitignore | 80 ++ src/DjangoBlog-master/Dockerfile | 15 + src/DjangoBlog-master/LICENSE | 20 + src/DjangoBlog-master/README.md | 158 +++ src/DjangoBlog-master/accounts/__init__.py | 0 src/DjangoBlog-master/accounts/admin.py | 59 + src/DjangoBlog-master/accounts/apps.py | 5 + src/DjangoBlog-master/accounts/forms.py | 117 ++ .../accounts/migrations/0001_initial.py | 49 + ...s_remove_bloguser_created_time_and_more.py | 46 + .../accounts/migrations/__init__.py | 0 src/DjangoBlog-master/accounts/models.py | 35 + .../accounts/templatetags/__init__.py | 0 src/DjangoBlog-master/accounts/tests.py | 207 ++++ src/DjangoBlog-master/accounts/urls.py | 28 + .../accounts/user_login_backend.py | 26 + src/DjangoBlog-master/accounts/utils.py | 49 + src/DjangoBlog-master/accounts/views.py | 204 ++++ src/DjangoBlog-master/blog/__init__.py | 0 src/DjangoBlog-master/blog/admin.py | 112 ++ src/DjangoBlog-master/blog/apps.py | 5 + .../blog/context_processors.py | 43 + src/DjangoBlog-master/blog/documents.py | 213 ++++ src/DjangoBlog-master/blog/forms.py | 19 + .../blog/management/__init__.py | 0 .../blog/management/commands/__init__.py | 0 .../blog/management/commands/build_index.py | 18 + .../management/commands/build_search_words.py | 13 + .../blog/management/commands/clear_cache.py | 11 + .../management/commands/create_testdata.py | 40 + .../blog/management/commands/ping_baidu.py | 50 + .../management/commands/sync_user_avatar.py | 47 + src/DjangoBlog-master/blog/middleware.py | 42 + .../blog/migrations/0001_initial.py | 137 +++ ...002_blogsettings_global_footer_and_more.py | 23 + .../0003_blogsettings_comment_need_review.py | 17 + ...de_blogsettings_analytics_code_and_more.py | 27 + ...options_alter_category_options_and_more.py | 300 +++++ .../0006_alter_blogsettings_options.py | 17 + .../blog/migrations/__init__.py | 0 src/DjangoBlog-master/blog/models.py | 376 ++++++ src/DjangoBlog-master/blog/search_indexes.py | 13 + .../blog/templatetags/__init__.py | 0 .../blog/templatetags/blog_tags.py | 344 ++++++ src/DjangoBlog-master/blog/tests.py | 232 ++++ src/DjangoBlog-master/blog/urls.py | 62 + src/DjangoBlog-master/blog/views.py | 379 ++++++ src/DjangoBlog-master/comments/__init__.py | 0 src/DjangoBlog-master/comments/admin.py | 47 + src/DjangoBlog-master/comments/apps.py | 5 + src/DjangoBlog-master/comments/forms.py | 13 + .../comments/migrations/0001_initial.py | 38 + .../0002_alter_comment_is_enable.py | 18 + ...ns_remove_comment_created_time_and_more.py | 60 + .../comments/migrations/__init__.py | 0 src/DjangoBlog-master/comments/models.py | 39 + .../comments/templatetags/__init__.py | 0 .../comments/templatetags/comments_tags.py | 30 + src/DjangoBlog-master/comments/tests.py | 109 ++ src/DjangoBlog-master/comments/urls.py | 11 + src/DjangoBlog-master/comments/utils.py | 38 + src/DjangoBlog-master/comments/views.py | 63 + .../docker-compose/docker-compose.es.yml | 48 + .../deploy/docker-compose/docker-compose.yml | 60 + src/DjangoBlog-master/deploy/entrypoint.sh | 31 + .../deploy/k8s/configmap.yaml | 119 ++ .../deploy/k8s/deployment.yaml | 274 +++++ src/DjangoBlog-master/deploy/k8s/gateway.yaml | 17 + src/DjangoBlog-master/deploy/k8s/pv.yaml | 94 ++ src/DjangoBlog-master/deploy/k8s/pvc.yaml | 60 + src/DjangoBlog-master/deploy/k8s/service.yaml | 80 ++ .../deploy/k8s/storageclass.yaml | 10 + src/DjangoBlog-master/deploy/nginx.conf | 50 + src/DjangoBlog-master/djangoblog/__init__.py | 1 + .../djangoblog/admin_site.py | 64 + src/DjangoBlog-master/djangoblog/apps.py | 11 + .../djangoblog/blog_signals.py | 122 ++ .../djangoblog/elasticsearch_backend.py | 183 +++ src/DjangoBlog-master/djangoblog/feeds.py | 40 + .../djangoblog/logentryadmin.py | 91 ++ .../djangoblog/plugin_manage/base_plugin.py | 41 + .../plugin_manage/hook_constants.py | 7 + .../djangoblog/plugin_manage/hooks.py | 44 + .../djangoblog/plugin_manage/loader.py | 19 + src/DjangoBlog-master/djangoblog/settings.py | 341 ++++++ src/DjangoBlog-master/djangoblog/sitemap.py | 59 + .../djangoblog/spider_notify.py | 21 + src/DjangoBlog-master/djangoblog/tests.py | 32 + src/DjangoBlog-master/djangoblog/urls.py | 64 + src/DjangoBlog-master/djangoblog/utils.py | 232 ++++ .../djangoblog/whoosh_cn_backend.py | 1044 +++++++++++++++++ src/DjangoBlog-master/djangoblog/wsgi.py | 16 + src/DjangoBlog-master/docs/README-en.md | 158 +++ src/DjangoBlog-master/docs/config-en.md | 64 + src/DjangoBlog-master/docs/config.md | 58 + src/DjangoBlog-master/docs/docker-en.md | 114 ++ src/DjangoBlog-master/docs/docker.md | 114 ++ src/DjangoBlog-master/docs/es.md | 28 + src/DjangoBlog-master/docs/imgs/alipay.jpg | Bin 0 -> 17961 bytes .../docs/imgs/pycharm_logo.png | Bin 0 -> 132045 bytes src/DjangoBlog-master/docs/imgs/wechat.jpg | Bin 0 -> 24722 bytes src/DjangoBlog-master/docs/k8s-en.md | 141 +++ src/DjangoBlog-master/docs/k8s.md | 141 +++ .../locale/en/LC_MESSAGES/django.mo | Bin 0 -> 11097 bytes .../locale/en/LC_MESSAGES/django.po | 685 +++++++++++ .../locale/zh_Hans/LC_MESSAGES/django.mo | Bin 0 -> 10321 bytes .../locale/zh_Hans/LC_MESSAGES/django.po | 667 +++++++++++ .../locale/zh_Hant/LC_MESSAGES/django.mo | Bin 0 -> 10268 bytes .../locale/zh_Hant/LC_MESSAGES/django.po | 668 +++++++++++ src/DjangoBlog-master/manage.py | 22 + src/DjangoBlog-master/oauth/__init__.py | 0 src/DjangoBlog-master/oauth/admin.py | 54 + src/DjangoBlog-master/oauth/apps.py | 5 + src/DjangoBlog-master/oauth/forms.py | 12 + .../oauth/migrations/0001_initial.py | 57 + ...ptions_alter_oauthuser_options_and_more.py | 86 ++ .../0003_alter_oauthuser_nickname.py | 18 + .../oauth/migrations/__init__.py | 0 src/DjangoBlog-master/oauth/models.py | 67 ++ src/DjangoBlog-master/oauth/oauthmanager.py | 504 ++++++++ .../oauth/templatetags/__init__.py | 1 + .../oauth/templatetags/oauth_tags.py | 22 + src/DjangoBlog-master/oauth/tests.py | 249 ++++ src/DjangoBlog-master/oauth/urls.py | 25 + src/DjangoBlog-master/oauth/views.py | 253 ++++ src/DjangoBlog-master/owntracks/__init__.py | 0 src/DjangoBlog-master/owntracks/admin.py | 7 + src/DjangoBlog-master/owntracks/apps.py | 5 + .../owntracks/migrations/0001_initial.py | 31 + ...0002_alter_owntracklog_options_and_more.py | 22 + .../owntracks/migrations/__init__.py | 0 src/DjangoBlog-master/owntracks/models.py | 20 + src/DjangoBlog-master/owntracks/tests.py | 64 + src/DjangoBlog-master/owntracks/urls.py | 12 + src/DjangoBlog-master/owntracks/views.py | 127 ++ src/DjangoBlog-master/plugins/__init__.py | 1 + .../plugins/article_copyright/__init__.py | 1 + .../plugins/article_copyright/plugin.py | 32 + .../plugins/external_links/__init__.py | 1 + .../plugins/external_links/plugin.py | 48 + .../plugins/reading_time/__init__.py | 1 + .../plugins/reading_time/plugin.py | 43 + .../plugins/seo_optimizer/__init__.py | 1 + .../plugins/seo_optimizer/plugin.py | 142 +++ .../plugins/view_count/__init__.py | 1 + .../plugins/view_count/plugin.py | 18 + src/DjangoBlog-master/requirements.txt | Bin 0 -> 2554 bytes .../servermanager/MemcacheStorage.py | 32 + .../servermanager/__init__.py | 0 src/DjangoBlog-master/servermanager/admin.py | 19 + .../servermanager/api/__init__.py | 1 + .../servermanager/api/blogapi.py | 27 + .../servermanager/api/commonapi.py | 64 + src/DjangoBlog-master/servermanager/apps.py | 5 + .../servermanager/migrations/0001_initial.py | 45 + ...002_alter_emailsendlog_options_and_more.py | 32 + .../servermanager/migrations/__init__.py | 0 src/DjangoBlog-master/servermanager/models.py | 33 + src/DjangoBlog-master/servermanager/robot.py | 187 +++ src/DjangoBlog-master/servermanager/tests.py | 79 ++ src/DjangoBlog-master/servermanager/urls.py | 10 + src/DjangoBlog-master/servermanager/views.py | 1 + .../templates/account/forget_password.html | 30 + .../templates/account/login.html | 46 + .../templates/account/registration_form.html | 29 + .../templates/account/result.html | 27 + .../templates/blog/article_archives.html | 60 + .../templates/blog/article_detail.html | 52 + .../templates/blog/article_index.html | 42 + .../templates/blog/error_page.html | 45 + .../templates/blog/links_list.html | 44 + .../templates/blog/tags/article_info.html | 74 ++ .../blog/tags/article_meta_info.html | 59 + .../blog/tags/article_pagination.html | 17 + .../templates/blog/tags/article_tag_list.html | 19 + .../templates/blog/tags/breadcrumb.html | 19 + .../templates/blog/tags/sidebar.html | 136 +++ .../templates/comments/tags/comment_item.html | 34 + .../comments/tags/comment_item_tree.html | 54 + .../templates/comments/tags/comment_list.html | 45 + .../templates/comments/tags/post_comment.html | 33 + .../templates/oauth/bindsuccess.html | 22 + .../templates/oauth/oauth_applications.html | 13 + .../templates/oauth/require_email.html | 46 + .../templates/owntracks/show_log_dates.html | 17 + .../templates/owntracks/show_maps.html | 135 +++ .../search/indexes/blog/article_text.txt | 3 + .../templates/search/search.html | 66 ++ .../templates/share_layout/adsense.html | 6 + .../templates/share_layout/base.html | 123 ++ .../templates/share_layout/base_account.html | 47 + .../templates/share_layout/footer.html | 56 + .../templates/share_layout/nav.html | 30 + .../templates/share_layout/nav_node.html | 19 + 207 files changed, 14469 insertions(+), 1 deletion(-) delete mode 160000 Django create mode 100644 README.md create mode 100644 doc/lr报告.docx create mode 100644 doc/第五周报告.docx create mode 100644 doc/软件界面设计说明书.docx create mode 100644 src/DjangoBlog-master/.coveragerc create mode 100644 src/DjangoBlog-master/.dockerignore create mode 100644 src/DjangoBlog-master/.gitattributes create mode 100644 src/DjangoBlog-master/.github/ISSUE_TEMPLATE.md create mode 100644 src/DjangoBlog-master/.github/workflows/codeql-analysis.yml create mode 100644 src/DjangoBlog-master/.github/workflows/django.yml create mode 100644 src/DjangoBlog-master/.github/workflows/docker.yml create mode 100644 src/DjangoBlog-master/.github/workflows/publish-release.yml create mode 100644 src/DjangoBlog-master/.gitignore create mode 100644 src/DjangoBlog-master/Dockerfile create mode 100644 src/DjangoBlog-master/LICENSE create mode 100644 src/DjangoBlog-master/README.md create mode 100644 src/DjangoBlog-master/accounts/__init__.py create mode 100644 src/DjangoBlog-master/accounts/admin.py create mode 100644 src/DjangoBlog-master/accounts/apps.py create mode 100644 src/DjangoBlog-master/accounts/forms.py create mode 100644 src/DjangoBlog-master/accounts/migrations/0001_initial.py create mode 100644 src/DjangoBlog-master/accounts/migrations/0002_alter_bloguser_options_remove_bloguser_created_time_and_more.py create mode 100644 src/DjangoBlog-master/accounts/migrations/__init__.py create mode 100644 src/DjangoBlog-master/accounts/models.py create mode 100644 src/DjangoBlog-master/accounts/templatetags/__init__.py create mode 100644 src/DjangoBlog-master/accounts/tests.py create mode 100644 src/DjangoBlog-master/accounts/urls.py create mode 100644 src/DjangoBlog-master/accounts/user_login_backend.py create mode 100644 src/DjangoBlog-master/accounts/utils.py create mode 100644 src/DjangoBlog-master/accounts/views.py create mode 100644 src/DjangoBlog-master/blog/__init__.py create mode 100644 src/DjangoBlog-master/blog/admin.py create mode 100644 src/DjangoBlog-master/blog/apps.py create mode 100644 src/DjangoBlog-master/blog/context_processors.py create mode 100644 src/DjangoBlog-master/blog/documents.py create mode 100644 src/DjangoBlog-master/blog/forms.py create mode 100644 src/DjangoBlog-master/blog/management/__init__.py create mode 100644 src/DjangoBlog-master/blog/management/commands/__init__.py create mode 100644 src/DjangoBlog-master/blog/management/commands/build_index.py create mode 100644 src/DjangoBlog-master/blog/management/commands/build_search_words.py create mode 100644 src/DjangoBlog-master/blog/management/commands/clear_cache.py create mode 100644 src/DjangoBlog-master/blog/management/commands/create_testdata.py create mode 100644 src/DjangoBlog-master/blog/management/commands/ping_baidu.py create mode 100644 src/DjangoBlog-master/blog/management/commands/sync_user_avatar.py create mode 100644 src/DjangoBlog-master/blog/middleware.py create mode 100644 src/DjangoBlog-master/blog/migrations/0001_initial.py create mode 100644 src/DjangoBlog-master/blog/migrations/0002_blogsettings_global_footer_and_more.py create mode 100644 src/DjangoBlog-master/blog/migrations/0003_blogsettings_comment_need_review.py create mode 100644 src/DjangoBlog-master/blog/migrations/0004_rename_analyticscode_blogsettings_analytics_code_and_more.py create mode 100644 src/DjangoBlog-master/blog/migrations/0005_alter_article_options_alter_category_options_and_more.py create mode 100644 src/DjangoBlog-master/blog/migrations/0006_alter_blogsettings_options.py create mode 100644 src/DjangoBlog-master/blog/migrations/__init__.py create mode 100644 src/DjangoBlog-master/blog/models.py create mode 100644 src/DjangoBlog-master/blog/search_indexes.py create mode 100644 src/DjangoBlog-master/blog/templatetags/__init__.py create mode 100644 src/DjangoBlog-master/blog/templatetags/blog_tags.py create mode 100644 src/DjangoBlog-master/blog/tests.py create mode 100644 src/DjangoBlog-master/blog/urls.py create mode 100644 src/DjangoBlog-master/blog/views.py create mode 100644 src/DjangoBlog-master/comments/__init__.py create mode 100644 src/DjangoBlog-master/comments/admin.py create mode 100644 src/DjangoBlog-master/comments/apps.py create mode 100644 src/DjangoBlog-master/comments/forms.py create mode 100644 src/DjangoBlog-master/comments/migrations/0001_initial.py create mode 100644 src/DjangoBlog-master/comments/migrations/0002_alter_comment_is_enable.py create mode 100644 src/DjangoBlog-master/comments/migrations/0003_alter_comment_options_remove_comment_created_time_and_more.py create mode 100644 src/DjangoBlog-master/comments/migrations/__init__.py create mode 100644 src/DjangoBlog-master/comments/models.py create mode 100644 src/DjangoBlog-master/comments/templatetags/__init__.py create mode 100644 src/DjangoBlog-master/comments/templatetags/comments_tags.py create mode 100644 src/DjangoBlog-master/comments/tests.py create mode 100644 src/DjangoBlog-master/comments/urls.py create mode 100644 src/DjangoBlog-master/comments/utils.py create mode 100644 src/DjangoBlog-master/comments/views.py create mode 100644 src/DjangoBlog-master/deploy/docker-compose/docker-compose.es.yml create mode 100644 src/DjangoBlog-master/deploy/docker-compose/docker-compose.yml create mode 100644 src/DjangoBlog-master/deploy/entrypoint.sh create mode 100644 src/DjangoBlog-master/deploy/k8s/configmap.yaml create mode 100644 src/DjangoBlog-master/deploy/k8s/deployment.yaml create mode 100644 src/DjangoBlog-master/deploy/k8s/gateway.yaml create mode 100644 src/DjangoBlog-master/deploy/k8s/pv.yaml create mode 100644 src/DjangoBlog-master/deploy/k8s/pvc.yaml create mode 100644 src/DjangoBlog-master/deploy/k8s/service.yaml create mode 100644 src/DjangoBlog-master/deploy/k8s/storageclass.yaml create mode 100644 src/DjangoBlog-master/deploy/nginx.conf create mode 100644 src/DjangoBlog-master/djangoblog/__init__.py create mode 100644 src/DjangoBlog-master/djangoblog/admin_site.py create mode 100644 src/DjangoBlog-master/djangoblog/apps.py create mode 100644 src/DjangoBlog-master/djangoblog/blog_signals.py create mode 100644 src/DjangoBlog-master/djangoblog/elasticsearch_backend.py create mode 100644 src/DjangoBlog-master/djangoblog/feeds.py create mode 100644 src/DjangoBlog-master/djangoblog/logentryadmin.py create mode 100644 src/DjangoBlog-master/djangoblog/plugin_manage/base_plugin.py create mode 100644 src/DjangoBlog-master/djangoblog/plugin_manage/hook_constants.py create mode 100644 src/DjangoBlog-master/djangoblog/plugin_manage/hooks.py create mode 100644 src/DjangoBlog-master/djangoblog/plugin_manage/loader.py create mode 100644 src/DjangoBlog-master/djangoblog/settings.py create mode 100644 src/DjangoBlog-master/djangoblog/sitemap.py create mode 100644 src/DjangoBlog-master/djangoblog/spider_notify.py create mode 100644 src/DjangoBlog-master/djangoblog/tests.py create mode 100644 src/DjangoBlog-master/djangoblog/urls.py create mode 100644 src/DjangoBlog-master/djangoblog/utils.py create mode 100644 src/DjangoBlog-master/djangoblog/whoosh_cn_backend.py create mode 100644 src/DjangoBlog-master/djangoblog/wsgi.py create mode 100644 src/DjangoBlog-master/docs/README-en.md create mode 100644 src/DjangoBlog-master/docs/config-en.md create mode 100644 src/DjangoBlog-master/docs/config.md create mode 100644 src/DjangoBlog-master/docs/docker-en.md create mode 100644 src/DjangoBlog-master/docs/docker.md create mode 100644 src/DjangoBlog-master/docs/es.md create mode 100644 src/DjangoBlog-master/docs/imgs/alipay.jpg create mode 100644 src/DjangoBlog-master/docs/imgs/pycharm_logo.png create mode 100644 src/DjangoBlog-master/docs/imgs/wechat.jpg create mode 100644 src/DjangoBlog-master/docs/k8s-en.md create mode 100644 src/DjangoBlog-master/docs/k8s.md create mode 100644 src/DjangoBlog-master/locale/en/LC_MESSAGES/django.mo create mode 100644 src/DjangoBlog-master/locale/en/LC_MESSAGES/django.po create mode 100644 src/DjangoBlog-master/locale/zh_Hans/LC_MESSAGES/django.mo create mode 100644 src/DjangoBlog-master/locale/zh_Hans/LC_MESSAGES/django.po create mode 100644 src/DjangoBlog-master/locale/zh_Hant/LC_MESSAGES/django.mo create mode 100644 src/DjangoBlog-master/locale/zh_Hant/LC_MESSAGES/django.po create mode 100644 src/DjangoBlog-master/manage.py create mode 100644 src/DjangoBlog-master/oauth/__init__.py create mode 100644 src/DjangoBlog-master/oauth/admin.py create mode 100644 src/DjangoBlog-master/oauth/apps.py create mode 100644 src/DjangoBlog-master/oauth/forms.py create mode 100644 src/DjangoBlog-master/oauth/migrations/0001_initial.py create mode 100644 src/DjangoBlog-master/oauth/migrations/0002_alter_oauthconfig_options_alter_oauthuser_options_and_more.py create mode 100644 src/DjangoBlog-master/oauth/migrations/0003_alter_oauthuser_nickname.py create mode 100644 src/DjangoBlog-master/oauth/migrations/__init__.py create mode 100644 src/DjangoBlog-master/oauth/models.py create mode 100644 src/DjangoBlog-master/oauth/oauthmanager.py create mode 100644 src/DjangoBlog-master/oauth/templatetags/__init__.py create mode 100644 src/DjangoBlog-master/oauth/templatetags/oauth_tags.py create mode 100644 src/DjangoBlog-master/oauth/tests.py create mode 100644 src/DjangoBlog-master/oauth/urls.py create mode 100644 src/DjangoBlog-master/oauth/views.py create mode 100644 src/DjangoBlog-master/owntracks/__init__.py create mode 100644 src/DjangoBlog-master/owntracks/admin.py create mode 100644 src/DjangoBlog-master/owntracks/apps.py create mode 100644 src/DjangoBlog-master/owntracks/migrations/0001_initial.py create mode 100644 src/DjangoBlog-master/owntracks/migrations/0002_alter_owntracklog_options_and_more.py create mode 100644 src/DjangoBlog-master/owntracks/migrations/__init__.py create mode 100644 src/DjangoBlog-master/owntracks/models.py create mode 100644 src/DjangoBlog-master/owntracks/tests.py create mode 100644 src/DjangoBlog-master/owntracks/urls.py create mode 100644 src/DjangoBlog-master/owntracks/views.py create mode 100644 src/DjangoBlog-master/plugins/__init__.py create mode 100644 src/DjangoBlog-master/plugins/article_copyright/__init__.py create mode 100644 src/DjangoBlog-master/plugins/article_copyright/plugin.py create mode 100644 src/DjangoBlog-master/plugins/external_links/__init__.py create mode 100644 src/DjangoBlog-master/plugins/external_links/plugin.py create mode 100644 src/DjangoBlog-master/plugins/reading_time/__init__.py create mode 100644 src/DjangoBlog-master/plugins/reading_time/plugin.py create mode 100644 src/DjangoBlog-master/plugins/seo_optimizer/__init__.py create mode 100644 src/DjangoBlog-master/plugins/seo_optimizer/plugin.py create mode 100644 src/DjangoBlog-master/plugins/view_count/__init__.py create mode 100644 src/DjangoBlog-master/plugins/view_count/plugin.py create mode 100644 src/DjangoBlog-master/requirements.txt create mode 100644 src/DjangoBlog-master/servermanager/MemcacheStorage.py create mode 100644 src/DjangoBlog-master/servermanager/__init__.py create mode 100644 src/DjangoBlog-master/servermanager/admin.py create mode 100644 src/DjangoBlog-master/servermanager/api/__init__.py create mode 100644 src/DjangoBlog-master/servermanager/api/blogapi.py create mode 100644 src/DjangoBlog-master/servermanager/api/commonapi.py create mode 100644 src/DjangoBlog-master/servermanager/apps.py create mode 100644 src/DjangoBlog-master/servermanager/migrations/0001_initial.py create mode 100644 src/DjangoBlog-master/servermanager/migrations/0002_alter_emailsendlog_options_and_more.py create mode 100644 src/DjangoBlog-master/servermanager/migrations/__init__.py create mode 100644 src/DjangoBlog-master/servermanager/models.py create mode 100644 src/DjangoBlog-master/servermanager/robot.py create mode 100644 src/DjangoBlog-master/servermanager/tests.py create mode 100644 src/DjangoBlog-master/servermanager/urls.py create mode 100644 src/DjangoBlog-master/servermanager/views.py create mode 100644 src/DjangoBlog-master/templates/account/forget_password.html create mode 100644 src/DjangoBlog-master/templates/account/login.html create mode 100644 src/DjangoBlog-master/templates/account/registration_form.html create mode 100644 src/DjangoBlog-master/templates/account/result.html create mode 100644 src/DjangoBlog-master/templates/blog/article_archives.html create mode 100644 src/DjangoBlog-master/templates/blog/article_detail.html create mode 100644 src/DjangoBlog-master/templates/blog/article_index.html create mode 100644 src/DjangoBlog-master/templates/blog/error_page.html create mode 100644 src/DjangoBlog-master/templates/blog/links_list.html create mode 100644 src/DjangoBlog-master/templates/blog/tags/article_info.html create mode 100644 src/DjangoBlog-master/templates/blog/tags/article_meta_info.html create mode 100644 src/DjangoBlog-master/templates/blog/tags/article_pagination.html create mode 100644 src/DjangoBlog-master/templates/blog/tags/article_tag_list.html create mode 100644 src/DjangoBlog-master/templates/blog/tags/breadcrumb.html create mode 100644 src/DjangoBlog-master/templates/blog/tags/sidebar.html create mode 100644 src/DjangoBlog-master/templates/comments/tags/comment_item.html create mode 100644 src/DjangoBlog-master/templates/comments/tags/comment_item_tree.html create mode 100644 src/DjangoBlog-master/templates/comments/tags/comment_list.html create mode 100644 src/DjangoBlog-master/templates/comments/tags/post_comment.html create mode 100644 src/DjangoBlog-master/templates/oauth/bindsuccess.html create mode 100644 src/DjangoBlog-master/templates/oauth/oauth_applications.html create mode 100644 src/DjangoBlog-master/templates/oauth/require_email.html create mode 100644 src/DjangoBlog-master/templates/owntracks/show_log_dates.html create mode 100644 src/DjangoBlog-master/templates/owntracks/show_maps.html create mode 100644 src/DjangoBlog-master/templates/search/indexes/blog/article_text.txt create mode 100644 src/DjangoBlog-master/templates/search/search.html create mode 100644 src/DjangoBlog-master/templates/share_layout/adsense.html create mode 100644 src/DjangoBlog-master/templates/share_layout/base.html create mode 100644 src/DjangoBlog-master/templates/share_layout/base_account.html create mode 100644 src/DjangoBlog-master/templates/share_layout/footer.html create mode 100644 src/DjangoBlog-master/templates/share_layout/nav.html create mode 100644 src/DjangoBlog-master/templates/share_layout/nav_node.html diff --git a/Django b/Django deleted file mode 160000 index 7cc6791..0000000 --- a/Django +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 7cc67911828ad63e4d4658f6d11579ca21bb6e8a diff --git a/README.md b/README.md new file mode 100644 index 0000000..a2629a5 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# Django + diff --git a/doc/lr报告.docx b/doc/lr报告.docx new file mode 100644 index 0000000..e69de29 diff --git a/doc/第五周报告.docx b/doc/第五周报告.docx new file mode 100644 index 0000000000000000000000000000000000000000..80cc0f3e2b085f93da06375ec15d0757f8785517 GIT binary patch literal 150369 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≥?b>c24eo>5JwVb~{D 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 literal 0 HcmV?d00001 diff --git a/doc/软件界面设计说明书.docx b/doc/软件界面设计说明书.docx new file mode 100644 index 0000000000000000000000000000000000000000..5b655a71865eccaf5686aeba236aab0597fee85a GIT binary patch literal 931452 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

p2yQ)w?!*AIyeS^L~(i&-+lHq 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

5(jOWMk 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
uO-JhkK)}kBrrDN!Y^XKun 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 Mbb&)OaDZ?B4=_m8M*si- literal 0 HcmV?d00001 diff --git a/src/DjangoBlog-master/.coveragerc b/src/DjangoBlog-master/.coveragerc new file mode 100644 index 0000000..9757484 --- /dev/null +++ b/src/DjangoBlog-master/.coveragerc @@ -0,0 +1,10 @@ +[run] +source = . +include = *.py +omit = + *migrations* + *tests* + *.html + *whoosh_cn_backend* + *settings.py* + *venv* diff --git a/src/DjangoBlog-master/.dockerignore b/src/DjangoBlog-master/.dockerignore new file mode 100644 index 0000000..2818c38 --- /dev/null +++ b/src/DjangoBlog-master/.dockerignore @@ -0,0 +1,11 @@ +bin/data/ +# virtualenv +venv/ +collectedstatic/ +djangoblog/whoosh_index/ +uploads/ +settings_production.py +*.md +docs/ +logs/ +static/ \ No newline at end of file diff --git a/src/DjangoBlog-master/.gitattributes b/src/DjangoBlog-master/.gitattributes new file mode 100644 index 0000000..fd52ece --- /dev/null +++ b/src/DjangoBlog-master/.gitattributes @@ -0,0 +1,6 @@ +blog/static/* linguist-vendored +*.js linguist-vendored +*.css linguist-vendored +* text=auto +*.sh text eol=lf +*.conf text eol=lf \ No newline at end of file diff --git a/src/DjangoBlog-master/.github/ISSUE_TEMPLATE.md b/src/DjangoBlog-master/.github/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..2b5b7aa --- /dev/null +++ b/src/DjangoBlog-master/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,18 @@ + + +**我确定我已经查看了** (标注`[ ]`为`[x]`) + +- [ ] [DjangoBlog的readme](https://github.com/liangliangyy/DjangoBlog/blob/master/README.md) +- [ ] [配置说明](https://github.com/liangliangyy/DjangoBlog/blob/master/bin/config.md) +- [ ] [其他 Issues](https://github.com/liangliangyy/DjangoBlog/issues) + +---- + +**我要申请** (标注`[ ]`为`[x]`) + +- [ ] BUG 反馈 +- [ ] 添加新的特性或者功能 +- [ ] 请求技术支持 diff --git a/src/DjangoBlog-master/.github/workflows/codeql-analysis.yml b/src/DjangoBlog-master/.github/workflows/codeql-analysis.yml new file mode 100644 index 0000000..6b76522 --- /dev/null +++ b/src/DjangoBlog-master/.github/workflows/codeql-analysis.yml @@ -0,0 +1,47 @@ +name: "CodeQL" + +on: + push: + branches: + - master + - dev + paths-ignore: + - '**/*.md' + - '**/*.css' + - '**/*.js' + - '**/*.yml' + - '**/*.txt' + pull_request: + branches: + - master + - dev + paths-ignore: + - '**/*.md' + - '**/*.css' + - '**/*.js' + - '**/*.yml' + - '**/*.txt' + schedule: + - cron: '30 1 * * 0' + + +jobs: + CodeQL-Build: + runs-on: ubuntu-latest + permissions: + security-events: write + actions: read + contents: read + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Initialize CodeQL + uses: github/codeql-action/init@v2 + + - name: Autobuild + uses: github/codeql-action/autobuild@v2 + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v2 \ No newline at end of file diff --git a/src/DjangoBlog-master/.github/workflows/django.yml b/src/DjangoBlog-master/.github/workflows/django.yml new file mode 100644 index 0000000..94baea9 --- /dev/null +++ b/src/DjangoBlog-master/.github/workflows/django.yml @@ -0,0 +1,136 @@ +name: Django CI + +on: + push: + branches: + - master + - dev + paths-ignore: + - '**/*.md' + - '**/*.css' + - '**/*.js' + pull_request: + branches: + - master + - dev + paths-ignore: + - '**/*.md' + - '**/*.css' + - '**/*.js' + +jobs: + build-normal: + runs-on: ubuntu-latest + strategy: + max-parallel: 4 + matrix: + python-version: ["3.10","3.11" ] + + steps: + - name: Start MySQL + uses: samin/mysql-action@v1.3 + with: + host port: 3306 + container port: 3306 + character set server: utf8mb4 + collation server: utf8mb4_general_ci + mysql version: latest + mysql root password: root + mysql database: djangoblog + mysql user: root + mysql password: root + + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + cache: 'pip' + - name: Install Dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + - name: Run Tests + env: + DJANGO_MYSQL_PASSWORD: root + DJANGO_MYSQL_HOST: 127.0.0.1 + run: | + python manage.py makemigrations + python manage.py migrate + python manage.py test + + build-with-es: + runs-on: ubuntu-latest + strategy: + max-parallel: 4 + matrix: + python-version: ["3.10","3.11" ] + + steps: + - name: Start MySQL + uses: samin/mysql-action@v1.3 + with: + host port: 3306 + container port: 3306 + character set server: utf8mb4 + collation server: utf8mb4_general_ci + mysql version: latest + mysql root password: root + mysql database: djangoblog + mysql user: root + mysql password: root + + - name: Configure sysctl limits + run: | + sudo swapoff -a + sudo sysctl -w vm.swappiness=1 + sudo sysctl -w fs.file-max=262144 + sudo sysctl -w vm.max_map_count=262144 + + - uses: miyataka/elasticsearch-github-actions@1 + + with: + stack-version: '7.12.1' + plugins: 'https://release.infinilabs.com/analysis-ik/stable/elasticsearch-analysis-ik-7.12.1.zip' + + + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + cache: 'pip' + - name: Install Dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + - name: Run Tests + env: + DJANGO_MYSQL_PASSWORD: root + DJANGO_MYSQL_HOST: 127.0.0.1 + DJANGO_ELASTICSEARCH_HOST: 127.0.0.1:9200 + run: | + python manage.py makemigrations + python manage.py migrate + coverage run manage.py test + coverage xml + + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v1 + + docker: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Build and push + uses: docker/build-push-action@v3 + with: + context: . + push: false + tags: djangoblog/djangoblog:dev diff --git a/src/DjangoBlog-master/.github/workflows/docker.yml b/src/DjangoBlog-master/.github/workflows/docker.yml new file mode 100644 index 0000000..a312e2f --- /dev/null +++ b/src/DjangoBlog-master/.github/workflows/docker.yml @@ -0,0 +1,43 @@ +name: docker + +on: + push: + paths-ignore: + - '**/*.md' + - '**/*.yml' + branches: + - 'master' + - 'dev' + +jobs: + docker: + runs-on: ubuntu-latest + steps: + - name: Set env to docker dev tag + if: endsWith(github.ref, '/dev') + run: | + echo "DOCKER_TAG=test" >> $GITHUB_ENV + - name: Set env to docker latest tag + if: endsWith(github.ref, '/master') + run: | + echo "DOCKER_TAG=latest" >> $GITHUB_ENV + - name: Checkout + uses: actions/checkout@v3 + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Login to DockerHub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Build and push + uses: docker/build-push-action@v3 + with: + context: . + push: true + tags: ${{ secrets.DOCKERHUB_USERNAME }}/djangoblog:${{env.DOCKER_TAG}} + + diff --git a/src/DjangoBlog-master/.github/workflows/publish-release.yml b/src/DjangoBlog-master/.github/workflows/publish-release.yml new file mode 100644 index 0000000..5eb0853 --- /dev/null +++ b/src/DjangoBlog-master/.github/workflows/publish-release.yml @@ -0,0 +1,39 @@ +name: publish release + +on: + release: + types: [ published ] + +jobs: + docker: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Docker meta + id: meta + uses: docker/metadata-action@v3 + with: + images: name/app + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - name: Login to DockerHub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Build and push + uses: docker/build-push-action@v3 + with: + context: . + push: true + platforms: | + linux/amd64 + linux/arm64 + linux/arm/v7 + linux/arm/v6 + linux/386 + tags: ${{ secrets.DOCKERHUB_USERNAME }}/djangoblog:${{ github.event.release.tag_name }} diff --git a/src/DjangoBlog-master/.gitignore b/src/DjangoBlog-master/.gitignore new file mode 100644 index 0000000..3015816 --- /dev/null +++ b/src/DjangoBlog-master/.gitignore @@ -0,0 +1,80 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +*.egg-info/ +.installed.cfg +*.egg + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*,cover + +# Translations +*.pot + +# Django stuff: +*.log +logs/ + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + + +# PyCharm +# http://www.jetbrains.com/pycharm/webhelp/project.html +.idea +.iml +static/ +# virtualenv +venv/ + +collectedstatic/ +djangoblog/whoosh_index/ +google93fd32dbd906620a.html +baidu_verify_FlHL7cUyC9.html +BingSiteAuth.xml +cb9339dbe2ff86a5aa169d28dba5f615.txt +werobot_session.* +django.jpg +uploads/ +settings_production.py +werobot_session.db +bin/datas/ diff --git a/src/DjangoBlog-master/Dockerfile b/src/DjangoBlog-master/Dockerfile new file mode 100644 index 0000000..80b46ac --- /dev/null +++ b/src/DjangoBlog-master/Dockerfile @@ -0,0 +1,15 @@ +FROM python:3.11 +ENV PYTHONUNBUFFERED 1 +WORKDIR /code/djangoblog/ +RUN apt-get update && \ + apt-get install default-libmysqlclient-dev gettext -y && \ + rm -rf /var/lib/apt/lists/* +ADD requirements.txt requirements.txt +RUN pip install --upgrade pip && \ + pip install --no-cache-dir -r requirements.txt && \ + pip install --no-cache-dir gunicorn[gevent] && \ + pip cache purge + +ADD . . +RUN chmod +x /code/djangoblog/deploy/entrypoint.sh +ENTRYPOINT ["/code/djangoblog/deploy/entrypoint.sh"] diff --git a/src/DjangoBlog-master/LICENSE b/src/DjangoBlog-master/LICENSE new file mode 100644 index 0000000..3b08474 --- /dev/null +++ b/src/DjangoBlog-master/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2025 车亮亮 + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/src/DjangoBlog-master/README.md b/src/DjangoBlog-master/README.md new file mode 100644 index 0000000..56aa4cc --- /dev/null +++ b/src/DjangoBlog-master/README.md @@ -0,0 +1,158 @@ +# DjangoBlog + +

+ Django CI + CodeQL + codecov + license +

+ +

+ 一款功能强大、设计优雅的现代化博客系统 +
+ English简体中文 +

+ +--- + +DjangoBlog 是一款基于 Python 3.10 和 Django 4.0 构建的高性能博客平台。它不仅提供了传统博客的所有核心功能,还通过一个灵活的插件系统,让您可以轻松扩展和定制您的网站。无论您是个人博主、技术爱好者还是内容创作者,DjangoBlog 都旨在为您提供一个稳定、高效且易于维护的写作和发布环境。 + +## ✨ 特性亮点 + +- **强大的内容管理**: 支持文章、独立页面、分类和标签的完整管理。内置强大的 Markdown 编辑器,支持代码语法高亮。 +- **全文搜索**: 集成搜索引擎,提供快速、精准的文章内容搜索。 +- **互动评论系统**: 支持回复、邮件提醒等功能,评论内容同样支持 Markdown。 +- **灵活的侧边栏**: 可自定义展示最新文章、最多阅读、标签云等模块。 +- **社交化登录**: 内置 OAuth 支持,已集成 Google, GitHub, Facebook, 微博, QQ 等主流平台。 +- **高性能缓存**: 原生支持 Redis 缓存,并提供自动刷新机制,确保网站高速响应。 +- **SEO 友好**: 具备基础 SEO 功能,新内容发布后可自动通知 Google 和百度。 +- **便捷的插件系统**: 通过创建独立的插件来扩展博客功能,代码解耦,易于维护。我们已经通过插件实现了文章浏览计数、SEO 优化等功能! +- **集成图床**: 内置简单的图床功能,方便图片上传和管理。 +- **自动化前端**: 集成 `django-compressor`,自动压缩和优化 CSS 及 JavaScript 文件。 +- **健壮的运维**: 内置网站异常邮件提醒和微信公众号管理功能。 + +## 🛠️ 技术栈 + +- **后端**: Python 3.10, Django 4.0 +- **数据库**: MySQL, SQLite (可配置) +- **缓存**: Redis +- **前端**: HTML5, CSS3, JavaScript +- **搜索**: Whoosh, Elasticsearch (可配置) +- **编辑器**: Markdown (mdeditor) + +## 🚀 快速开始 + +### 1. 环境准备 + +确保您的系统中已安装 Python 3.10+ 和 MySQL/MariaDB。 + +### 2. 克隆与安装 + +```bash +# 克隆项目到本地 +git clone https://github.com/liangliangyy/DjangoBlog.git +cd DjangoBlog + +# 安装依赖 +pip install -r requirements.txt +``` + +### 3. 项目配置 + +- **数据库**: + 打开 `djangoblog/settings.py` 文件,找到 `DATABASES` 配置项,修改为您的 MySQL 连接信息。 + + ```python + DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.mysql', + 'NAME': 'djangoblog', + 'USER': 'root', + 'PASSWORD': 'your_password', + 'HOST': '127.0.0.1', + 'PORT': 3306, + } + } + ``` + 在 MySQL 中创建数据库: + ```sql + CREATE DATABASE `djangoblog` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + ``` + +- **更多配置**: + 关于邮件发送、OAuth 登录、缓存等更多高级配置,请参阅我们的 [详细配置文档](/docs/config.md)。 + +### 4. 初始化数据库 + +```bash +python manage.py makemigrations +python manage.py migrate + +# 创建一个超级管理员账户 +python manage.py createsuperuser +``` + +### 5. 运行项目 + +```bash +# (可选) 生成一些测试数据 +python manage.py create_testdata + +# (可选) 收集和压缩静态文件 +python manage.py collectstatic --noinput +python manage.py compress --force + +# 启动开发服务器 +python manage.py runserver +``` + +现在,在您的浏览器中访问 `http://127.0.0.1:8000/`,您应该能看到 DjangoBlog 的首页了! + +## 部署 + +- **传统部署**: 我们为您准备了非常详细的 [服务器部署教程](https://www.lylinux.net/article/2019/8/5/58.html)。 +- **Docker 部署**: 项目已全面支持 Docker。如果您熟悉容器化技术,请参考 [Docker 部署文档](/docs/docker.md) 来快速启动。 +- **Kubernetes 部署**: 我们也提供了完整的 [Kubernetes 部署指南](/docs/k8s.md),助您轻松上云。 + +## 🧩 插件系统 + +插件系统是 DjangoBlog 的核心特色之一。它允许您在不修改核心代码的情况下,通过编写独立的插件来为您的博客添加新功能。 + +- **工作原理**: 插件通过在预定义的“钩子”上注册回调函数来工作。例如,当一篇文章被渲染时,`after_article_body_get` 钩子会被触发,所有注册到此钩子的函数都会被执行。 +- **现有插件**: `view_count`(浏览计数), `seo_optimizer`(SEO优化)等都是通过插件系统实现的。 +- **开发您自己的插件**: 只需在 `plugins` 目录下创建一个新的文件夹,并编写您的 `plugin.py`。欢迎探索并为 DjangoBlog 社区贡献您的创意! + +## 🤝 贡献指南 + +我们热烈欢迎任何形式的贡献!如果您有好的想法或发现了 Bug,请随时提交 Issue 或 Pull Request。 + +## 📄 许可证 + +本项目基于 [MIT License](LICENSE) 开源。 + +--- + +## ❤️ 支持与赞助 + +如果您觉得这个项目对您有帮助,并且希望支持我继续维护和开发新功能,欢迎请我喝杯咖啡!您的每一份支持都是我前进的最大动力。 + +

+ 支付宝赞助 + 微信赞助 +

+

+ (左) 支付宝 / (右) 微信 +

+ +## 🙏 鸣谢 + +特别感谢 **JetBrains** 为本项目提供的免费开源许可证。 + +

+ + JetBrains Logo + +

+ +--- +> 如果本项目帮助到了你,请在[这里](https://github.com/liangliangyy/DjangoBlog/issues/214)留下你的网址,让更多的人看到。您的回复将会是我继续更新维护下去的动力。 diff --git a/src/DjangoBlog-master/accounts/__init__.py b/src/DjangoBlog-master/accounts/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/DjangoBlog-master/accounts/admin.py b/src/DjangoBlog-master/accounts/admin.py new file mode 100644 index 0000000..32e483c --- /dev/null +++ b/src/DjangoBlog-master/accounts/admin.py @@ -0,0 +1,59 @@ +from django import forms +from django.contrib.auth.admin import UserAdmin +from django.contrib.auth.forms import UserChangeForm +from django.contrib.auth.forms import UsernameField +from django.utils.translation import gettext_lazy as _ + +# Register your models here. +from .models import BlogUser + + +class BlogUserCreationForm(forms.ModelForm): + password1 = forms.CharField(label=_('password'), widget=forms.PasswordInput) + password2 = forms.CharField(label=_('Enter password again'), widget=forms.PasswordInput) + + class Meta: + model = BlogUser + fields = ('email',) + + def clean_password2(self): + # Check that the two password entries match + password1 = self.cleaned_data.get("password1") + password2 = self.cleaned_data.get("password2") + if password1 and password2 and password1 != password2: + raise forms.ValidationError(_("passwords do not match")) + return password2 + + def save(self, commit=True): + # Save the provided password in hashed format + user = super().save(commit=False) + user.set_password(self.cleaned_data["password1"]) + if commit: + user.source = 'adminsite' + user.save() + return user + + +class BlogUserChangeForm(UserChangeForm): + class Meta: + model = BlogUser + fields = '__all__' + field_classes = {'username': UsernameField} + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + +class BlogUserAdmin(UserAdmin): + form = BlogUserChangeForm + add_form = BlogUserCreationForm + list_display = ( + 'id', + 'nickname', + 'username', + 'email', + 'last_login', + 'date_joined', + 'source') + list_display_links = ('id', 'username') + ordering = ('-id',) diff --git a/src/DjangoBlog-master/accounts/apps.py b/src/DjangoBlog-master/accounts/apps.py new file mode 100644 index 0000000..9b3fc5a --- /dev/null +++ b/src/DjangoBlog-master/accounts/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class AccountsConfig(AppConfig): + name = 'accounts' diff --git a/src/DjangoBlog-master/accounts/forms.py b/src/DjangoBlog-master/accounts/forms.py new file mode 100644 index 0000000..fce4137 --- /dev/null +++ b/src/DjangoBlog-master/accounts/forms.py @@ -0,0 +1,117 @@ +from django import forms +from django.contrib.auth import get_user_model, password_validation +from django.contrib.auth.forms import AuthenticationForm, UserCreationForm +from django.core.exceptions import ValidationError +from django.forms import widgets +from django.utils.translation import gettext_lazy as _ +from . import utils +from .models import BlogUser + + +class LoginForm(AuthenticationForm): + def __init__(self, *args, **kwargs): + super(LoginForm, self).__init__(*args, **kwargs) + self.fields['username'].widget = widgets.TextInput( + attrs={'placeholder': "username", "class": "form-control"}) + self.fields['password'].widget = widgets.PasswordInput( + attrs={'placeholder': "password", "class": "form-control"}) + + +class RegisterForm(UserCreationForm): + def __init__(self, *args, **kwargs): + super(RegisterForm, self).__init__(*args, **kwargs) + + self.fields['username'].widget = widgets.TextInput( + attrs={'placeholder': "username", "class": "form-control"}) + self.fields['email'].widget = widgets.EmailInput( + attrs={'placeholder': "email", "class": "form-control"}) + self.fields['password1'].widget = widgets.PasswordInput( + attrs={'placeholder': "password", "class": "form-control"}) + self.fields['password2'].widget = widgets.PasswordInput( + attrs={'placeholder': "repeat password", "class": "form-control"}) + + def clean_email(self): + email = self.cleaned_data['email'] + if get_user_model().objects.filter(email=email).exists(): + raise ValidationError(_("email already exists")) + return email + + class Meta: + model = get_user_model() + fields = ("username", "email") + + +class ForgetPasswordForm(forms.Form): + new_password1 = forms.CharField( + label=_("New password"), + widget=forms.PasswordInput( + attrs={ + "class": "form-control", + 'placeholder': _("New password") + } + ), + ) + + new_password2 = forms.CharField( + label="确认密码", + widget=forms.PasswordInput( + attrs={ + "class": "form-control", + 'placeholder': _("Confirm password") + } + ), + ) + + email = forms.EmailField( + label='邮箱', + widget=forms.TextInput( + attrs={ + 'class': 'form-control', + 'placeholder': _("Email") + } + ), + ) + + code = forms.CharField( + label=_('Code'), + widget=forms.TextInput( + attrs={ + 'class': 'form-control', + 'placeholder': _("Code") + } + ), + ) + + def clean_new_password2(self): + password1 = self.data.get("new_password1") + password2 = self.data.get("new_password2") + if password1 and password2 and password1 != password2: + raise ValidationError(_("passwords do not match")) + password_validation.validate_password(password2) + + return password2 + + def clean_email(self): + user_email = self.cleaned_data.get("email") + if not BlogUser.objects.filter( + email=user_email + ).exists(): + # todo 这里的报错提示可以判断一个邮箱是不是注册过,如果不想暴露可以修改 + raise ValidationError(_("email does not exist")) + return user_email + + def clean_code(self): + code = self.cleaned_data.get("code") + error = utils.verify( + email=self.cleaned_data.get("email"), + code=code, + ) + if error: + raise ValidationError(error) + return code + + +class ForgetPasswordCodeForm(forms.Form): + email = forms.EmailField( + label=_('Email'), + ) diff --git a/src/DjangoBlog-master/accounts/migrations/0001_initial.py b/src/DjangoBlog-master/accounts/migrations/0001_initial.py new file mode 100644 index 0000000..d2fbcab --- /dev/null +++ b/src/DjangoBlog-master/accounts/migrations/0001_initial.py @@ -0,0 +1,49 @@ +# Generated by Django 4.1.7 on 2023-03-02 07:14 + +import django.contrib.auth.models +import django.contrib.auth.validators +from django.db import migrations, models +import django.utils.timezone + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('auth', '0012_alter_user_first_name_max_length'), + ] + + operations = [ + migrations.CreateModel( + name='BlogUser', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('password', models.CharField(max_length=128, verbose_name='password')), + ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')), + ('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')), + ('username', models.CharField(error_messages={'unique': 'A user with that username already exists.'}, help_text='Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.', max_length=150, unique=True, validators=[django.contrib.auth.validators.UnicodeUsernameValidator()], verbose_name='username')), + ('first_name', models.CharField(blank=True, max_length=150, verbose_name='first name')), + ('last_name', models.CharField(blank=True, max_length=150, verbose_name='last name')), + ('email', models.EmailField(blank=True, max_length=254, verbose_name='email address')), + ('is_staff', models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.', verbose_name='staff status')), + ('is_active', models.BooleanField(default=True, help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')), + ('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')), + ('nickname', models.CharField(blank=True, max_length=100, verbose_name='昵称')), + ('created_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='创建时间')), + ('last_mod_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='修改时间')), + ('source', models.CharField(blank=True, max_length=100, verbose_name='创建来源')), + ('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.group', verbose_name='groups')), + ('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.permission', verbose_name='user permissions')), + ], + options={ + 'verbose_name': '用户', + 'verbose_name_plural': '用户', + 'ordering': ['-id'], + 'get_latest_by': 'id', + }, + managers=[ + ('objects', django.contrib.auth.models.UserManager()), + ], + ), + ] diff --git a/src/DjangoBlog-master/accounts/migrations/0002_alter_bloguser_options_remove_bloguser_created_time_and_more.py b/src/DjangoBlog-master/accounts/migrations/0002_alter_bloguser_options_remove_bloguser_created_time_and_more.py new file mode 100644 index 0000000..1a9f509 --- /dev/null +++ b/src/DjangoBlog-master/accounts/migrations/0002_alter_bloguser_options_remove_bloguser_created_time_and_more.py @@ -0,0 +1,46 @@ +# Generated by Django 4.2.5 on 2023-09-06 13:13 + +from django.db import migrations, models +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('accounts', '0001_initial'), + ] + + operations = [ + migrations.AlterModelOptions( + name='bloguser', + options={'get_latest_by': 'id', 'ordering': ['-id'], 'verbose_name': 'user', 'verbose_name_plural': 'user'}, + ), + migrations.RemoveField( + model_name='bloguser', + name='created_time', + ), + migrations.RemoveField( + model_name='bloguser', + name='last_mod_time', + ), + migrations.AddField( + model_name='bloguser', + name='creation_time', + field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='creation time'), + ), + migrations.AddField( + model_name='bloguser', + name='last_modify_time', + field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='last modify time'), + ), + migrations.AlterField( + model_name='bloguser', + name='nickname', + field=models.CharField(blank=True, max_length=100, verbose_name='nick name'), + ), + migrations.AlterField( + model_name='bloguser', + name='source', + field=models.CharField(blank=True, max_length=100, verbose_name='create source'), + ), + ] diff --git a/src/DjangoBlog-master/accounts/migrations/__init__.py b/src/DjangoBlog-master/accounts/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/DjangoBlog-master/accounts/models.py b/src/DjangoBlog-master/accounts/models.py new file mode 100644 index 0000000..3baddbb --- /dev/null +++ b/src/DjangoBlog-master/accounts/models.py @@ -0,0 +1,35 @@ +from django.contrib.auth.models import AbstractUser +from django.db import models +from django.urls import reverse +from django.utils.timezone import now +from django.utils.translation import gettext_lazy as _ +from djangoblog.utils import get_current_site + + +# Create your models here. + +class BlogUser(AbstractUser): + nickname = models.CharField(_('nick name'), max_length=100, blank=True) + creation_time = models.DateTimeField(_('creation time'), default=now) + last_modify_time = models.DateTimeField(_('last modify time'), default=now) + source = models.CharField(_('create source'), max_length=100, blank=True) + + def get_absolute_url(self): + return reverse( + 'blog:author_detail', kwargs={ + 'author_name': self.username}) + + def __str__(self): + return self.email + + def get_full_url(self): + site = get_current_site().domain + url = "https://{site}{path}".format(site=site, + path=self.get_absolute_url()) + return url + + class Meta: + ordering = ['-id'] + verbose_name = _('user') + verbose_name_plural = verbose_name + get_latest_by = 'id' diff --git a/src/DjangoBlog-master/accounts/templatetags/__init__.py b/src/DjangoBlog-master/accounts/templatetags/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/DjangoBlog-master/accounts/tests.py b/src/DjangoBlog-master/accounts/tests.py new file mode 100644 index 0000000..6893411 --- /dev/null +++ b/src/DjangoBlog-master/accounts/tests.py @@ -0,0 +1,207 @@ +from django.test import Client, RequestFactory, TestCase +from django.urls import reverse +from django.utils import timezone +from django.utils.translation import gettext_lazy as _ + +from accounts.models import BlogUser +from blog.models import Article, Category +from djangoblog.utils import * +from . import utils + + +# Create your tests here. + +class AccountTest(TestCase): + def setUp(self): + self.client = Client() + self.factory = RequestFactory() + self.blog_user = BlogUser.objects.create_user( + username="test", + email="admin@admin.com", + password="12345678" + ) + self.new_test = "xxx123--=" + + def test_validate_account(self): + site = get_current_site().domain + user = BlogUser.objects.create_superuser( + email="liangliangyy1@gmail.com", + username="liangliangyy1", + password="qwer!@#$ggg") + testuser = BlogUser.objects.get(username='liangliangyy1') + + loginresult = self.client.login( + username='liangliangyy1', + password='qwer!@#$ggg') + self.assertEqual(loginresult, True) + response = self.client.get('/admin/') + self.assertEqual(response.status_code, 200) + + category = Category() + category.name = "categoryaaa" + category.creation_time = timezone.now() + category.last_modify_time = timezone.now() + category.save() + + article = Article() + article.title = "nicetitleaaa" + article.body = "nicecontentaaa" + article.author = user + article.category = category + article.type = 'a' + article.status = 'p' + article.save() + + response = self.client.get(article.get_admin_url()) + self.assertEqual(response.status_code, 200) + + def test_validate_register(self): + self.assertEquals( + 0, len( + BlogUser.objects.filter( + email='user123@user.com'))) + response = self.client.post(reverse('account:register'), { + 'username': 'user1233', + 'email': 'user123@user.com', + 'password1': 'password123!q@wE#R$T', + 'password2': 'password123!q@wE#R$T', + }) + self.assertEquals( + 1, len( + BlogUser.objects.filter( + email='user123@user.com'))) + user = BlogUser.objects.filter(email='user123@user.com')[0] + sign = get_sha256(get_sha256(settings.SECRET_KEY + str(user.id))) + path = reverse('accounts:result') + url = '{path}?type=validation&id={id}&sign={sign}'.format( + path=path, id=user.id, sign=sign) + response = self.client.get(url) + self.assertEqual(response.status_code, 200) + + self.client.login(username='user1233', password='password123!q@wE#R$T') + user = BlogUser.objects.filter(email='user123@user.com')[0] + user.is_superuser = True + user.is_staff = True + user.save() + delete_sidebar_cache() + category = Category() + category.name = "categoryaaa" + category.creation_time = timezone.now() + category.last_modify_time = timezone.now() + category.save() + + article = Article() + article.category = category + article.title = "nicetitle333" + article.body = "nicecontentttt" + article.author = user + + article.type = 'a' + article.status = 'p' + article.save() + + response = self.client.get(article.get_admin_url()) + self.assertEqual(response.status_code, 200) + + response = self.client.get(reverse('account:logout')) + self.assertIn(response.status_code, [301, 302, 200]) + + response = self.client.get(article.get_admin_url()) + self.assertIn(response.status_code, [301, 302, 200]) + + response = self.client.post(reverse('account:login'), { + 'username': 'user1233', + 'password': 'password123' + }) + self.assertIn(response.status_code, [301, 302, 200]) + + response = self.client.get(article.get_admin_url()) + self.assertIn(response.status_code, [301, 302, 200]) + + def test_verify_email_code(self): + to_email = "admin@admin.com" + code = generate_code() + utils.set_code(to_email, code) + utils.send_verify_email(to_email, code) + + err = utils.verify("admin@admin.com", code) + self.assertEqual(err, None) + + err = utils.verify("admin@123.com", code) + self.assertEqual(type(err), str) + + def test_forget_password_email_code_success(self): + resp = self.client.post( + path=reverse("account:forget_password_code"), + data=dict(email="admin@admin.com") + ) + + self.assertEqual(resp.status_code, 200) + self.assertEqual(resp.content.decode("utf-8"), "ok") + + def test_forget_password_email_code_fail(self): + resp = self.client.post( + path=reverse("account:forget_password_code"), + data=dict() + ) + self.assertEqual(resp.content.decode("utf-8"), "错误的邮箱") + + resp = self.client.post( + path=reverse("account:forget_password_code"), + data=dict(email="admin@com") + ) + self.assertEqual(resp.content.decode("utf-8"), "错误的邮箱") + + def test_forget_password_email_success(self): + code = generate_code() + utils.set_code(self.blog_user.email, code) + data = dict( + new_password1=self.new_test, + new_password2=self.new_test, + email=self.blog_user.email, + code=code, + ) + resp = self.client.post( + path=reverse("account:forget_password"), + data=data + ) + self.assertEqual(resp.status_code, 302) + + # 验证用户密码是否修改成功 + blog_user = BlogUser.objects.filter( + email=self.blog_user.email, + ).first() # type: BlogUser + self.assertNotEqual(blog_user, None) + self.assertEqual(blog_user.check_password(data["new_password1"]), True) + + def test_forget_password_email_not_user(self): + data = dict( + new_password1=self.new_test, + new_password2=self.new_test, + email="123@123.com", + code="123456", + ) + resp = self.client.post( + path=reverse("account:forget_password"), + data=data + ) + + self.assertEqual(resp.status_code, 200) + + + def test_forget_password_email_code_error(self): + code = generate_code() + utils.set_code(self.blog_user.email, code) + data = dict( + new_password1=self.new_test, + new_password2=self.new_test, + email=self.blog_user.email, + code="111111", + ) + resp = self.client.post( + path=reverse("account:forget_password"), + data=data + ) + + self.assertEqual(resp.status_code, 200) + diff --git a/src/DjangoBlog-master/accounts/urls.py b/src/DjangoBlog-master/accounts/urls.py new file mode 100644 index 0000000..107a801 --- /dev/null +++ b/src/DjangoBlog-master/accounts/urls.py @@ -0,0 +1,28 @@ +from django.urls import path +from django.urls import re_path + +from . import views +from .forms import LoginForm + +app_name = "accounts" + +urlpatterns = [re_path(r'^login/$', + views.LoginView.as_view(success_url='/'), + name='login', + kwargs={'authentication_form': LoginForm}), + re_path(r'^register/$', + views.RegisterView.as_view(success_url="/"), + name='register'), + re_path(r'^logout/$', + views.LogoutView.as_view(), + name='logout'), + path(r'account/result.html', + views.account_result, + name='result'), + re_path(r'^forget_password/$', + views.ForgetPasswordView.as_view(), + name='forget_password'), + re_path(r'^forget_password_code/$', + views.ForgetPasswordEmailCode.as_view(), + name='forget_password_code'), + ] diff --git a/src/DjangoBlog-master/accounts/user_login_backend.py b/src/DjangoBlog-master/accounts/user_login_backend.py new file mode 100644 index 0000000..73cdca1 --- /dev/null +++ b/src/DjangoBlog-master/accounts/user_login_backend.py @@ -0,0 +1,26 @@ +from django.contrib.auth import get_user_model +from django.contrib.auth.backends import ModelBackend + + +class EmailOrUsernameModelBackend(ModelBackend): + """ + 允许使用用户名或邮箱登录 + """ + + def authenticate(self, request, username=None, password=None, **kwargs): + if '@' in username: + kwargs = {'email': username} + else: + kwargs = {'username': username} + try: + user = get_user_model().objects.get(**kwargs) + if user.check_password(password): + return user + except get_user_model().DoesNotExist: + return None + + def get_user(self, username): + try: + return get_user_model().objects.get(pk=username) + except get_user_model().DoesNotExist: + return None diff --git a/src/DjangoBlog-master/accounts/utils.py b/src/DjangoBlog-master/accounts/utils.py new file mode 100644 index 0000000..4b94bdf --- /dev/null +++ b/src/DjangoBlog-master/accounts/utils.py @@ -0,0 +1,49 @@ +import typing +from datetime import timedelta + +from django.core.cache import cache +from django.utils.translation import gettext +from django.utils.translation import gettext_lazy as _ + +from djangoblog.utils import send_email + +_code_ttl = timedelta(minutes=5) + + +def send_verify_email(to_mail: str, code: str, subject: str = _("Verify Email")): + """发送重设密码验证码 + Args: + to_mail: 接受邮箱 + subject: 邮件主题 + code: 验证码 + """ + html_content = _( + "You are resetting the password, the verification code is:%(code)s, valid within 5 minutes, please keep it " + "properly") % {'code': code} + send_email([to_mail], subject, html_content) + + +def verify(email: str, code: str) -> typing.Optional[str]: + """验证code是否有效 + Args: + email: 请求邮箱 + code: 验证码 + Return: + 如果有错误就返回错误str + Node: + 这里的错误处理不太合理,应该采用raise抛出 + 否测调用方也需要对error进行处理 + """ + cache_code = get_code(email) + if cache_code != code: + return gettext("Verification code error") + + +def set_code(email: str, code: str): + """设置code""" + cache.set(email, code, _code_ttl.seconds) + + +def get_code(email: str) -> typing.Optional[str]: + """获取code""" + return cache.get(email) diff --git a/src/DjangoBlog-master/accounts/views.py b/src/DjangoBlog-master/accounts/views.py new file mode 100644 index 0000000..ae67aec --- /dev/null +++ b/src/DjangoBlog-master/accounts/views.py @@ -0,0 +1,204 @@ +import logging +from django.utils.translation import gettext_lazy as _ +from django.conf import settings +from django.contrib import auth +from django.contrib.auth import REDIRECT_FIELD_NAME +from django.contrib.auth import get_user_model +from django.contrib.auth import logout +from django.contrib.auth.forms import AuthenticationForm +from django.contrib.auth.hashers import make_password +from django.http import HttpResponseRedirect, HttpResponseForbidden +from django.http.request import HttpRequest +from django.http.response import HttpResponse +from django.shortcuts import get_object_or_404 +from django.shortcuts import render +from django.urls import reverse +from django.utils.decorators import method_decorator +from django.utils.http import url_has_allowed_host_and_scheme +from django.views import View +from django.views.decorators.cache import never_cache +from django.views.decorators.csrf import csrf_protect +from django.views.decorators.debug import sensitive_post_parameters +from django.views.generic import FormView, RedirectView + +from djangoblog.utils import send_email, get_sha256, get_current_site, generate_code, delete_sidebar_cache +from . import utils +from .forms import RegisterForm, LoginForm, ForgetPasswordForm, ForgetPasswordCodeForm +from .models import BlogUser + +logger = logging.getLogger(__name__) + + +# Create your views here. + +class RegisterView(FormView): + form_class = RegisterForm + template_name = 'account/registration_form.html' + + @method_decorator(csrf_protect) + def dispatch(self, *args, **kwargs): + return super(RegisterView, self).dispatch(*args, **kwargs) + + def form_valid(self, form): + if form.is_valid(): + user = form.save(False) + user.is_active = False + user.source = 'Register' + user.save(True) + site = get_current_site().domain + sign = get_sha256(get_sha256(settings.SECRET_KEY + str(user.id))) + + if settings.DEBUG: + site = '127.0.0.1:8000' + path = reverse('account:result') + url = "http://{site}{path}?type=validation&id={id}&sign={sign}".format( + site=site, path=path, id=user.id, sign=sign) + + content = """ +

请点击下面链接验证您的邮箱

+ + {url} + + 再次感谢您! +
+ 如果上面链接无法打开,请将此链接复制至浏览器。 + {url} + """.format(url=url) + send_email( + emailto=[ + user.email, + ], + title='验证您的电子邮箱', + content=content) + + url = reverse('accounts:result') + \ + '?type=register&id=' + str(user.id) + return HttpResponseRedirect(url) + else: + return self.render_to_response({ + 'form': form + }) + + +class LogoutView(RedirectView): + url = '/login/' + + @method_decorator(never_cache) + def dispatch(self, request, *args, **kwargs): + return super(LogoutView, self).dispatch(request, *args, **kwargs) + + def get(self, request, *args, **kwargs): + logout(request) + delete_sidebar_cache() + return super(LogoutView, self).get(request, *args, **kwargs) + + +class LoginView(FormView): + form_class = LoginForm + template_name = 'account/login.html' + success_url = '/' + redirect_field_name = REDIRECT_FIELD_NAME + login_ttl = 2626560 # 一个月的时间 + + @method_decorator(sensitive_post_parameters('password')) + @method_decorator(csrf_protect) + @method_decorator(never_cache) + def dispatch(self, request, *args, **kwargs): + + return super(LoginView, self).dispatch(request, *args, **kwargs) + + def get_context_data(self, **kwargs): + redirect_to = self.request.GET.get(self.redirect_field_name) + if redirect_to is None: + redirect_to = '/' + kwargs['redirect_to'] = redirect_to + + return super(LoginView, self).get_context_data(**kwargs) + + def form_valid(self, form): + form = AuthenticationForm(data=self.request.POST, request=self.request) + + if form.is_valid(): + delete_sidebar_cache() + logger.info(self.redirect_field_name) + + auth.login(self.request, form.get_user()) + if self.request.POST.get("remember"): + self.request.session.set_expiry(self.login_ttl) + return super(LoginView, self).form_valid(form) + # return HttpResponseRedirect('/') + else: + return self.render_to_response({ + 'form': form + }) + + def get_success_url(self): + + redirect_to = self.request.POST.get(self.redirect_field_name) + if not url_has_allowed_host_and_scheme( + url=redirect_to, allowed_hosts=[ + self.request.get_host()]): + redirect_to = self.success_url + return redirect_to + + +def account_result(request): + type = request.GET.get('type') + id = request.GET.get('id') + + user = get_object_or_404(get_user_model(), id=id) + logger.info(type) + if user.is_active: + return HttpResponseRedirect('/') + if type and type in ['register', 'validation']: + if type == 'register': + content = ''' + 恭喜您注册成功,一封验证邮件已经发送到您的邮箱,请验证您的邮箱后登录本站。 + ''' + title = '注册成功' + else: + c_sign = get_sha256(get_sha256(settings.SECRET_KEY + str(user.id))) + sign = request.GET.get('sign') + if sign != c_sign: + return HttpResponseForbidden() + user.is_active = True + user.save() + content = ''' + 恭喜您已经成功的完成邮箱验证,您现在可以使用您的账号来登录本站。 + ''' + title = '验证成功' + return render(request, 'account/result.html', { + 'title': title, + 'content': content + }) + else: + return HttpResponseRedirect('/') + + +class ForgetPasswordView(FormView): + form_class = ForgetPasswordForm + template_name = 'account/forget_password.html' + + def form_valid(self, form): + if form.is_valid(): + blog_user = BlogUser.objects.filter(email=form.cleaned_data.get("email")).get() + blog_user.password = make_password(form.cleaned_data["new_password2"]) + blog_user.save() + return HttpResponseRedirect('/login/') + else: + return self.render_to_response({'form': form}) + + +class ForgetPasswordEmailCode(View): + + def post(self, request: HttpRequest): + form = ForgetPasswordCodeForm(request.POST) + if not form.is_valid(): + return HttpResponse("错误的邮箱") + to_email = form.cleaned_data["email"] + + code = generate_code() + utils.send_verify_email(to_email, code) + utils.set_code(to_email, code) + + return HttpResponse("ok") diff --git a/src/DjangoBlog-master/blog/__init__.py b/src/DjangoBlog-master/blog/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/DjangoBlog-master/blog/admin.py b/src/DjangoBlog-master/blog/admin.py new file mode 100644 index 0000000..46c3420 --- /dev/null +++ b/src/DjangoBlog-master/blog/admin.py @@ -0,0 +1,112 @@ +from django import forms +from django.contrib import admin +from django.contrib.auth import get_user_model +from django.urls import reverse +from django.utils.html import format_html +from django.utils.translation import gettext_lazy as _ + +# Register your models here. +from .models import Article + + +class ArticleForm(forms.ModelForm): + # body = forms.CharField(widget=AdminPagedownWidget()) + + class Meta: + model = Article + fields = '__all__' + + +def makr_article_publish(modeladmin, request, queryset): + queryset.update(status='p') + + +def draft_article(modeladmin, request, queryset): + queryset.update(status='d') + + +def close_article_commentstatus(modeladmin, request, queryset): + queryset.update(comment_status='c') + + +def open_article_commentstatus(modeladmin, request, queryset): + queryset.update(comment_status='o') + + +makr_article_publish.short_description = _('Publish selected articles') +draft_article.short_description = _('Draft selected articles') +close_article_commentstatus.short_description = _('Close article comments') +open_article_commentstatus.short_description = _('Open article comments') + + +class ArticlelAdmin(admin.ModelAdmin): + list_per_page = 20 + search_fields = ('body', 'title') + form = ArticleForm + list_display = ( + 'id', + 'title', + 'author', + 'link_to_category', + 'creation_time', + 'views', + 'status', + 'type', + 'article_order') + list_display_links = ('id', 'title') + list_filter = ('status', 'type', 'category') + filter_horizontal = ('tags',) + exclude = ('creation_time', 'last_modify_time') + view_on_site = True + actions = [ + makr_article_publish, + draft_article, + close_article_commentstatus, + open_article_commentstatus] + + def link_to_category(self, obj): + info = (obj.category._meta.app_label, obj.category._meta.model_name) + link = reverse('admin:%s_%s_change' % info, args=(obj.category.id,)) + return format_html(u'%s' % (link, obj.category.name)) + + link_to_category.short_description = _('category') + + def get_form(self, request, obj=None, **kwargs): + form = super(ArticlelAdmin, self).get_form(request, obj, **kwargs) + form.base_fields['author'].queryset = get_user_model( + ).objects.filter(is_superuser=True) + return form + + def save_model(self, request, obj, form, change): + super(ArticlelAdmin, self).save_model(request, obj, form, change) + + def get_view_on_site_url(self, obj=None): + if obj: + url = obj.get_full_url() + return url + else: + from djangoblog.utils import get_current_site + site = get_current_site().domain + return site + + +class TagAdmin(admin.ModelAdmin): + exclude = ('slug', 'last_mod_time', 'creation_time') + + +class CategoryAdmin(admin.ModelAdmin): + list_display = ('name', 'parent_category', 'index') + exclude = ('slug', 'last_mod_time', 'creation_time') + + +class LinksAdmin(admin.ModelAdmin): + exclude = ('last_mod_time', 'creation_time') + + +class SideBarAdmin(admin.ModelAdmin): + list_display = ('name', 'content', 'is_enable', 'sequence') + exclude = ('last_mod_time', 'creation_time') + + +class BlogSettingsAdmin(admin.ModelAdmin): + pass diff --git a/src/DjangoBlog-master/blog/apps.py b/src/DjangoBlog-master/blog/apps.py new file mode 100644 index 0000000..7930587 --- /dev/null +++ b/src/DjangoBlog-master/blog/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class BlogConfig(AppConfig): + name = 'blog' diff --git a/src/DjangoBlog-master/blog/context_processors.py b/src/DjangoBlog-master/blog/context_processors.py new file mode 100644 index 0000000..73e3088 --- /dev/null +++ b/src/DjangoBlog-master/blog/context_processors.py @@ -0,0 +1,43 @@ +import logging + +from django.utils import timezone + +from djangoblog.utils import cache, get_blog_setting +from .models import Category, Article + +logger = logging.getLogger(__name__) + + +def seo_processor(requests): + key = 'seo_processor' + value = cache.get(key) + if value: + return value + else: + logger.info('set processor cache.') + setting = get_blog_setting() + value = { + 'SITE_NAME': setting.site_name, + 'SHOW_GOOGLE_ADSENSE': setting.show_google_adsense, + 'GOOGLE_ADSENSE_CODES': setting.google_adsense_codes, + 'SITE_SEO_DESCRIPTION': setting.site_seo_description, + 'SITE_DESCRIPTION': setting.site_description, + 'SITE_KEYWORDS': setting.site_keywords, + 'SITE_BASE_URL': requests.scheme + '://' + requests.get_host() + '/', + 'ARTICLE_SUB_LENGTH': setting.article_sub_length, + 'nav_category_list': Category.objects.all(), + 'nav_pages': Article.objects.filter( + type='p', + status='p'), + 'OPEN_SITE_COMMENT': setting.open_site_comment, + 'BEIAN_CODE': setting.beian_code, + 'ANALYTICS_CODE': setting.analytics_code, + "BEIAN_CODE_GONGAN": setting.gongan_beiancode, + "SHOW_GONGAN_CODE": setting.show_gongan_code, + "CURRENT_YEAR": timezone.now().year, + "GLOBAL_HEADER": setting.global_header, + "GLOBAL_FOOTER": setting.global_footer, + "COMMENT_NEED_REVIEW": setting.comment_need_review, + } + cache.set(key, value, 60 * 60 * 10) + return value diff --git a/src/DjangoBlog-master/blog/documents.py b/src/DjangoBlog-master/blog/documents.py new file mode 100644 index 0000000..0f1db7b --- /dev/null +++ b/src/DjangoBlog-master/blog/documents.py @@ -0,0 +1,213 @@ +import time + +import elasticsearch.client +from django.conf import settings +from elasticsearch_dsl import Document, InnerDoc, Date, Integer, Long, Text, Object, GeoPoint, Keyword, Boolean +from elasticsearch_dsl.connections import connections + +from blog.models import Article + +ELASTICSEARCH_ENABLED = hasattr(settings, 'ELASTICSEARCH_DSL') + +if ELASTICSEARCH_ENABLED: + connections.create_connection( + hosts=[settings.ELASTICSEARCH_DSL['default']['hosts']]) + from elasticsearch import Elasticsearch + + es = Elasticsearch(settings.ELASTICSEARCH_DSL['default']['hosts']) + from elasticsearch.client import IngestClient + + c = IngestClient(es) + try: + c.get_pipeline('geoip') + except elasticsearch.exceptions.NotFoundError: + c.put_pipeline('geoip', body='''{ + "description" : "Add geoip info", + "processors" : [ + { + "geoip" : { + "field" : "ip" + } + } + ] + }''') + + +class GeoIp(InnerDoc): + continent_name = Keyword() + country_iso_code = Keyword() + country_name = Keyword() + location = GeoPoint() + + +class UserAgentBrowser(InnerDoc): + Family = Keyword() + Version = Keyword() + + +class UserAgentOS(UserAgentBrowser): + pass + + +class UserAgentDevice(InnerDoc): + Family = Keyword() + Brand = Keyword() + Model = Keyword() + + +class UserAgent(InnerDoc): + browser = Object(UserAgentBrowser, required=False) + os = Object(UserAgentOS, required=False) + device = Object(UserAgentDevice, required=False) + string = Text() + is_bot = Boolean() + + +class ElapsedTimeDocument(Document): + url = Keyword() + time_taken = Long() + log_datetime = Date() + ip = Keyword() + geoip = Object(GeoIp, required=False) + useragent = Object(UserAgent, required=False) + + class Index: + name = 'performance' + settings = { + "number_of_shards": 1, + "number_of_replicas": 0 + } + + class Meta: + doc_type = 'ElapsedTime' + + +class ElaspedTimeDocumentManager: + @staticmethod + def build_index(): + from elasticsearch import Elasticsearch + client = Elasticsearch(settings.ELASTICSEARCH_DSL['default']['hosts']) + res = client.indices.exists(index="performance") + if not res: + ElapsedTimeDocument.init() + + @staticmethod + def delete_index(): + from elasticsearch import Elasticsearch + es = Elasticsearch(settings.ELASTICSEARCH_DSL['default']['hosts']) + es.indices.delete(index='performance', ignore=[400, 404]) + + @staticmethod + def create(url, time_taken, log_datetime, useragent, ip): + ElaspedTimeDocumentManager.build_index() + ua = UserAgent() + ua.browser = UserAgentBrowser() + ua.browser.Family = useragent.browser.family + ua.browser.Version = useragent.browser.version_string + + ua.os = UserAgentOS() + ua.os.Family = useragent.os.family + ua.os.Version = useragent.os.version_string + + ua.device = UserAgentDevice() + ua.device.Family = useragent.device.family + ua.device.Brand = useragent.device.brand + ua.device.Model = useragent.device.model + ua.string = useragent.ua_string + ua.is_bot = useragent.is_bot + + doc = ElapsedTimeDocument( + meta={ + 'id': int( + round( + time.time() * + 1000)) + }, + url=url, + time_taken=time_taken, + log_datetime=log_datetime, + useragent=ua, ip=ip) + doc.save(pipeline="geoip") + + +class ArticleDocument(Document): + body = Text(analyzer='ik_max_word', search_analyzer='ik_smart') + title = Text(analyzer='ik_max_word', search_analyzer='ik_smart') + author = Object(properties={ + 'nickname': Text(analyzer='ik_max_word', search_analyzer='ik_smart'), + 'id': Integer() + }) + category = Object(properties={ + 'name': Text(analyzer='ik_max_word', search_analyzer='ik_smart'), + 'id': Integer() + }) + tags = Object(properties={ + 'name': Text(analyzer='ik_max_word', search_analyzer='ik_smart'), + 'id': Integer() + }) + + pub_time = Date() + status = Text() + comment_status = Text() + type = Text() + views = Integer() + article_order = Integer() + + class Index: + name = 'blog' + settings = { + "number_of_shards": 1, + "number_of_replicas": 0 + } + + class Meta: + doc_type = 'Article' + + +class ArticleDocumentManager(): + + def __init__(self): + self.create_index() + + def create_index(self): + ArticleDocument.init() + + def delete_index(self): + from elasticsearch import Elasticsearch + es = Elasticsearch(settings.ELASTICSEARCH_DSL['default']['hosts']) + es.indices.delete(index='blog', ignore=[400, 404]) + + def convert_to_doc(self, articles): + return [ + ArticleDocument( + meta={ + 'id': article.id}, + body=article.body, + title=article.title, + author={ + 'nickname': article.author.username, + 'id': article.author.id}, + category={ + 'name': article.category.name, + 'id': article.category.id}, + tags=[ + { + 'name': t.name, + 'id': t.id} for t in article.tags.all()], + pub_time=article.pub_time, + status=article.status, + comment_status=article.comment_status, + type=article.type, + views=article.views, + article_order=article.article_order) for article in articles] + + def rebuild(self, articles=None): + ArticleDocument.init() + articles = articles if articles else Article.objects.all() + docs = self.convert_to_doc(articles) + for doc in docs: + doc.save() + + def update_docs(self, docs): + for doc in docs: + doc.save() diff --git a/src/DjangoBlog-master/blog/forms.py b/src/DjangoBlog-master/blog/forms.py new file mode 100644 index 0000000..715be76 --- /dev/null +++ b/src/DjangoBlog-master/blog/forms.py @@ -0,0 +1,19 @@ +import logging + +from django import forms +from haystack.forms import SearchForm + +logger = logging.getLogger(__name__) + + +class BlogSearchForm(SearchForm): + querydata = forms.CharField(required=True) + + def search(self): + datas = super(BlogSearchForm, self).search() + if not self.is_valid(): + return self.no_query_found() + + if self.cleaned_data['querydata']: + logger.info(self.cleaned_data['querydata']) + return datas diff --git a/src/DjangoBlog-master/blog/management/__init__.py b/src/DjangoBlog-master/blog/management/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/DjangoBlog-master/blog/management/commands/__init__.py b/src/DjangoBlog-master/blog/management/commands/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/DjangoBlog-master/blog/management/commands/build_index.py b/src/DjangoBlog-master/blog/management/commands/build_index.py new file mode 100644 index 0000000..3c4acd7 --- /dev/null +++ b/src/DjangoBlog-master/blog/management/commands/build_index.py @@ -0,0 +1,18 @@ +from django.core.management.base import BaseCommand + +from blog.documents import ElapsedTimeDocument, ArticleDocumentManager, ElaspedTimeDocumentManager, \ + ELASTICSEARCH_ENABLED + + +# TODO 参数化 +class Command(BaseCommand): + help = 'build search index' + + def handle(self, *args, **options): + if ELASTICSEARCH_ENABLED: + ElaspedTimeDocumentManager.build_index() + manager = ElapsedTimeDocument() + manager.init() + manager = ArticleDocumentManager() + manager.delete_index() + manager.rebuild() diff --git a/src/DjangoBlog-master/blog/management/commands/build_search_words.py b/src/DjangoBlog-master/blog/management/commands/build_search_words.py new file mode 100644 index 0000000..cfe7e0d --- /dev/null +++ b/src/DjangoBlog-master/blog/management/commands/build_search_words.py @@ -0,0 +1,13 @@ +from django.core.management.base import BaseCommand + +from blog.models import Tag, Category + + +# TODO 参数化 +class Command(BaseCommand): + help = 'build search words' + + def handle(self, *args, **options): + datas = set([t.name for t in Tag.objects.all()] + + [t.name for t in Category.objects.all()]) + print('\n'.join(datas)) diff --git a/src/DjangoBlog-master/blog/management/commands/clear_cache.py b/src/DjangoBlog-master/blog/management/commands/clear_cache.py new file mode 100644 index 0000000..0d66172 --- /dev/null +++ b/src/DjangoBlog-master/blog/management/commands/clear_cache.py @@ -0,0 +1,11 @@ +from django.core.management.base import BaseCommand + +from djangoblog.utils import cache + + +class Command(BaseCommand): + help = 'clear the whole cache' + + def handle(self, *args, **options): + cache.clear() + self.stdout.write(self.style.SUCCESS('Cleared cache\n')) diff --git a/src/DjangoBlog-master/blog/management/commands/create_testdata.py b/src/DjangoBlog-master/blog/management/commands/create_testdata.py new file mode 100644 index 0000000..675d2ba --- /dev/null +++ b/src/DjangoBlog-master/blog/management/commands/create_testdata.py @@ -0,0 +1,40 @@ +from django.contrib.auth import get_user_model +from django.contrib.auth.hashers import make_password +from django.core.management.base import BaseCommand + +from blog.models import Article, Tag, Category + + +class Command(BaseCommand): + help = 'create test datas' + + def handle(self, *args, **options): + user = get_user_model().objects.get_or_create( + email='test@test.com', username='测试用户', password=make_password('test!q@w#eTYU'))[0] + + pcategory = Category.objects.get_or_create( + name='我是父类目', parent_category=None)[0] + + category = Category.objects.get_or_create( + name='子类目', parent_category=pcategory)[0] + + category.save() + basetag = Tag() + basetag.name = "标签" + basetag.save() + for i in range(1, 20): + article = Article.objects.get_or_create( + category=category, + title='nice title ' + str(i), + body='nice content ' + str(i), + author=user)[0] + tag = Tag() + tag.name = "标签" + str(i) + tag.save() + article.tags.add(tag) + article.tags.add(basetag) + article.save() + + from djangoblog.utils import cache + cache.clear() + self.stdout.write(self.style.SUCCESS('created test datas \n')) diff --git a/src/DjangoBlog-master/blog/management/commands/ping_baidu.py b/src/DjangoBlog-master/blog/management/commands/ping_baidu.py new file mode 100644 index 0000000..2c7fbdd --- /dev/null +++ b/src/DjangoBlog-master/blog/management/commands/ping_baidu.py @@ -0,0 +1,50 @@ +from django.core.management.base import BaseCommand + +from djangoblog.spider_notify import SpiderNotify +from djangoblog.utils import get_current_site +from blog.models import Article, Tag, Category + +site = get_current_site().domain + + +class Command(BaseCommand): + help = 'notify baidu url' + + def add_arguments(self, parser): + parser.add_argument( + 'data_type', + type=str, + choices=[ + 'all', + 'article', + 'tag', + 'category'], + help='article : all article,tag : all tag,category: all category,all: All of these') + + def get_full_url(self, path): + url = "https://{site}{path}".format(site=site, path=path) + return url + + def handle(self, *args, **options): + type = options['data_type'] + self.stdout.write('start get %s' % type) + + urls = [] + if type == 'article' or type == 'all': + for article in Article.objects.filter(status='p'): + urls.append(article.get_full_url()) + if type == 'tag' or type == 'all': + for tag in Tag.objects.all(): + url = tag.get_absolute_url() + urls.append(self.get_full_url(url)) + if type == 'category' or type == 'all': + for category in Category.objects.all(): + url = category.get_absolute_url() + urls.append(self.get_full_url(url)) + + self.stdout.write( + self.style.SUCCESS( + 'start notify %d urls' % + len(urls))) + SpiderNotify.baidu_notify(urls) + self.stdout.write(self.style.SUCCESS('finish notify')) diff --git a/src/DjangoBlog-master/blog/management/commands/sync_user_avatar.py b/src/DjangoBlog-master/blog/management/commands/sync_user_avatar.py new file mode 100644 index 0000000..d0f4612 --- /dev/null +++ b/src/DjangoBlog-master/blog/management/commands/sync_user_avatar.py @@ -0,0 +1,47 @@ +import requests +from django.core.management.base import BaseCommand +from django.templatetags.static import static + +from djangoblog.utils import save_user_avatar +from oauth.models import OAuthUser +from oauth.oauthmanager import get_manager_by_type + + +class Command(BaseCommand): + help = 'sync user avatar' + + def test_picture(self, url): + try: + if requests.get(url, timeout=2).status_code == 200: + return True + except: + pass + + def handle(self, *args, **options): + static_url = static("../") + users = OAuthUser.objects.all() + self.stdout.write(f'开始同步{len(users)}个用户头像') + for u in users: + self.stdout.write(f'开始同步:{u.nickname}') + url = u.picture + if url: + if url.startswith(static_url): + if self.test_picture(url): + continue + else: + if u.metadata: + manage = get_manager_by_type(u.type) + url = manage.get_picture(u.metadata) + url = save_user_avatar(url) + else: + url = static('blog/img/avatar.png') + else: + url = save_user_avatar(url) + else: + url = static('blog/img/avatar.png') + if url: + self.stdout.write( + f'结束同步:{u.nickname}.url:{url}') + u.picture = url + u.save() + self.stdout.write('结束同步') diff --git a/src/DjangoBlog-master/blog/middleware.py b/src/DjangoBlog-master/blog/middleware.py new file mode 100644 index 0000000..94dd70c --- /dev/null +++ b/src/DjangoBlog-master/blog/middleware.py @@ -0,0 +1,42 @@ +import logging +import time + +from ipware import get_client_ip +from user_agents import parse + +from blog.documents import ELASTICSEARCH_ENABLED, ElaspedTimeDocumentManager + +logger = logging.getLogger(__name__) + + +class OnlineMiddleware(object): + def __init__(self, get_response=None): + self.get_response = get_response + super().__init__() + + def __call__(self, request): + ''' page render time ''' + start_time = time.time() + response = self.get_response(request) + http_user_agent = request.META.get('HTTP_USER_AGENT', '') + ip, _ = get_client_ip(request) + user_agent = parse(http_user_agent) + if not response.streaming: + try: + cast_time = time.time() - start_time + if ELASTICSEARCH_ENABLED: + time_taken = round((cast_time) * 1000, 2) + url = request.path + from django.utils import timezone + ElaspedTimeDocumentManager.create( + url=url, + time_taken=time_taken, + log_datetime=timezone.now(), + useragent=user_agent, + ip=ip) + response.content = response.content.replace( + b'', str.encode(str(cast_time)[:5])) + except Exception as e: + logger.error("Error OnlineMiddleware: %s" % e) + + return response diff --git a/src/DjangoBlog-master/blog/migrations/0001_initial.py b/src/DjangoBlog-master/blog/migrations/0001_initial.py new file mode 100644 index 0000000..3d391b6 --- /dev/null +++ b/src/DjangoBlog-master/blog/migrations/0001_initial.py @@ -0,0 +1,137 @@ +# Generated by Django 4.1.7 on 2023-03-02 07:14 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion +import django.utils.timezone +import mdeditor.fields + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='BlogSettings', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('sitename', models.CharField(default='', max_length=200, verbose_name='网站名称')), + ('site_description', models.TextField(default='', max_length=1000, verbose_name='网站描述')), + ('site_seo_description', models.TextField(default='', max_length=1000, verbose_name='网站SEO描述')), + ('site_keywords', models.TextField(default='', max_length=1000, verbose_name='网站关键字')), + ('article_sub_length', models.IntegerField(default=300, verbose_name='文章摘要长度')), + ('sidebar_article_count', models.IntegerField(default=10, verbose_name='侧边栏文章数目')), + ('sidebar_comment_count', models.IntegerField(default=5, verbose_name='侧边栏评论数目')), + ('article_comment_count', models.IntegerField(default=5, verbose_name='文章页面默认显示评论数目')), + ('show_google_adsense', models.BooleanField(default=False, verbose_name='是否显示谷歌广告')), + ('google_adsense_codes', models.TextField(blank=True, default='', max_length=2000, null=True, verbose_name='广告内容')), + ('open_site_comment', models.BooleanField(default=True, verbose_name='是否打开网站评论功能')), + ('beiancode', models.CharField(blank=True, default='', max_length=2000, null=True, verbose_name='备案号')), + ('analyticscode', models.TextField(default='', max_length=1000, verbose_name='网站统计代码')), + ('show_gongan_code', models.BooleanField(default=False, verbose_name='是否显示公安备案号')), + ('gongan_beiancode', models.TextField(blank=True, default='', max_length=2000, null=True, verbose_name='公安备案号')), + ], + options={ + 'verbose_name': '网站配置', + 'verbose_name_plural': '网站配置', + }, + ), + migrations.CreateModel( + name='Links', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=30, unique=True, verbose_name='链接名称')), + ('link', models.URLField(verbose_name='链接地址')), + ('sequence', models.IntegerField(unique=True, verbose_name='排序')), + ('is_enable', models.BooleanField(default=True, verbose_name='是否显示')), + ('show_type', models.CharField(choices=[('i', '首页'), ('l', '列表页'), ('p', '文章页面'), ('a', '全站'), ('s', '友情链接页面')], default='i', max_length=1, verbose_name='显示类型')), + ('created_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='创建时间')), + ('last_mod_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='修改时间')), + ], + options={ + 'verbose_name': '友情链接', + 'verbose_name_plural': '友情链接', + 'ordering': ['sequence'], + }, + ), + migrations.CreateModel( + name='SideBar', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=100, verbose_name='标题')), + ('content', models.TextField(verbose_name='内容')), + ('sequence', models.IntegerField(unique=True, verbose_name='排序')), + ('is_enable', models.BooleanField(default=True, verbose_name='是否启用')), + ('created_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='创建时间')), + ('last_mod_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='修改时间')), + ], + options={ + 'verbose_name': '侧边栏', + 'verbose_name_plural': '侧边栏', + 'ordering': ['sequence'], + }, + ), + migrations.CreateModel( + name='Tag', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('created_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='创建时间')), + ('last_mod_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='修改时间')), + ('name', models.CharField(max_length=30, unique=True, verbose_name='标签名')), + ('slug', models.SlugField(blank=True, default='no-slug', max_length=60)), + ], + options={ + 'verbose_name': '标签', + 'verbose_name_plural': '标签', + 'ordering': ['name'], + }, + ), + migrations.CreateModel( + name='Category', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('created_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='创建时间')), + ('last_mod_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='修改时间')), + ('name', models.CharField(max_length=30, unique=True, verbose_name='分类名')), + ('slug', models.SlugField(blank=True, default='no-slug', max_length=60)), + ('index', models.IntegerField(default=0, verbose_name='权重排序-越大越靠前')), + ('parent_category', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='blog.category', verbose_name='父级分类')), + ], + options={ + 'verbose_name': '分类', + 'verbose_name_plural': '分类', + 'ordering': ['-index'], + }, + ), + migrations.CreateModel( + name='Article', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('created_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='创建时间')), + ('last_mod_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='修改时间')), + ('title', models.CharField(max_length=200, unique=True, verbose_name='标题')), + ('body', mdeditor.fields.MDTextField(verbose_name='正文')), + ('pub_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='发布时间')), + ('status', models.CharField(choices=[('d', '草稿'), ('p', '发表')], default='p', max_length=1, verbose_name='文章状态')), + ('comment_status', models.CharField(choices=[('o', '打开'), ('c', '关闭')], default='o', max_length=1, verbose_name='评论状态')), + ('type', models.CharField(choices=[('a', '文章'), ('p', '页面')], default='a', max_length=1, verbose_name='类型')), + ('views', models.PositiveIntegerField(default=0, verbose_name='浏览量')), + ('article_order', models.IntegerField(default=0, verbose_name='排序,数字越大越靠前')), + ('show_toc', models.BooleanField(default=False, verbose_name='是否显示toc目录')), + ('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='作者')), + ('category', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='blog.category', verbose_name='分类')), + ('tags', models.ManyToManyField(blank=True, to='blog.tag', verbose_name='标签集合')), + ], + options={ + 'verbose_name': '文章', + 'verbose_name_plural': '文章', + 'ordering': ['-article_order', '-pub_time'], + 'get_latest_by': 'id', + }, + ), + ] diff --git a/src/DjangoBlog-master/blog/migrations/0002_blogsettings_global_footer_and_more.py b/src/DjangoBlog-master/blog/migrations/0002_blogsettings_global_footer_and_more.py new file mode 100644 index 0000000..adbaa36 --- /dev/null +++ b/src/DjangoBlog-master/blog/migrations/0002_blogsettings_global_footer_and_more.py @@ -0,0 +1,23 @@ +# Generated by Django 4.1.7 on 2023-03-29 06:08 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('blog', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='blogsettings', + name='global_footer', + field=models.TextField(blank=True, default='', null=True, verbose_name='公共尾部'), + ), + migrations.AddField( + model_name='blogsettings', + name='global_header', + field=models.TextField(blank=True, default='', null=True, verbose_name='公共头部'), + ), + ] diff --git a/src/DjangoBlog-master/blog/migrations/0003_blogsettings_comment_need_review.py b/src/DjangoBlog-master/blog/migrations/0003_blogsettings_comment_need_review.py new file mode 100644 index 0000000..e9f5502 --- /dev/null +++ b/src/DjangoBlog-master/blog/migrations/0003_blogsettings_comment_need_review.py @@ -0,0 +1,17 @@ +# Generated by Django 4.2.1 on 2023-05-09 07:45 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ('blog', '0002_blogsettings_global_footer_and_more'), + ] + + operations = [ + migrations.AddField( + model_name='blogsettings', + name='comment_need_review', + field=models.BooleanField(default=False, verbose_name='评论是否需要审核'), + ), + ] diff --git a/src/DjangoBlog-master/blog/migrations/0004_rename_analyticscode_blogsettings_analytics_code_and_more.py b/src/DjangoBlog-master/blog/migrations/0004_rename_analyticscode_blogsettings_analytics_code_and_more.py new file mode 100644 index 0000000..ceb1398 --- /dev/null +++ b/src/DjangoBlog-master/blog/migrations/0004_rename_analyticscode_blogsettings_analytics_code_and_more.py @@ -0,0 +1,27 @@ +# Generated by Django 4.2.1 on 2023-05-09 07:51 + +from django.db import migrations + + +class Migration(migrations.Migration): + dependencies = [ + ('blog', '0003_blogsettings_comment_need_review'), + ] + + operations = [ + migrations.RenameField( + model_name='blogsettings', + old_name='analyticscode', + new_name='analytics_code', + ), + migrations.RenameField( + model_name='blogsettings', + old_name='beiancode', + new_name='beian_code', + ), + migrations.RenameField( + model_name='blogsettings', + old_name='sitename', + new_name='site_name', + ), + ] diff --git a/src/DjangoBlog-master/blog/migrations/0005_alter_article_options_alter_category_options_and_more.py b/src/DjangoBlog-master/blog/migrations/0005_alter_article_options_alter_category_options_and_more.py new file mode 100644 index 0000000..d08e853 --- /dev/null +++ b/src/DjangoBlog-master/blog/migrations/0005_alter_article_options_alter_category_options_and_more.py @@ -0,0 +1,300 @@ +# Generated by Django 4.2.5 on 2023-09-06 13:13 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion +import django.utils.timezone +import mdeditor.fields + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('blog', '0004_rename_analyticscode_blogsettings_analytics_code_and_more'), + ] + + operations = [ + migrations.AlterModelOptions( + name='article', + options={'get_latest_by': 'id', 'ordering': ['-article_order', '-pub_time'], 'verbose_name': 'article', 'verbose_name_plural': 'article'}, + ), + migrations.AlterModelOptions( + name='category', + options={'ordering': ['-index'], 'verbose_name': 'category', 'verbose_name_plural': 'category'}, + ), + migrations.AlterModelOptions( + name='links', + options={'ordering': ['sequence'], 'verbose_name': 'link', 'verbose_name_plural': 'link'}, + ), + migrations.AlterModelOptions( + name='sidebar', + options={'ordering': ['sequence'], 'verbose_name': 'sidebar', 'verbose_name_plural': 'sidebar'}, + ), + migrations.AlterModelOptions( + name='tag', + options={'ordering': ['name'], 'verbose_name': 'tag', 'verbose_name_plural': 'tag'}, + ), + migrations.RemoveField( + model_name='article', + name='created_time', + ), + migrations.RemoveField( + model_name='article', + name='last_mod_time', + ), + migrations.RemoveField( + model_name='category', + name='created_time', + ), + migrations.RemoveField( + model_name='category', + name='last_mod_time', + ), + migrations.RemoveField( + model_name='links', + name='created_time', + ), + migrations.RemoveField( + model_name='sidebar', + name='created_time', + ), + migrations.RemoveField( + model_name='tag', + name='created_time', + ), + migrations.RemoveField( + model_name='tag', + name='last_mod_time', + ), + migrations.AddField( + model_name='article', + name='creation_time', + field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='creation time'), + ), + migrations.AddField( + model_name='article', + name='last_modify_time', + field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='modify time'), + ), + migrations.AddField( + model_name='category', + name='creation_time', + field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='creation time'), + ), + migrations.AddField( + model_name='category', + name='last_modify_time', + field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='modify time'), + ), + migrations.AddField( + model_name='links', + name='creation_time', + field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='creation time'), + ), + migrations.AddField( + model_name='sidebar', + name='creation_time', + field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='creation time'), + ), + migrations.AddField( + model_name='tag', + name='creation_time', + field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='creation time'), + ), + migrations.AddField( + model_name='tag', + name='last_modify_time', + field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='modify time'), + ), + migrations.AlterField( + model_name='article', + name='article_order', + field=models.IntegerField(default=0, verbose_name='order'), + ), + migrations.AlterField( + model_name='article', + name='author', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='author'), + ), + migrations.AlterField( + model_name='article', + name='body', + field=mdeditor.fields.MDTextField(verbose_name='body'), + ), + migrations.AlterField( + model_name='article', + name='category', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='blog.category', verbose_name='category'), + ), + migrations.AlterField( + model_name='article', + name='comment_status', + field=models.CharField(choices=[('o', 'Open'), ('c', 'Close')], default='o', max_length=1, verbose_name='comment status'), + ), + migrations.AlterField( + model_name='article', + name='pub_time', + field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='publish time'), + ), + migrations.AlterField( + model_name='article', + name='show_toc', + field=models.BooleanField(default=False, verbose_name='show toc'), + ), + migrations.AlterField( + model_name='article', + name='status', + field=models.CharField(choices=[('d', 'Draft'), ('p', 'Published')], default='p', max_length=1, verbose_name='status'), + ), + migrations.AlterField( + model_name='article', + name='tags', + field=models.ManyToManyField(blank=True, to='blog.tag', verbose_name='tag'), + ), + migrations.AlterField( + model_name='article', + name='title', + field=models.CharField(max_length=200, unique=True, verbose_name='title'), + ), + migrations.AlterField( + model_name='article', + name='type', + field=models.CharField(choices=[('a', 'Article'), ('p', 'Page')], default='a', max_length=1, verbose_name='type'), + ), + migrations.AlterField( + model_name='article', + name='views', + field=models.PositiveIntegerField(default=0, verbose_name='views'), + ), + migrations.AlterField( + model_name='blogsettings', + name='article_comment_count', + field=models.IntegerField(default=5, verbose_name='article comment count'), + ), + migrations.AlterField( + model_name='blogsettings', + name='article_sub_length', + field=models.IntegerField(default=300, verbose_name='article sub length'), + ), + migrations.AlterField( + model_name='blogsettings', + name='google_adsense_codes', + field=models.TextField(blank=True, default='', max_length=2000, null=True, verbose_name='adsense code'), + ), + migrations.AlterField( + model_name='blogsettings', + name='open_site_comment', + field=models.BooleanField(default=True, verbose_name='open site comment'), + ), + migrations.AlterField( + model_name='blogsettings', + name='show_google_adsense', + field=models.BooleanField(default=False, verbose_name='show adsense'), + ), + migrations.AlterField( + model_name='blogsettings', + name='sidebar_article_count', + field=models.IntegerField(default=10, verbose_name='sidebar article count'), + ), + migrations.AlterField( + model_name='blogsettings', + name='sidebar_comment_count', + field=models.IntegerField(default=5, verbose_name='sidebar comment count'), + ), + migrations.AlterField( + model_name='blogsettings', + name='site_description', + field=models.TextField(default='', max_length=1000, verbose_name='site description'), + ), + migrations.AlterField( + model_name='blogsettings', + name='site_keywords', + field=models.TextField(default='', max_length=1000, verbose_name='site keywords'), + ), + migrations.AlterField( + model_name='blogsettings', + name='site_name', + field=models.CharField(default='', max_length=200, verbose_name='site name'), + ), + migrations.AlterField( + model_name='blogsettings', + name='site_seo_description', + field=models.TextField(default='', max_length=1000, verbose_name='site seo description'), + ), + migrations.AlterField( + model_name='category', + name='index', + field=models.IntegerField(default=0, verbose_name='index'), + ), + migrations.AlterField( + model_name='category', + name='name', + field=models.CharField(max_length=30, unique=True, verbose_name='category name'), + ), + migrations.AlterField( + model_name='category', + name='parent_category', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='blog.category', verbose_name='parent category'), + ), + migrations.AlterField( + model_name='links', + name='is_enable', + field=models.BooleanField(default=True, verbose_name='is show'), + ), + migrations.AlterField( + model_name='links', + name='last_mod_time', + field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='modify time'), + ), + migrations.AlterField( + model_name='links', + name='link', + field=models.URLField(verbose_name='link'), + ), + migrations.AlterField( + model_name='links', + name='name', + field=models.CharField(max_length=30, unique=True, verbose_name='link name'), + ), + migrations.AlterField( + model_name='links', + name='sequence', + field=models.IntegerField(unique=True, verbose_name='order'), + ), + migrations.AlterField( + model_name='links', + name='show_type', + field=models.CharField(choices=[('i', 'index'), ('l', 'list'), ('p', 'post'), ('a', 'all'), ('s', 'slide')], default='i', max_length=1, verbose_name='show type'), + ), + migrations.AlterField( + model_name='sidebar', + name='content', + field=models.TextField(verbose_name='content'), + ), + migrations.AlterField( + model_name='sidebar', + name='is_enable', + field=models.BooleanField(default=True, verbose_name='is enable'), + ), + migrations.AlterField( + model_name='sidebar', + name='last_mod_time', + field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='modify time'), + ), + migrations.AlterField( + model_name='sidebar', + name='name', + field=models.CharField(max_length=100, verbose_name='title'), + ), + migrations.AlterField( + model_name='sidebar', + name='sequence', + field=models.IntegerField(unique=True, verbose_name='order'), + ), + migrations.AlterField( + model_name='tag', + name='name', + field=models.CharField(max_length=30, unique=True, verbose_name='tag name'), + ), + ] diff --git a/src/DjangoBlog-master/blog/migrations/0006_alter_blogsettings_options.py b/src/DjangoBlog-master/blog/migrations/0006_alter_blogsettings_options.py new file mode 100644 index 0000000..e36feb4 --- /dev/null +++ b/src/DjangoBlog-master/blog/migrations/0006_alter_blogsettings_options.py @@ -0,0 +1,17 @@ +# Generated by Django 4.2.7 on 2024-01-26 02:41 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('blog', '0005_alter_article_options_alter_category_options_and_more'), + ] + + operations = [ + migrations.AlterModelOptions( + name='blogsettings', + options={'verbose_name': 'Website configuration', 'verbose_name_plural': 'Website configuration'}, + ), + ] diff --git a/src/DjangoBlog-master/blog/migrations/__init__.py b/src/DjangoBlog-master/blog/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/DjangoBlog-master/blog/models.py b/src/DjangoBlog-master/blog/models.py new file mode 100644 index 0000000..083788b --- /dev/null +++ b/src/DjangoBlog-master/blog/models.py @@ -0,0 +1,376 @@ +import logging +import re +from abc import abstractmethod + +from django.conf import settings +from django.core.exceptions import ValidationError +from django.db import models +from django.urls import reverse +from django.utils.timezone import now +from django.utils.translation import gettext_lazy as _ +from mdeditor.fields import MDTextField +from uuslug import slugify + +from djangoblog.utils import cache_decorator, cache +from djangoblog.utils import get_current_site + +logger = logging.getLogger(__name__) + + +class LinkShowType(models.TextChoices): + I = ('i', _('index')) + L = ('l', _('list')) + P = ('p', _('post')) + A = ('a', _('all')) + S = ('s', _('slide')) + + +class BaseModel(models.Model): + id = models.AutoField(primary_key=True) + creation_time = models.DateTimeField(_('creation time'), default=now) + last_modify_time = models.DateTimeField(_('modify time'), default=now) + + def save(self, *args, **kwargs): + is_update_views = isinstance( + self, + Article) and 'update_fields' in kwargs and kwargs['update_fields'] == ['views'] + if is_update_views: + Article.objects.filter(pk=self.pk).update(views=self.views) + else: + if 'slug' in self.__dict__: + slug = getattr( + self, 'title') if 'title' in self.__dict__ else getattr( + self, 'name') + setattr(self, 'slug', slugify(slug)) + super().save(*args, **kwargs) + + def get_full_url(self): + site = get_current_site().domain + url = "https://{site}{path}".format(site=site, + path=self.get_absolute_url()) + return url + + class Meta: + abstract = True + + @abstractmethod + def get_absolute_url(self): + pass + + +class Article(BaseModel): + """文章""" + STATUS_CHOICES = ( + ('d', _('Draft')), + ('p', _('Published')), + ) + COMMENT_STATUS = ( + ('o', _('Open')), + ('c', _('Close')), + ) + TYPE = ( + ('a', _('Article')), + ('p', _('Page')), + ) + title = models.CharField(_('title'), max_length=200, unique=True) + body = MDTextField(_('body')) + pub_time = models.DateTimeField( + _('publish time'), blank=False, null=False, default=now) + status = models.CharField( + _('status'), + max_length=1, + choices=STATUS_CHOICES, + default='p') + comment_status = models.CharField( + _('comment status'), + max_length=1, + choices=COMMENT_STATUS, + default='o') + type = models.CharField(_('type'), max_length=1, choices=TYPE, default='a') + views = models.PositiveIntegerField(_('views'), default=0) + author = models.ForeignKey( + settings.AUTH_USER_MODEL, + verbose_name=_('author'), + blank=False, + null=False, + on_delete=models.CASCADE) + article_order = models.IntegerField( + _('order'), blank=False, null=False, default=0) + show_toc = models.BooleanField(_('show toc'), blank=False, null=False, default=False) + category = models.ForeignKey( + 'Category', + verbose_name=_('category'), + on_delete=models.CASCADE, + blank=False, + null=False) + tags = models.ManyToManyField('Tag', verbose_name=_('tag'), blank=True) + + def body_to_string(self): + return self.body + + def __str__(self): + return self.title + + class Meta: + ordering = ['-article_order', '-pub_time'] + verbose_name = _('article') + verbose_name_plural = verbose_name + get_latest_by = 'id' + + def get_absolute_url(self): + return reverse('blog:detailbyid', kwargs={ + 'article_id': self.id, + 'year': self.creation_time.year, + 'month': self.creation_time.month, + 'day': self.creation_time.day + }) + + @cache_decorator(60 * 60 * 10) + def get_category_tree(self): + tree = self.category.get_category_tree() + names = list(map(lambda c: (c.name, c.get_absolute_url()), tree)) + + return names + + def save(self, *args, **kwargs): + super().save(*args, **kwargs) + + def viewed(self): + self.views += 1 + self.save(update_fields=['views']) + + def comment_list(self): + cache_key = 'article_comments_{id}'.format(id=self.id) + value = cache.get(cache_key) + if value: + logger.info('get article comments:{id}'.format(id=self.id)) + return value + else: + comments = self.comment_set.filter(is_enable=True).order_by('-id') + cache.set(cache_key, comments, 60 * 100) + logger.info('set article comments:{id}'.format(id=self.id)) + return comments + + def get_admin_url(self): + info = (self._meta.app_label, self._meta.model_name) + return reverse('admin:%s_%s_change' % info, args=(self.pk,)) + + @cache_decorator(expiration=60 * 100) + def next_article(self): + # 下一篇 + return Article.objects.filter( + id__gt=self.id, status='p').order_by('id').first() + + @cache_decorator(expiration=60 * 100) + def prev_article(self): + # 前一篇 + return Article.objects.filter(id__lt=self.id, status='p').first() + + def get_first_image_url(self): + """ + Get the first image url from article.body. + :return: + """ + match = re.search(r'!\[.*?\]\((.+?)\)', self.body) + if match: + return match.group(1) + return "" + + +class Category(BaseModel): + """文章分类""" + name = models.CharField(_('category name'), max_length=30, unique=True) + parent_category = models.ForeignKey( + 'self', + verbose_name=_('parent category'), + blank=True, + null=True, + on_delete=models.CASCADE) + slug = models.SlugField(default='no-slug', max_length=60, blank=True) + index = models.IntegerField(default=0, verbose_name=_('index')) + + class Meta: + ordering = ['-index'] + verbose_name = _('category') + verbose_name_plural = verbose_name + + def get_absolute_url(self): + return reverse( + 'blog:category_detail', kwargs={ + 'category_name': self.slug}) + + def __str__(self): + return self.name + + @cache_decorator(60 * 60 * 10) + def get_category_tree(self): + """ + 递归获得分类目录的父级 + :return: + """ + categorys = [] + + def parse(category): + categorys.append(category) + if category.parent_category: + parse(category.parent_category) + + parse(self) + return categorys + + @cache_decorator(60 * 60 * 10) + def get_sub_categorys(self): + """ + 获得当前分类目录所有子集 + :return: + """ + categorys = [] + all_categorys = Category.objects.all() + + def parse(category): + if category not in categorys: + categorys.append(category) + childs = all_categorys.filter(parent_category=category) + for child in childs: + if category not in categorys: + categorys.append(child) + parse(child) + + parse(self) + return categorys + + +class Tag(BaseModel): + """文章标签""" + name = models.CharField(_('tag name'), max_length=30, unique=True) + slug = models.SlugField(default='no-slug', max_length=60, blank=True) + + def __str__(self): + return self.name + + def get_absolute_url(self): + return reverse('blog:tag_detail', kwargs={'tag_name': self.slug}) + + @cache_decorator(60 * 60 * 10) + def get_article_count(self): + return Article.objects.filter(tags__name=self.name).distinct().count() + + class Meta: + ordering = ['name'] + verbose_name = _('tag') + verbose_name_plural = verbose_name + + +class Links(models.Model): + """友情链接""" + + name = models.CharField(_('link name'), max_length=30, unique=True) + link = models.URLField(_('link')) + sequence = models.IntegerField(_('order'), unique=True) + is_enable = models.BooleanField( + _('is show'), default=True, blank=False, null=False) + show_type = models.CharField( + _('show type'), + max_length=1, + choices=LinkShowType.choices, + default=LinkShowType.I) + creation_time = models.DateTimeField(_('creation time'), default=now) + last_mod_time = models.DateTimeField(_('modify time'), default=now) + + class Meta: + ordering = ['sequence'] + verbose_name = _('link') + verbose_name_plural = verbose_name + + def __str__(self): + return self.name + + +class SideBar(models.Model): + """侧边栏,可以展示一些html内容""" + name = models.CharField(_('title'), max_length=100) + content = models.TextField(_('content')) + sequence = models.IntegerField(_('order'), unique=True) + is_enable = models.BooleanField(_('is enable'), default=True) + creation_time = models.DateTimeField(_('creation time'), default=now) + last_mod_time = models.DateTimeField(_('modify time'), default=now) + + class Meta: + ordering = ['sequence'] + verbose_name = _('sidebar') + verbose_name_plural = verbose_name + + def __str__(self): + return self.name + + +class BlogSettings(models.Model): + """blog的配置""" + site_name = models.CharField( + _('site name'), + max_length=200, + null=False, + blank=False, + default='') + site_description = models.TextField( + _('site description'), + max_length=1000, + null=False, + blank=False, + default='') + site_seo_description = models.TextField( + _('site seo description'), max_length=1000, null=False, blank=False, default='') + site_keywords = models.TextField( + _('site keywords'), + max_length=1000, + null=False, + blank=False, + default='') + article_sub_length = models.IntegerField(_('article sub length'), default=300) + sidebar_article_count = models.IntegerField(_('sidebar article count'), default=10) + sidebar_comment_count = models.IntegerField(_('sidebar comment count'), default=5) + article_comment_count = models.IntegerField(_('article comment count'), default=5) + show_google_adsense = models.BooleanField(_('show adsense'), default=False) + google_adsense_codes = models.TextField( + _('adsense code'), max_length=2000, null=True, blank=True, default='') + open_site_comment = models.BooleanField(_('open site comment'), default=True) + global_header = models.TextField("公共头部", null=True, blank=True, default='') + global_footer = models.TextField("公共尾部", null=True, blank=True, default='') + beian_code = models.CharField( + '备案号', + max_length=2000, + null=True, + blank=True, + default='') + analytics_code = models.TextField( + "网站统计代码", + max_length=1000, + null=False, + blank=False, + default='') + show_gongan_code = models.BooleanField( + '是否显示公安备案号', default=False, null=False) + gongan_beiancode = models.TextField( + '公安备案号', + max_length=2000, + null=True, + blank=True, + default='') + comment_need_review = models.BooleanField( + '评论是否需要审核', default=False, null=False) + + class Meta: + verbose_name = _('Website configuration') + verbose_name_plural = verbose_name + + def __str__(self): + return self.site_name + + def clean(self): + if BlogSettings.objects.exclude(id=self.id).count(): + raise ValidationError(_('There can only be one configuration')) + + def save(self, *args, **kwargs): + super().save(*args, **kwargs) + from djangoblog.utils import cache + cache.clear() diff --git a/src/DjangoBlog-master/blog/search_indexes.py b/src/DjangoBlog-master/blog/search_indexes.py new file mode 100644 index 0000000..7f1dfac --- /dev/null +++ b/src/DjangoBlog-master/blog/search_indexes.py @@ -0,0 +1,13 @@ +from haystack import indexes + +from blog.models import Article + + +class ArticleIndex(indexes.SearchIndex, indexes.Indexable): + text = indexes.CharField(document=True, use_template=True) + + def get_model(self): + return Article + + def index_queryset(self, using=None): + return self.get_model().objects.filter(status='p') diff --git a/src/DjangoBlog-master/blog/templatetags/__init__.py b/src/DjangoBlog-master/blog/templatetags/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/DjangoBlog-master/blog/templatetags/blog_tags.py b/src/DjangoBlog-master/blog/templatetags/blog_tags.py new file mode 100644 index 0000000..d6cd5d5 --- /dev/null +++ b/src/DjangoBlog-master/blog/templatetags/blog_tags.py @@ -0,0 +1,344 @@ +import hashlib +import logging +import random +import urllib + +from django import template +from django.conf import settings +from django.db.models import Q +from django.shortcuts import get_object_or_404 +from django.template.defaultfilters import stringfilter +from django.templatetags.static import static +from django.urls import reverse +from django.utils.safestring import mark_safe + +from blog.models import Article, Category, Tag, Links, SideBar, LinkShowType +from comments.models import Comment +from djangoblog.utils import CommonMarkdown, sanitize_html +from djangoblog.utils import cache +from djangoblog.utils import get_current_site +from oauth.models import OAuthUser +from djangoblog.plugin_manage import hooks + +logger = logging.getLogger(__name__) + +register = template.Library() + + +@register.simple_tag(takes_context=True) +def head_meta(context): + return mark_safe(hooks.apply_filters('head_meta', '', context)) + + +@register.simple_tag +def timeformat(data): + try: + return data.strftime(settings.TIME_FORMAT) + except Exception as e: + logger.error(e) + return "" + + +@register.simple_tag +def datetimeformat(data): + try: + return data.strftime(settings.DATE_TIME_FORMAT) + except Exception as e: + logger.error(e) + return "" + + +@register.filter() +@stringfilter +def custom_markdown(content): + return mark_safe(CommonMarkdown.get_markdown(content)) + + +@register.simple_tag +def get_markdown_toc(content): + from djangoblog.utils import CommonMarkdown + body, toc = CommonMarkdown.get_markdown_with_toc(content) + return mark_safe(toc) + + +@register.filter() +@stringfilter +def comment_markdown(content): + content = CommonMarkdown.get_markdown(content) + return mark_safe(sanitize_html(content)) + + +@register.filter(is_safe=True) +@stringfilter +def truncatechars_content(content): + """ + 获得文章内容的摘要 + :param content: + :return: + """ + from django.template.defaultfilters import truncatechars_html + from djangoblog.utils import get_blog_setting + blogsetting = get_blog_setting() + return truncatechars_html(content, blogsetting.article_sub_length) + + +@register.filter(is_safe=True) +@stringfilter +def truncate(content): + from django.utils.html import strip_tags + + return strip_tags(content)[:150] + + +@register.inclusion_tag('blog/tags/breadcrumb.html') +def load_breadcrumb(article): + """ + 获得文章面包屑 + :param article: + :return: + """ + names = article.get_category_tree() + from djangoblog.utils import get_blog_setting + blogsetting = get_blog_setting() + site = get_current_site().domain + names.append((blogsetting.site_name, '/')) + names = names[::-1] + + return { + 'names': names, + 'title': article.title, + 'count': len(names) + 1 + } + + +@register.inclusion_tag('blog/tags/article_tag_list.html') +def load_articletags(article): + """ + 文章标签 + :param article: + :return: + """ + tags = article.tags.all() + tags_list = [] + for tag in tags: + url = tag.get_absolute_url() + count = tag.get_article_count() + tags_list.append(( + url, count, tag, random.choice(settings.BOOTSTRAP_COLOR_TYPES) + )) + return { + 'article_tags_list': tags_list + } + + +@register.inclusion_tag('blog/tags/sidebar.html') +def load_sidebar(user, linktype): + """ + 加载侧边栏 + :return: + """ + value = cache.get("sidebar" + linktype) + if value: + value['user'] = user + return value + else: + logger.info('load sidebar') + from djangoblog.utils import get_blog_setting + blogsetting = get_blog_setting() + recent_articles = Article.objects.filter( + status='p')[:blogsetting.sidebar_article_count] + sidebar_categorys = Category.objects.all() + extra_sidebars = SideBar.objects.filter( + is_enable=True).order_by('sequence') + most_read_articles = Article.objects.filter(status='p').order_by( + '-views')[:blogsetting.sidebar_article_count] + dates = Article.objects.datetimes('creation_time', 'month', order='DESC') + links = Links.objects.filter(is_enable=True).filter( + Q(show_type=str(linktype)) | Q(show_type=LinkShowType.A)) + commment_list = Comment.objects.filter(is_enable=True).order_by( + '-id')[:blogsetting.sidebar_comment_count] + # 标签云 计算字体大小 + # 根据总数计算出平均值 大小为 (数目/平均值)*步长 + increment = 5 + tags = Tag.objects.all() + sidebar_tags = None + if tags and len(tags) > 0: + s = [t for t in [(t, t.get_article_count()) for t in tags] if t[1]] + count = sum([t[1] for t in s]) + dd = 1 if (count == 0 or not len(tags)) else count / len(tags) + import random + sidebar_tags = list( + map(lambda x: (x[0], x[1], (x[1] / dd) * increment + 10), s)) + random.shuffle(sidebar_tags) + + value = { + 'recent_articles': recent_articles, + 'sidebar_categorys': sidebar_categorys, + 'most_read_articles': most_read_articles, + 'article_dates': dates, + 'sidebar_comments': commment_list, + 'sidabar_links': links, + 'show_google_adsense': blogsetting.show_google_adsense, + 'google_adsense_codes': blogsetting.google_adsense_codes, + 'open_site_comment': blogsetting.open_site_comment, + 'show_gongan_code': blogsetting.show_gongan_code, + 'sidebar_tags': sidebar_tags, + 'extra_sidebars': extra_sidebars + } + cache.set("sidebar" + linktype, value, 60 * 60 * 60 * 3) + logger.info('set sidebar cache.key:{key}'.format(key="sidebar" + linktype)) + value['user'] = user + return value + + +@register.inclusion_tag('blog/tags/article_meta_info.html') +def load_article_metas(article, user): + """ + 获得文章meta信息 + :param article: + :return: + """ + return { + 'article': article, + 'user': user + } + + +@register.inclusion_tag('blog/tags/article_pagination.html') +def load_pagination_info(page_obj, page_type, tag_name): + previous_url = '' + next_url = '' + if page_type == '': + if page_obj.has_next(): + next_number = page_obj.next_page_number() + next_url = reverse('blog:index_page', kwargs={'page': next_number}) + if page_obj.has_previous(): + previous_number = page_obj.previous_page_number() + previous_url = reverse( + 'blog:index_page', kwargs={ + 'page': previous_number}) + if page_type == '分类标签归档': + tag = get_object_or_404(Tag, name=tag_name) + if page_obj.has_next(): + next_number = page_obj.next_page_number() + next_url = reverse( + 'blog:tag_detail_page', + kwargs={ + 'page': next_number, + 'tag_name': tag.slug}) + if page_obj.has_previous(): + previous_number = page_obj.previous_page_number() + previous_url = reverse( + 'blog:tag_detail_page', + kwargs={ + 'page': previous_number, + 'tag_name': tag.slug}) + if page_type == '作者文章归档': + if page_obj.has_next(): + next_number = page_obj.next_page_number() + next_url = reverse( + 'blog:author_detail_page', + kwargs={ + 'page': next_number, + 'author_name': tag_name}) + if page_obj.has_previous(): + previous_number = page_obj.previous_page_number() + previous_url = reverse( + 'blog:author_detail_page', + kwargs={ + 'page': previous_number, + 'author_name': tag_name}) + + if page_type == '分类目录归档': + category = get_object_or_404(Category, name=tag_name) + if page_obj.has_next(): + next_number = page_obj.next_page_number() + next_url = reverse( + 'blog:category_detail_page', + kwargs={ + 'page': next_number, + 'category_name': category.slug}) + if page_obj.has_previous(): + previous_number = page_obj.previous_page_number() + previous_url = reverse( + 'blog:category_detail_page', + kwargs={ + 'page': previous_number, + 'category_name': category.slug}) + + return { + 'previous_url': previous_url, + 'next_url': next_url, + 'page_obj': page_obj + } + + +@register.inclusion_tag('blog/tags/article_info.html') +def load_article_detail(article, isindex, user): + """ + 加载文章详情 + :param article: + :param isindex:是否列表页,若是列表页只显示摘要 + :return: + """ + from djangoblog.utils import get_blog_setting + blogsetting = get_blog_setting() + + return { + 'article': article, + 'isindex': isindex, + 'user': user, + 'open_site_comment': blogsetting.open_site_comment, + } + + +# return only the URL of the gravatar +# TEMPLATE USE: {{ email|gravatar_url:150 }} +@register.filter +def gravatar_url(email, size=40): + """获得gravatar头像""" + cachekey = 'gravatat/' + email + url = cache.get(cachekey) + if url: + return url + else: + usermodels = OAuthUser.objects.filter(email=email) + if usermodels: + o = list(filter(lambda x: x.picture is not None, usermodels)) + if o: + return o[0].picture + email = email.encode('utf-8') + + default = static('blog/img/avatar.png') + + url = "https://www.gravatar.com/avatar/%s?%s" % (hashlib.md5( + email.lower()).hexdigest(), urllib.parse.urlencode({'d': default, 's': str(size)})) + cache.set(cachekey, url, 60 * 60 * 10) + logger.info('set gravatar cache.key:{key}'.format(key=cachekey)) + return url + + +@register.filter +def gravatar(email, size=40): + """获得gravatar头像""" + url = gravatar_url(email, size) + return mark_safe( + '' % + (url, size, size)) + + +@register.simple_tag +def query(qs, **kwargs): + """ template tag which allows queryset filtering. Usage: + {% query books author=author as mybooks %} + {% for book in mybooks %} + ... + {% endfor %} + """ + return qs.filter(**kwargs) + + +@register.filter +def addstr(arg1, arg2): + """concatenate arg1 & arg2""" + return str(arg1) + str(arg2) diff --git a/src/DjangoBlog-master/blog/tests.py b/src/DjangoBlog-master/blog/tests.py new file mode 100644 index 0000000..ee13505 --- /dev/null +++ b/src/DjangoBlog-master/blog/tests.py @@ -0,0 +1,232 @@ +import os + +from django.conf import settings +from django.core.files.uploadedfile import SimpleUploadedFile +from django.core.management import call_command +from django.core.paginator import Paginator +from django.templatetags.static import static +from django.test import Client, RequestFactory, TestCase +from django.urls import reverse +from django.utils import timezone + +from accounts.models import BlogUser +from blog.forms import BlogSearchForm +from blog.models import Article, Category, Tag, SideBar, Links +from blog.templatetags.blog_tags import load_pagination_info, load_articletags +from djangoblog.utils import get_current_site, get_sha256 +from oauth.models import OAuthUser, OAuthConfig + + +# Create your tests here. + +class ArticleTest(TestCase): + def setUp(self): + self.client = Client() + self.factory = RequestFactory() + + def test_validate_article(self): + site = get_current_site().domain + user = BlogUser.objects.get_or_create( + email="liangliangyy@gmail.com", + username="liangliangyy")[0] + user.set_password("liangliangyy") + user.is_staff = True + user.is_superuser = True + user.save() + response = self.client.get(user.get_absolute_url()) + self.assertEqual(response.status_code, 200) + response = self.client.get('/admin/servermanager/emailsendlog/') + response = self.client.get('admin/admin/logentry/') + s = SideBar() + s.sequence = 1 + s.name = 'test' + s.content = 'test content' + s.is_enable = True + s.save() + + category = Category() + category.name = "category" + category.creation_time = timezone.now() + category.last_mod_time = timezone.now() + category.save() + + tag = Tag() + tag.name = "nicetag" + tag.save() + + article = Article() + article.title = "nicetitle" + article.body = "nicecontent" + article.author = user + article.category = category + article.type = 'a' + article.status = 'p' + + article.save() + self.assertEqual(0, article.tags.count()) + article.tags.add(tag) + article.save() + self.assertEqual(1, article.tags.count()) + + for i in range(20): + article = Article() + article.title = "nicetitle" + str(i) + article.body = "nicetitle" + str(i) + article.author = user + article.category = category + article.type = 'a' + article.status = 'p' + article.save() + article.tags.add(tag) + article.save() + from blog.documents import ELASTICSEARCH_ENABLED + if ELASTICSEARCH_ENABLED: + call_command("build_index") + response = self.client.get('/search', {'q': 'nicetitle'}) + self.assertEqual(response.status_code, 200) + + response = self.client.get(article.get_absolute_url()) + self.assertEqual(response.status_code, 200) + from djangoblog.spider_notify import SpiderNotify + SpiderNotify.notify(article.get_absolute_url()) + response = self.client.get(tag.get_absolute_url()) + self.assertEqual(response.status_code, 200) + + response = self.client.get(category.get_absolute_url()) + self.assertEqual(response.status_code, 200) + + response = self.client.get('/search', {'q': 'django'}) + self.assertEqual(response.status_code, 200) + s = load_articletags(article) + self.assertIsNotNone(s) + + self.client.login(username='liangliangyy', password='liangliangyy') + + response = self.client.get(reverse('blog:archives')) + self.assertEqual(response.status_code, 200) + + p = Paginator(Article.objects.all(), settings.PAGINATE_BY) + self.check_pagination(p, '', '') + + p = Paginator(Article.objects.filter(tags=tag), settings.PAGINATE_BY) + self.check_pagination(p, '分类标签归档', tag.slug) + + p = Paginator( + Article.objects.filter( + author__username='liangliangyy'), settings.PAGINATE_BY) + self.check_pagination(p, '作者文章归档', 'liangliangyy') + + p = Paginator(Article.objects.filter(category=category), settings.PAGINATE_BY) + self.check_pagination(p, '分类目录归档', category.slug) + + f = BlogSearchForm() + f.search() + # self.client.login(username='liangliangyy', password='liangliangyy') + from djangoblog.spider_notify import SpiderNotify + SpiderNotify.baidu_notify([article.get_full_url()]) + + from blog.templatetags.blog_tags import gravatar_url, gravatar + u = gravatar_url('liangliangyy@gmail.com') + u = gravatar('liangliangyy@gmail.com') + + link = Links( + sequence=1, + name="lylinux", + link='https://wwww.lylinux.net') + link.save() + response = self.client.get('/links.html') + self.assertEqual(response.status_code, 200) + + response = self.client.get('/feed/') + self.assertEqual(response.status_code, 200) + + response = self.client.get('/sitemap.xml') + self.assertEqual(response.status_code, 200) + + self.client.get("/admin/blog/article/1/delete/") + self.client.get('/admin/servermanager/emailsendlog/') + self.client.get('/admin/admin/logentry/') + self.client.get('/admin/admin/logentry/1/change/') + + def check_pagination(self, p, type, value): + for page in range(1, p.num_pages + 1): + s = load_pagination_info(p.page(page), type, value) + self.assertIsNotNone(s) + if s['previous_url']: + response = self.client.get(s['previous_url']) + self.assertEqual(response.status_code, 200) + if s['next_url']: + response = self.client.get(s['next_url']) + self.assertEqual(response.status_code, 200) + + def test_image(self): + import requests + rsp = requests.get( + 'https://www.python.org/static/img/python-logo.png') + imagepath = os.path.join(settings.BASE_DIR, 'python.png') + with open(imagepath, 'wb') as file: + file.write(rsp.content) + rsp = self.client.post('/upload') + self.assertEqual(rsp.status_code, 403) + sign = get_sha256(get_sha256(settings.SECRET_KEY)) + with open(imagepath, 'rb') as file: + imgfile = SimpleUploadedFile( + 'python.png', file.read(), content_type='image/jpg') + form_data = {'python.png': imgfile} + rsp = self.client.post( + '/upload?sign=' + sign, form_data, follow=True) + self.assertEqual(rsp.status_code, 200) + os.remove(imagepath) + from djangoblog.utils import save_user_avatar, send_email + send_email(['qq@qq.com'], 'testTitle', 'testContent') + save_user_avatar( + 'https://www.python.org/static/img/python-logo.png') + + def test_errorpage(self): + rsp = self.client.get('/eee') + self.assertEqual(rsp.status_code, 404) + + def test_commands(self): + user = BlogUser.objects.get_or_create( + email="liangliangyy@gmail.com", + username="liangliangyy")[0] + user.set_password("liangliangyy") + user.is_staff = True + user.is_superuser = True + user.save() + + c = OAuthConfig() + c.type = 'qq' + c.appkey = 'appkey' + c.appsecret = 'appsecret' + c.save() + + u = OAuthUser() + u.type = 'qq' + u.openid = 'openid' + u.user = user + u.picture = static("/blog/img/avatar.png") + u.metadata = ''' +{ +"figureurl": "https://qzapp.qlogo.cn/qzapp/101513904/C740E30B4113EAA80E0D9918ABC78E82/30" +}''' + u.save() + + u = OAuthUser() + u.type = 'qq' + u.openid = 'openid1' + u.picture = 'https://qzapp.qlogo.cn/qzapp/101513904/C740E30B4113EAA80E0D9918ABC78E82/30' + u.metadata = ''' + { + "figureurl": "https://qzapp.qlogo.cn/qzapp/101513904/C740E30B4113EAA80E0D9918ABC78E82/30" + }''' + u.save() + + from blog.documents import ELASTICSEARCH_ENABLED + if ELASTICSEARCH_ENABLED: + call_command("build_index") + call_command("ping_baidu", "all") + call_command("create_testdata") + call_command("clear_cache") + call_command("sync_user_avatar") + call_command("build_search_words") diff --git a/src/DjangoBlog-master/blog/urls.py b/src/DjangoBlog-master/blog/urls.py new file mode 100644 index 0000000..adf2703 --- /dev/null +++ b/src/DjangoBlog-master/blog/urls.py @@ -0,0 +1,62 @@ +from django.urls import path +from django.views.decorators.cache import cache_page + +from . import views + +app_name = "blog" +urlpatterns = [ + path( + r'', + views.IndexView.as_view(), + name='index'), + path( + r'page//', + views.IndexView.as_view(), + name='index_page'), + path( + r'article////.html', + views.ArticleDetailView.as_view(), + name='detailbyid'), + path( + r'category/.html', + views.CategoryDetailView.as_view(), + name='category_detail'), + path( + r'category//.html', + views.CategoryDetailView.as_view(), + name='category_detail_page'), + path( + r'author/.html', + views.AuthorDetailView.as_view(), + name='author_detail'), + path( + r'author//.html', + views.AuthorDetailView.as_view(), + name='author_detail_page'), + path( + r'tag/.html', + views.TagDetailView.as_view(), + name='tag_detail'), + path( + r'tag//.html', + views.TagDetailView.as_view(), + name='tag_detail_page'), + path( + 'archives.html', + cache_page( + 60 * 60)( + views.ArchivesView.as_view()), + name='archives'), + path( + 'links.html', + views.LinkListView.as_view(), + name='links'), + path( + r'upload', + views.fileupload, + name='upload'), + path( + r'clean', + views.clean_cache_view, + name='clean'), +] diff --git a/src/DjangoBlog-master/blog/views.py b/src/DjangoBlog-master/blog/views.py new file mode 100644 index 0000000..d5dc7ec --- /dev/null +++ b/src/DjangoBlog-master/blog/views.py @@ -0,0 +1,379 @@ +import logging +import os +import uuid + +from django.conf import settings +from django.core.paginator import Paginator +from django.http import HttpResponse, HttpResponseForbidden +from django.shortcuts import get_object_or_404 +from django.shortcuts import render +from django.templatetags.static import static +from django.utils import timezone +from django.utils.translation import gettext_lazy as _ +from django.views.decorators.csrf import csrf_exempt +from django.views.generic.detail import DetailView +from django.views.generic.list import ListView +from haystack.views import SearchView + +from blog.models import Article, Category, LinkShowType, Links, Tag +from comments.forms import CommentForm +from djangoblog.plugin_manage import hooks +from djangoblog.plugin_manage.hook_constants import ARTICLE_CONTENT_HOOK_NAME +from djangoblog.utils import cache, get_blog_setting, get_sha256 + +logger = logging.getLogger(__name__) + + +class ArticleListView(ListView): + # template_name属性用于指定使用哪个模板进行渲染 + template_name = 'blog/article_index.html' + + # context_object_name属性用于给上下文变量取名(在模板中使用该名字) + context_object_name = 'article_list' + + # 页面类型,分类目录或标签列表等 + page_type = '' + paginate_by = settings.PAGINATE_BY + page_kwarg = 'page' + link_type = LinkShowType.L + + def get_view_cache_key(self): + return self.request.get['pages'] + + @property + def page_number(self): + page_kwarg = self.page_kwarg + page = self.kwargs.get( + page_kwarg) or self.request.GET.get(page_kwarg) or 1 + return page + + def get_queryset_cache_key(self): + """ + 子类重写.获得queryset的缓存key + """ + raise NotImplementedError() + + def get_queryset_data(self): + """ + 子类重写.获取queryset的数据 + """ + raise NotImplementedError() + + def get_queryset_from_cache(self, cache_key): + ''' + 缓存页面数据 + :param cache_key: 缓存key + :return: + ''' + value = cache.get(cache_key) + if value: + logger.info('get view cache.key:{key}'.format(key=cache_key)) + return value + else: + article_list = self.get_queryset_data() + cache.set(cache_key, article_list) + logger.info('set view cache.key:{key}'.format(key=cache_key)) + return article_list + + def get_queryset(self): + ''' + 重写默认,从缓存获取数据 + :return: + ''' + key = self.get_queryset_cache_key() + value = self.get_queryset_from_cache(key) + return value + + def get_context_data(self, **kwargs): + kwargs['linktype'] = self.link_type + return super(ArticleListView, self).get_context_data(**kwargs) + + +class IndexView(ArticleListView): + ''' + 首页 + ''' + # 友情链接类型 + link_type = LinkShowType.I + + def get_queryset_data(self): + article_list = Article.objects.filter(type='a', status='p') + return article_list + + def get_queryset_cache_key(self): + cache_key = 'index_{page}'.format(page=self.page_number) + return cache_key + + +class ArticleDetailView(DetailView): + ''' + 文章详情页面 + ''' + template_name = 'blog/article_detail.html' + model = Article + pk_url_kwarg = 'article_id' + context_object_name = "article" + + def get_context_data(self, **kwargs): + comment_form = CommentForm() + + article_comments = self.object.comment_list() + parent_comments = article_comments.filter(parent_comment=None) + blog_setting = get_blog_setting() + paginator = Paginator(parent_comments, blog_setting.article_comment_count) + page = self.request.GET.get('comment_page', '1') + if not page.isnumeric(): + page = 1 + else: + page = int(page) + if page < 1: + page = 1 + if page > paginator.num_pages: + page = paginator.num_pages + + p_comments = paginator.page(page) + next_page = p_comments.next_page_number() if p_comments.has_next() else None + prev_page = p_comments.previous_page_number() if p_comments.has_previous() else None + + if next_page: + kwargs[ + 'comment_next_page_url'] = self.object.get_absolute_url() + f'?comment_page={next_page}#commentlist-container' + if prev_page: + kwargs[ + 'comment_prev_page_url'] = self.object.get_absolute_url() + f'?comment_page={prev_page}#commentlist-container' + kwargs['form'] = comment_form + kwargs['article_comments'] = article_comments + kwargs['p_comments'] = p_comments + kwargs['comment_count'] = len( + article_comments) if article_comments else 0 + + kwargs['next_article'] = self.object.next_article + kwargs['prev_article'] = self.object.prev_article + + context = super(ArticleDetailView, self).get_context_data(**kwargs) + article = self.object + # Action Hook, 通知插件"文章详情已获取" + hooks.run_action('after_article_body_get', article=article, request=self.request) + # # Filter Hook, 允许插件修改文章正文 + article.body = hooks.apply_filters(ARTICLE_CONTENT_HOOK_NAME, article.body, article=article, + request=self.request) + + return context + + +class CategoryDetailView(ArticleListView): + ''' + 分类目录列表 + ''' + page_type = "分类目录归档" + + def get_queryset_data(self): + slug = self.kwargs['category_name'] + category = get_object_or_404(Category, slug=slug) + + categoryname = category.name + self.categoryname = categoryname + categorynames = list( + map(lambda c: c.name, category.get_sub_categorys())) + article_list = Article.objects.filter( + category__name__in=categorynames, status='p') + return article_list + + def get_queryset_cache_key(self): + slug = self.kwargs['category_name'] + category = get_object_or_404(Category, slug=slug) + categoryname = category.name + self.categoryname = categoryname + cache_key = 'category_list_{categoryname}_{page}'.format( + categoryname=categoryname, page=self.page_number) + return cache_key + + def get_context_data(self, **kwargs): + + categoryname = self.categoryname + try: + categoryname = categoryname.split('/')[-1] + except BaseException: + pass + kwargs['page_type'] = CategoryDetailView.page_type + kwargs['tag_name'] = categoryname + return super(CategoryDetailView, self).get_context_data(**kwargs) + + +class AuthorDetailView(ArticleListView): + ''' + 作者详情页 + ''' + page_type = '作者文章归档' + + def get_queryset_cache_key(self): + from uuslug import slugify + author_name = slugify(self.kwargs['author_name']) + cache_key = 'author_{author_name}_{page}'.format( + author_name=author_name, page=self.page_number) + return cache_key + + def get_queryset_data(self): + author_name = self.kwargs['author_name'] + article_list = Article.objects.filter( + author__username=author_name, type='a', status='p') + return article_list + + def get_context_data(self, **kwargs): + author_name = self.kwargs['author_name'] + kwargs['page_type'] = AuthorDetailView.page_type + kwargs['tag_name'] = author_name + return super(AuthorDetailView, self).get_context_data(**kwargs) + + +class TagDetailView(ArticleListView): + ''' + 标签列表页面 + ''' + page_type = '分类标签归档' + + def get_queryset_data(self): + slug = self.kwargs['tag_name'] + tag = get_object_or_404(Tag, slug=slug) + tag_name = tag.name + self.name = tag_name + article_list = Article.objects.filter( + tags__name=tag_name, type='a', status='p') + return article_list + + def get_queryset_cache_key(self): + slug = self.kwargs['tag_name'] + tag = get_object_or_404(Tag, slug=slug) + tag_name = tag.name + self.name = tag_name + cache_key = 'tag_{tag_name}_{page}'.format( + tag_name=tag_name, page=self.page_number) + return cache_key + + def get_context_data(self, **kwargs): + # tag_name = self.kwargs['tag_name'] + tag_name = self.name + kwargs['page_type'] = TagDetailView.page_type + kwargs['tag_name'] = tag_name + return super(TagDetailView, self).get_context_data(**kwargs) + + +class ArchivesView(ArticleListView): + ''' + 文章归档页面 + ''' + page_type = '文章归档' + paginate_by = None + page_kwarg = None + template_name = 'blog/article_archives.html' + + def get_queryset_data(self): + return Article.objects.filter(status='p').all() + + def get_queryset_cache_key(self): + cache_key = 'archives' + return cache_key + + +class LinkListView(ListView): + model = Links + template_name = 'blog/links_list.html' + + def get_queryset(self): + return Links.objects.filter(is_enable=True) + + +class EsSearchView(SearchView): + def get_context(self): + paginator, page = self.build_page() + context = { + "query": self.query, + "form": self.form, + "page": page, + "paginator": paginator, + "suggestion": None, + } + if hasattr(self.results, "query") and self.results.query.backend.include_spelling: + context["suggestion"] = self.results.query.get_spelling_suggestion() + context.update(self.extra_context()) + + return context + + +@csrf_exempt +def fileupload(request): + """ + 该方法需自己写调用端来上传图片,该方法仅提供图床功能 + :param request: + :return: + """ + if request.method == 'POST': + sign = request.GET.get('sign', None) + if not sign: + return HttpResponseForbidden() + if not sign == get_sha256(get_sha256(settings.SECRET_KEY)): + return HttpResponseForbidden() + response = [] + for filename in request.FILES: + timestr = timezone.now().strftime('%Y/%m/%d') + imgextensions = ['jpg', 'png', 'jpeg', 'bmp'] + fname = u''.join(str(filename)) + isimage = len([i for i in imgextensions if fname.find(i) >= 0]) > 0 + base_dir = os.path.join(settings.STATICFILES, "files" if not isimage else "image", timestr) + if not os.path.exists(base_dir): + os.makedirs(base_dir) + savepath = os.path.normpath(os.path.join(base_dir, f"{uuid.uuid4().hex}{os.path.splitext(filename)[-1]}")) + if not savepath.startswith(base_dir): + return HttpResponse("only for post") + with open(savepath, 'wb+') as wfile: + for chunk in request.FILES[filename].chunks(): + wfile.write(chunk) + if isimage: + from PIL import Image + image = Image.open(savepath) + image.save(savepath, quality=20, optimize=True) + url = static(savepath) + response.append(url) + return HttpResponse(response) + + else: + return HttpResponse("only for post") + + +def page_not_found_view( + request, + exception, + template_name='blog/error_page.html'): + if exception: + logger.error(exception) + url = request.get_full_path() + return render(request, + template_name, + {'message': _('Sorry, the page you requested is not found, please click the home page to see other?'), + 'statuscode': '404'}, + status=404) + + +def server_error_view(request, template_name='blog/error_page.html'): + return render(request, + template_name, + {'message': _('Sorry, the server is busy, please click the home page to see other?'), + 'statuscode': '500'}, + status=500) + + +def permission_denied_view( + request, + exception, + template_name='blog/error_page.html'): + if exception: + logger.error(exception) + return render( + request, template_name, { + 'message': _('Sorry, you do not have permission to access this page?'), + 'statuscode': '403'}, status=403) + + +def clean_cache_view(request): + cache.clear() + return HttpResponse('ok') diff --git a/src/DjangoBlog-master/comments/__init__.py b/src/DjangoBlog-master/comments/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/DjangoBlog-master/comments/admin.py b/src/DjangoBlog-master/comments/admin.py new file mode 100644 index 0000000..a814f3f --- /dev/null +++ b/src/DjangoBlog-master/comments/admin.py @@ -0,0 +1,47 @@ +from django.contrib import admin +from django.urls import reverse +from django.utils.html import format_html +from django.utils.translation import gettext_lazy as _ + + +def disable_commentstatus(modeladmin, request, queryset): + queryset.update(is_enable=False) + + +def enable_commentstatus(modeladmin, request, queryset): + queryset.update(is_enable=True) + + +disable_commentstatus.short_description = _('Disable comments') +enable_commentstatus.short_description = _('Enable comments') + + +class CommentAdmin(admin.ModelAdmin): + list_per_page = 20 + list_display = ( + 'id', + 'body', + 'link_to_userinfo', + 'link_to_article', + 'is_enable', + 'creation_time') + list_display_links = ('id', 'body', 'is_enable') + list_filter = ('is_enable',) + exclude = ('creation_time', 'last_modify_time') + actions = [disable_commentstatus, enable_commentstatus] + + def link_to_userinfo(self, obj): + info = (obj.author._meta.app_label, obj.author._meta.model_name) + link = reverse('admin:%s_%s_change' % info, args=(obj.author.id,)) + return format_html( + u'%s' % + (link, obj.author.nickname if obj.author.nickname else obj.author.email)) + + def link_to_article(self, obj): + info = (obj.article._meta.app_label, obj.article._meta.model_name) + link = reverse('admin:%s_%s_change' % info, args=(obj.article.id,)) + return format_html( + u'%s' % (link, obj.article.title)) + + link_to_userinfo.short_description = _('User') + link_to_article.short_description = _('Article') diff --git a/src/DjangoBlog-master/comments/apps.py b/src/DjangoBlog-master/comments/apps.py new file mode 100644 index 0000000..ff01b77 --- /dev/null +++ b/src/DjangoBlog-master/comments/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class CommentsConfig(AppConfig): + name = 'comments' diff --git a/src/DjangoBlog-master/comments/forms.py b/src/DjangoBlog-master/comments/forms.py new file mode 100644 index 0000000..e83737d --- /dev/null +++ b/src/DjangoBlog-master/comments/forms.py @@ -0,0 +1,13 @@ +from django import forms +from django.forms import ModelForm + +from .models import Comment + + +class CommentForm(ModelForm): + parent_comment_id = forms.IntegerField( + widget=forms.HiddenInput, required=False) + + class Meta: + model = Comment + fields = ['body'] diff --git a/src/DjangoBlog-master/comments/migrations/0001_initial.py b/src/DjangoBlog-master/comments/migrations/0001_initial.py new file mode 100644 index 0000000..61d1e53 --- /dev/null +++ b/src/DjangoBlog-master/comments/migrations/0001_initial.py @@ -0,0 +1,38 @@ +# Generated by Django 4.1.7 on 2023-03-02 07:14 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion +import django.utils.timezone + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('blog', '0001_initial'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='Comment', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('body', models.TextField(max_length=300, verbose_name='正文')), + ('created_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='创建时间')), + ('last_mod_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='修改时间')), + ('is_enable', models.BooleanField(default=True, verbose_name='是否显示')), + ('article', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='blog.article', verbose_name='文章')), + ('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='作者')), + ('parent_comment', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='comments.comment', verbose_name='上级评论')), + ], + options={ + 'verbose_name': '评论', + 'verbose_name_plural': '评论', + 'ordering': ['-id'], + 'get_latest_by': 'id', + }, + ), + ] diff --git a/src/DjangoBlog-master/comments/migrations/0002_alter_comment_is_enable.py b/src/DjangoBlog-master/comments/migrations/0002_alter_comment_is_enable.py new file mode 100644 index 0000000..17c44db --- /dev/null +++ b/src/DjangoBlog-master/comments/migrations/0002_alter_comment_is_enable.py @@ -0,0 +1,18 @@ +# Generated by Django 4.1.7 on 2023-04-24 13:48 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('comments', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='comment', + name='is_enable', + field=models.BooleanField(default=False, verbose_name='是否显示'), + ), + ] diff --git a/src/DjangoBlog-master/comments/migrations/0003_alter_comment_options_remove_comment_created_time_and_more.py b/src/DjangoBlog-master/comments/migrations/0003_alter_comment_options_remove_comment_created_time_and_more.py new file mode 100644 index 0000000..a1ca970 --- /dev/null +++ b/src/DjangoBlog-master/comments/migrations/0003_alter_comment_options_remove_comment_created_time_and_more.py @@ -0,0 +1,60 @@ +# Generated by Django 4.2.5 on 2023-09-06 13:13 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('blog', '0005_alter_article_options_alter_category_options_and_more'), + ('comments', '0002_alter_comment_is_enable'), + ] + + operations = [ + migrations.AlterModelOptions( + name='comment', + options={'get_latest_by': 'id', 'ordering': ['-id'], 'verbose_name': 'comment', 'verbose_name_plural': 'comment'}, + ), + migrations.RemoveField( + model_name='comment', + name='created_time', + ), + migrations.RemoveField( + model_name='comment', + name='last_mod_time', + ), + migrations.AddField( + model_name='comment', + name='creation_time', + field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='creation time'), + ), + migrations.AddField( + model_name='comment', + name='last_modify_time', + field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='last modify time'), + ), + migrations.AlterField( + model_name='comment', + name='article', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='blog.article', verbose_name='article'), + ), + migrations.AlterField( + model_name='comment', + name='author', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='author'), + ), + migrations.AlterField( + model_name='comment', + name='is_enable', + field=models.BooleanField(default=False, verbose_name='enable'), + ), + migrations.AlterField( + model_name='comment', + name='parent_comment', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='comments.comment', verbose_name='parent comment'), + ), + ] diff --git a/src/DjangoBlog-master/comments/migrations/__init__.py b/src/DjangoBlog-master/comments/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/DjangoBlog-master/comments/models.py b/src/DjangoBlog-master/comments/models.py new file mode 100644 index 0000000..7c3bbc8 --- /dev/null +++ b/src/DjangoBlog-master/comments/models.py @@ -0,0 +1,39 @@ +from django.conf import settings +from django.db import models +from django.utils.timezone import now +from django.utils.translation import gettext_lazy as _ + +from blog.models import Article + + +# Create your models here. + +class Comment(models.Model): + body = models.TextField('正文', max_length=300) + creation_time = models.DateTimeField(_('creation time'), default=now) + last_modify_time = models.DateTimeField(_('last modify time'), default=now) + author = models.ForeignKey( + settings.AUTH_USER_MODEL, + verbose_name=_('author'), + on_delete=models.CASCADE) + article = models.ForeignKey( + Article, + verbose_name=_('article'), + on_delete=models.CASCADE) + parent_comment = models.ForeignKey( + 'self', + verbose_name=_('parent comment'), + blank=True, + null=True, + on_delete=models.CASCADE) + is_enable = models.BooleanField(_('enable'), + default=False, blank=False, null=False) + + class Meta: + ordering = ['-id'] + verbose_name = _('comment') + verbose_name_plural = verbose_name + get_latest_by = 'id' + + def __str__(self): + return self.body diff --git a/src/DjangoBlog-master/comments/templatetags/__init__.py b/src/DjangoBlog-master/comments/templatetags/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/DjangoBlog-master/comments/templatetags/comments_tags.py b/src/DjangoBlog-master/comments/templatetags/comments_tags.py new file mode 100644 index 0000000..fde02b4 --- /dev/null +++ b/src/DjangoBlog-master/comments/templatetags/comments_tags.py @@ -0,0 +1,30 @@ +from django import template + +register = template.Library() + + +@register.simple_tag +def parse_commenttree(commentlist, comment): + """获得当前评论子评论的列表 + 用法: {% parse_commenttree article_comments comment as childcomments %} + """ + datas = [] + + def parse(c): + childs = commentlist.filter(parent_comment=c, is_enable=True) + for child in childs: + datas.append(child) + parse(child) + + parse(comment) + return datas + + +@register.inclusion_tag('comments/tags/comment_item.html') +def show_comment_item(comment, ischild): + """评论""" + depth = 1 if ischild else 2 + return { + 'comment_item': comment, + 'depth': depth + } diff --git a/src/DjangoBlog-master/comments/tests.py b/src/DjangoBlog-master/comments/tests.py new file mode 100644 index 0000000..2a7f55f --- /dev/null +++ b/src/DjangoBlog-master/comments/tests.py @@ -0,0 +1,109 @@ +from django.test import Client, RequestFactory, TransactionTestCase +from django.urls import reverse + +from accounts.models import BlogUser +from blog.models import Category, Article +from comments.models import Comment +from comments.templatetags.comments_tags import * +from djangoblog.utils import get_max_articleid_commentid + + +# Create your tests here. + +class CommentsTest(TransactionTestCase): + def setUp(self): + self.client = Client() + self.factory = RequestFactory() + from blog.models import BlogSettings + value = BlogSettings() + value.comment_need_review = True + value.save() + + self.user = BlogUser.objects.create_superuser( + email="liangliangyy1@gmail.com", + username="liangliangyy1", + password="liangliangyy1") + + def update_article_comment_status(self, article): + comments = article.comment_set.all() + for comment in comments: + comment.is_enable = True + comment.save() + + def test_validate_comment(self): + self.client.login(username='liangliangyy1', password='liangliangyy1') + + category = Category() + category.name = "categoryccc" + category.save() + + article = Article() + article.title = "nicetitleccc" + article.body = "nicecontentccc" + article.author = self.user + article.category = category + article.type = 'a' + article.status = 'p' + article.save() + + comment_url = reverse( + 'comments:postcomment', kwargs={ + 'article_id': article.id}) + + response = self.client.post(comment_url, + { + 'body': '123ffffffffff' + }) + + self.assertEqual(response.status_code, 302) + + article = Article.objects.get(pk=article.pk) + self.assertEqual(len(article.comment_list()), 0) + self.update_article_comment_status(article) + + self.assertEqual(len(article.comment_list()), 1) + + response = self.client.post(comment_url, + { + 'body': '123ffffffffff', + }) + + self.assertEqual(response.status_code, 302) + + article = Article.objects.get(pk=article.pk) + self.update_article_comment_status(article) + self.assertEqual(len(article.comment_list()), 2) + parent_comment_id = article.comment_list()[0].id + + response = self.client.post(comment_url, + { + 'body': ''' + # Title1 + + ```python + import os + ``` + + [url](https://www.lylinux.net/) + + [ddd](http://www.baidu.com) + + + ''', + 'parent_comment_id': parent_comment_id + }) + + self.assertEqual(response.status_code, 302) + self.update_article_comment_status(article) + article = Article.objects.get(pk=article.pk) + self.assertEqual(len(article.comment_list()), 3) + comment = Comment.objects.get(id=parent_comment_id) + tree = parse_commenttree(article.comment_list(), comment) + self.assertEqual(len(tree), 1) + data = show_comment_item(comment, True) + self.assertIsNotNone(data) + s = get_max_articleid_commentid() + self.assertIsNotNone(s) + + from comments.utils import send_comment_email + send_comment_email(comment) diff --git a/src/DjangoBlog-master/comments/urls.py b/src/DjangoBlog-master/comments/urls.py new file mode 100644 index 0000000..7df3fab --- /dev/null +++ b/src/DjangoBlog-master/comments/urls.py @@ -0,0 +1,11 @@ +from django.urls import path + +from . import views + +app_name = "comments" +urlpatterns = [ + path( + 'article//postcomment', + views.CommentPostView.as_view(), + name='postcomment'), +] diff --git a/src/DjangoBlog-master/comments/utils.py b/src/DjangoBlog-master/comments/utils.py new file mode 100644 index 0000000..f01dba7 --- /dev/null +++ b/src/DjangoBlog-master/comments/utils.py @@ -0,0 +1,38 @@ +import logging + +from django.utils.translation import gettext_lazy as _ + +from djangoblog.utils import get_current_site +from djangoblog.utils import send_email + +logger = logging.getLogger(__name__) + + +def send_comment_email(comment): + site = get_current_site().domain + subject = _('Thanks for your comment') + article_url = f"https://{site}{comment.article.get_absolute_url()}" + html_content = _("""

Thank you very much for your comments on this site

+ You can visit %(article_title)s + to review your comments, + Thank you again! +
+ If the link above cannot be opened, please copy this link to your browser. + %(article_url)s""") % {'article_url': article_url, 'article_title': comment.article.title} + tomail = comment.author.email + send_email([tomail], subject, html_content) + try: + if comment.parent_comment: + html_content = _("""Your comment on %(article_title)s
has + received a reply.
%(comment_body)s +
+ go check it out! +
+ If the link above cannot be opened, please copy this link to your browser. + %(article_url)s + """) % {'article_url': article_url, 'article_title': comment.article.title, + 'comment_body': comment.parent_comment.body} + tomail = comment.parent_comment.author.email + send_email([tomail], subject, html_content) + except Exception as e: + logger.error(e) diff --git a/src/DjangoBlog-master/comments/views.py b/src/DjangoBlog-master/comments/views.py new file mode 100644 index 0000000..ad9b2b9 --- /dev/null +++ b/src/DjangoBlog-master/comments/views.py @@ -0,0 +1,63 @@ +# Create your views here. +from django.core.exceptions import ValidationError +from django.http import HttpResponseRedirect +from django.shortcuts import get_object_or_404 +from django.utils.decorators import method_decorator +from django.views.decorators.csrf import csrf_protect +from django.views.generic.edit import FormView + +from accounts.models import BlogUser +from blog.models import Article +from .forms import CommentForm +from .models import Comment + + +class CommentPostView(FormView): + form_class = CommentForm + template_name = 'blog/article_detail.html' + + @method_decorator(csrf_protect) + def dispatch(self, *args, **kwargs): + return super(CommentPostView, self).dispatch(*args, **kwargs) + + def get(self, request, *args, **kwargs): + article_id = self.kwargs['article_id'] + article = get_object_or_404(Article, pk=article_id) + url = article.get_absolute_url() + return HttpResponseRedirect(url + "#comments") + + def form_invalid(self, form): + article_id = self.kwargs['article_id'] + article = get_object_or_404(Article, pk=article_id) + + return self.render_to_response({ + 'form': form, + 'article': article + }) + + def form_valid(self, form): + """提交的数据验证合法后的逻辑""" + user = self.request.user + author = BlogUser.objects.get(pk=user.pk) + article_id = self.kwargs['article_id'] + article = get_object_or_404(Article, pk=article_id) + + if article.comment_status == 'c' or article.status == 'c': + raise ValidationError("该文章评论已关闭.") + comment = form.save(False) + comment.article = article + from djangoblog.utils import get_blog_setting + settings = get_blog_setting() + if not settings.comment_need_review: + comment.is_enable = True + comment.author = author + + if form.cleaned_data['parent_comment_id']: + parent_comment = Comment.objects.get( + pk=form.cleaned_data['parent_comment_id']) + comment.parent_comment = parent_comment + + comment.save(True) + return HttpResponseRedirect( + "%s#div-comment-%d" % + (article.get_absolute_url(), comment.pk)) diff --git a/src/DjangoBlog-master/deploy/docker-compose/docker-compose.es.yml b/src/DjangoBlog-master/deploy/docker-compose/docker-compose.es.yml new file mode 100644 index 0000000..83e35ff --- /dev/null +++ b/src/DjangoBlog-master/deploy/docker-compose/docker-compose.es.yml @@ -0,0 +1,48 @@ +version: '3' + +services: + es: + image: liangliangyy/elasticsearch-analysis-ik:8.6.1 + container_name: es + restart: always + environment: + - discovery.type=single-node + - "ES_JAVA_OPTS=-Xms512m -Xmx512m" + ports: + - 9200:9200 + volumes: + - ./bin/datas/es/:/usr/share/elasticsearch/data/ + + kibana: + image: kibana:8.6.1 + restart: always + container_name: kibana + ports: + - 5601:5601 + environment: + - ELASTICSEARCH_HOSTS=http://es:9200 + + djangoblog: + build: . + restart: always + command: bash -c 'sh /code/djangoblog/bin/docker_start.sh' + ports: + - "8000:8000" + volumes: + - ./collectedstatic:/code/djangoblog/collectedstatic + - ./uploads:/code/djangoblog/uploads + environment: + - DJANGO_MYSQL_DATABASE=djangoblog + - DJANGO_MYSQL_USER=root + - DJANGO_MYSQL_PASSWORD=DjAnGoBlOg!2!Q@W#E + - DJANGO_MYSQL_HOST=db + - DJANGO_MYSQL_PORT=3306 + - DJANGO_MEMCACHED_LOCATION=memcached:11211 + - DJANGO_ELASTICSEARCH_HOST=es:9200 + links: + - db + - memcached + depends_on: + - db + container_name: djangoblog + diff --git a/src/DjangoBlog-master/deploy/docker-compose/docker-compose.yml b/src/DjangoBlog-master/deploy/docker-compose/docker-compose.yml new file mode 100644 index 0000000..9609af3 --- /dev/null +++ b/src/DjangoBlog-master/deploy/docker-compose/docker-compose.yml @@ -0,0 +1,60 @@ +version: '3' + +services: + db: + image: mysql:latest + restart: always + environment: + - MYSQL_DATABASE=djangoblog + - MYSQL_ROOT_PASSWORD=DjAnGoBlOg!2!Q@W#E + ports: + - 3306:3306 + volumes: + - ./bin/datas/mysql/:/var/lib/mysql + depends_on: + - redis + container_name: db + + djangoblog: + build: + context: ../../ + restart: always + command: bash -c 'sh /code/djangoblog/bin/docker_start.sh' + ports: + - "8000:8000" + volumes: + - ./collectedstatic:/code/djangoblog/collectedstatic + - ./logs:/code/djangoblog/logs + - ./uploads:/code/djangoblog/uploads + environment: + - DJANGO_MYSQL_DATABASE=djangoblog + - DJANGO_MYSQL_USER=root + - DJANGO_MYSQL_PASSWORD=DjAnGoBlOg!2!Q@W#E + - DJANGO_MYSQL_HOST=db + - DJANGO_MYSQL_PORT=3306 + - DJANGO_REDIS_URL=redis:6379 + links: + - db + - redis + depends_on: + - db + container_name: djangoblog + nginx: + restart: always + image: nginx:latest + ports: + - "80:80" + - "443:443" + volumes: + - ./bin/nginx.conf:/etc/nginx/nginx.conf + - ./collectedstatic:/code/djangoblog/collectedstatic + links: + - djangoblog:djangoblog + container_name: nginx + + redis: + restart: always + image: redis:latest + container_name: redis + ports: + - "6379:6379" diff --git a/src/DjangoBlog-master/deploy/entrypoint.sh b/src/DjangoBlog-master/deploy/entrypoint.sh new file mode 100644 index 0000000..2fb6491 --- /dev/null +++ b/src/DjangoBlog-master/deploy/entrypoint.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash +NAME="djangoblog" +DJANGODIR=/code/djangoblog +USER=root +GROUP=root +NUM_WORKERS=1 +DJANGO_WSGI_MODULE=djangoblog.wsgi + + +echo "Starting $NAME as `whoami`" + +cd $DJANGODIR + +export PYTHONPATH=$DJANGODIR:$PYTHONPATH + +python manage.py makemigrations && \ + python manage.py migrate && \ + python manage.py collectstatic --noinput && \ + python manage.py compress --force && \ + python manage.py build_index && \ + python manage.py compilemessages || exit 1 + +exec gunicorn ${DJANGO_WSGI_MODULE}:application \ +--name $NAME \ +--workers $NUM_WORKERS \ +--user=$USER --group=$GROUP \ +--bind 0.0.0.0:8000 \ +--log-level=debug \ +--log-file=- \ +--worker-class gevent \ +--threads 4 diff --git a/src/DjangoBlog-master/deploy/k8s/configmap.yaml b/src/DjangoBlog-master/deploy/k8s/configmap.yaml new file mode 100644 index 0000000..835d4ad --- /dev/null +++ b/src/DjangoBlog-master/deploy/k8s/configmap.yaml @@ -0,0 +1,119 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: web-nginx-config + namespace: djangoblog +data: + nginx.conf: | + user nginx; + worker_processes auto; + error_log /var/log/nginx/error.log notice; + pid /var/run/nginx.pid; + + events { + worker_connections 1024; + multi_accept on; + use epoll; + } + + http { + include /etc/nginx/mime.types; + default_type application/octet-stream; + + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + + access_log /var/log/nginx/access.log main; + + sendfile on; + keepalive_timeout 65; + gzip on; + gzip_disable "msie6"; + + gzip_vary on; + gzip_proxied any; + gzip_comp_level 8; + gzip_buffers 16 8k; + gzip_http_version 1.1; + gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; + + # Include server configurations + include /etc/nginx/conf.d/*.conf; + } + djangoblog.conf: | + server { + server_name lylinux.net; + root /code/djangoblog/collectedstatic/; + listen 80; + keepalive_timeout 70; + location /static/ { + expires max; + alias /code/djangoblog/collectedstatic/; + } + + location ~* (robots\.txt|ads\.txt|favicon\.ico|favion\.ico|crossdomain\.xml|google93fd32dbd906620a\.html|BingSiteAuth\.xml|baidu_verify_Ijeny6KrmS\.html)$ { + root /resource/djangopub; + expires 1d; + access_log off; + error_log off; + } + + location / { + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Host $http_host; + proxy_set_header X-NginX-Proxy true; + proxy_redirect off; + if (!-f $request_filename) { + proxy_pass http://djangoblog:8000; + break; + } + } + } + server { + server_name www.lylinux.net; + listen 80; + return 301 https://lylinux.net$request_uri; + } + resource.lylinux.net.conf: | + server { + index index.html index.htm; + server_name resource.lylinux.net; + root /resource/; + + location /djangoblog/ { + alias /code/djangoblog/collectedstatic/; + } + + access_log off; + error_log off; + include lylinux/resource.conf; + } + lylinux.resource.conf: | + expires max; + access_log off; + log_not_found off; + add_header Pragma public; + add_header Cache-Control "public"; + add_header "Access-Control-Allow-Origin" "*"; + +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: djangoblog-env + namespace: djangoblog +data: + DJANGO_MYSQL_DATABASE: djangoblog + DJANGO_MYSQL_USER: db_user + DJANGO_MYSQL_PASSWORD: db_password + DJANGO_MYSQL_HOST: db_host + DJANGO_MYSQL_PORT: db_port + DJANGO_REDIS_URL: "redis:6379" + DJANGO_DEBUG: "False" + MYSQL_ROOT_PASSWORD: db_password + MYSQL_DATABASE: djangoblog + MYSQL_PASSWORD: db_password + DJANGO_SECRET_KEY: xxxxxxxxxxxxxxxxxxxxxxxxxxxxx + diff --git a/src/DjangoBlog-master/deploy/k8s/deployment.yaml b/src/DjangoBlog-master/deploy/k8s/deployment.yaml new file mode 100644 index 0000000..414fdcc --- /dev/null +++ b/src/DjangoBlog-master/deploy/k8s/deployment.yaml @@ -0,0 +1,274 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: djangoblog + namespace: djangoblog + labels: + app: djangoblog +spec: + replicas: 3 + selector: + matchLabels: + app: djangoblog + template: + metadata: + labels: + app: djangoblog + spec: + containers: + - name: djangoblog + image: liangliangyy/djangoblog:latest + imagePullPolicy: Always + ports: + - containerPort: 8000 + envFrom: + - configMapRef: + name: djangoblog-env + readinessProbe: + httpGet: + path: / + port: 8000 + initialDelaySeconds: 10 + periodSeconds: 30 + livenessProbe: + httpGet: + path: / + port: 8000 + initialDelaySeconds: 10 + periodSeconds: 30 + resources: + requests: + cpu: 10m + memory: 100Mi + limits: + cpu: "2" + memory: 2Gi + volumeMounts: + - name: djangoblog + mountPath: /code/djangoblog/collectedstatic + - name: resource + mountPath: /resource + volumes: + - name: djangoblog + persistentVolumeClaim: + claimName: djangoblog-pvc + - name: resource + persistentVolumeClaim: + claimName: resource-pvc + +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: redis + namespace: djangoblog + labels: + app: redis +spec: + replicas: 1 + selector: + matchLabels: + app: redis + template: + metadata: + labels: + app: redis + spec: + containers: + - name: redis + image: redis:latest + imagePullPolicy: IfNotPresent + ports: + - containerPort: 6379 + resources: + requests: + cpu: 10m + memory: 100Mi + limits: + cpu: 200m + memory: 2Gi + +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: db + namespace: djangoblog + labels: + app: db +spec: + replicas: 1 + selector: + matchLabels: + app: db + template: + metadata: + labels: + app: db + spec: + containers: + - name: db + image: mysql:latest + imagePullPolicy: IfNotPresent + ports: + - containerPort: 3306 + envFrom: + - configMapRef: + name: djangoblog-env + readinessProbe: + exec: + command: + - mysqladmin + - ping + - "-h" + - "127.0.0.1" + - "-u" + - "root" + - "-p$MYSQL_ROOT_PASSWORD" + initialDelaySeconds: 10 + periodSeconds: 10 + livenessProbe: + exec: + command: + - mysqladmin + - ping + - "-h" + - "127.0.0.1" + - "-u" + - "root" + - "-p$MYSQL_ROOT_PASSWORD" + initialDelaySeconds: 10 + periodSeconds: 10 + resources: + requests: + cpu: 10m + memory: 100Mi + limits: + cpu: "2" + memory: 2Gi + volumeMounts: + - name: db-data + mountPath: /var/lib/mysql + volumes: + - name: db-data + persistentVolumeClaim: + claimName: db-pvc + +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: nginx + namespace: djangoblog + labels: + app: nginx +spec: + replicas: 1 + selector: + matchLabels: + app: nginx + template: + metadata: + labels: + app: nginx + spec: + containers: + - name: nginx + image: nginx:latest + imagePullPolicy: IfNotPresent + ports: + - containerPort: 80 + resources: + requests: + cpu: 10m + memory: 100Mi + limits: + cpu: "2" + memory: 2Gi + volumeMounts: + - name: nginx-config + mountPath: /etc/nginx/nginx.conf + subPath: nginx.conf + - name: nginx-config + mountPath: /etc/nginx/conf.d/default.conf + subPath: djangoblog.conf + - name: nginx-config + mountPath: /etc/nginx/conf.d/resource.lylinux.net.conf + subPath: resource.lylinux.net.conf + - name: nginx-config + mountPath: /etc/nginx/lylinux/resource.conf + subPath: lylinux.resource.conf + - name: djangoblog-pvc + mountPath: /code/djangoblog/collectedstatic + - name: resource-pvc + mountPath: /resource + volumes: + - name: nginx-config + configMap: + name: web-nginx-config + - name: djangoblog-pvc + persistentVolumeClaim: + claimName: djangoblog-pvc + - name: resource-pvc + persistentVolumeClaim: + claimName: resource-pvc + +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: elasticsearch + namespace: djangoblog + labels: + app: elasticsearch +spec: + replicas: 1 + selector: + matchLabels: + app: elasticsearch + template: + metadata: + labels: + app: elasticsearch + spec: + containers: + - name: elasticsearch + image: liangliangyy/elasticsearch-analysis-ik:8.6.1 + imagePullPolicy: IfNotPresent + env: + - name: discovery.type + value: single-node + - name: ES_JAVA_OPTS + value: "-Xms256m -Xmx256m" + - name: xpack.security.enabled + value: "false" + - name: xpack.monitoring.templates.enabled + value: "false" + ports: + - containerPort: 9200 + resources: + requests: + cpu: 10m + memory: 100Mi + limits: + cpu: "2" + memory: 2Gi + readinessProbe: + httpGet: + path: / + port: 9200 + initialDelaySeconds: 15 + periodSeconds: 30 + livenessProbe: + httpGet: + path: / + port: 9200 + initialDelaySeconds: 15 + periodSeconds: 30 + volumeMounts: + - name: elasticsearch-data + mountPath: /usr/share/elasticsearch/data/ + volumes: + - name: elasticsearch-data + persistentVolumeClaim: + claimName: elasticsearch-pvc diff --git a/src/DjangoBlog-master/deploy/k8s/gateway.yaml b/src/DjangoBlog-master/deploy/k8s/gateway.yaml new file mode 100644 index 0000000..a8de073 --- /dev/null +++ b/src/DjangoBlog-master/deploy/k8s/gateway.yaml @@ -0,0 +1,17 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: nginx + namespace: djangoblog +spec: + ingressClassName: nginx + rules: + - http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: nginx + port: + number: 80 \ No newline at end of file diff --git a/src/DjangoBlog-master/deploy/k8s/pv.yaml b/src/DjangoBlog-master/deploy/k8s/pv.yaml new file mode 100644 index 0000000..874b72f --- /dev/null +++ b/src/DjangoBlog-master/deploy/k8s/pv.yaml @@ -0,0 +1,94 @@ +apiVersion: v1 +kind: PersistentVolume +metadata: + name: local-pv-db +spec: + capacity: + storage: 10Gi + volumeMode: Filesystem + accessModes: + - ReadWriteOnce + persistentVolumeReclaimPolicy: Retain + storageClassName: local-storage + local: + path: /mnt/local-storage-db + nodeAffinity: + required: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/hostname + operator: In + values: + - master +--- +apiVersion: v1 +kind: PersistentVolume +metadata: + name: local-pv-djangoblog +spec: + capacity: + storage: 5Gi + volumeMode: Filesystem + accessModes: + - ReadWriteOnce + persistentVolumeReclaimPolicy: Retain + storageClassName: local-storage + local: + path: /mnt/local-storage-djangoblog + nodeAffinity: + required: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/hostname + operator: In + values: + - master + + +--- +apiVersion: v1 +kind: PersistentVolume +metadata: + name: local-pv-resource +spec: + capacity: + storage: 5Gi + volumeMode: Filesystem + accessModes: + - ReadWriteOnce + persistentVolumeReclaimPolicy: Retain + storageClassName: local-storage + local: + path: /mnt/resource/ + nodeAffinity: + required: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/hostname + operator: In + values: + - master + +--- +apiVersion: v1 +kind: PersistentVolume +metadata: + name: local-pv-elasticsearch +spec: + capacity: + storage: 5Gi + volumeMode: Filesystem + accessModes: + - ReadWriteOnce + persistentVolumeReclaimPolicy: Retain + storageClassName: local-storage + local: + path: /mnt/local-storage-elasticsearch + nodeAffinity: + required: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/hostname + operator: In + values: + - master \ No newline at end of file diff --git a/src/DjangoBlog-master/deploy/k8s/pvc.yaml b/src/DjangoBlog-master/deploy/k8s/pvc.yaml new file mode 100644 index 0000000..ef238c5 --- /dev/null +++ b/src/DjangoBlog-master/deploy/k8s/pvc.yaml @@ -0,0 +1,60 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: db-pvc + namespace: djangoblog +spec: + storageClassName: local-storage + volumeName: local-pv-db + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 10Gi + + +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: djangoblog-pvc + namespace: djangoblog +spec: + volumeName: local-pv-djangoblog + storageClassName: local-storage + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 5Gi + +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: resource-pvc + namespace: djangoblog +spec: + volumeName: local-pv-resource + storageClassName: local-storage + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 5Gi + +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: elasticsearch-pvc + namespace: djangoblog +spec: + volumeName: local-pv-elasticsearch + storageClassName: local-storage + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 5Gi + \ No newline at end of file diff --git a/src/DjangoBlog-master/deploy/k8s/service.yaml b/src/DjangoBlog-master/deploy/k8s/service.yaml new file mode 100644 index 0000000..4ef2931 --- /dev/null +++ b/src/DjangoBlog-master/deploy/k8s/service.yaml @@ -0,0 +1,80 @@ +apiVersion: v1 +kind: Service +metadata: + name: djangoblog + namespace: djangoblog + labels: + app: djangoblog +spec: + selector: + app: djangoblog + ports: + - protocol: TCP + port: 8000 + targetPort: 8000 + type: ClusterIP +--- +apiVersion: v1 +kind: Service +metadata: + name: nginx + namespace: djangoblog + labels: + app: nginx +spec: + selector: + app: nginx + ports: + - protocol: TCP + port: 80 + targetPort: 80 + type: ClusterIP +--- +apiVersion: v1 +kind: Service +metadata: + name: redis + namespace: djangoblog + labels: + app: redis +spec: + selector: + app: redis + ports: + - protocol: TCP + port: 6379 + targetPort: 6379 + type: ClusterIP +--- +apiVersion: v1 +kind: Service +metadata: + name: db + namespace: djangoblog + labels: + app: db +spec: + selector: + app: db + ports: + - protocol: TCP + port: 3306 + targetPort: 3306 + type: ClusterIP +--- +apiVersion: v1 +kind: Service +metadata: + name: elasticsearch + namespace: djangoblog + labels: + app: elasticsearch +spec: + selector: + app: elasticsearch + ports: + - protocol: TCP + port: 9200 + targetPort: 9200 + type: ClusterIP + diff --git a/src/DjangoBlog-master/deploy/k8s/storageclass.yaml b/src/DjangoBlog-master/deploy/k8s/storageclass.yaml new file mode 100644 index 0000000..5d5a14c --- /dev/null +++ b/src/DjangoBlog-master/deploy/k8s/storageclass.yaml @@ -0,0 +1,10 @@ +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: local-storage + annotations: + storageclass.kubernetes.io/is-default-class: "true" +provisioner: kubernetes.io/no-provisioner +volumeBindingMode: Immediate + + diff --git a/src/DjangoBlog-master/deploy/nginx.conf b/src/DjangoBlog-master/deploy/nginx.conf new file mode 100644 index 0000000..32161d8 --- /dev/null +++ b/src/DjangoBlog-master/deploy/nginx.conf @@ -0,0 +1,50 @@ +user nginx; +worker_processes auto; + +error_log /var/log/nginx/error.log notice; +pid /var/run/nginx.pid; + + +events { + worker_connections 1024; +} + + +http { + include /etc/nginx/mime.types; + default_type application/octet-stream; + + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + + access_log /var/log/nginx/access.log main; + + sendfile on; + #tcp_nopush on; + + keepalive_timeout 65; + + #gzip on; + + server { + root /code/djangoblog/collectedstatic/; + listen 80; + keepalive_timeout 70; + location /static/ { + expires max; + alias /code/djangoblog/collectedstatic/; + } + location / { + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Host $http_host; + proxy_set_header X-NginX-Proxy true; + proxy_redirect off; + if (!-f $request_filename) { + proxy_pass http://djangoblog:8000; + break; + } + } + } +} diff --git a/src/DjangoBlog-master/djangoblog/__init__.py b/src/DjangoBlog-master/djangoblog/__init__.py new file mode 100644 index 0000000..1e205f4 --- /dev/null +++ b/src/DjangoBlog-master/djangoblog/__init__.py @@ -0,0 +1 @@ +default_app_config = 'djangoblog.apps.DjangoblogAppConfig' diff --git a/src/DjangoBlog-master/djangoblog/admin_site.py b/src/DjangoBlog-master/djangoblog/admin_site.py new file mode 100644 index 0000000..f120405 --- /dev/null +++ b/src/DjangoBlog-master/djangoblog/admin_site.py @@ -0,0 +1,64 @@ +from django.contrib.admin import AdminSite +from django.contrib.admin.models import LogEntry +from django.contrib.sites.admin import SiteAdmin +from django.contrib.sites.models import Site + +from accounts.admin import * +from blog.admin import * +from blog.models import * +from comments.admin import * +from comments.models import * +from djangoblog.logentryadmin import LogEntryAdmin +from oauth.admin import * +from oauth.models import * +from owntracks.admin import * +from owntracks.models import * +from servermanager.admin import * +from servermanager.models import * + + +class DjangoBlogAdminSite(AdminSite): + site_header = 'djangoblog administration' + site_title = 'djangoblog site admin' + + def __init__(self, name='admin'): + super().__init__(name) + + def has_permission(self, request): + return request.user.is_superuser + + # def get_urls(self): + # urls = super().get_urls() + # from django.urls import path + # from blog.views import refresh_memcache + # + # my_urls = [ + # path('refresh/', self.admin_view(refresh_memcache), name="refresh"), + # ] + # return urls + my_urls + + +admin_site = DjangoBlogAdminSite(name='admin') + +admin_site.register(Article, ArticlelAdmin) +admin_site.register(Category, CategoryAdmin) +admin_site.register(Tag, TagAdmin) +admin_site.register(Links, LinksAdmin) +admin_site.register(SideBar, SideBarAdmin) +admin_site.register(BlogSettings, BlogSettingsAdmin) + +admin_site.register(commands, CommandsAdmin) +admin_site.register(EmailSendLog, EmailSendLogAdmin) + +admin_site.register(BlogUser, BlogUserAdmin) + +admin_site.register(Comment, CommentAdmin) + +admin_site.register(OAuthUser, OAuthUserAdmin) +admin_site.register(OAuthConfig, OAuthConfigAdmin) + +admin_site.register(OwnTrackLog, OwnTrackLogsAdmin) + +admin_site.register(Site, SiteAdmin) + +admin_site.register(LogEntry, LogEntryAdmin) diff --git a/src/DjangoBlog-master/djangoblog/apps.py b/src/DjangoBlog-master/djangoblog/apps.py new file mode 100644 index 0000000..d29e318 --- /dev/null +++ b/src/DjangoBlog-master/djangoblog/apps.py @@ -0,0 +1,11 @@ +from django.apps import AppConfig + +class DjangoblogAppConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'djangoblog' + + def ready(self): + super().ready() + # Import and load plugins here + from .plugin_manage.loader import load_plugins + load_plugins() \ No newline at end of file diff --git a/src/DjangoBlog-master/djangoblog/blog_signals.py b/src/DjangoBlog-master/djangoblog/blog_signals.py new file mode 100644 index 0000000..393f441 --- /dev/null +++ b/src/DjangoBlog-master/djangoblog/blog_signals.py @@ -0,0 +1,122 @@ +import _thread +import logging + +import django.dispatch +from django.conf import settings +from django.contrib.admin.models import LogEntry +from django.contrib.auth.signals import user_logged_in, user_logged_out +from django.core.mail import EmailMultiAlternatives +from django.db.models.signals import post_save +from django.dispatch import receiver + +from comments.models import Comment +from comments.utils import send_comment_email +from djangoblog.spider_notify import SpiderNotify +from djangoblog.utils import cache, expire_view_cache, delete_sidebar_cache, delete_view_cache +from djangoblog.utils import get_current_site +from oauth.models import OAuthUser + +logger = logging.getLogger(__name__) + +oauth_user_login_signal = django.dispatch.Signal(['id']) +send_email_signal = django.dispatch.Signal( + ['emailto', 'title', 'content']) + + +@receiver(send_email_signal) +def send_email_signal_handler(sender, **kwargs): + emailto = kwargs['emailto'] + title = kwargs['title'] + content = kwargs['content'] + + msg = EmailMultiAlternatives( + title, + content, + from_email=settings.DEFAULT_FROM_EMAIL, + to=emailto) + msg.content_subtype = "html" + + from servermanager.models import EmailSendLog + log = EmailSendLog() + log.title = title + log.content = content + log.emailto = ','.join(emailto) + + try: + result = msg.send() + log.send_result = result > 0 + except Exception as e: + logger.error(f"失败邮箱号: {emailto}, {e}") + log.send_result = False + log.save() + + +@receiver(oauth_user_login_signal) +def oauth_user_login_signal_handler(sender, **kwargs): + id = kwargs['id'] + oauthuser = OAuthUser.objects.get(id=id) + site = get_current_site().domain + if oauthuser.picture and not oauthuser.picture.find(site) >= 0: + from djangoblog.utils import save_user_avatar + oauthuser.picture = save_user_avatar(oauthuser.picture) + oauthuser.save() + + delete_sidebar_cache() + + +@receiver(post_save) +def model_post_save_callback( + sender, + instance, + created, + raw, + using, + update_fields, + **kwargs): + clearcache = False + if isinstance(instance, LogEntry): + return + if 'get_full_url' in dir(instance): + is_update_views = update_fields == {'views'} + if not settings.TESTING and not is_update_views: + try: + notify_url = instance.get_full_url() + SpiderNotify.baidu_notify([notify_url]) + except Exception as ex: + logger.error("notify sipder", ex) + if not is_update_views: + clearcache = True + + if isinstance(instance, Comment): + if instance.is_enable: + path = instance.article.get_absolute_url() + site = get_current_site().domain + if site.find(':') > 0: + site = site[0:site.find(':')] + + expire_view_cache( + path, + servername=site, + serverport=80, + key_prefix='blogdetail') + if cache.get('seo_processor'): + cache.delete('seo_processor') + comment_cache_key = 'article_comments_{id}'.format( + id=instance.article.id) + cache.delete(comment_cache_key) + delete_sidebar_cache() + delete_view_cache('article_comments', [str(instance.article.pk)]) + + _thread.start_new_thread(send_comment_email, (instance,)) + + if clearcache: + cache.clear() + + +@receiver(user_logged_in) +@receiver(user_logged_out) +def user_auth_callback(sender, request, user, **kwargs): + if user and user.username: + logger.info(user) + delete_sidebar_cache() + # cache.clear() diff --git a/src/DjangoBlog-master/djangoblog/elasticsearch_backend.py b/src/DjangoBlog-master/djangoblog/elasticsearch_backend.py new file mode 100644 index 0000000..4afe498 --- /dev/null +++ b/src/DjangoBlog-master/djangoblog/elasticsearch_backend.py @@ -0,0 +1,183 @@ +from django.utils.encoding import force_str +from elasticsearch_dsl import Q +from haystack.backends import BaseEngine, BaseSearchBackend, BaseSearchQuery, log_query +from haystack.forms import ModelSearchForm +from haystack.models import SearchResult +from haystack.utils import log as logging + +from blog.documents import ArticleDocument, ArticleDocumentManager +from blog.models import Article + +logger = logging.getLogger(__name__) + + +class ElasticSearchBackend(BaseSearchBackend): + def __init__(self, connection_alias, **connection_options): + super( + ElasticSearchBackend, + self).__init__( + connection_alias, + **connection_options) + self.manager = ArticleDocumentManager() + self.include_spelling = True + + def _get_models(self, iterable): + models = iterable if iterable and iterable[0] else Article.objects.all() + docs = self.manager.convert_to_doc(models) + return docs + + def _create(self, models): + self.manager.create_index() + docs = self._get_models(models) + self.manager.rebuild(docs) + + def _delete(self, models): + for m in models: + m.delete() + return True + + def _rebuild(self, models): + models = models if models else Article.objects.all() + docs = self.manager.convert_to_doc(models) + self.manager.update_docs(docs) + + def update(self, index, iterable, commit=True): + + models = self._get_models(iterable) + self.manager.update_docs(models) + + def remove(self, obj_or_string): + models = self._get_models([obj_or_string]) + self._delete(models) + + def clear(self, models=None, commit=True): + self.remove(None) + + @staticmethod + def get_suggestion(query: str) -> str: + """获取推荐词, 如果没有找到添加原搜索词""" + + search = ArticleDocument.search() \ + .query("match", body=query) \ + .suggest('suggest_search', query, term={'field': 'body'}) \ + .execute() + + keywords = [] + for suggest in search.suggest.suggest_search: + if suggest["options"]: + keywords.append(suggest["options"][0]["text"]) + else: + keywords.append(suggest["text"]) + + return ' '.join(keywords) + + @log_query + def search(self, query_string, **kwargs): + logger.info('search query_string:' + query_string) + + start_offset = kwargs.get('start_offset') + end_offset = kwargs.get('end_offset') + + # 推荐词搜索 + if getattr(self, "is_suggest", None): + suggestion = self.get_suggestion(query_string) + else: + suggestion = query_string + + q = Q('bool', + should=[Q('match', body=suggestion), Q('match', title=suggestion)], + minimum_should_match="70%") + + search = ArticleDocument.search() \ + .query('bool', filter=[q]) \ + .filter('term', status='p') \ + .filter('term', type='a') \ + .source(False)[start_offset: end_offset] + + results = search.execute() + hits = results['hits'].total + raw_results = [] + for raw_result in results['hits']['hits']: + app_label = 'blog' + model_name = 'Article' + additional_fields = {} + + result_class = SearchResult + + result = result_class( + app_label, + model_name, + raw_result['_id'], + raw_result['_score'], + **additional_fields) + raw_results.append(result) + facets = {} + spelling_suggestion = None if query_string == suggestion else suggestion + + return { + 'results': raw_results, + 'hits': hits, + 'facets': facets, + 'spelling_suggestion': spelling_suggestion, + } + + +class ElasticSearchQuery(BaseSearchQuery): + def _convert_datetime(self, date): + if hasattr(date, 'hour'): + return force_str(date.strftime('%Y%m%d%H%M%S')) + else: + return force_str(date.strftime('%Y%m%d000000')) + + def clean(self, query_fragment): + """ + Provides a mechanism for sanitizing user input before presenting the + value to the backend. + + Whoosh 1.X differs here in that you can no longer use a backslash + to escape reserved characters. Instead, the whole word should be + quoted. + """ + words = query_fragment.split() + cleaned_words = [] + + for word in words: + if word in self.backend.RESERVED_WORDS: + word = word.replace(word, word.lower()) + + for char in self.backend.RESERVED_CHARACTERS: + if char in word: + word = "'%s'" % word + break + + cleaned_words.append(word) + + return ' '.join(cleaned_words) + + def build_query_fragment(self, field, filter_type, value): + return value.query_string + + def get_count(self): + results = self.get_results() + return len(results) if results else 0 + + def get_spelling_suggestion(self, preferred_query=None): + return self._spelling_suggestion + + def build_params(self, spelling_query=None): + kwargs = super(ElasticSearchQuery, self).build_params(spelling_query=spelling_query) + return kwargs + + +class ElasticSearchModelSearchForm(ModelSearchForm): + + def search(self): + # 是否建议搜索 + self.searchqueryset.query.backend.is_suggest = self.data.get("is_suggest") != "no" + sqs = super().search() + return sqs + + +class ElasticSearchEngine(BaseEngine): + backend = ElasticSearchBackend + query = ElasticSearchQuery diff --git a/src/DjangoBlog-master/djangoblog/feeds.py b/src/DjangoBlog-master/djangoblog/feeds.py new file mode 100644 index 0000000..8c4e851 --- /dev/null +++ b/src/DjangoBlog-master/djangoblog/feeds.py @@ -0,0 +1,40 @@ +from django.contrib.auth import get_user_model +from django.contrib.syndication.views import Feed +from django.utils import timezone +from django.utils.feedgenerator import Rss201rev2Feed + +from blog.models import Article +from djangoblog.utils import CommonMarkdown + + +class DjangoBlogFeed(Feed): + feed_type = Rss201rev2Feed + + description = '大巧无工,重剑无锋.' + title = "且听风吟 大巧无工,重剑无锋. " + link = "/feed/" + + def author_name(self): + return get_user_model().objects.first().nickname + + def author_link(self): + return get_user_model().objects.first().get_absolute_url() + + def items(self): + return Article.objects.filter(type='a', status='p').order_by('-pub_time')[:5] + + def item_title(self, item): + return item.title + + def item_description(self, item): + return CommonMarkdown.get_markdown(item.body) + + def feed_copyright(self): + now = timezone.now() + return "Copyright© {year} 且听风吟".format(year=now.year) + + def item_link(self, item): + return item.get_absolute_url() + + def item_guid(self, item): + return diff --git a/src/DjangoBlog-master/djangoblog/logentryadmin.py b/src/DjangoBlog-master/djangoblog/logentryadmin.py new file mode 100644 index 0000000..2f6a535 --- /dev/null +++ b/src/DjangoBlog-master/djangoblog/logentryadmin.py @@ -0,0 +1,91 @@ +from django.contrib import admin +from django.contrib.admin.models import DELETION +from django.contrib.contenttypes.models import ContentType +from django.urls import reverse, NoReverseMatch +from django.utils.encoding import force_str +from django.utils.html import escape +from django.utils.safestring import mark_safe +from django.utils.translation import gettext_lazy as _ + + +class LogEntryAdmin(admin.ModelAdmin): + list_filter = [ + 'content_type' + ] + + search_fields = [ + 'object_repr', + 'change_message' + ] + + list_display_links = [ + 'action_time', + 'get_change_message', + ] + list_display = [ + 'action_time', + 'user_link', + 'content_type', + 'object_link', + 'get_change_message', + ] + + def has_add_permission(self, request): + return False + + def has_change_permission(self, request, obj=None): + return ( + request.user.is_superuser or + request.user.has_perm('admin.change_logentry') + ) and request.method != 'POST' + + def has_delete_permission(self, request, obj=None): + return False + + def object_link(self, obj): + object_link = escape(obj.object_repr) + content_type = obj.content_type + + if obj.action_flag != DELETION and content_type is not None: + # try returning an actual link instead of object repr string + try: + url = reverse( + 'admin:{}_{}_change'.format(content_type.app_label, + content_type.model), + args=[obj.object_id] + ) + object_link = '{}'.format(url, object_link) + except NoReverseMatch: + pass + return mark_safe(object_link) + + object_link.admin_order_field = 'object_repr' + object_link.short_description = _('object') + + def user_link(self, obj): + content_type = ContentType.objects.get_for_model(type(obj.user)) + user_link = escape(force_str(obj.user)) + try: + # try returning an actual link instead of object repr string + url = reverse( + 'admin:{}_{}_change'.format(content_type.app_label, + content_type.model), + args=[obj.user.pk] + ) + user_link = '{}'.format(url, user_link) + except NoReverseMatch: + pass + return mark_safe(user_link) + + user_link.admin_order_field = 'user' + user_link.short_description = _('user') + + def get_queryset(self, request): + queryset = super(LogEntryAdmin, self).get_queryset(request) + return queryset.prefetch_related('content_type') + + def get_actions(self, request): + actions = super(LogEntryAdmin, self).get_actions(request) + if 'delete_selected' in actions: + del actions['delete_selected'] + return actions diff --git a/src/DjangoBlog-master/djangoblog/plugin_manage/base_plugin.py b/src/DjangoBlog-master/djangoblog/plugin_manage/base_plugin.py new file mode 100644 index 0000000..2b4be5c --- /dev/null +++ b/src/DjangoBlog-master/djangoblog/plugin_manage/base_plugin.py @@ -0,0 +1,41 @@ +import logging + +logger = logging.getLogger(__name__) + + +class BasePlugin: + # 插件元数据 + PLUGIN_NAME = None + PLUGIN_DESCRIPTION = None + PLUGIN_VERSION = None + + def __init__(self): + if not all([self.PLUGIN_NAME, self.PLUGIN_DESCRIPTION, self.PLUGIN_VERSION]): + raise ValueError("Plugin metadata (PLUGIN_NAME, PLUGIN_DESCRIPTION, PLUGIN_VERSION) must be defined.") + self.init_plugin() + self.register_hooks() + + def init_plugin(self): + """ + 插件初始化逻辑 + 子类可以重写此方法来实现特定的初始化操作 + """ + logger.info(f'{self.PLUGIN_NAME} initialized.') + + def register_hooks(self): + """ + 注册插件钩子 + 子类可以重写此方法来注册特定的钩子 + """ + pass + + def get_plugin_info(self): + """ + 获取插件信息 + :return: 包含插件元数据的字典 + """ + return { + 'name': self.PLUGIN_NAME, + 'description': self.PLUGIN_DESCRIPTION, + 'version': self.PLUGIN_VERSION + } diff --git a/src/DjangoBlog-master/djangoblog/plugin_manage/hook_constants.py b/src/DjangoBlog-master/djangoblog/plugin_manage/hook_constants.py new file mode 100644 index 0000000..6685b7c --- /dev/null +++ b/src/DjangoBlog-master/djangoblog/plugin_manage/hook_constants.py @@ -0,0 +1,7 @@ +ARTICLE_DETAIL_LOAD = 'article_detail_load' +ARTICLE_CREATE = 'article_create' +ARTICLE_UPDATE = 'article_update' +ARTICLE_DELETE = 'article_delete' + +ARTICLE_CONTENT_HOOK_NAME = "the_content" + diff --git a/src/DjangoBlog-master/djangoblog/plugin_manage/hooks.py b/src/DjangoBlog-master/djangoblog/plugin_manage/hooks.py new file mode 100644 index 0000000..d712540 --- /dev/null +++ b/src/DjangoBlog-master/djangoblog/plugin_manage/hooks.py @@ -0,0 +1,44 @@ +import logging + +logger = logging.getLogger(__name__) + +_hooks = {} + + +def register(hook_name: str, callback: callable): + """ + 注册一个钩子回调。 + """ + if hook_name not in _hooks: + _hooks[hook_name] = [] + _hooks[hook_name].append(callback) + logger.debug(f"Registered hook '{hook_name}' with callback '{callback.__name__}'") + + +def run_action(hook_name: str, *args, **kwargs): + """ + 执行一个 Action Hook。 + 它会按顺序执行所有注册到该钩子上的回调函数。 + """ + if hook_name in _hooks: + logger.debug(f"Running action hook '{hook_name}'") + for callback in _hooks[hook_name]: + try: + callback(*args, **kwargs) + except Exception as e: + logger.error(f"Error running action hook '{hook_name}' callback '{callback.__name__}': {e}", exc_info=True) + + +def apply_filters(hook_name: str, value, *args, **kwargs): + """ + 执行一个 Filter Hook。 + 它会把 value 依次传递给所有注册的回调函数进行处理。 + """ + if hook_name in _hooks: + logger.debug(f"Applying filter hook '{hook_name}'") + for callback in _hooks[hook_name]: + try: + value = callback(value, *args, **kwargs) + except Exception as e: + logger.error(f"Error applying filter hook '{hook_name}' callback '{callback.__name__}': {e}", exc_info=True) + return value diff --git a/src/DjangoBlog-master/djangoblog/plugin_manage/loader.py b/src/DjangoBlog-master/djangoblog/plugin_manage/loader.py new file mode 100644 index 0000000..12e824b --- /dev/null +++ b/src/DjangoBlog-master/djangoblog/plugin_manage/loader.py @@ -0,0 +1,19 @@ +import os +import logging +from django.conf import settings + +logger = logging.getLogger(__name__) + +def load_plugins(): + """ + Dynamically loads and initializes plugins from the 'plugins' directory. + This function is intended to be called when the Django app registry is ready. + """ + for plugin_name in settings.ACTIVE_PLUGINS: + plugin_path = os.path.join(settings.PLUGINS_DIR, plugin_name) + if os.path.isdir(plugin_path) and os.path.exists(os.path.join(plugin_path, 'plugin.py')): + try: + __import__(f'plugins.{plugin_name}.plugin') + logger.info(f"Successfully loaded plugin: {plugin_name}") + except ImportError as e: + logger.error(f"Failed to import plugin: {plugin_name}", exc_info=e) \ No newline at end of file diff --git a/src/DjangoBlog-master/djangoblog/settings.py b/src/DjangoBlog-master/djangoblog/settings.py new file mode 100644 index 0000000..cd3babd --- /dev/null +++ b/src/DjangoBlog-master/djangoblog/settings.py @@ -0,0 +1,341 @@ +""" +Django settings for djangoblog project. + +Generated by 'django-admin startproject' using Django 1.10.2. + +For more information on this file, see +https://docs.djangoproject.com/en/1.10/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/1.10/ref/settings/ +""" +import os +import sys +from pathlib import Path + +from django.utils.translation import gettext_lazy as _ + + +def env_to_bool(env, default): + str_val = os.environ.get(env) + return default if str_val is None else str_val == 'True' + + +# Build paths inside the project like this: BASE_DIR / 'subdir'. +BASE_DIR = Path(__file__).resolve().parent.parent + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/1.10/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = os.environ.get( + 'DJANGO_SECRET_KEY') or 'n9ceqv38)#&mwuat@(mjb_p%em$e8$qyr#fw9ot!=ba6lijx-6' +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = env_to_bool('DJANGO_DEBUG', True) +# DEBUG = False +TESTING = len(sys.argv) > 1 and sys.argv[1] == 'test' + +# ALLOWED_HOSTS = [] +ALLOWED_HOSTS = ['*', '127.0.0.1', 'example.com'] +# django 4.0新增配置 +CSRF_TRUSTED_ORIGINS = ['http://example.com'] +# Application definition + + +INSTALLED_APPS = [ + # 'django.contrib.admin', + 'django.contrib.admin.apps.SimpleAdminConfig', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', + 'django.contrib.sites', + 'django.contrib.sitemaps', + 'mdeditor', + 'haystack', + 'blog', + 'accounts', + 'comments', + 'oauth', + 'servermanager', + 'owntracks', + 'compressor', + 'djangoblog' +] + +MIDDLEWARE = [ + + 'django.middleware.security.SecurityMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.locale.LocaleMiddleware', + 'django.middleware.gzip.GZipMiddleware', + # 'django.middleware.cache.UpdateCacheMiddleware', + 'django.middleware.common.CommonMiddleware', + # 'django.middleware.cache.FetchFromCacheMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', + 'django.middleware.http.ConditionalGetMiddleware', + 'blog.middleware.OnlineMiddleware' +] + +ROOT_URLCONF = 'djangoblog.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [os.path.join(BASE_DIR, 'templates')], + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': [ + 'django.template.context_processors.debug', + 'django.template.context_processors.request', + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + 'blog.context_processors.seo_processor' + ], + }, + }, +] + +WSGI_APPLICATION = 'djangoblog.wsgi.application' + +# Database +# https://docs.djangoproject.com/en/1.10/ref/settings/#databases + + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.mysql', + 'NAME': 'djangoblog', + 'USER': 'root', + 'PASSWORD': '123456', + 'HOST': '127.0.0.1', + 'PORT': 3306, + } +} + +# Password validation +# https://docs.djangoproject.com/en/1.10/ref/settings/#auth-password-validators + +AUTH_PASSWORD_VALIDATORS = [ + { + 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', + }, +] + +LANGUAGES = ( + ('en', _('English')), + ('zh-hans', _('Simplified Chinese')), + ('zh-hant', _('Traditional Chinese')), +) +LOCALE_PATHS = ( + os.path.join(BASE_DIR, 'locale'), +) + +LANGUAGE_CODE = 'zh-hans' + +TIME_ZONE = 'Asia/Shanghai' + +USE_I18N = True + +USE_L10N = True + +USE_TZ = False + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/1.10/howto/static-files/ + + +HAYSTACK_CONNECTIONS = { + 'default': { + 'ENGINE': 'djangoblog.whoosh_cn_backend.WhooshEngine', + 'PATH': os.path.join(os.path.dirname(__file__), 'whoosh_index'), + }, +} +# Automatically update searching index +HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor' +# Allow user login with username and password +AUTHENTICATION_BACKENDS = [ + 'accounts.user_login_backend.EmailOrUsernameModelBackend'] + +STATIC_ROOT = os.path.join(BASE_DIR, 'collectedstatic') + +STATIC_URL = '/static/' +STATICFILES = os.path.join(BASE_DIR, 'static') + +AUTH_USER_MODEL = 'accounts.BlogUser' +LOGIN_URL = '/login/' + +TIME_FORMAT = '%Y-%m-%d %H:%M:%S' +DATE_TIME_FORMAT = '%Y-%m-%d' + +# bootstrap color styles +BOOTSTRAP_COLOR_TYPES = [ + 'default', 'primary', 'success', 'info', 'warning', 'danger' +] + +# paginate +PAGINATE_BY = 10 +# http cache timeout +CACHE_CONTROL_MAX_AGE = 2592000 +# cache setting +CACHES = { + 'default': { + 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', + 'TIMEOUT': 10800, + 'LOCATION': 'unique-snowflake', + } +} +# 使用redis作为缓存 +if os.environ.get("DJANGO_REDIS_URL"): + CACHES = { + 'default': { + 'BACKEND': 'django.core.cache.backends.redis.RedisCache', + 'LOCATION': f'redis://{os.environ.get("DJANGO_REDIS_URL")}', + } + } + +SITE_ID = 1 +BAIDU_NOTIFY_URL = os.environ.get('DJANGO_BAIDU_NOTIFY_URL') \ + or 'http://data.zz.baidu.com/urls?site=https://www.lylinux.net&token=1uAOGrMsUm5syDGn' + +# Email: +EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' +EMAIL_USE_TLS = env_to_bool('DJANGO_EMAIL_TLS', False) +EMAIL_USE_SSL = env_to_bool('DJANGO_EMAIL_SSL', True) +EMAIL_HOST = os.environ.get('DJANGO_EMAIL_HOST') or 'smtp.mxhichina.com' +EMAIL_PORT = int(os.environ.get('DJANGO_EMAIL_PORT') or 465) +EMAIL_HOST_USER = os.environ.get('DJANGO_EMAIL_USER') +EMAIL_HOST_PASSWORD = os.environ.get('DJANGO_EMAIL_PASSWORD') +DEFAULT_FROM_EMAIL = EMAIL_HOST_USER +SERVER_EMAIL = EMAIL_HOST_USER +# Setting debug=false did NOT handle except email notifications +ADMINS = [('admin', os.environ.get('DJANGO_ADMIN_EMAIL') or 'admin@admin.com')] +# WX ADMIN password(Two times md5) +WXADMIN = os.environ.get( + 'DJANGO_WXADMIN_PASSWORD') or '995F03AC401D6CABABAEF756FC4D43C7' + +LOG_PATH = os.path.join(BASE_DIR, 'logs') +if not os.path.exists(LOG_PATH): + os.makedirs(LOG_PATH, exist_ok=True) + +LOGGING = { + 'version': 1, + 'disable_existing_loggers': False, + 'root': { + 'level': 'INFO', + 'handlers': ['console', 'log_file'], + }, + 'formatters': { + 'verbose': { + 'format': '[%(asctime)s] %(levelname)s [%(name)s.%(funcName)s:%(lineno)d %(module)s] %(message)s', + } + }, + 'filters': { + 'require_debug_false': { + '()': 'django.utils.log.RequireDebugFalse', + }, + 'require_debug_true': { + '()': 'django.utils.log.RequireDebugTrue', + }, + }, + 'handlers': { + 'log_file': { + 'level': 'INFO', + 'class': 'logging.handlers.TimedRotatingFileHandler', + 'filename': os.path.join(LOG_PATH, 'djangoblog.log'), + 'when': 'D', + 'formatter': 'verbose', + 'interval': 1, + 'delay': True, + 'backupCount': 5, + 'encoding': 'utf-8' + }, + 'console': { + 'level': 'DEBUG', + 'filters': ['require_debug_true'], + 'class': 'logging.StreamHandler', + 'formatter': 'verbose' + }, + 'null': { + 'class': 'logging.NullHandler', + }, + 'mail_admins': { + 'level': 'ERROR', + 'filters': ['require_debug_false'], + 'class': 'django.utils.log.AdminEmailHandler' + } + }, + 'loggers': { + 'djangoblog': { + 'handlers': ['log_file', 'console'], + 'level': 'INFO', + 'propagate': True, + }, + 'django.request': { + 'handlers': ['mail_admins'], + 'level': 'ERROR', + 'propagate': False, + } + } +} + +STATICFILES_FINDERS = ( + 'django.contrib.staticfiles.finders.FileSystemFinder', + 'django.contrib.staticfiles.finders.AppDirectoriesFinder', + # other + 'compressor.finders.CompressorFinder', +) +COMPRESS_ENABLED = True +# COMPRESS_OFFLINE = True + + +COMPRESS_CSS_FILTERS = [ + # creates absolute urls from relative ones + 'compressor.filters.css_default.CssAbsoluteFilter', + # css minimizer + 'compressor.filters.cssmin.CSSMinFilter' +] +COMPRESS_JS_FILTERS = [ + 'compressor.filters.jsmin.JSMinFilter' +] + +MEDIA_ROOT = os.path.join(BASE_DIR, 'uploads') +MEDIA_URL = '/media/' +X_FRAME_OPTIONS = 'SAMEORIGIN' + +DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' + +if os.environ.get('DJANGO_ELASTICSEARCH_HOST'): + ELASTICSEARCH_DSL = { + 'default': { + 'hosts': os.environ.get('DJANGO_ELASTICSEARCH_HOST') + }, + } + HAYSTACK_CONNECTIONS = { + 'default': { + 'ENGINE': 'djangoblog.elasticsearch_backend.ElasticSearchEngine', + }, + } + +# Plugin System +PLUGINS_DIR = BASE_DIR / 'plugins' +ACTIVE_PLUGINS = [ + 'article_copyright', + 'reading_time', + 'external_links', + 'view_count', + 'seo_optimizer' +] \ No newline at end of file diff --git a/src/DjangoBlog-master/djangoblog/sitemap.py b/src/DjangoBlog-master/djangoblog/sitemap.py new file mode 100644 index 0000000..8b7d446 --- /dev/null +++ b/src/DjangoBlog-master/djangoblog/sitemap.py @@ -0,0 +1,59 @@ +from django.contrib.sitemaps import Sitemap +from django.urls import reverse + +from blog.models import Article, Category, Tag + + +class StaticViewSitemap(Sitemap): + priority = 0.5 + changefreq = 'daily' + + def items(self): + return ['blog:index', ] + + def location(self, item): + return reverse(item) + + +class ArticleSiteMap(Sitemap): + changefreq = "monthly" + priority = "0.6" + + def items(self): + return Article.objects.filter(status='p') + + def lastmod(self, obj): + return obj.last_modify_time + + +class CategorySiteMap(Sitemap): + changefreq = "Weekly" + priority = "0.6" + + def items(self): + return Category.objects.all() + + def lastmod(self, obj): + return obj.last_modify_time + + +class TagSiteMap(Sitemap): + changefreq = "Weekly" + priority = "0.3" + + def items(self): + return Tag.objects.all() + + def lastmod(self, obj): + return obj.last_modify_time + + +class UserSiteMap(Sitemap): + changefreq = "Weekly" + priority = "0.3" + + def items(self): + return list(set(map(lambda x: x.author, Article.objects.all()))) + + def lastmod(self, obj): + return obj.date_joined diff --git a/src/DjangoBlog-master/djangoblog/spider_notify.py b/src/DjangoBlog-master/djangoblog/spider_notify.py new file mode 100644 index 0000000..7b909e9 --- /dev/null +++ b/src/DjangoBlog-master/djangoblog/spider_notify.py @@ -0,0 +1,21 @@ +import logging + +import requests +from django.conf import settings + +logger = logging.getLogger(__name__) + + +class SpiderNotify(): + @staticmethod + def baidu_notify(urls): + try: + data = '\n'.join(urls) + result = requests.post(settings.BAIDU_NOTIFY_URL, data=data) + logger.info(result.text) + except Exception as e: + logger.error(e) + + @staticmethod + def notify(url): + SpiderNotify.baidu_notify(url) diff --git a/src/DjangoBlog-master/djangoblog/tests.py b/src/DjangoBlog-master/djangoblog/tests.py new file mode 100644 index 0000000..01237d9 --- /dev/null +++ b/src/DjangoBlog-master/djangoblog/tests.py @@ -0,0 +1,32 @@ +from django.test import TestCase + +from djangoblog.utils import * + + +class DjangoBlogTest(TestCase): + def setUp(self): + pass + + def test_utils(self): + md5 = get_sha256('test') + self.assertIsNotNone(md5) + c = CommonMarkdown.get_markdown(''' + # Title1 + + ```python + import os + ``` + + [url](https://www.lylinux.net/) + + [ddd](http://www.baidu.com) + + + ''') + self.assertIsNotNone(c) + d = { + 'd': 'key1', + 'd2': 'key2' + } + data = parse_dict_to_url(d) + self.assertIsNotNone(data) diff --git a/src/DjangoBlog-master/djangoblog/urls.py b/src/DjangoBlog-master/djangoblog/urls.py new file mode 100644 index 0000000..4aae58a --- /dev/null +++ b/src/DjangoBlog-master/djangoblog/urls.py @@ -0,0 +1,64 @@ +"""djangoblog URL Configuration + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/1.10/topics/http/urls/ +Examples: +Function views + 1. Add an import: from my_app import views + 2. Add a URL to urlpatterns: url(r'^$', views.home, name='home') +Class-based views + 1. Add an import: from other_app.views import Home + 2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home') +Including another URLconf + 1. Import the include() function: from django.conf.urls import url, include + 2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls')) +""" +from django.conf import settings +from django.conf.urls.i18n import i18n_patterns +from django.conf.urls.static import static +from django.contrib.sitemaps.views import sitemap +from django.urls import path, include +from django.urls import re_path +from haystack.views import search_view_factory + +from blog.views import EsSearchView +from djangoblog.admin_site import admin_site +from djangoblog.elasticsearch_backend import ElasticSearchModelSearchForm +from djangoblog.feeds import DjangoBlogFeed +from djangoblog.sitemap import ArticleSiteMap, CategorySiteMap, StaticViewSitemap, TagSiteMap, UserSiteMap + +sitemaps = { + + 'blog': ArticleSiteMap, + 'Category': CategorySiteMap, + 'Tag': TagSiteMap, + 'User': UserSiteMap, + 'static': StaticViewSitemap +} + +handler404 = 'blog.views.page_not_found_view' +handler500 = 'blog.views.server_error_view' +handle403 = 'blog.views.permission_denied_view' + +urlpatterns = [ + path('i18n/', include('django.conf.urls.i18n')), +] +urlpatterns += i18n_patterns( + re_path(r'^admin/', admin_site.urls), + re_path(r'', include('blog.urls', namespace='blog')), + re_path(r'mdeditor/', include('mdeditor.urls')), + re_path(r'', include('comments.urls', namespace='comment')), + re_path(r'', include('accounts.urls', namespace='account')), + re_path(r'', include('oauth.urls', namespace='oauth')), + re_path(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps}, + name='django.contrib.sitemaps.views.sitemap'), + re_path(r'^feed/$', DjangoBlogFeed()), + re_path(r'^rss/$', DjangoBlogFeed()), + re_path('^search', search_view_factory(view_class=EsSearchView, form_class=ElasticSearchModelSearchForm), + name='search'), + re_path(r'', include('servermanager.urls', namespace='servermanager')), + re_path(r'', include('owntracks.urls', namespace='owntracks')) + , prefix_default_language=False) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) +if settings.DEBUG: + urlpatterns += static(settings.MEDIA_URL, + document_root=settings.MEDIA_ROOT) diff --git a/src/DjangoBlog-master/djangoblog/utils.py b/src/DjangoBlog-master/djangoblog/utils.py new file mode 100644 index 0000000..57f63dc --- /dev/null +++ b/src/DjangoBlog-master/djangoblog/utils.py @@ -0,0 +1,232 @@ +#!/usr/bin/env python +# encoding: utf-8 + + +import logging +import os +import random +import string +import uuid +from hashlib import sha256 + +import bleach +import markdown +import requests +from django.conf import settings +from django.contrib.sites.models import Site +from django.core.cache import cache +from django.templatetags.static import static + +logger = logging.getLogger(__name__) + + +def get_max_articleid_commentid(): + from blog.models import Article + from comments.models import Comment + return (Article.objects.latest().pk, Comment.objects.latest().pk) + + +def get_sha256(str): + m = sha256(str.encode('utf-8')) + return m.hexdigest() + + +def cache_decorator(expiration=3 * 60): + def wrapper(func): + def news(*args, **kwargs): + try: + view = args[0] + key = view.get_cache_key() + except: + key = None + if not key: + unique_str = repr((func, args, kwargs)) + + m = sha256(unique_str.encode('utf-8')) + key = m.hexdigest() + value = cache.get(key) + if value is not None: + # logger.info('cache_decorator get cache:%s key:%s' % (func.__name__, key)) + if str(value) == '__default_cache_value__': + return None + else: + return value + else: + logger.debug( + 'cache_decorator set cache:%s key:%s' % + (func.__name__, key)) + value = func(*args, **kwargs) + if value is None: + cache.set(key, '__default_cache_value__', expiration) + else: + cache.set(key, value, expiration) + return value + + return news + + return wrapper + + +def expire_view_cache(path, servername, serverport, key_prefix=None): + ''' + 刷新视图缓存 + :param path:url路径 + :param servername:host + :param serverport:端口 + :param key_prefix:前缀 + :return:是否成功 + ''' + from django.http import HttpRequest + from django.utils.cache import get_cache_key + + request = HttpRequest() + request.META = {'SERVER_NAME': servername, 'SERVER_PORT': serverport} + request.path = path + + key = get_cache_key(request, key_prefix=key_prefix, cache=cache) + if key: + logger.info('expire_view_cache:get key:{path}'.format(path=path)) + if cache.get(key): + cache.delete(key) + return True + return False + + +@cache_decorator() +def get_current_site(): + site = Site.objects.get_current() + return site + + +class CommonMarkdown: + @staticmethod + def _convert_markdown(value): + md = markdown.Markdown( + extensions=[ + 'extra', + 'codehilite', + 'toc', + 'tables', + ] + ) + body = md.convert(value) + toc = md.toc + return body, toc + + @staticmethod + def get_markdown_with_toc(value): + body, toc = CommonMarkdown._convert_markdown(value) + return body, toc + + @staticmethod + def get_markdown(value): + body, toc = CommonMarkdown._convert_markdown(value) + return body + + +def send_email(emailto, title, content): + from djangoblog.blog_signals import send_email_signal + send_email_signal.send( + send_email.__class__, + emailto=emailto, + title=title, + content=content) + + +def generate_code() -> str: + """生成随机数验证码""" + return ''.join(random.sample(string.digits, 6)) + + +def parse_dict_to_url(dict): + from urllib.parse import quote + url = '&'.join(['{}={}'.format(quote(k, safe='/'), quote(v, safe='/')) + for k, v in dict.items()]) + return url + + +def get_blog_setting(): + value = cache.get('get_blog_setting') + if value: + return value + else: + from blog.models import BlogSettings + if not BlogSettings.objects.count(): + setting = BlogSettings() + setting.site_name = 'djangoblog' + setting.site_description = '基于Django的博客系统' + setting.site_seo_description = '基于Django的博客系统' + setting.site_keywords = 'Django,Python' + setting.article_sub_length = 300 + setting.sidebar_article_count = 10 + setting.sidebar_comment_count = 5 + setting.show_google_adsense = False + setting.open_site_comment = True + setting.analytics_code = '' + setting.beian_code = '' + setting.show_gongan_code = False + setting.comment_need_review = False + setting.save() + value = BlogSettings.objects.first() + logger.info('set cache get_blog_setting') + cache.set('get_blog_setting', value) + return value + + +def save_user_avatar(url): + ''' + 保存用户头像 + :param url:头像url + :return: 本地路径 + ''' + logger.info(url) + + try: + basedir = os.path.join(settings.STATICFILES, 'avatar') + rsp = requests.get(url, timeout=2) + if rsp.status_code == 200: + if not os.path.exists(basedir): + os.makedirs(basedir) + + image_extensions = ['.jpg', '.png', 'jpeg', '.gif'] + isimage = len([i for i in image_extensions if url.endswith(i)]) > 0 + ext = os.path.splitext(url)[1] if isimage else '.jpg' + save_filename = str(uuid.uuid4().hex) + ext + logger.info('保存用户头像:' + basedir + save_filename) + with open(os.path.join(basedir, save_filename), 'wb+') as file: + file.write(rsp.content) + return static('avatar/' + save_filename) + except Exception as e: + logger.error(e) + return static('blog/img/avatar.png') + + +def delete_sidebar_cache(): + from blog.models import LinkShowType + keys = ["sidebar" + x for x in LinkShowType.values] + for k in keys: + logger.info('delete sidebar key:' + k) + cache.delete(k) + + +def delete_view_cache(prefix, keys): + from django.core.cache.utils import make_template_fragment_key + key = make_template_fragment_key(prefix, keys) + cache.delete(key) + + +def get_resource_url(): + if settings.STATIC_URL: + return settings.STATIC_URL + else: + site = get_current_site() + return 'http://' + site.domain + '/static/' + + +ALLOWED_TAGS = ['a', 'abbr', 'acronym', 'b', 'blockquote', 'code', 'em', 'i', 'li', 'ol', 'pre', 'strong', 'ul', 'h1', + 'h2', 'p'] +ALLOWED_ATTRIBUTES = {'a': ['href', 'title'], 'abbr': ['title'], 'acronym': ['title']} + + +def sanitize_html(html): + return bleach.clean(html, tags=ALLOWED_TAGS, attributes=ALLOWED_ATTRIBUTES) diff --git a/src/DjangoBlog-master/djangoblog/whoosh_cn_backend.py b/src/DjangoBlog-master/djangoblog/whoosh_cn_backend.py new file mode 100644 index 0000000..04e3f7f --- /dev/null +++ b/src/DjangoBlog-master/djangoblog/whoosh_cn_backend.py @@ -0,0 +1,1044 @@ +# encoding: utf-8 + +from __future__ import absolute_import, division, print_function, unicode_literals + +import json +import os +import re +import shutil +import threading +import warnings + +import six +from django.conf import settings +from django.core.exceptions import ImproperlyConfigured +from datetime import datetime +from django.utils.encoding import force_str +from haystack.backends import BaseEngine, BaseSearchBackend, BaseSearchQuery, EmptyResults, log_query +from haystack.constants import DJANGO_CT, DJANGO_ID, ID +from haystack.exceptions import MissingDependency, SearchBackendError, SkipDocument +from haystack.inputs import Clean, Exact, PythonData, Raw +from haystack.models import SearchResult +from haystack.utils import get_identifier, get_model_ct +from haystack.utils import log as logging +from haystack.utils.app_loading import haystack_get_model +from jieba.analyse import ChineseAnalyzer +from whoosh import index +from whoosh.analysis import StemmingAnalyzer +from whoosh.fields import BOOLEAN, DATETIME, IDLIST, KEYWORD, NGRAM, NGRAMWORDS, NUMERIC, Schema, TEXT +from whoosh.fields import ID as WHOOSH_ID +from whoosh.filedb.filestore import FileStorage, RamStorage +from whoosh.highlight import ContextFragmenter, HtmlFormatter +from whoosh.highlight import highlight as whoosh_highlight +from whoosh.qparser import QueryParser +from whoosh.searching import ResultsPage +from whoosh.writing import AsyncWriter + +try: + import whoosh +except ImportError: + raise MissingDependency( + "The 'whoosh' backend requires the installation of 'Whoosh'. Please refer to the documentation.") + +# Handle minimum requirement. +if not hasattr(whoosh, '__version__') or whoosh.__version__ < (2, 5, 0): + raise MissingDependency( + "The 'whoosh' backend requires version 2.5.0 or greater.") + +# Bubble up the correct error. + +DATETIME_REGEX = re.compile( + '^(?P\d{4})-(?P\d{2})-(?P\d{2})T(?P\d{2}):(?P\d{2}):(?P\d{2})(\.\d{3,6}Z?)?$') +LOCALS = threading.local() +LOCALS.RAM_STORE = None + + +class WhooshHtmlFormatter(HtmlFormatter): + """ + This is a HtmlFormatter simpler than the whoosh.HtmlFormatter. + We use it to have consistent results across backends. Specifically, + Solr, Xapian and Elasticsearch are using this formatting. + """ + template = '<%(tag)s>%(t)s' + + +class WhooshSearchBackend(BaseSearchBackend): + # Word reserved by Whoosh for special use. + RESERVED_WORDS = ( + 'AND', + 'NOT', + 'OR', + 'TO', + ) + + # Characters reserved by Whoosh for special use. + # The '\\' must come first, so as not to overwrite the other slash + # replacements. + RESERVED_CHARACTERS = ( + '\\', '+', '-', '&&', '||', '!', '(', ')', '{', '}', + '[', ']', '^', '"', '~', '*', '?', ':', '.', + ) + + def __init__(self, connection_alias, **connection_options): + super( + WhooshSearchBackend, + self).__init__( + connection_alias, + **connection_options) + self.setup_complete = False + self.use_file_storage = True + self.post_limit = getattr( + connection_options, + 'POST_LIMIT', + 128 * 1024 * 1024) + self.path = connection_options.get('PATH') + + if connection_options.get('STORAGE', 'file') != 'file': + self.use_file_storage = False + + if self.use_file_storage and not self.path: + raise ImproperlyConfigured( + "You must specify a 'PATH' in your settings for connection '%s'." % + connection_alias) + + self.log = logging.getLogger('haystack') + + def setup(self): + """ + Defers loading until needed. + """ + from haystack import connections + new_index = False + + # Make sure the index is there. + if self.use_file_storage and not os.path.exists(self.path): + os.makedirs(self.path) + new_index = True + + if self.use_file_storage and not os.access(self.path, os.W_OK): + raise IOError( + "The path to your Whoosh index '%s' is not writable for the current user/group." % + self.path) + + if self.use_file_storage: + self.storage = FileStorage(self.path) + else: + global LOCALS + + if getattr(LOCALS, 'RAM_STORE', None) is None: + LOCALS.RAM_STORE = RamStorage() + + self.storage = LOCALS.RAM_STORE + + self.content_field_name, self.schema = self.build_schema( + connections[self.connection_alias].get_unified_index().all_searchfields()) + self.parser = QueryParser(self.content_field_name, schema=self.schema) + + if new_index is True: + self.index = self.storage.create_index(self.schema) + else: + try: + self.index = self.storage.open_index(schema=self.schema) + except index.EmptyIndexError: + self.index = self.storage.create_index(self.schema) + + self.setup_complete = True + + def build_schema(self, fields): + schema_fields = { + ID: WHOOSH_ID(stored=True, unique=True), + DJANGO_CT: WHOOSH_ID(stored=True), + DJANGO_ID: WHOOSH_ID(stored=True), + } + # Grab the number of keys that are hard-coded into Haystack. + # We'll use this to (possibly) fail slightly more gracefully later. + initial_key_count = len(schema_fields) + content_field_name = '' + + for field_name, field_class in fields.items(): + if field_class.is_multivalued: + if field_class.indexed is False: + schema_fields[field_class.index_fieldname] = IDLIST( + stored=True, field_boost=field_class.boost) + else: + schema_fields[field_class.index_fieldname] = KEYWORD( + stored=True, commas=True, scorable=True, field_boost=field_class.boost) + elif field_class.field_type in ['date', 'datetime']: + schema_fields[field_class.index_fieldname] = DATETIME( + stored=field_class.stored, sortable=True) + elif field_class.field_type == 'integer': + schema_fields[field_class.index_fieldname] = NUMERIC( + stored=field_class.stored, numtype=int, field_boost=field_class.boost) + elif field_class.field_type == 'float': + schema_fields[field_class.index_fieldname] = NUMERIC( + stored=field_class.stored, numtype=float, field_boost=field_class.boost) + elif field_class.field_type == 'boolean': + # Field boost isn't supported on BOOLEAN as of 1.8.2. + schema_fields[field_class.index_fieldname] = BOOLEAN( + stored=field_class.stored) + elif field_class.field_type == 'ngram': + schema_fields[field_class.index_fieldname] = NGRAM( + minsize=3, maxsize=15, stored=field_class.stored, field_boost=field_class.boost) + elif field_class.field_type == 'edge_ngram': + schema_fields[field_class.index_fieldname] = NGRAMWORDS(minsize=2, maxsize=15, at='start', + stored=field_class.stored, + field_boost=field_class.boost) + else: + # schema_fields[field_class.index_fieldname] = TEXT(stored=True, analyzer=StemmingAnalyzer(), field_boost=field_class.boost, sortable=True) + schema_fields[field_class.index_fieldname] = TEXT( + stored=True, analyzer=ChineseAnalyzer(), field_boost=field_class.boost, sortable=True) + if field_class.document is True: + content_field_name = field_class.index_fieldname + schema_fields[field_class.index_fieldname].spelling = True + + # Fail more gracefully than relying on the backend to die if no fields + # are found. + if len(schema_fields) <= initial_key_count: + raise SearchBackendError( + "No fields were found in any search_indexes. Please correct this before attempting to search.") + + return (content_field_name, Schema(**schema_fields)) + + def update(self, index, iterable, commit=True): + if not self.setup_complete: + self.setup() + + self.index = self.index.refresh() + writer = AsyncWriter(self.index) + + for obj in iterable: + try: + doc = index.full_prepare(obj) + except SkipDocument: + self.log.debug(u"Indexing for object `%s` skipped", obj) + else: + # Really make sure it's unicode, because Whoosh won't have it any + # other way. + for key in doc: + doc[key] = self._from_python(doc[key]) + + # Document boosts aren't supported in Whoosh 2.5.0+. + if 'boost' in doc: + del doc['boost'] + + try: + writer.update_document(**doc) + except Exception as e: + if not self.silently_fail: + raise + + # We'll log the object identifier but won't include the actual object + # to avoid the possibility of that generating encoding errors while + # processing the log message: + self.log.error( + u"%s while preparing object for update" % + e.__class__.__name__, + exc_info=True, + extra={ + "data": { + "index": index, + "object": get_identifier(obj)}}) + + if len(iterable) > 0: + # For now, commit no matter what, as we run into locking issues + # otherwise. + writer.commit() + + def remove(self, obj_or_string, commit=True): + if not self.setup_complete: + self.setup() + + self.index = self.index.refresh() + whoosh_id = get_identifier(obj_or_string) + + try: + self.index.delete_by_query( + q=self.parser.parse( + u'%s:"%s"' % + (ID, whoosh_id))) + except Exception as e: + if not self.silently_fail: + raise + + self.log.error( + "Failed to remove document '%s' from Whoosh: %s", + whoosh_id, + e, + exc_info=True) + + def clear(self, models=None, commit=True): + if not self.setup_complete: + self.setup() + + self.index = self.index.refresh() + + if models is not None: + assert isinstance(models, (list, tuple)) + + try: + if models is None: + self.delete_index() + else: + models_to_delete = [] + + for model in models: + models_to_delete.append( + u"%s:%s" % + (DJANGO_CT, get_model_ct(model))) + + self.index.delete_by_query( + q=self.parser.parse( + u" OR ".join(models_to_delete))) + except Exception as e: + if not self.silently_fail: + raise + + if models is not None: + self.log.error( + "Failed to clear Whoosh index of models '%s': %s", + ','.join(models_to_delete), + e, + exc_info=True) + else: + self.log.error( + "Failed to clear Whoosh index: %s", e, exc_info=True) + + def delete_index(self): + # Per the Whoosh mailing list, if wiping out everything from the index, + # it's much more efficient to simply delete the index files. + if self.use_file_storage and os.path.exists(self.path): + shutil.rmtree(self.path) + elif not self.use_file_storage: + self.storage.clean() + + # Recreate everything. + self.setup() + + def optimize(self): + if not self.setup_complete: + self.setup() + + self.index = self.index.refresh() + self.index.optimize() + + def calculate_page(self, start_offset=0, end_offset=None): + # Prevent against Whoosh throwing an error. Requires an end_offset + # greater than 0. + if end_offset is not None and end_offset <= 0: + end_offset = 1 + + # Determine the page. + page_num = 0 + + if end_offset is None: + end_offset = 1000000 + + if start_offset is None: + start_offset = 0 + + page_length = end_offset - start_offset + + if page_length and page_length > 0: + page_num = int(start_offset / page_length) + + # Increment because Whoosh uses 1-based page numbers. + page_num += 1 + return page_num, page_length + + @log_query + def search( + self, + query_string, + sort_by=None, + start_offset=0, + end_offset=None, + fields='', + highlight=False, + facets=None, + date_facets=None, + query_facets=None, + narrow_queries=None, + spelling_query=None, + within=None, + dwithin=None, + distance_point=None, + models=None, + limit_to_registered_models=None, + result_class=None, + **kwargs): + if not self.setup_complete: + self.setup() + + # A zero length query should return no results. + if len(query_string) == 0: + return { + 'results': [], + 'hits': 0, + } + + query_string = force_str(query_string) + + # A one-character query (non-wildcard) gets nabbed by a stopwords + # filter and should yield zero results. + if len(query_string) <= 1 and query_string != u'*': + return { + 'results': [], + 'hits': 0, + } + + reverse = False + + if sort_by is not None: + # Determine if we need to reverse the results and if Whoosh can + # handle what it's being asked to sort by. Reversing is an + # all-or-nothing action, unfortunately. + sort_by_list = [] + reverse_counter = 0 + + for order_by in sort_by: + if order_by.startswith('-'): + reverse_counter += 1 + + if reverse_counter and reverse_counter != len(sort_by): + raise SearchBackendError("Whoosh requires all order_by fields" + " to use the same sort direction") + + for order_by in sort_by: + if order_by.startswith('-'): + sort_by_list.append(order_by[1:]) + + if len(sort_by_list) == 1: + reverse = True + else: + sort_by_list.append(order_by) + + if len(sort_by_list) == 1: + reverse = False + + sort_by = sort_by_list[0] + + if facets is not None: + warnings.warn( + "Whoosh does not handle faceting.", + Warning, + stacklevel=2) + + if date_facets is not None: + warnings.warn( + "Whoosh does not handle date faceting.", + Warning, + stacklevel=2) + + if query_facets is not None: + warnings.warn( + "Whoosh does not handle query faceting.", + Warning, + stacklevel=2) + + narrowed_results = None + self.index = self.index.refresh() + + if limit_to_registered_models is None: + limit_to_registered_models = getattr( + settings, 'HAYSTACK_LIMIT_TO_REGISTERED_MODELS', True) + + if models and len(models): + model_choices = sorted(get_model_ct(model) for model in models) + elif limit_to_registered_models: + # Using narrow queries, limit the results to only models handled + # with the current routers. + model_choices = self.build_models_list() + else: + model_choices = [] + + if len(model_choices) > 0: + if narrow_queries is None: + narrow_queries = set() + + narrow_queries.add(' OR '.join( + ['%s:%s' % (DJANGO_CT, rm) for rm in model_choices])) + + narrow_searcher = None + + if narrow_queries is not None: + # Potentially expensive? I don't see another way to do it in + # Whoosh... + narrow_searcher = self.index.searcher() + + for nq in narrow_queries: + recent_narrowed_results = narrow_searcher.search( + self.parser.parse(force_str(nq)), limit=None) + + if len(recent_narrowed_results) <= 0: + return { + 'results': [], + 'hits': 0, + } + + if narrowed_results: + narrowed_results.filter(recent_narrowed_results) + else: + narrowed_results = recent_narrowed_results + + self.index = self.index.refresh() + + if self.index.doc_count(): + searcher = self.index.searcher() + parsed_query = self.parser.parse(query_string) + + # In the event of an invalid/stopworded query, recover gracefully. + if parsed_query is None: + return { + 'results': [], + 'hits': 0, + } + + page_num, page_length = self.calculate_page( + start_offset, end_offset) + + search_kwargs = { + 'pagelen': page_length, + 'sortedby': sort_by, + 'reverse': reverse, + } + + # Handle the case where the results have been narrowed. + if narrowed_results is not None: + search_kwargs['filter'] = narrowed_results + + try: + raw_page = searcher.search_page( + parsed_query, + page_num, + **search_kwargs + ) + except ValueError: + if not self.silently_fail: + raise + + return { + 'results': [], + 'hits': 0, + 'spelling_suggestion': None, + } + + # Because as of Whoosh 2.5.1, it will return the wrong page of + # results if you request something too high. :( + if raw_page.pagenum < page_num: + return { + 'results': [], + 'hits': 0, + 'spelling_suggestion': None, + } + + results = self._process_results( + raw_page, + highlight=highlight, + query_string=query_string, + spelling_query=spelling_query, + result_class=result_class) + searcher.close() + + if hasattr(narrow_searcher, 'close'): + narrow_searcher.close() + + return results + else: + if self.include_spelling: + if spelling_query: + spelling_suggestion = self.create_spelling_suggestion( + spelling_query) + else: + spelling_suggestion = self.create_spelling_suggestion( + query_string) + else: + spelling_suggestion = None + + return { + 'results': [], + 'hits': 0, + 'spelling_suggestion': spelling_suggestion, + } + + def more_like_this( + self, + model_instance, + additional_query_string=None, + start_offset=0, + end_offset=None, + models=None, + limit_to_registered_models=None, + result_class=None, + **kwargs): + if not self.setup_complete: + self.setup() + + # Deferred models will have a different class ("RealClass_Deferred_fieldname") + # which won't be in our registry: + model_klass = model_instance._meta.concrete_model + + field_name = self.content_field_name + narrow_queries = set() + narrowed_results = None + self.index = self.index.refresh() + + if limit_to_registered_models is None: + limit_to_registered_models = getattr( + settings, 'HAYSTACK_LIMIT_TO_REGISTERED_MODELS', True) + + if models and len(models): + model_choices = sorted(get_model_ct(model) for model in models) + elif limit_to_registered_models: + # Using narrow queries, limit the results to only models handled + # with the current routers. + model_choices = self.build_models_list() + else: + model_choices = [] + + if len(model_choices) > 0: + if narrow_queries is None: + narrow_queries = set() + + narrow_queries.add(' OR '.join( + ['%s:%s' % (DJANGO_CT, rm) for rm in model_choices])) + + if additional_query_string and additional_query_string != '*': + narrow_queries.add(additional_query_string) + + narrow_searcher = None + + if narrow_queries is not None: + # Potentially expensive? I don't see another way to do it in + # Whoosh... + narrow_searcher = self.index.searcher() + + for nq in narrow_queries: + recent_narrowed_results = narrow_searcher.search( + self.parser.parse(force_str(nq)), limit=None) + + if len(recent_narrowed_results) <= 0: + return { + 'results': [], + 'hits': 0, + } + + if narrowed_results: + narrowed_results.filter(recent_narrowed_results) + else: + narrowed_results = recent_narrowed_results + + page_num, page_length = self.calculate_page(start_offset, end_offset) + + self.index = self.index.refresh() + raw_results = EmptyResults() + + if self.index.doc_count(): + query = "%s:%s" % (ID, get_identifier(model_instance)) + searcher = self.index.searcher() + parsed_query = self.parser.parse(query) + results = searcher.search(parsed_query) + + if len(results): + raw_results = results[0].more_like_this( + field_name, top=end_offset) + + # Handle the case where the results have been narrowed. + if narrowed_results is not None and hasattr(raw_results, 'filter'): + raw_results.filter(narrowed_results) + + try: + raw_page = ResultsPage(raw_results, page_num, page_length) + except ValueError: + if not self.silently_fail: + raise + + return { + 'results': [], + 'hits': 0, + 'spelling_suggestion': None, + } + + # Because as of Whoosh 2.5.1, it will return the wrong page of + # results if you request something too high. :( + if raw_page.pagenum < page_num: + return { + 'results': [], + 'hits': 0, + 'spelling_suggestion': None, + } + + results = self._process_results(raw_page, result_class=result_class) + searcher.close() + + if hasattr(narrow_searcher, 'close'): + narrow_searcher.close() + + return results + + def _process_results( + self, + raw_page, + highlight=False, + query_string='', + spelling_query=None, + result_class=None): + from haystack import connections + results = [] + + # It's important to grab the hits first before slicing. Otherwise, this + # can cause pagination failures. + hits = len(raw_page) + + if result_class is None: + result_class = SearchResult + + facets = {} + spelling_suggestion = None + unified_index = connections[self.connection_alias].get_unified_index() + indexed_models = unified_index.get_indexed_models() + + for doc_offset, raw_result in enumerate(raw_page): + score = raw_page.score(doc_offset) or 0 + app_label, model_name = raw_result[DJANGO_CT].split('.') + additional_fields = {} + model = haystack_get_model(app_label, model_name) + + if model and model in indexed_models: + for key, value in raw_result.items(): + index = unified_index.get_index(model) + string_key = str(key) + + if string_key in index.fields and hasattr( + index.fields[string_key], 'convert'): + # Special-cased due to the nature of KEYWORD fields. + if index.fields[string_key].is_multivalued: + if value is None or len(value) == 0: + additional_fields[string_key] = [] + else: + additional_fields[string_key] = value.split( + ',') + else: + additional_fields[string_key] = index.fields[string_key].convert( + value) + else: + additional_fields[string_key] = self._to_python(value) + + del (additional_fields[DJANGO_CT]) + del (additional_fields[DJANGO_ID]) + + if highlight: + sa = StemmingAnalyzer() + formatter = WhooshHtmlFormatter('em') + terms = [token.text for token in sa(query_string)] + + whoosh_result = whoosh_highlight( + additional_fields.get(self.content_field_name), + terms, + sa, + ContextFragmenter(), + formatter + ) + additional_fields['highlighted'] = { + self.content_field_name: [whoosh_result], + } + + result = result_class( + app_label, + model_name, + raw_result[DJANGO_ID], + score, + **additional_fields) + results.append(result) + else: + hits -= 1 + + if self.include_spelling: + if spelling_query: + spelling_suggestion = self.create_spelling_suggestion( + spelling_query) + else: + spelling_suggestion = self.create_spelling_suggestion( + query_string) + + return { + 'results': results, + 'hits': hits, + 'facets': facets, + 'spelling_suggestion': spelling_suggestion, + } + + def create_spelling_suggestion(self, query_string): + spelling_suggestion = None + reader = self.index.reader() + corrector = reader.corrector(self.content_field_name) + cleaned_query = force_str(query_string) + + if not query_string: + return spelling_suggestion + + # Clean the string. + for rev_word in self.RESERVED_WORDS: + cleaned_query = cleaned_query.replace(rev_word, '') + + for rev_char in self.RESERVED_CHARACTERS: + cleaned_query = cleaned_query.replace(rev_char, '') + + # Break it down. + query_words = cleaned_query.split() + suggested_words = [] + + for word in query_words: + suggestions = corrector.suggest(word, limit=1) + + if len(suggestions) > 0: + suggested_words.append(suggestions[0]) + + spelling_suggestion = ' '.join(suggested_words) + return spelling_suggestion + + def _from_python(self, value): + """ + Converts Python values to a string for Whoosh. + + Code courtesy of pysolr. + """ + if hasattr(value, 'strftime'): + if not hasattr(value, 'hour'): + value = datetime(value.year, value.month, value.day, 0, 0, 0) + elif isinstance(value, bool): + if value: + value = 'true' + else: + value = 'false' + elif isinstance(value, (list, tuple)): + value = u','.join([force_str(v) for v in value]) + elif isinstance(value, (six.integer_types, float)): + # Leave it alone. + pass + else: + value = force_str(value) + return value + + def _to_python(self, value): + """ + Converts values from Whoosh to native Python values. + + A port of the same method in pysolr, as they deal with data the same way. + """ + if value == 'true': + return True + elif value == 'false': + return False + + if value and isinstance(value, six.string_types): + possible_datetime = DATETIME_REGEX.search(value) + + if possible_datetime: + date_values = possible_datetime.groupdict() + + for dk, dv in date_values.items(): + date_values[dk] = int(dv) + + return datetime( + date_values['year'], + date_values['month'], + date_values['day'], + date_values['hour'], + date_values['minute'], + date_values['second']) + + try: + # Attempt to use json to load the values. + converted_value = json.loads(value) + + # Try to handle most built-in types. + if isinstance( + converted_value, + (list, + tuple, + set, + dict, + six.integer_types, + float, + complex)): + return converted_value + except BaseException: + # If it fails (SyntaxError or its ilk) or we don't trust it, + # continue on. + pass + + return value + + +class WhooshSearchQuery(BaseSearchQuery): + def _convert_datetime(self, date): + if hasattr(date, 'hour'): + return force_str(date.strftime('%Y%m%d%H%M%S')) + else: + return force_str(date.strftime('%Y%m%d000000')) + + def clean(self, query_fragment): + """ + Provides a mechanism for sanitizing user input before presenting the + value to the backend. + + Whoosh 1.X differs here in that you can no longer use a backslash + to escape reserved characters. Instead, the whole word should be + quoted. + """ + words = query_fragment.split() + cleaned_words = [] + + for word in words: + if word in self.backend.RESERVED_WORDS: + word = word.replace(word, word.lower()) + + for char in self.backend.RESERVED_CHARACTERS: + if char in word: + word = "'%s'" % word + break + + cleaned_words.append(word) + + return ' '.join(cleaned_words) + + def build_query_fragment(self, field, filter_type, value): + from haystack import connections + query_frag = '' + is_datetime = False + + if not hasattr(value, 'input_type_name'): + # Handle when we've got a ``ValuesListQuerySet``... + if hasattr(value, 'values_list'): + value = list(value) + + if hasattr(value, 'strftime'): + is_datetime = True + + if isinstance(value, six.string_types) and value != ' ': + # It's not an ``InputType``. Assume ``Clean``. + value = Clean(value) + else: + value = PythonData(value) + + # Prepare the query using the InputType. + prepared_value = value.prepare(self) + + if not isinstance(prepared_value, (set, list, tuple)): + # Then convert whatever we get back to what pysolr wants if needed. + prepared_value = self.backend._from_python(prepared_value) + + # 'content' is a special reserved word, much like 'pk' in + # Django's ORM layer. It indicates 'no special field'. + if field == 'content': + index_fieldname = '' + else: + index_fieldname = u'%s:' % connections[self._using].get_unified_index( + ).get_index_fieldname(field) + + filter_types = { + 'content': '%s', + 'contains': '*%s*', + 'endswith': "*%s", + 'startswith': "%s*", + 'exact': '%s', + 'gt': "{%s to}", + 'gte': "[%s to]", + 'lt': "{to %s}", + 'lte': "[to %s]", + 'fuzzy': u'%s~', + } + + if value.post_process is False: + query_frag = prepared_value + else: + if filter_type in [ + 'content', + 'contains', + 'startswith', + 'endswith', + 'fuzzy']: + if value.input_type_name == 'exact': + query_frag = prepared_value + else: + # Iterate over terms & incorportate the converted form of + # each into the query. + terms = [] + + if isinstance(prepared_value, six.string_types): + possible_values = prepared_value.split(' ') + else: + if is_datetime is True: + prepared_value = self._convert_datetime( + prepared_value) + + possible_values = [prepared_value] + + for possible_value in possible_values: + terms.append( + filter_types[filter_type] % + self.backend._from_python(possible_value)) + + if len(terms) == 1: + query_frag = terms[0] + else: + query_frag = u"(%s)" % " AND ".join(terms) + elif filter_type == 'in': + in_options = [] + + for possible_value in prepared_value: + is_datetime = False + + if hasattr(possible_value, 'strftime'): + is_datetime = True + + pv = self.backend._from_python(possible_value) + + if is_datetime is True: + pv = self._convert_datetime(pv) + + if isinstance(pv, six.string_types) and not is_datetime: + in_options.append('"%s"' % pv) + else: + in_options.append('%s' % pv) + + query_frag = "(%s)" % " OR ".join(in_options) + elif filter_type == 'range': + start = self.backend._from_python(prepared_value[0]) + end = self.backend._from_python(prepared_value[1]) + + if hasattr(prepared_value[0], 'strftime'): + start = self._convert_datetime(start) + + if hasattr(prepared_value[1], 'strftime'): + end = self._convert_datetime(end) + + query_frag = u"[%s to %s]" % (start, end) + elif filter_type == 'exact': + if value.input_type_name == 'exact': + query_frag = prepared_value + else: + prepared_value = Exact(prepared_value).prepare(self) + query_frag = filter_types[filter_type] % prepared_value + else: + if is_datetime is True: + prepared_value = self._convert_datetime(prepared_value) + + query_frag = filter_types[filter_type] % prepared_value + + if len(query_frag) and not isinstance(value, Raw): + if not query_frag.startswith('(') and not query_frag.endswith(')'): + query_frag = "(%s)" % query_frag + + return u"%s%s" % (index_fieldname, query_frag) + + # if not filter_type in ('in', 'range'): + # # 'in' is a bit of a special case, as we don't want to + # # convert a valid list/tuple to string. Defer handling it + # # until later... + # value = self.backend._from_python(value) + + +class WhooshEngine(BaseEngine): + backend = WhooshSearchBackend + query = WhooshSearchQuery diff --git a/src/DjangoBlog-master/djangoblog/wsgi.py b/src/DjangoBlog-master/djangoblog/wsgi.py new file mode 100644 index 0000000..2295efd --- /dev/null +++ b/src/DjangoBlog-master/djangoblog/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for djangoblog project. + +It exposes the WSGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/1.10/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djangoblog.settings") + +application = get_wsgi_application() diff --git a/src/DjangoBlog-master/docs/README-en.md b/src/DjangoBlog-master/docs/README-en.md new file mode 100644 index 0000000..37ea069 --- /dev/null +++ b/src/DjangoBlog-master/docs/README-en.md @@ -0,0 +1,158 @@ +# DjangoBlog + +

+ Django CI + CodeQL + codecov + license +

+ +

+ A powerful, elegant, and modern blog system. +
+ English简体中文 +

+ +--- + +DjangoBlog is a high-performance blog platform built with Python 3.10 and Django 4.0. It not only provides all the core functionalities of a traditional blog but also features a flexible plugin system, allowing you to easily extend and customize your website. Whether you are a personal blogger, a tech enthusiast, or a content creator, DjangoBlog aims to provide a stable, efficient, and easy-to-maintain environment for writing and publishing. + +## ✨ Features + +- **Powerful Content Management**: Full support for managing articles, standalone pages, categories, and tags. Comes with a powerful built-in Markdown editor with syntax highlighting. +- **Full-Text Search**: Integrated search engine for fast and accurate content searching. +- **Interactive Comment System**: Supports replies, email notifications, and Markdown formatting in comments. +- **Flexible Sidebar**: Customizable modules for displaying recent articles, most viewed posts, tag cloud, and more. +- **Social Login**: Built-in OAuth support, with integrations for Google, GitHub, Facebook, Weibo, QQ, and other major platforms. +- **High-Performance Caching**: Native support for Redis caching with an automatic refresh mechanism to ensure high-speed website responses. +- **SEO Friendly**: Basic SEO features are included, with automatic notifications to Google and Baidu upon new content publication. +- **Extensible Plugin System**: Extend blog functionalities by creating standalone plugins, ensuring decoupled and maintainable code. We have already implemented features like view counting and SEO optimization through plugins! +- **Integrated Image Hosting**: A simple, built-in image hosting feature for easy uploads and management. +- **Automated Frontend**: Integrated with `django-compressor` to automatically compress and optimize CSS and JavaScript files. +- **Robust Operations**: Built-in email notifications for website exceptions and management capabilities through a WeChat Official Account. + +## 🛠️ Tech Stack + +- **Backend**: Python 3.10, Django 4.0 +- **Database**: MySQL, SQLite (configurable) +- **Cache**: Redis +- **Frontend**: HTML5, CSS3, JavaScript +- **Search**: Whoosh, Elasticsearch (configurable) +- **Editor**: Markdown (mdeditor) + +## 🚀 Getting Started + +### 1. Prerequisites + +Ensure you have Python 3.10+ and MySQL/MariaDB installed on your system. + +### 2. Clone & Installation + +```bash +# Clone the project to your local machine +git clone https://github.com/liangliangyy/DjangoBlog.git +cd DjangoBlog + +# Install dependencies +pip install -r requirements.txt +``` + +### 3. Project Configuration + +- **Database**: + Open `djangoblog/settings.py`, locate the `DATABASES` section, and update it with your MySQL connection details. + + ```python + DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.mysql', + 'NAME': 'djangoblog', + 'USER': 'root', + 'PASSWORD': 'your_password', + 'HOST': '127.0.0.1', + 'PORT': 3306, + } + } + ``` + Create the database in MySQL: + ```sql + CREATE DATABASE `djangoblog` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + ``` + +- **More Configurations**: + For advanced settings such as email, OAuth, caching, and more, please refer to our [Detailed Configuration Guide](/docs/config-en.md). + +### 4. Database Initialization + +```bash +python manage.py makemigrations +python manage.py migrate + +# Create a superuser account +python manage.py createsuperuser +``` + +### 5. Running the Project + +```bash +# (Optional) Generate some test data +python manage.py create_testdata + +# (Optional) Collect and compress static files +python manage.py collectstatic --noinput +python manage.py compress --force + +# Start the development server +python manage.py runserver +``` + +Now, open your browser and navigate to `http://127.0.0.1:8000/`. You should see the DjangoBlog homepage! + +## Deployment + +- **Traditional Deployment**: A detailed guide for server deployment is available here: [Deployment Tutorial](https://www.lylinux.net/article/2019/8/5/58.html) (in Chinese). +- **Docker Deployment**: This project fully supports Docker. If you are familiar with containerization, please refer to the [Docker Deployment Guide](/docs/docker-en.md) for a quick start. +- **Kubernetes Deployment**: We also provide a complete [Kubernetes Deployment Guide](/docs/k8s-en.md) to help you go cloud-native easily. + +## 🧩 Plugin System + +The plugin system is a core feature of DjangoBlog. It allows you to add new functionalities to your blog without modifying the core codebase by writing standalone plugins. + +- **How it Works**: Plugins operate by registering callback functions to predefined "hooks". For instance, when an article is rendered, the `after_article_body_get` hook is triggered, and all functions registered to this hook are executed. +- **Existing Plugins**: Features like `view_count` and `seo_optimizer` are implemented through this plugin system. +- **Develop Your Own Plugin**: Simply create a new folder under the `plugins` directory and write your `plugin.py`. We welcome you to explore and contribute your creative ideas to the DjangoBlog community! + +## 🤝 Contributing + +We warmly welcome contributions of any kind! If you have great ideas or have found a bug, please feel free to open an issue or submit a pull request. + +## 📄 License + +This project is open-sourced under the [MIT License](LICENSE). + +--- + +## ❤️ Support & Sponsorship + +If you find this project helpful and wish to support its continued maintenance and development, please consider buying me a coffee! Your support is my greatest motivation. + +

+ Alipay Sponsorship + WeChat Sponsorship +

+

+ (Left) Alipay / (Right) WeChat +

+ +## 🙏 Acknowledgements + +A special thanks to **JetBrains** for providing a free open-source license for this project. + +

+ + JetBrains Logo + +

+ +--- +> If this project has helped you, please leave your website URL [here](https://github.com/liangliangyy/DjangoBlog/issues/214) to let more people see it. Your feedback is the driving force for my continued updates and maintenance. diff --git a/src/DjangoBlog-master/docs/config-en.md b/src/DjangoBlog-master/docs/config-en.md new file mode 100644 index 0000000..b877efb --- /dev/null +++ b/src/DjangoBlog-master/docs/config-en.md @@ -0,0 +1,64 @@ +# Introduction to main features settings + +## Cache: +Cache using `memcache` for default. If you don't have `memcache` environment, you can remove the `default` setting in `CACHES` and change `locmemcache` to `default`. +```python +CACHES = { + 'default': { + 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', + 'LOCATION': '127.0.0.1:11211', + 'KEY_PREFIX': 'django_test' if TESTING else 'djangoblog', + 'TIMEOUT': 60 * 60 * 10 + }, + 'locmemcache': { + 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', + 'TIMEOUT': 10800, + 'LOCATION': 'unique-snowflake', + } +} +``` + +## OAuth Login: +QQ, Weibo, Google, GitHub and Facebook are now supported for OAuth login. Fetch OAuth login permissions from the corresponding open platform, and save them with `appkey`, `appsecret` and callback address in **Backend->OAuth** configuration. + +### Callback address examples: +QQ: http://your-domain-name/oauth/authorize?type=qq +Weibo: http://your-domain-name/oauth/authorize?type=weibo +type is in the type field of `oauthmanager`. + +## owntracks: +owntracks is a location tracking application. It will send your locaiton to the server by timing.Simple support owntracks features. Just install owntracks app and set api address as `your-domain-name/owntracks/logtracks`. Visit `your-domain-name/owntracks/show_dates` and you will see the date with latitude and langitude, click it and see the motion track. The map is drawn by AMap. + +## Email feature: +Same as before, Configure your own error msg recvie email information with`ADMINS = [('liangliang', 'liangliangyy@gmail.com')]` in `settings.py`. And modify: +```python +EMAIL_HOST = 'smtp.zoho.com' +EMAIL_PORT = 587 +EMAIL_HOST_USER = os.environ.get('DJANGO_EMAIL_USER') +EMAIL_HOST_PASSWORD = os.environ.get('DJANGO_EMAIL_PASSWORD') +DEFAULT_FROM_EMAIL = EMAIL_HOST_USER +SERVER_EMAIL = os.environ.get('DJANGO_EMAIL_USER') +``` +with your email account information. + +## WeChat Official Account +Simple wechat official account features integrated. Set token as `your-domain-name/robot` in wechat backend. Default token is `lylinux`, you can change it to your own in `servermanager/robot.py`. Add a new command in `Backend->Servermanager->command`, in this way, you can manage the system through wechat official account. + +## Introduction to website configuration +You can add website configuration in **Backend->BLOG->WebSiteConfiguration**. Such as: keywords, description, Google Ad, website stats code, case number, etc. +OAuth user avatar path is saved in *StaticFileSavedAddress*. Please input absolute path, code directory for default. + +## Source code highlighting +If the code block in your article didn't show hightlight, please write the code blocks as following: + +![](https://resource.lylinux.net/image/codelang.png) + +That is, you should add the corresponding language name before the code block. + +## Update +If you get errors as following while executing database migrations: +```python +django.db.migrations.exceptions.MigrationSchemaMissing: Unable to create the django_migrations table ((1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(6) NOT NULL)' at line 1")) +``` +This problem may cause by the mysql version under 5.6, a new version( >= 5.6 ) mysql is needed. + diff --git a/src/DjangoBlog-master/docs/config.md b/src/DjangoBlog-master/docs/config.md new file mode 100644 index 0000000..24673a3 --- /dev/null +++ b/src/DjangoBlog-master/docs/config.md @@ -0,0 +1,58 @@ +# 主要功能配置介绍: + +## 缓存: +缓存默认使用`localmem`缓存,如果你有`redis`环境,可以设置`DJANGO_REDIS_URL`环境变量,则会自动使用该redis来作为缓存,或者你也可以直接修改如下代码来使用。 +https://github.com/liangliangyy/DjangoBlog/blob/ffcb2c3711de805f2067dd3c1c57449cd24d84ee/djangoblog/settings.py#L185-L199 + + +## oauth登录: + +现在已经支持QQ,微博,Google,GitHub,Facebook登录,需要在其对应的开放平台申请oauth登录权限,然后在 +**后台->Oauth** 配置中新增配置,填写对应的`appkey`和`appsecret`以及回调地址。 +### 回调地址示例: +qq:http://你的域名/oauth/authorize?type=qq +微博:http://你的域名/oauth/authorize?type=weibo +type对应在`oauthmanager`中的type字段。 + +## owntracks: +owntracks是一个位置追踪软件,可以定时的将你的坐标提交到你的服务器上,现在简单的支持owntracks功能,需要安装owntracks的app,然后将api地址设置为: +`你的域名/owntracks/logtracks`就可以了。然后访问`你的域名/owntracks/show_dates`就可以看到有经纬度记录的日期,点击之后就可以看到运动轨迹了。地图是使用高德地图绘制。 + +## 邮件功能: +同样,将`settings.py`中的`ADMINS = [('liangliang', 'liangliangyy@gmail.com')]`配置为你自己的错误接收邮箱,另外修改: +```python +EMAIL_HOST = 'smtp.zoho.com' +EMAIL_PORT = 587 +EMAIL_HOST_USER = os.environ.get('DJANGO_EMAIL_USER') +EMAIL_HOST_PASSWORD = os.environ.get('DJANGO_EMAIL_PASSWORD') +DEFAULT_FROM_EMAIL = EMAIL_HOST_USER +SERVER_EMAIL = os.environ.get('DJANGO_EMAIL_USER') +``` +为你自己的邮箱配置。 + +## 微信公众号 +集成了简单的微信公众号功能,在微信后台将token地址设置为:`你的域名/robot` 即可,默认token为`lylinux`,当然你可以修改为你自己的,在`servermanager/robot.py`中。 +然后在**后台->Servermanager->命令**中新增命令,这样就可以使用微信公众号来管理了。 +## 网站配置介绍 +在**后台->BLOG->网站配置**中,可以新增网站配置,比如关键字,描述等,以及谷歌广告,网站统计代码及备案号等等。 +其中的*静态文件保存地址*是保存oauth用户登录的头像路径,填写绝对路径,默认是代码目录。 +## 代码高亮 +如果你发现你文章的代码没有高亮,请这样书写代码块: + +![](https://resource.lylinux.net/image/codelang.png) + + +也就是说,需要在代码块开始位置加入这段代码对应的语言。 + +## update +如果你发现执行数据库迁移的时候出现如下报错: +```python +django.db.migrations.exceptions.MigrationSchemaMissing: Unable to create the django_migrations table ((1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(6) NOT NULL)' at line 1")) +``` +可能是因为你的mysql版本低于5.6,需要升级mysql版本>=5.6即可。 + + +django 4.0登录可能会报错CSRF,需要配置下`settings.py`中的`CSRF_TRUSTED_ORIGINS` + +https://github.com/liangliangyy/DjangoBlog/blob/master/djangoblog/settings.py#L39 + diff --git a/src/DjangoBlog-master/docs/docker-en.md b/src/DjangoBlog-master/docs/docker-en.md new file mode 100644 index 0000000..8d5d59e --- /dev/null +++ b/src/DjangoBlog-master/docs/docker-en.md @@ -0,0 +1,114 @@ +# Deploying DjangoBlog with Docker + +![Docker Pulls](https://img.shields.io/docker/pulls/liangliangyy/djangoblog) +![Docker Image Version (latest by date)](https://img.shields.io/docker/v/liangliangyy/djangoblog?sort=date) +![Docker Image Size (latest by date)](https://img.shields.io/docker/image-size/liangliangyy/djangoblog) + +This project fully supports containerized deployment using Docker, providing you with a fast, consistent, and isolated runtime environment. We recommend using `docker-compose` to launch the entire blog service stack with a single command. + +## 1. Prerequisites + +Before you begin, please ensure you have the following software installed on your system: +- [Docker Engine](https://docs.docker.com/engine/install/) +- [Docker Compose](https://docs.docker.com/compose/install/) (Included with Docker Desktop for Mac and Windows) + +## 2. Recommended Method: Using `docker-compose` (One-Click Deployment) + +This is the simplest and most recommended way to deploy. It automatically creates and manages the Django application, a MySQL database, and an optional Elasticsearch service for you. + +### Step 1: Start the Basic Services + +From the project's root directory, run the following command: + +```bash +# Build and start the containers in detached mode (includes Django app and MySQL) +docker-compose up -d --build +``` + +`docker-compose` will read the `docker-compose.yml` file, pull the necessary images, build the project image, and start all services. + +- **Access Your Blog**: Once the services are up, you can access the blog by navigating to `http://127.0.0.1` in your browser. +- **Data Persistence**: MySQL data files will be stored in the `data/mysql` directory within the project root, ensuring that your data persists across container restarts. + +### Step 2: (Optional) Enable Elasticsearch for Full-Text Search + +If you want to use Elasticsearch for more powerful full-text search capabilities, you can include the `docker-compose.es.yml` configuration file: + +```bash +# Build and start all services in detached mode (Django, MySQL, Elasticsearch) +docker-compose -f docker-compose.yml -f deploy/docker-compose/docker-compose.es.yml up -d --build +``` +- **Data Persistence**: Elasticsearch data will be stored in the `data/elasticsearch` directory. + +### Step 3: First-Time Initialization + +After the containers start for the first time, you'll need to execute some initialization commands inside the application container. + +```bash +# Get a shell inside the djangoblog application container (named 'web') +docker-compose exec web bash + +# Inside the container, run the following commands: +# Create a superuser account (follow the prompts to set username, email, and password) +python manage.py createsuperuser + +# (Optional) Create some test data +python manage.py create_testdata + +# (Optional, if ES is enabled) Create the search index +python manage.py rebuild_index + +# Exit the container +exit +``` + +## 3. Alternative Method: Using the Standalone Docker Image + +If you already have an external MySQL database running, you can run the DjangoBlog application image by itself. + +```bash +# Pull the latest image from Docker Hub +docker pull liangliangyy/djangoblog:latest + +# Run the container and connect it to your external database +docker run -d \ + -p 8000:8000 \ + -e DJANGO_SECRET_KEY='your-strong-secret-key' \ + -e DJANGO_MYSQL_HOST='your-mysql-host' \ + -e DJANGO_MYSQL_USER='your-mysql-user' \ + -e DJANGO_MYSQL_PASSWORD='your-mysql-password' \ + -e DJANGO_MYSQL_DATABASE='djangoblog' \ + --name djangoblog \ + liangliangyy/djangoblog:latest +``` + +- **Access Your Blog**: After startup, visit `http://127.0.0.1:8000`. +- **Create Superuser**: `docker exec -it djangoblog python manage.py createsuperuser` + +## 4. Configuration (Environment Variables) + +Most of the project's configuration is managed through environment variables. You can modify them in the `docker-compose.yml` file or pass them using the `-e` flag with the `docker run` command. + +| Environment Variable | Default/Example Value | Notes | +|---------------------------|--------------------------------------------------------------------------|---------------------------------------------------------------------| +| `DJANGO_SECRET_KEY` | `your-strong-secret-key` | **Must be changed to a random, complex string!** | +| `DJANGO_DEBUG` | `False` | Toggles Django's debug mode. | +| `DJANGO_MYSQL_HOST` | `mysql` | Database hostname. | +| `DJANGO_MYSQL_PORT` | `3306` | Database port. | +| `DJANGO_MYSQL_DATABASE` | `djangoblog` | Database name. | +| `DJANGO_MYSQL_USER` | `root` | Database username. | +| `DJANGO_MYSQL_PASSWORD` | `djangoblog_123` | Database password. | +| `DJANGO_REDIS_URL` | `redis:6379/0` | Redis connection URL (for caching). | +| `DJANGO_ELASTICSEARCH_HOST`| `elasticsearch:9200` | Elasticsearch host address. | +| `DJANGO_EMAIL_HOST` | `smtp.example.org` | Email server address. | +| `DJANGO_EMAIL_PORT` | `465` | Email server port. | +| `DJANGO_EMAIL_USER` | `user@example.org` | Email account username. | +| `DJANGO_EMAIL_PASSWORD` | `your-email-password` | Email account password. | +| `DJANGO_EMAIL_USE_SSL` | `True` | Whether to use SSL. | +| `DJANGO_EMAIL_USE_TLS` | `False` | Whether to use TLS. | +| `DJANGO_ADMIN_EMAIL` | `admin@example.org` | Admin email for receiving error reports. | +| `DJANGO_BAIDU_NOTIFY_URL` | `http://data.zz.baidu.com/...` | Push API from [Baidu Webmaster Tools](https://ziyuan.baidu.com/linksubmit/index). | + +--- + +After deployment, please review and adjust these environment variables according to your needs, especially `DJANGO_SECRET_KEY` and the database and email settings. \ No newline at end of file diff --git a/src/DjangoBlog-master/docs/docker.md b/src/DjangoBlog-master/docs/docker.md new file mode 100644 index 0000000..e7c255a --- /dev/null +++ b/src/DjangoBlog-master/docs/docker.md @@ -0,0 +1,114 @@ +# 使用 Docker 部署 DjangoBlog + +![Docker Pulls](https://img.shields.io/docker/pulls/liangliangyy/djangoblog) +![Docker Image Version (latest by date)](https://img.shields.io/docker/v/liangliangyy/djangoblog?sort=date) +![Docker Image Size (latest by date)](https://img.shields.io/docker/image-size/liangliangyy/djangoblog) + +本项目全面支持使用 Docker 进行容器化部署,为您提供了快速、一致且隔离的运行环境。我们推荐使用 `docker-compose` 来一键启动整个博客服务栈。 + +## 1. 环境准备 + +在开始之前,请确保您的系统中已经安装了以下软件: +- [Docker Engine](https://docs.docker.com/engine/install/) +- [Docker Compose](https://docs.docker.com/compose/install/) (对于 Docker Desktop 用户,它已内置) + +## 2. 推荐方式:使用 `docker-compose` (一键部署) + +这是最简单、最推荐的部署方式。它会自动为您创建并管理 Django 应用、MySQL 数据库,以及可选的 Elasticsearch 服务。 + +### 步骤 1: 启动基础服务 + +在项目根目录下,执行以下命令: + +```bash +# 构建并以后台模式启动容器 (包含 Django 应用和 MySQL) +docker-compose up -d --build +``` + +`docker-compose` 会读取 `docker-compose.yml` 文件,自动拉取所需镜像、构建项目镜像,并启动所有服务。 + +- **访问您的博客**: 服务启动后,在浏览器中访问 `http://127.0.0.1` 即可看到博客首页。 +- **数据持久化**: MySQL 的数据文件将存储在项目根目录下的 `data/mysql` 文件夹中,确保数据在容器重启后不丢失。 + +### 步骤 2: (可选) 启用 Elasticsearch 全文搜索 + +如果您希望使用 Elasticsearch 提供更强大的全文搜索功能,可以额外加载 `docker-compose.es.yml` 配置文件: + +```bash +# 构建并以后台模式启动所有服务 (Django, MySQL, Elasticsearch) +docker-compose -f docker-compose.yml -f deploy/docker-compose/docker-compose.es.yml up -d --build +``` +- **数据持久化**: Elasticsearch 的数据将存储在 `data/elasticsearch` 文件夹中。 + +### 步骤 3: 首次运行的初始化操作 + +当容器首次启动后,您需要进入容器来执行一些初始化命令。 + +```bash +# 进入 djangoblog 应用容器 +docker-compose exec web bash + +# 在容器内执行以下命令: +# 创建超级管理员账户 (请按照提示设置用户名、邮箱和密码) +python manage.py createsuperuser + +# (可选) 创建一些测试数据 +python manage.py create_testdata + +# (可选,如果启用了 ES) 创建索引 +python manage.py rebuild_index + +# 退出容器 +exit +``` + +## 3. 备选方式:使用独立的 Docker 镜像 + +如果您已经拥有一个正在运行的外部 MySQL 数据库,您也可以只运行 DjangoBlog 的应用镜像。 + +```bash +# 从 Docker Hub 拉取最新镜像 +docker pull liangliangyy/djangoblog:latest + +# 运行容器,并链接到您的外部数据库 +docker run -d \ + -p 8000:8000 \ + -e DJANGO_SECRET_KEY='your-strong-secret-key' \ + -e DJANGO_MYSQL_HOST='your-mysql-host' \ + -e DJANGO_MYSQL_USER='your-mysql-user' \ + -e DJANGO_MYSQL_PASSWORD='your-mysql-password' \ + -e DJANGO_MYSQL_DATABASE='djangoblog' \ + --name djangoblog \ + liangliangyy/djangoblog:latest +``` + +- **访问您的博客**: 启动完成后,访问 `http://127.0.0.1:8000`。 +- **创建管理员**: `docker exec -it djangoblog python manage.py createsuperuser` + +## 4. 配置说明 (环境变量) + +本项目的大部分配置都通过环境变量来管理。您可以在 `docker-compose.yml` 文件中修改它们,或者在使用 `docker run` 命令时通过 `-e` 参数传入。 + +| 环境变量名称 | 默认值/示例 | 备注 | +|-------------------------|--------------------------------------------------------------------------|---------------------------------------------------------------------| +| `DJANGO_SECRET_KEY` | `your-strong-secret-key` | **请务必修改为一个随机且复杂的字符串!** | +| `DJANGO_DEBUG` | `False` | 是否开启 Django 的调试模式 | +| `DJANGO_MYSQL_HOST` | `mysql` | 数据库主机名 | +| `DJANGO_MYSQL_PORT` | `3306` | 数据库端口 | +| `DJANGO_MYSQL_DATABASE` | `djangoblog` | 数据库名称 | +| `DJANGO_MYSQL_USER` | `root` | 数据库用户名 | +| `DJANGO_MYSQL_PASSWORD` | `djangoblog_123` | 数据库密码 | +| `DJANGO_REDIS_URL` | `redis:6379/0` | Redis 连接地址 (用于缓存) | +| `DJANGO_ELASTICSEARCH_HOST` | `elasticsearch:9200` | Elasticsearch 主机地址 | +| `DJANGO_EMAIL_HOST` | `smtp.example.org` | 邮件服务器地址 | +| `DJANGO_EMAIL_PORT` | `465` | 邮件服务器端口 | +| `DJANGO_EMAIL_USER` | `user@example.org` | 邮件账户 | +| `DJANGO_EMAIL_PASSWORD` | `your-email-password` | 邮件密码 | +| `DJANGO_EMAIL_USE_SSL` | `True` | 是否使用 SSL | +| `DJANGO_EMAIL_USE_TLS` | `False` | 是否使用 TLS | +| `DJANGO_ADMIN_EMAIL` | `admin@example.org` | 接收异常报告的管理员邮箱 | +| `DJANGO_BAIDU_NOTIFY_URL` | `http://data.zz.baidu.com/...` | [百度站长平台](https://ziyuan.baidu.com/linksubmit/index) 的推送接口 | + +--- + +部署完成后,请务必检查并根据您的实际需求调整这些环境变量,特别是 `DJANGO_SECRET_KEY` 和数据库、邮件相关的配置。 diff --git a/src/DjangoBlog-master/docs/es.md b/src/DjangoBlog-master/docs/es.md new file mode 100644 index 0000000..97226c5 --- /dev/null +++ b/src/DjangoBlog-master/docs/es.md @@ -0,0 +1,28 @@ +# 集成Elasticsearch +如果你已经有了`Elasticsearch`环境,那么可以将搜索从`Whoosh`换成`Elasticsearch`,集成方式也很简单, +首先需要注意如下几点: +1. 你的`Elasticsearch`支持`ik`中文分词 +2. 你的`Elasticsearch`版本>=7.3.0 + +接下来在`settings.py`做如下改动即可: +- 增加es链接,如下所示: +```python +ELASTICSEARCH_DSL = { + 'default': { + 'hosts': '127.0.0.1:9200' + }, +} +``` +- 修改`HAYSTACK`配置: +```python +HAYSTACK_CONNECTIONS = { + 'default': { + 'ENGINE': 'djangoblog.elasticsearch_backend.ElasticSearchEngine', + }, +} +``` +然后终端执行: +```shell script +./manage.py build_index +``` +这将会在你的es中创建两个索引,分别是`blog`和`performance`,其中`blog`索引就是搜索所使用的,而`performance`会记录每个请求的响应时间,以供将来优化使用。 \ No newline at end of file diff --git a/src/DjangoBlog-master/docs/imgs/alipay.jpg b/src/DjangoBlog-master/docs/imgs/alipay.jpg new file mode 100644 index 0000000000000000000000000000000000000000..424d70a2ffbb629b481e0c27d72d6076727e8041 GIT binary patch literal 17961 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⁡O0bI!3Bi@jSTgKn>Bg&Q53II7XEA`NhoOY$25L(eK?<1>~>hujoRs}yUHVX zQTt}~MN1Zw0!xe7-aUbnm3fxd*KjwLLobx-SSZdGT`vUtB-=hS^~#Rs9K<#Wao{Zp z{kmB)_tVwwglj-W2qla4$Dx zz53|611jp`Ro8}#TnY+1OdA}SN;lGY+!=)=QY;q0b}yA~i0O^|s1#r34{5DET&Qh` z+yAF+h#H($?p6{{X zz@F@jlhUjuyW%|!{Q!~$q>$)y1Hsl$FMYS;#r=c7U7SN-8Uv-lv<@mZOXKOlXLy4C z3v?;Yh1KbtsO!ynC%cyr-`4MR8{Y~e28GXK7yRZ9{3d5(xoP=XYdX*Uy?#pU$a5>& z`JUOV_ zRl}`OH8`y;U%XD+MFBD!HxL@B`JSH_G!;0V9-A+_4Hhf%=wJ%txE{qNaHkfkLsS+h zfe@JrYreKrFKhU2`1kD)K_#LCd!v$sI$is2ee^7Am=@kq2Z-`cU(l{<8*ON_J?@@& zOR+4E3%sN-vIK-%81R}RdPK$bCrBoGF zRu$>N^0s*R^!6R919|j@|cY|A}(o`$`Onha=;(7(EQNg;0 z^sK+j)DQ>i-wCKpkXH^lH{QNw|FWJ%bUle^xtPfLdv#(gNpA7lv59GyIOXp*E+vz_!y|AkM=lB7mYXSWGfxr6#WlV5UW{v7tVn1!e zwg=v}kG!o+0qXfY-FyUozk}%&PS$ZRL^NoDuz%nVw(p)FVMPG6Ph*mgs4z0~C)P`9 zWsg_X!-)T2FkH=VqaRBu8Zkq=AX6oLSWpg(yQ^NIftdmxjx literal 0 HcmV?d00001 diff --git a/src/DjangoBlog-master/docs/imgs/pycharm_logo.png b/src/DjangoBlog-master/docs/imgs/pycharm_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7f2a4b0ea66469bd218774de8cb3027a9c18b84d GIT binary patch literal 132045 zcmZTw2|U#4|DU$qY=^9^R*2bBDb|r>=Jvqn&-a$U8~l#LJ&jyHfAI(S>t8P)K52l%`RvBw08PF#ZVCPOerZ-T{F^v^o!^bU+DE!L z0m)bXT*H)y=^3 z$a;HC%g)N@X_wZwuj+_)rQ{FZbv>!$q^EP&B_JU1(w`32c}ac6W;C{jW_0vdjuV4q zzz>^PEu>|?gD}v^9cwc;@bI*IRO3D$y|f31i|s96XOP7(w&SKQ{S5yi4mY>2tgtuT zA~$UxU0v1Ctzo0@bJaVE(b?w+3tmgHI9zpy$$FvkubGSQOUl|AFJ1?r^>Klc4;mVL z928pj$>&I)@BNS1jOl1i(j{s7iYU8qUZJ2;P$B7Y7d_vjM|)k zL7SL|13NY6W=77^zDJ)n4zm2(ACcWq&#~B{s;c@RjT0^1;@RMzw)6#u%eee5IWF1j zazJn4j4Fjq2&RqM*i4xtAHzMc$~MSrcsM?GFPS+u>zZ03v0=h%@sFyJk&GJ#Q- ze#E`{z?3pmTZD~14w0vXfU)uxZ>>U~+ai&i>}~U`r1znYr=ByTf)g6XOeyo7dFVWm zl*JMH4!4zPE^~f9N_0+iT;=VAT4xKx%iPvVtgn0<`uOoOtp^5f4gOci>_?|=j79Km zBqj+g1uj~Z>wi`0?!#}uU0}LT6Batc7sA=ypBYH2WQ7vv3adItmL9B4`2@H8>hB-nmfv5xJX{t$rH!Xc z`ZopWW1r1;cMs2PsPnglkNRHQpAh#}pLLr_nF{Ap+Ojx&YjDa6*e!1n6~f!8XK1dpL*Fft>(IsO9d^wlCNU|T8XfkdZ?g}t>MXhLAh3H4 z(^liQoi~~IG69j~pdK~hhu7v_Lx)%#=6!m{Q)^vqvcqZLRNqhI6tyIino#1vjfFi= zt!QhkI5F z44m>@M<%g%yW}O>XbtZ%hb$N1d3ovWl;eowOV1~jQqj$u@ z;Zqd+A^QeTmF`c)yXln6#V3=`7?`wLnH%6V53EB$eW_U}#6vmYQPJY9)#$6Q+4wnD zKE2UdyL7Do>SIQ$m4gnxF|aJ_+@_+4f!U$&a1Zqdf^S8XJymwrZ~YcFkdjkA!MB*h z`)ulVg7lpab;Y~m6Wv==HVmv`t%_u_TP+9t`jhyR_2z6=Fvz8{&H^1sx|2XYuPCSkD_3FH*0>PH88SE;-y%^5iPFH6axOrBt_nTOSiyh)J z@{`)1=S;-;Mh;Xcrfa;ktNfvoBZSt#t=Z{57Z$yVb4I4B^HCjG@EiN;4-#CbFs7^c zF}DWJm+R+;_mzpP3OwRs^pt}y=86`MI;!D^1Q#;PZfu&D#uf?LnVig-H+ImqR3J=s zR|*X1vM!1@;`gemo}(r&Tr!WxY3_QFtvr!ox?tc59*?iyUYeskF}k=5eLQd>;kK>% z?pW${w}nH0!;D6PXrrE;&NwAcm9Cy8^ZauBu{$dry457xA+M z*WlgzcZ-Lxuh+YNJaL3FT?}7t00szILrfB->$$-OrktMn&aj%5+$ewF62|RWFju#= z0sotCy0c;6ntHnDsLlM10AaMq1D9T3Rl_454fpQV*42u&Aus4zMJAmaR;rt`G;hOc zW)F2b(do8a(YTHMUc@~T+}!u(bFC;-21><#FreNZp&TT{Cwe#hy%F5t=dE;Y`0h@W z?vF zd&8MG#ty1(;zR^Y#|q$L{u&Nwb{R@oe9vzi?4+jAw0$AR^O#yk`DV0$@e43s-ln2> zDyjeK$dUf5*Yy&F!a#d7An81=%3r^5>G1qVy7v z1B)dAGH8(pI@?<^r}mpif2jK-xwg*h+js@1TbM3APi6+l5wbMmsjd`9$l5O+k2(6Z z!A=-NXEiyx;DYPoJM{Vcf2m0jJda5crh2nG!wlxc>-d?ceAX?{ubQ8WOZ2}vz8QBx z`BB?P*4+aO;Q?I?FXDL#Zpy|%NJx*r(XcSy@@v=rsaj(P?js9__f#ktqVybJ9qQCD zcYb7Ppkxhh>yezfL}FQHxikCq`>CH*!~Jgs97JEf$HewroL&~c-Z%z!U(d6_x|* zKY}dMso_;ow5s$WDMjNf*`dDmWKmJWWcV7~wp`={c~?z(m$nUh5t~ekJzLs zf)iQxOttOtRPT!rgaxnhb>U21R^{}Z4!cu81pk{xUI2d;JS`Oz4>s-fMM?7kjQ9>2=3ugtSY3GJ99Qw zPTdi23bD|UQ(DLia7KICYM0_}EJau_sG4Uvf@k5ylX^M>$2N0+jAV9UZfR=MJd)=Z zy;{?KmfK|#W@>6T-~H$NsUs@kWtpE@`<8~#GV+IiPRvw05TEFwuRtjEbkcK`C>AWe zuFD!L3II?vXI$6*Db25SwPxQ?yYoceX*QwTV^6R5yD;Xv8^XLI<8(c$$Xf15f2NFK zf98U_RS34k&NVFcg=Y@UBLkf8ae>v4m-=cyE*Pl73PFEvU|tEx@O?U1zA%ic+^dUQ z86D1c3WVu}s?HYos?Pjxvti8c5VHdk+|@TaUp7$lQl_k^>u|?~i@B0ze(nLy|B-}OG3QqR`@}43{T4A_>0cmuyEjhge6JJ2rnhn8qCow9NNbgpkTR4 z_)JGIZ*+EsL=_d83&V~d3Gn0gXymLnpq@9iYcDPSyji^U*A0Vxim8lm!}@#8F$(fT zfWM=i67|8r7R)oVtsU|{A=PB`)R^x9Nt3w5sgu-SamU5A9%PrMGaibsWZW z{NCU+2RWFhG&ANGv_%?nn2Ox+lHK)_ACYx6KR)bGBcGQdOy2_QnhT6!F(gXIkM`(z z7*=MBc92*%R^u{yij$)$WbLPe1)?_%dV>Gl$c!bXj@xi^X+NQTJUsg2^K830+vuWf z0=TWXNO4bRD5OJfPUn)D!`O_4!(#a??z_M{?h9h!mR-l~+KVjJ@Ku7PIy5)NP!5(( zA39wnDJsQNeVi2t&sF0SMHajBFF+u=^%R_|hX_7m=)f_8I#*cIyhFqgK*{)GV*#Z9ZP7a!$>$*;jL2mJEkb$5s ztIFDh+dvh)S?5@u^4X2?=X-!q6x+^o^{g$(do{0|>F_ar=G(3cXVU0qV;2l*!3)yD zSW(T-iT&yy`F_D|cr3cEZj<94C3U|&y_}1Y%qwc?8qS*Lc{zhJWj4q(4}Q!(-+!iR z%$j->JOz(H3L&+mn*2Q}@Q{1dtDxHhD^Z=vEtB?FH{gc`gP1Qc;wx0x1wx(r5ntPDVXrylE$ z8f1llFW;GC)Fvj`h)_Vi_raiaPdv4F;)5=hZF61Zf&|q8I1(TTJUMQw110jF6%M8k zuQ$-x8aDCr2+eKj4s8e8Nwu!F+Gv=u!%(e-!w{a&Q5hx5aON(Qui2fV&28~n-2Byn zf0j55q+8NtmAZ-ddcC)p4VtlH(G3GTHcc}snkme1F)G(kOhc7sOp5)pNF%VbF~{g4 z@1+x)v>pp+;*=G0JPo;(;A*OX*J+v3UFF`Dha_ijBFb_9YuI>czi{@8g=%B}v*uD7 z2ht}i_EALXr2^y^dTv>b0*!cOA=AUpI?do#hn{*$y<1QSJ9Qf#xF*p5=L}Zw3 zLC4A1e!bn;zr7}kGc$aWGc#wznR#NVM!1iK&>KN@0y}cL$Q$n=B8Hn84Zbwh0oU9` zIN$4i>inRYonIF1H?)dwi?!%k(&2suynbKD()b;^-*~17SVfmLM7$yXbJx^j*7nx; zZ`NyZ0fi4gw|J4C4)zS+GU(w7Zf)cnSMTJJVT&Hm>dqU{rBOk=GJHn z8;YDK4v>xxbjXqVItuYztFk4*u0Rw$rNF9uH?>|B0i}?SuRF#8Iz-Iu|=n`&Bbul4mym161t>=nXp$`t@JSo^Lr9>4%l%aON7;Y7cV-)q%-` z+*~@5yy}4t<|n7#WtROJG4N42Rp8U@vSO!+qkes8BTjEmPQ(~XF}m;87BbXlE0DvP ztsB>dv*=(9(baYb!SXNCC7e{%G+BmLT=tnYS0UD5I_U4^zD0DY!UT^t6C#-(apav5 z<6iai0Et+~052$p5PtVngB)};{topIAbX5iHncT*=L=Zks=FRuYF5pKl5Q{m-qoa7 z;K`-SIW$eQ&YGQ1t*ecUIN8zBoSE(((YjDIeeP+Y#_J6$R`>kWcR8PYUcV9`JM4${pTH z?Zn00`qZd0#J%LIXk1Yw-6b%wj%^xV&ieQxEb+?U;KOtA=&+6@ILi{}Lu5bHz+!fa zD4p-PheH8Tb?zOpYSkWhluAx-Ni=~C1*xC<5^A>Fq9Fx_$&)Zsv+>HtN| zHsE~zpCx<_do)meuQo(I^;f{jCxN4sxt@AD=(t*}Az2syNpNAec{bX|mfSK)6`5FD zM}xkO@dqz^I`_gYp(Oyv+5#UWh@=2ponc1@&hqKzH&tJ(lFgL7>~BM}N;8#$XblyO_vJx+0NslH@%RX!Mb zZH+anyde0~i82>tTB*13>h#aX#HlJ{e;ZHtuzp?Eq!^u_X_yk%2ohB*wYGkapm7Md z^%!H&Ud7|e(?RZQade(`!G)X!1NSl?v`Y1P1<{4e3avy{a6DJ{jRV~wyv*SLR+6s0 zgW!0`)L~+;|3jQp`aeFy-{&=^$Zb47*!__)D_8axwoapMYk_!dSXPXncDl(3FJcp0obkt?7YgjaZM=FarSAYN6Y$3wyLG+~-wKw# zB&Fe-LKh9p>(FAmhLH4}**g=N@nyzb_-&~`7k1lZ9bMLKFfGm4VJvUn_`3@Mr>6;J zzF^+P(n{d^MHF4?=U!5(hLn%xOdxZ?X+GJ{C zXLsfd*O%cpoH;oa&h1bthruTqY0soPZaSJyb$Sg$_h|<%6E#iy!sp4n)c84#H zI*Y0f%{P8`|3H33aqj2O{`Y%2tyw3_o5&j4J}HB4<~`UN7JlOg8V$peQn1*xRN)o(3hvm^RK*67w|;=;dE6489_l*35kOo-ilH2TN=<1WmzZRL-Ek z!z3Mwi0F$Io0N`#O+M7m{VqkJPHOYtFaE7#-{9BScbU&a_ESu_q5kBcFeYJhVgfk> z!MF|AiodXW0dxptO^u3fXg7pBhidc5ZS(>D{PLY80|t*kgq)9A{lHIpE^+AeFNx3e z6euN4r7W78xshE$Z;lu&bK%Eb1+`X(-;a($M2~N1L;iv;T$;I=dpV0fu#_%K@O(-2 z!o?1AK^}uuZeBZpR=G|}6A~>SkQPUaJPG=AqROxTB{)n6tW)vc7E8Pcv3~=&F;1KA za+Pd#a}S@<{^|a+^X7Kk0XUe(h8Zu&mr-JL&)J8Vadx^F4WdL>bF!#b>GE@S3NKlj zw1MZzf%?^&q2x~KliZ%$Fk3u^vyN0#~g2T&XZan*{fHR4hK#?e^zeYRDG$r0+1FQD_@tDYfezF^n_J# zuW%WNK-ZHNG^H5+w@$Q!)6lvF$rn~bSuuIHmsM^)T$X~7#v5yoo1N7jelW~U%rqs0 zA*j1cF;yt>&5&uG<5V(Q%_+2rlU-#jyMI@FL#KVHQfgd3ARzGPy{srya9S$5yPx!;`Bx4*=Q zbIfa}cK(XBMCk%%&wRVzTlm+v`QQI8CijZ!?qomHr`DtH@A{vx1Bp@E#nN4RS9O3M zj)c|q_;`r_^9$H(jS3M z&z_ZMj}>2Xow+mNN6Ofj3N?LRg3JFdb7|TXUBZ(%H_wjsQ5>s_Qq&^PrInJN>WhbJ z8gi;kmN1av-~L@p@Rp$d0W%XjS)#uhW9fETlQqjmIlQdK6DbhOJn&sSJHs_TQNSL< zODN*98pD|(U1Qvl&TRMLO#HZ{{HqT|xypmjTeqBBe6cj~GT$(b<|0D=3>OL-Q?DvI z=Yu1?1YLLV)EY={^%bJ^{6O1z;SmV`7OuL?GV z9+JChiZ{0>5&*5uL7+a3Zn5KA(IS_2x!7+y$*Fw_HIR~m4x|fcWfe-Z++SmoOD=$x zukY`(dP6SqCz`Y(?cgLT>al968cOLx3AxjzD4Q6^xGK4cC)Z!;POi3G^kgDk1tBM_ zfN<}heo#|Kj;8kGu3c`6(3dnfv0G%k7KPkK`%Aj3b*>&=x0Dui9NK`qtk3ql+WHMq zIdn(70wkYU{@YXQZleV^K4m|`NO8LVm8aRhR_|T2=+d)_Tt_k+R>1X1UvGEwAF@5k zu`*DgdOKOH@B|)NzVD$&cIZ9_^?mD$*mv&-9`8|N)3!EEbcUK`OZb>LPwp+d1*-%; zQ`p|BvOD$`@lLg+Qf$2y1X*m!sxDBQz_Q%ZVTAUlixzkGowUs z;r^C{#RgB*evwZ#>}d4SQlWCJAm~dKK)B~IBxJCV%R1DhO0K~aaYRw&c=+jQ@?>`F zmc#&;7lOItK z#9N653F%BDH6q?5uEJ`QdR%rvCu@m<2Q0g9sRq&9jL*V)I3GHV#gwB6Iu+U zg}%Cdcpx?4NZ z;XJdwRd;dxwDH^94mxrl1_y1+_k3yogCCWO8PXupJnGqT}^oz0Yh%!+|u%jLG;A{@yi+ zqhsm=AvLZOq@BDeM}x2Z$G+WKe_ZzN=!?H!z_tkDR>)A+tnJ&HmOc%gg0TwRE6tX^ zOlnkE+EL&wr!T({+wtRPNL+6#R zO80Ach+C8{?Vuwt-NtF-jupvGoD-05I?W<1);x!NB{qmWG>gt>t5Xi@TC?YFSm?OX zCM|mvd?^vKm8TT7&AwA9wPu-LnN3J=$BM^(u+J8&iI}?ell;%8H=kSVg-xx-5M5U& zajQ0W=u&SX*%MBvx#egVvG=Pnu{o+*FEJc|p)ghrK*@c`vzCsBKS`nF+ZKQ6?}Cs1 zc;Gq2jV%6V4-}VNH~e+M(pJyCuqERZH`3gcQPD9=NC>Tg_BwH3a7V#vgdfa0er?ws5KT zg1u%OBt3wdD8*1a|9b4+#-UB0+a$jk^DM~iiNUTs&#Dk^GJ%dyg(uRtjGq+OHCOJM zqQ^n`r15{$bvwAs%)^;{TN~Mm>_PRT@3}JTw*GeORy65MH)B2z+~JAe_iIoFA!|zb z1T>d(a({q|a|F!(Owz|xC9Vhnl$u2nn0=*~uOj~{;bU6hYPqB2?`i++?;={hsP5h! zCzLSd`+n-qHacYEBW!IE`kbibTs>NBoiipEHyk_GxBuYf{1wl_M430y%+x@u;PUtr_2^ot`phU86m%Xue%c8TJfoBSk`5@b9 z3aeOZ56}nCvvQ4zc{6BkMmQ~;>GDtR;=7{BaD6;?v$*q%(fluKw$)BvYMzS|O2jM2 zAjkpSM3io_C6Vg~lT3)J_S5`5r0V^Mv5_95zL?~C1ye?V5d{*NS&+XhO+6Mn7IfE) zApfelRcErnLK#b@8Oo`iTO{%0s)!;UnbSA6SBdj>m%=|b>`&tpfHo;04+Zdtqqd+S zK^WPfF#5rk;@;6@IlGJha~d>HSg^ej31MK+V6|$H*Ba-~Gd?1#{RJLYneJkbC-tR; zhd}EAINpEE_9Tqy+3ML4;ArsUbAQ`wL!VA1`OSmjTGw1g^{|Wuln>xK+H zn~k_p1rF==0HG`(`G0A1e`fT+Lh@RMjL(a;7P3?E#>64f1Zc!LU}1@|kx=4qpygNy z`T2IfKjiLTajm-WQ9#prxX1CWLr9zguQ&>`1diPJaTl~LV6?k?XX3JYt*%JnyEO6< z&<~WwGCs-}tR7MNaNhbw<5u;h%Z6#%eP@ev2F+o)CAIUtpy7pFJ#0Rx$o+E-OO>1j zj`2z!GQsd#aM+8moRS{~jAd7#q#*eZKGt!n=}$w&Li6(ObMr9_T*|ZGWD4d7;0CVM z+^oCU_TvTs6P_7!PT@>x-$cVnF#*`7_E%PC%*5b%MVZ)0e+?J3$xvCW%8iksT=s}z zn>@+rI`|Zc(W2X93V*V(iQ96HSZb-vP?dlhCp~e5eTrN+Fk25~HSl-xo0bE`+v}64 zH`B)Nz6X>^-~~M9Pbq5dL7tIjr|l?tG}ORwGbskTl#ZkYa@icz z-wQv5-J*G)m11}tlET}|l_EFcB{m)e4-IDqJZ9wo9fbs9|I61W>B#At!09$BLY4$x z+9Hne{v_?HF@B z;qK_Yn6szt#)O$(fN4ZZ|1wNt48g1>)ZP(i+PJ&l694;v<#e|DJTrXTBAK4& zxo*&^#o@kvf5X6tk`UG*tKXm2T`hv0cBLfLT-Kq@LU^^`>-_9pz#v}y`rEMM;w$8G z*A7xldPBz)efrK1`d8%ko6K6kYJqyYT#d|P>h*2`V5G&W|C5nWtd4E=se+pJ(NdKr zj{33;-HWquxRU&UrdaKLNhM8yf}Rn>q2g?(qAsNI^NCWi%H6JX=;ThAJvz0Dxpz(o{4-Vf-@K-kzl2m)Z|0YG2GsK9_da!G8{fhy{UmK6KG( zN6C|3;i96;^GfUW9O(7$SxsekDeAqP?(ny_F?e*;OQ)Ow+CCK(3gh(P7o*GXs`y%`^wmQn37r?lN51CD7>W-> zLz)V_>5Qgr0sWO{P0~plz98QHa#`O5gi`={{k(fuaxxmDn(UC>P#dMyEDGlxJJ{&u z|M&LNHdJ17#*eTU`&&6I*xmh+k8GW+3>SOzV|{7nqOVc3t@vMvC)6>4iM=fKEyF-K zzY@%q6_0Yy5?|yuPX3+3ixJiE#m|BMcSy)%s*Rv+?Nx0X?d*103a@T43z!lEB%;tv z1i|Sh433i7e_g?5W#cY>W>EE^z^;>_3NxL+ZYVn~9&Tk545sxF7Cdt>Pf{eYR!=Bv z@sR(Z8n?i2gR&g4ttW8=qFQKwRjER)C>#>IC63fP#0fPrV zyIrfhbg$mBKYfx;Yq4Fd!zB{3Ks~u$<49 z2jQg3n$%}tcmStauJ#o{k%xH`r15x2eBtW`cXS z^I&t_FK0gq%!|8iO7H5WlpJH4aB z+eoE^XFOX z00yDJuC$Q=cj4xMn+IXsT&~slT864*a%p;_%RrRY(LWS6tj0otmLT1=KHQPD7L~-% zgYK8-ZVW2Bo{)<0zw!v7OH^R7(jTjoDliP=nT{zxQbATwpwZkcjV1@ z^4;NMvxkyy&bmsqw8+XFsmRrtpXp%`K2tt0n_KuQol{XBIiq5AR77f1aP2F^N z^Vu?gWdu(UI>dhpEh~Xxl`s-&o31&8NH@QFe5B%A`cg*ko{_3=cK_PYv=645p#Gq} z?tZrZT#|0qdAAks!&f2JhUg?8bkzd%de0F5ge8@C+>kL6X>!g~7t<^604xk-`3eTf zAk{&#_qh=c1+wH@f3uS8!Dh#am}eQ}Xi?Z?!3Gd26fuXN#LbUsFmIN|2kD`Dldp^-+M8JdX2;|uDkF8O+dbAbouz@;B=zCH_pw|59ILc>cWA;(M6vhp`}pim)U-O(=bph1QHcVwW)4VoXekiAa;t zR$pcZytI$mlPJM`)8*c^zT>3oU9kb$nl&9w(CWDCoYHr9VY$LV(^xf?Hst76NRon7 zCKcV?IrEp>Hko6Ubn}q^I;9PfiP@RnYJ$CZPc5u zLUMz)oVtIC9Z?I=vvUy%xP0I`r7{A{A9j=_MWiues{g++&l{$UXUmp2*_wLLZ5M)G z_xy1(iPirOTytCfN<@Z`b(V@qGO!$?^V+g1ge`jJ29{CNjHwd9Oi%H z8?&Rk4y{IZB&Wfn?6vu?+YSTWy>&~5iVs6_ieVaXg_qjghh-$<$1ITjHHB5x8H)h6 z_RERsv16K7VjFQTUdK$JJCyinHJ9>BmV>#+v+~1Ush=8sTE3Ls4T527gk(_fIg$xY z{-v+cP!sOg@;dvZ{w{Dy{i29vi1{zMubJJC6gp+cx?zhDUmNrGeK@zCuh5DIQ539&))wnh-kb zevUhwY5AM1B0~j8A*h_-Hv(*%wO~3Ml2_&;eZxLf%E;T+ypm1Zr_cDHBOwI;4s0m{?h>2r2 z)}gVvRe++9(8p`A#ZC}elB^Ktu3H*kf#AUFAP?B+dOlHpowRcTLy2KlK$WuI4npj2MN(*l+|x&3pE_y7^|gy(zv^Tq=Lsgs{X&PJYXX?t8|k*w_AF8Ndcl7YZsK zJEU=}i>T2@%b463Fnp!qys;JM-5rFoF(-Of)U=R8d5r`UuxN5#A`h3a)Sn=vt<;zno zS->T-nw;~SzhOe@e@*9$=l-tCIv!`riUxsgVlhFgZDOAK%a*faA~z>GQNRErODCl< zT89FhpuQ^m4c5^$GI|Sao1IyN%gYLN((+^$Lbmw7Ll;}Q2J7Xr(Fiv!r-@$V+Egy{ zTYhJW(~rDX3MgY^p=Dnp?p`NpL1J9>K-y4)xW!WTa3x(Xyo2W||0+~|%Lz*e{YWkK>)Nsd&2 z+>`u!N1!Yw4}fDs(+;_iz#G)JUvzGJXYvX4?aj?A6`p6w2@vhQiIda?pPI(zCP!Gb)&^hp*xiC0v@Jy&LbU$6#fwPla;!fXQ+e9XC0G( z@df@XaDg!eOTR~e4`c@+v*`AxBgz4#{FHa^s(Rsi3dF|{j+E|#c%f&}@#jU)Mo#Ll z1M&0Vf3P?nm(kX?Ez zFujVgz$iV|t;)H4IP^npE3w#mJsN3X|59>9T34_YN@L(e%gtg`A8M|ka@ej8o-|}F zszUl!+0}FAbF0fDELytUtpLU4irHXU>SsR+39#Dz)C@Gj@KCZDj9C|Kxf)w^ne+nU zmFopT?uyX#C&%+Fn}9)nCpEbOKf8+;o5q5I^e^s#dPVC~pB^qykuxBTD8 zlU`|C`f^WXpiJNH(l+b_GxS$Xn%-NcG0Pd`Jj)JBgr^5qhYv?b1`{9%-5j?A~3&|a|OJKLyEciPA4zKf6 z)<+kpJF98rBS?US&k?rX*=~aOUy@FMg9Zf#iVD^aQmhCK6>Z^lq*_w22j|JY#oF1`VD^0*U!AnguwCwh(RvZRH)>UJ0tHXGiNKid^M&%SJF zUQ?;MKH5V73wKn&X}N+6^1-Zk6f|=oAqVpkvQtBDqL z9_INxsF5w(n{4W4b7f)e8KVx^W=4fDkM5u~H4bY`+=o4G-M7i*@#T}w9hJ?_`Bk&h z$d%T(d1J(hH<`k{9nLJzsgdP2B>ZGkvoQXlo?l3;>x|VIm95ZzqC!Q(8g}qtvwY?) zTG3;W!mM@MR(GV*K0sl%8Y{J?|21R?ONw23cCxP6+*CF9{Lb zGuNocA~Sv2rIrIik~KZ!)jo5=l^Yq zfMXK+v4bPWL}oiAb|QO^O*`tYJM69cIpe5R9h%}>}ZCi4X#!9i5Wd@A3# zZ1g4&3He%VQS{bo#gH%*BlnHS(jG1=9*L^4{Zt@+ASuAn1G>dbPLO_$fFdPshKG$H z)c0z0pD%2p_V4`_4zJ0dnDug}m|hJAj~=0Wuldgy7fd}o1#^Ck!qkinm5ijLV`Y~{ z{(6(XbPyYh#uVY$F>TfRB%h)zP;p*GW6$kwrU_*9*2;y^6nF&~L3Ey0r)Q&MuJ{-D zCf`trkhwdOk3)tW8;VqA13sa3MVY*oJ}=96hjcS0e^4*0lpvu|E6&bfBy-rWzEG^*T*LI?^!8mbU(noBJIvUWR^^b!~! z{1^>-W<*(hL|O>{V{~$?a3C^)>TjvQ!di7@hvq0bgeg4a7dMzTY7F+RUl;AKx|N61 zq0uQwK2CFzQ>0Bi0m=EH@ulXNETy;hap}DeTAxUv(Wgj4r1gaR|nUb)~C|+xk$IamX!&9K&;U^1(8@0PKcL}s!iK|z0@4dN+&GxiL zC7xn(&u!ERd*#6^p4rP(!R^$@?hQ{tUiC5i7_U% zfMOzE@xVfp01W~RF3w>%46t#(pn6!1EQQUY?7D1gV`I}l_G13b)Ge99QFzN(zv5UY z#pyKZ0t+>3csA)GUf)|VaNuqH50Fr9{ceny!4=K8oKB=Gg9H_777ybi($RvY4$Vzv zg)@e8ALieri_IZ2L`&KZdo)Zl`DV>pnt3Y-*rxV6ywrzrBu2A3oy31Xil-m^m%+&W z$xeZ(ouhARCi5y-Wk)N}V>iGusB?bQPp83~3lBrCq&iHoocWzQgdoyw)3PiuVRacA zOL?MM-ngc{EZ1J)iyn-x@Q@JUK#YO!^2?Z8Fzx9|Q@;VHJGn*6UWzi=?zXM#9)!(? z?+e^LZSd&T&f?r@m}d` z+ASmJ7W>W^tl%{EK@%D(wkfEe5GW^0s~1+6n&4-gptztC4XpT!HLEWuli;NSsC?HB z_z{;Rx1{*!h%^mRMeqr9S{=*$x9LSw>6N>ZcOm0{ z2ZP#qptrj6JD)43pInYo@OiA?fjGyu?hyae?7zMRiBZL$p?rj>+G^n@=t=5Ga6Q$F zz_L9*YuQ)y7nmG)O9w?1bc4N!2*s^}Xj~cfjfH`a(_iNr&2J})W{$j6tCc>sZYua9 z;8!veO(dW@V+`Cb`=||EVC$tU2Rn^@VwSRiV0GbVcz9@Yr8|T%j8Q3eT%YQj{Ia8X zQE=x_OwIuI1EX$Zx!`vcE3nZ|R-v?mY1v&LCRqtMcax#w8- z07#y^jX>8+g_LGqnA3NRq_hgg&RD{^m|8aPhe-UK7nnBORGle(BpI78_oyEWs-qKnZ;^!kAf}p20PR0W+bz zu@eZT3|~$pQ$}O*dr+x2!b8{E!9nGO1W;;4H}Conxxl1LS~@$08k>ke>*?pyh*rR2 zNV==W>#&^9&(Noz+f=Me_}a1fcsrgf37}W>XUzM-^N_P(J1K24OevQqNal~e^lL;q z2G5{z!=c^iv89(hEaNMTa0N`}c&kJdh;H14G%qMu%d>L816y)B&F@mTWU@_FERZpH zNug9tk9BvzR|{4+aNq#HI{lXDmx3!`&xSwtRKX=Ix4(EAC(Kw=JNC=CZQdk{M^EZ^i{ajBTg;oQHwg3o7_7n{6@wD-)xkHj|3EMn=KGb*>@K$T!Hp zZ$T|7xEFXP*0)e+;$yQ8rwP-j@E}l|)B=5(lJLKxkb4QQBo)+{vGKygq}_>G&2f`A zoo~`B6HGvfL3TkN>;HM0AUDl|-3tzVOw_!hrfW=L=1p8feQHk*34}kq(wE#oEXuQkJ-lT}y zUHa?!vW2`kv43&7VcNK9jicI$A8_|~WVpl&W%{Nbf?AUEl=Pou%bR+z*+yU5N09To zSeYfDf;4U3SsZkhe3Lt5eQsvuK>57B79RVFd?{Eu{Epth@5kE*&o0O;gYz;9{?+a7p&powzH%82^baaG$3*OZ+GB`WWo0lEx(eXM0r-X`Mt^~P zq2pw)>Kn8Nq=Q0%eIrPY&3Xdcc-cHP+F<`dZwl(6(6!{97*x9t+-Vt4LfTy--j{r~ zzJkxUeDdprUpcC&ko?hX8{ANUrXwdK>nW_1j=dTfv-TyaMEGC2AN~IlEwtg|s%3xN zROo+kX+_tE-shFWG>UYW3Cy2v)iQXTl?O|OaVgCFU}YO*Q=1xCF~30b9Tn;Nc~_N)VleUjeTHCSv=-9n z5D|eGWdt+~Qbfz1EHq!NhuL0Kk4`zEqruo}m>`)0@2Y(+tcRw%G7LR*G&avvxox`= z?uhvgfW_6wZxH>!`>6$-$dx#s*Lzbw%W?8@_}dl5=c8YS?-i=9xtZ1C6UjnQv2(uO zW#XHi6;+{(D80~M#@j0~wT7iFN;jua1v5uqjzCPoV|!F-OW%;t(1|sx!v0VSM}*`A zzgOdejR0zIE0x${>2Gl%+CnpKMX^WcgQrOn-13=Y{CQm2wgLD-m1P^Dv(cWw6HJmT zETS+t@-ZvZSHUEs_kq0OA8;3(f{y$8 zp!b2w#Y9NITbphr2CPPbq94_RsaHIsUsfio}MQN&@WSM$X6DRM;sqcl#p8sk}dRD6J1kpwsa7E-}Z9;reL^??8OTV_>};% zbwF>q*AQI#D=5{VSv-dRv9GQI+!PuSf{|sUccM4IuZ8K`Oj&mh zhMQ3&xX%{*ttsEH#ytsGek;h4TnSm5H#`7n9=fedXGiojUx zSoCsG0F)^*DHcj7?@5uz;YcSF3VgL0BbH-!8uCcEtWsq|?)nE@$;qT}Y_s=}p?IspaIU z82J)MmwW29*h5T=CqrcT!0#^!wPBtpP)ckHsGrWJF{6`aSiT)7WQbcx1a|4CUsACfw9rCcp4}o zNMt4-%h<#0h1c)^Rgn_;6+t~-LL;PVOo*`G6MTJOM~D71j?i##7s@~o3&;U@6H0iB zAlZ-I>BK2$81qzB$ZuHk?gJSi2PkpiePl#3 zBHsoMu8Td1?uF>f0B2q|309BLFa(Ee%m!@bPx-4!BXfMkOc-MG*ab8 zZG9pn8(->Q}Sf4`h=a=K!CKDXQpWg;<#0Ck37X!EUCq+Napp0lAE}9^-4{ zzPGFYt$JRNi)rLDppIrZc7EcP)@obfjD0Z53#2|Jeo{)+3Eot5BfeC@vu zpt%3(gx?EYR@*5w5wh%t6$ewz&)J=2zE;F(-atRob5bQjq?xnF@%-}f?t_TJbDoTY zsiY6?*Bi!XTcXj;qs&Ung;-@(!>=Sg`aEAwIldYP^A8l;#M{-D{lGWGuSM|^^h)zR z)T~&7+r|;@Nl1gg-(M>JO8!!aG~b_Wqxtq6Xd>?%+7rVBxA)>!QX@A>aw6KirS zozb`{NSGYA0V)M+1&^AQO8C5^=#EoaTBIkdaKYL?J|Fb!ux)~8fzbX}{6(La2OHtK z5Eg_VdZ7v~h@HzNK0@OXysQq4xiz%xCA<$A$Q=sCj10rEI_kYy=v3@xX3v(rP|Mfgdm2@MlZEZ9T}@Vo)JSYqo>u zU~}X=2nT%7QPYu05#8-D*Li=rVH`X5(H+5yKA2#WQ8XPMRDx!&H#WS;nJLWjO~s1@ z?nLP(<)3u37ySxB!-u-HCU#4;x5JLJW=Ih)EZwoi z@-%qNs>_kQ%l-%AvL^BLhWdsdTSs2{eg2o#!I3iHNV0~+cdMOnf!c2E!Jjq(z0?D_ zX7s%nFQ$0P1R7B=sSjMN_Bw0D@V35p;JbfBMC8MA$=k`+Px~?`*WougdB4ce$?MSH zm%tJZ?|A|?_G|JfbTOE+=h%43&f1~G`4?eWSpe`a;j<-zxlo7yrn3$A_pc{8%qzj$ zczgJFtfO>Nm*r_!#MQ6hz=YoakaZp4RKH)GR2m|wY3Mpd+x@=Z^PYV^=e+Ml9*=~JEN(%M z>Q13Yzf&!&2=|>K2e;Kwn;c9p-6k#O_#W>8w^i{uK~8yb)nyj zY^}Ac=zvZ)*TSRDgvojKFv(G{RvcWRx_BKR6HYX1gX7JvcS0v7Rbl&|s1{mwh^=~7 z($ofwDcGEn<&ovOom1+l8`qJkcB$<-{I+;#la)IOGtn2xZ z&0mSly?q9$pwj#~{5NFje3&y}uaiDlC6B5Xhy{!22%I;^(N>ZWD$ukz$$dhvpir-( zNgkcW2Iq^WFu{N3@pbv{4J!Qk8ARZWTKu=(zaYCz61)yoq6~5mrpP_GTOmK?ltD^r z9h$tcO?E8#u^qlZK7lFBDCkBsJPm^&=$IR+Nl~GPTml2QgzInG#3U-&9#F2jT%@(9 zJ+Ut6+M^Tf)D*4mZr3f7UMQ>veJ=ZXFCd=EekSB!SuQatD3^tOyapWxNu6c#kir8` ztjENgH#kc+iW{JcDmZ5yXC`>Mt_Y2$~~Adeu{Nets@<_gzds2#=#yodt7%n8Oi` zhj_f!zZ-16%H*bf&s%EZR5_GaG(*$iI2Mum3bEELY8F6JO7W>+GcFYCuE0zV=xf8} zK<{!jzpeyKj*$ol-6J~XhgTs*g7?<$%p9N*`djUl^yE~mYqoL@6Z&oT{osxx&a3UL|*E#%oNuGbGA3p_Ul(MByyMavsNCA>)4&6 zg_{-)kC@L6eFbu2u62l95y~PvX=2C3 z>2{C14tq>3YmR~Y(+(M%uPC-%h@xA3qEkwQDJqD3wpyX~$>H?yfLIiKp{d`gYcl8}m zsidSp9!;|U*;)olM7udVyR!!>z$0+`i0Uy}prDAPjKt=AfNNo@;OG4l$EYddbmTi{ zIotBus2Fo+3guPh?IYw<>=$l2J=$;;97OUQ$1QNKcilYO9ke zgs%!XVT;tFfezXGwZtPNL=`7`(r=LV8tDwdvp3`>o?c~AT~%??^e9{bf~~2l*%H?A zE0%~?64L?F&hteSaX+=B$&}N19{y8IoKMlUHTHMCv4Yhq+jYC`=5LaQ+;rI0b5yKJ z@RwlNJ_6mo#zuQXS_;*9R}OtISc8ZTqVXT-GdMwV6mKuIuidVV-fQr+Xr%7tCbVPJ zZ;S6ghd(Fl1rYmN6?`Kb#rs)Gf~h=NY^&f0!lzipRJLAO6ksPE3Wl-`p;M5qmp>`6 zG??Z)Aqrw^MySGWomL!kjH=nF^cj(r1ZrK9WpSXEa2kvcK>#?-n4 z;0ZEk$kY}EXar?_d+bOJRiL`$c|lrh{Q&WC828np;ep~JlvrF4JE=G-8wJy=S;mX6 zZ?==>kWu1D?rONZoC?G7sZ>+C8gkUiVnkkmk`tQ}VC2iA7m44o{4e2wT*Na9NV0(hJ5^y$!0 zDhf5Y|7L`Sd#xTLrc5jOHm37a`{)Lnjv@~xvhY=BNT!XX4xmPEz0(~xoCYyR5`m)rF75?OUE%l;$k_>gh@q^`Nnw>_VnYCD zDEqkkdC;DNrn$pU&}0vhUG>b6A0Z`^~2++8-cPL@)~eME+=-|1jpE6cvuaF^#a`JSDA&99QElZ%Xv$<$!v(z z#6BxIXrbC7zY}ijY8T7?e8mzbJfr&#CyPG&bJI?9inw~FT3t4k9muGkuSIK8ep@jk zvH*wiSfx*cX&A}XWahUVBGXN(igdhUYIVC99%qF3(-NChNWIBUrfTfCe~+C01$_* zc73B^vm)V&tX}`1&FXu?d1F>(n4fb=8&jyhXEo+0>6 zg&kNMW;uj(kj4ffQHP9x6=$_ap7B1{D}IW-ZwPnXoi)E469dGniA#rCc-N61CQTG1r_mFX zgOX{-9*V#*7!>W+GIukLk-MPMdswDSRxp!*5v|SQ*>ihgCx!|2;dGESLtaO=e|u3l zq_K^k5c&?-yf4H@K*Sa~98@bM4Wn(o77CBKpIYRe>FoS<&21p10_;K*rhU;NDBLL! z@DgP{&qBh-KetJr-w7~(c0h!AhZ<K&vc4z8?aB9iV@IB{~q%>Dt-FooOz z9o8J<9kFh+f`jyggeA{=ZL@sxi`7b;?6rc4&-Rg1K}GS%H6_(RaoR2ut+R&)Ya+%h zK@>T3@QC-DB!S5L@Ak%xg>3_b%;|cQ5OKPVJXeBp%6(37kWD!BJuu>ExS|*5VLnaIITf!o5|3?=+v!>8tF^a6uer1u8HTgWUVcNj^GK#&=aaa z>H!aFh!UhLeZEd-C&p(lf*9@?%%0NoVgXxOJNtm1)Yd8xK^G{JJs{~HX#a>s){HFv zxFW3que~boSjDWc1KB8qDFF}JH>Z}CouHl@u)$v+Q4b&%)^M~~RHkZBml&oC} z>^s4-U`%xL>f^+qli!Hs&wR5lBi?%rC?Wb_(1L{*JBE~=`F2ly1C7mwoU+5glbLAa zDBeNb5gb6GPeY=ohN}=r@DAA%E8vRRP>qR24}ZKYeJORHeErF?f>F_kaR>D?EYYO| zAKn<1vn(%U2y+Ee*R>_iJ7L}|j2^XWqPJ?s%diXRI9!@*T+tDac3R+ZSor$EYGBJu z06jLfxK>TR+dZstFz$T~oxCnngeG;n3chI*)vyOwqrY30p!y|Ui94JuFOxX>k|Z9< z;H&V?sqfxl@@QM@nyD!cwNOe|pFc)>PV$;nPwxK4#>O)*51fU+lD7ScbQBlgLGN3? z^dzJO=);#_p|ligaA>SYl=hrZxDx5Rn=L7hhL_bPdp-o{iS*G+N_Le0TE>`Pg!Gs6 znNT>~%?}q{Lr<$i{1DhWX-Vc<%J4YuX?59-qw7BWP_-Qd!9qst(;-Roe?&Iw|NXTZMOk5* zzxQ`3`R2O4xKc{P%=r4Ry*ES?(4POT<3n8cQ1;<|7^?V_IdM8@V2OFtUpujc19S@O zcd{8L-f(;O|7|4c__lQvzPFEc?AR5xj$N*CEzf-l^wvKNH3iK7Ui$yN9Q|uSQ<%m@ zBZGg@m~J^cd}YV_-OylzI&^OATu0=^nak1vV$2)Y?U1RqzjD*&^&3=6-eP2Ln!Xp2w&EJ?~^NsV$lB)XpS>j|EO!6HTpR$uLpn0dzI@YCf>&+l}Uv*vs)BllZ^7oQ7*!c`WR;s`F;1F5z*McDE1;1l|v!UAf z=;n2TMy4k47lFfjVeFj_j7ge&KcZ}|J+F+s7vKO5}mG2Qr=cCy&F%iR6@Lv#|x({-Ij0Bh1}x2)SSXqZ94 z&GpZMbBWSrp*)bVqJW_L ze;?+=jLH7>Aq_xm1Ai?E{0_uW{KbmP=9t%%f62<|Nfak5#k%c)=E#))^%-mti~s8# zYW(R@GvfVWe|m1$IJgE^nPmk6{hyv&HHq-HRCb+R0Ro$m$-MrHOn{oHFs=U#+`hP> z=rSbA>%vgLroYxh;YwHR@9zypX?eN)E$2pqB{UJU7BE0qsL&()y<(z(7-4tu-~0Qj z?Bv~x=FEPFyC$i8gYrVA<-c|f@rvNKe%FXff0p%M1m2#{UB4mViYp4ad{!!I@ zRW>WuzdwWdv+7Bn^^q41=r?26e>fZx8gkVPx1JX>EXP&sp4R=fK_&btGtq_r6M~1Q z^E&3n>A*#8-G9GE^heaZ!g@X+{Jrr19+vcOW+kj+BJk!;%wNP%L)0{KnE`>r9X! zfTzuH<2#pV_@J=wj^8Y*e?o`#u^jn%S~R=!*j^e6CdwhlSI7RKmRl&iCq=?DKYh@p zteZu)>KP?Pu{87w`DlJGa(U|xtWWT%9!cx2pQ%Tf;SPNWj!r$_f6MlDtLyR^7sqmb zEgiEe7@KCTP2K#P{jmqAaYtwUs_4A3^`}pHY^I>8adpo8{9E9>ZIsfU`T9!YLw?;7 zqDCzo`fYHY$^xB3@p4)d_vIlvEU;u(X=lp7B2Q02|LyI7g+4%+B{DDm=I#_zEhoRs z-LB?eS7|AjZlh7yKNr#1fxS7(ujMR;ahfpVXQw#&hRQxzqNnwb&2+hPly;{KeEyg@ zt8-@zE>wF7$Gi&pTrhgE@Ybe*#&?LIgGsTVKQ^Xdc0*lW6R?|Ha z;qD(tGM#4{y;xO5oq`XK2b(HL<;ZtLn8Vh zkruq$$B~R~^LoH=zDRDMSbXtJc*Pj|n_F==;7HIrUtq1}9P?vv z`Pi?qmjN{s&X(0#$p68uvs4S86mY)HX8ggnBeRUxlu=<}(j$!f&5$Oka3AeLQBUo{ zF+tc=L6gM>xz}{qI)y*i8KYWgK59*9b}vinu|EyhEbiS+5oaa0;uY~*n}xzBhQ7>b z`8PSn;IHv*qfi?lUXf5%SL`P9M?flwIX05%c5EbL*|Ji_A?&6yWw>D@+_S|zzqauM zR13bFaWh)QPe(FMIHx_jx9;5oI0~H2?)ds!PRzA<(Qw)JunX5SXOyq*q2Sel`*lKJ z{7De!4e%AsW?j-4Li0~JA(_aB>QtGW+I7p&35Cnn^J_6S8n@m{d%VfDoDHI54a+)u z_U*uusm4ZIm0U?ULZR9XX>qETkmq$E72MpVC<>B#WRx9VW_+e^V~EN7PcZQbjr z#lzi!1qA2HM6H#Q_6>5Ic3|tO6#nFqGZSces&mIfy=D_aR>>yUXV1$OwbsAuDEx$k zW~K?Isy$s%Lx=d=P4D`#I$Xb{e_KvAlG2Hg0fNhzIAK+s5yNzY;*b(T2w?L1ck$$O zbTj-Kh4g^G7E8iWidP{p2FOXX`UT$XOHm4suUwGe_T-e6$@{@AxYf+In6)UkdnV~# z?_)+cCBb}=w2Tb5+1c5nF3U?F9OtJ#V5$Nqz04fBmcCQVZjmJnsTA{PcJ4AQB+Ndq z!pIBwZc4kx6FPUeo-U=6lmsV(y$Pb7j4Y zJuA+0rD6s2rg^_gKin#LR@>IbjHwQ0PRjlnc&|xK{qZ+n9(NySTvTt*3ZbXiZZL#V zhcK+}J}A2~zc1jto3DzDL}PRF0{+zjD*J32?9Ivr6C0m=tHpT!V-&Am!--u(Dl*%m zEk>h#FKnx^tG-_}qPwzi@AD?cM=CB04G~dMTnQSf2NSe&kN=pSzt^H|^SCS5#{Jx6 ztvuc19>TcIP1ws#!op0iR?ouKYXy#WZzQb@vzDeRirr;!5%;?71|O%^$Vdg-569lb zVe1MmK=Cj0k|byjZb%q0e{9YNm%_H5VKE~d{mBm7NMMXv8s~vh4yC2tE{^94;&8Y}6VCYDo7KS*H|wL%_AbGtl?EYJSH*w6(R1`V z_ma}-;$|GE`eU&66})is&(docibG?NawVm8M@} zW=hu#C=O}Btgq18hCXvtl=*OSb}x40-Oe9maGopXbn983&D=Y*Ek&=)d$P*RS=e!a zPj~BtU5!JL>{7ApBT)MJ1%GfvpEu)7;Z}+lLoP%k=0;BI_H*a}B8nl~k zFwDhy4!F!#utJz{mtE?m+xwH(vPK&JD9EfpqB2mF&+$7I=N90N-z6l1MV4CRC04Ba za!e*t>nSeU1O8>1`+)4b>LaddX|Yy|_j^vh@NqnFL@VQnaa&4>MWr*m%w?PG@-Lra z(U$8B-Jk_-1}FNN3t&Rbbs2BkHd_+7Q$fRs;!p?zQ$&y&ja;;^GSXq_#=R3eE9u!i z=_dBbh0x-%BiW&Aq$pmOFg#iBUmz0fG~0Hw=+V|*T!RXom6cWRt1B0_mT@>3zfVk@ z3E(=*oBer7qQ>sR+z%dE=H>(q24}*EuGV9T{aP8uTS4)+GwRshWRi8x>v1^{8;D%f zmDFBuh9k!*JoC_n?~1uZmm~Qq!?bJoEGNxFcTQ*VCA1p?fv_*E#$C%ao7)ke+q1){ zIbrMey+^iOd3S!R|8ONLPSgz@P;U2A`{})nfEqv-p zG&bFKF`TtDu~HLx!U;P0l8${0VMpI935BZkJR&r)q255rwDxCTy;KDEzBYvbtp^dnWf!M zOTo22JA16ER2rf#bM1qj9NCi2i?d_B9X-p|UvCTb%5yGU6dw$}AFSygz0JXYe!K2m z(PW9B^RcC2^}?xQpA;OZ@IJ)EJWyvko-oIh36ry%apjP0z+f7ox~B2bMWb(&H?9Fr z!FhZfl&r#)mhG!No%HTbXZ!bXDFDUUQzuoCM~_pBFM8{*!%{7c@0@%UbE0H0^1$n} zQHnma$zXBCp3K5U)ge-Z8&Q4ED)Ya5T-XAGg5>wVn3NWTjh&=gcrzna)H)-T9Iuhv zFK$FjQ7i^%&Fj^z6@Rpw{`tXTpuD!TlZ~h!Q9d&525%3%J`<(jwGF+3=m|l9OSO@P zpg@IN!WJ51{*{-1ShE4Pv<;Hxu|ZkDa1aB~CzZMifg4?{J8U0$4^1J|xzjB=5f zq64q3Y8<+!i>3xDiV66hiDLG1ox00Y{=^rb$W6Vpl{bR03#RUgH4RYNgad};4L z6trdl!YLGo5>KbdW#@t&6}>uqg=jv8XZ0_cn3#y;JMS0c3-HpMeHY!VC%V~la&n54 zbf$KN-38&iJszIi!(6)LScX^8$?d<*x0AyCSa_zk30XSt5A>`oO&bHBcg z90M^3k7f3ZQ?c@XL0R3s@$5mj_IAy%`)Ea>@Z=6=$oYk3?rNLoac^;@gx~$~W11!U zb86m8E-o%v!*TIN!eR60!+KsSglKkisQxW-&jmH+XN$W(mT|DkKnQj(D3Ia&dXXD> z<;jf9{Ho^yAZHdTdvWuwYHF2hnbZGzz5HEccZb z+xx{z>Nq=odh9G0J%x$|ns;ZJAu)f;%`$KH-Y8DO`+eH=uJMV9J5XZu6_YA+{(*db zQ`4RcvINVp2#_Mz@$d;6o}`ZXppPTg1x1%Pe(H}F%gq1uo0Gv;OoN!V76AH9w}OB;{6`IDV~+ zN7FU3Ju7*zBbg0U3r|NDinfky(@ku%9enD?<;vT#Gt;Skb-$mxZ2P?;A|gK5P{y8P zmA1Fc!bW-&b=mZcQPDG9?wPN)DPlGV?oCw(<#+?iu~^vOvZqYLha%1nW=N_;hDna; z-ktHnmF3#z=Dkohj0`?dJ)QqkG^SaGVs z4VKd;GB}Q`$;**+90uT#h~FA{pa`;O(OmY z2pGVY8#d5+*t@!VyP9G$EP<%&xY4$T#U zW=d^2Gbpo7;uNb*wWOym?)g@EgptZ#d4c~D-OgJ2+Nw%F6T%|iXNOp4Z7$`mcWUuh z&3^_MC^$LgQ-=iTe+jkw8F0-gG5tgoks`rxmuZ_i#p}V0FE0C5R$B0d)6vgRP_k2Y zRT{U6LGhY3Rn8Zs9CW;!{y9a5ajLQ-m<5L^#?L$m^1WcIW{pc1FMhY%u_4E``#dGV zh-=wbT{`E~B_ZL809PFyo?*%jk{faY+NLHv1Ph)>&$bpjY)EO`#+R^DtjqGs5zVx( zR8^Hi_Eei`o_HN^|C-9W(ULO1ZNtLXJ6ELpLXJ;3w`r&e2`kNA<+Rm^4X56M-Gaqn zymB4Jvw0*fvEQ92HKG-LIF6Ziiqjnxt_Z9O5)%~2$JHM?asc!Ud z?pEc&;g(*`h1zxm>RVOH=+g0IC$)96&gM+7|UmX-qeUxaVyl~?rS%`tw zTne5~*ljxN7O8~37{({=t&v$waQ6-1Hk~M3aW?+&d2{H@KjGW4%AB=@S4D?I^9qWe zHNr9*6OHfL39c>U?6H^s87hhEa;%Id=x+?da&#p zPuM6sRYio;;_R=lTt2qpZvyx+_#PLRw7U(Zxl~9o?^4;P#j;38cex%L*?Jj+(MT~Z zUd~Q=LpGLxbd*PFW}1#^Qz^v)EON}a^(Y;^a4L6a_{oQTErrYJHe1jRuWZI8E1PJE zV${`uOWT{%-#Ky}Bdep3S#rUGVM12lvu?2uj|x)=fCxPU?XkB7dInfnSo%H`)51@C zAd71!dZ!w}M2`C@Li!lLUOv{~Zuv@}b)%(lY9-<7wU#99{QKVxUitYcgvmIaI9gfh zcOSr`kRDemlFSH&Ni`#kiMx4)Q$2TJ^H&c2B)JidpQe3Zo_;LZt7SX!$p_nZ#gW~FR)8pCFA8Nuf{;K0#uR8|?22+&>K*YZGOtT5?jflOL zl!U?_1(m_mKls!!7=F%LqqQXpX2!d;PVpE(U03*YE5pI8Iru`FiY!5-yu3Wmm$(gp z4}82cnxevVvU{R4hF=G0C~d~I<3v_@l5)RA*CqeSg}#~5HsPO@0sTc_Ws?V$19x|r z<|f)OAXQ`7j62?>7g^PzC&L@dhTp!aqB3Dq#!sw~(xcVgj02dmva9ZFv?}i&e{Jgk zC5SmEgQOj-*_`KkyRQ%}h#4#>;>TE>7M}*%rhurrHT@LHub)5Ve*Vg}YfRvh!zxTL zei4fmy32hApw6qhQ5g&*xFll&0z?huID@+tzLGWcc0yiW=gM>C{Rtn6w*3MJmE8!u zF6b~Tl-5i)9O&9aVj|Lur}e{i{=mq1O?dx@bZXru`PEf^jP`j5&N}apPXt8v*HBDY zP9-wU0;ffVpyMWa#YA3;g!?=NDmcEeiYKYI2?-nZStatzs;#bZdn_Tfddho0p9#48 zV^FvHw^kmhm>tiZC@tqp9@XBAD0xIlV4d*0>aD5W1q+nB>RfToeonUiZyhfbIfkT9 zUu}bo9I3cKa)5@PY3qlZbpW_bh>*E)NmCkgeyF2AhwnO4+mt}u*uP}|$Za+~SmOh= zYeVj{gbxsdz5wET{km}Kk)F9<{dx_`Vl$>xWUGJMq=)g#lU}&-8pL^agZ+fTW3n`r zeu9gL1mDxGemf17H^*F-9T}S|kL-(2PWC}jPKuV~$`)F>Iqsj-IdyIfHq+_4oV2!; zE&xOUteAUjvzK}33xkU1X^*|x?=hII9l;X!`%rR}L?mR`RY&^Zxwx`U{}!8TFZ%Q` z&DSXNk4v9hW9meMimcb{Scikzi%ZoKgKYi{l}A2nW!<~E1i%8Wnz%@xtB$7h@pJKI zSJM*%KRg@O$7JMroO#_8J-F45l&$$KNv|wTqvWUSv_jTo(RS@~!l`U+An5TfY9tpN zr8GS64MD@6>sLjku|$SKm8|-%UnKoJVq*=cm90%(VAi|t%}Jkz@IlA@hU-K}4Fpsm~@!WDJe<|TWO`7;n7 z2XAw?sr59snqKuck28mFVlYbCNe`3TwZD+nyt5tncFTi5W0E$it$!ZSfPoEx0RwX= zkkS(~o*}9Qm#!CLcP>V-U@#fG`QrH}4)>8A@wmy4uP;8A0 z`qUTH)qr%O`vuWLIcuY$?XMSFQv&_1cG9CgSYNy%Vn^-On9Nd>i$j5mgatagxuI6 zrtZD{%d;>TBPW2~M0yu3QFWQUe?8U#WVfax0~;`i6f=#bPiR zJ3BjV>enm(ej@3S@ZxwkU`BVE;$Gufl}x}Pc;)0s`hP`Raao=Y>kdJR5Wr9ym1fwv zRA2tFjL!h$H$5VRjZ54_b`PnX<3wkv7i&3G&wcRxo9|O^fCBtvF`c5ba{->nP0S|T z%JMmU{4|HxhD~5AV&N@*oWD164{h5^th-gpo4Y>tN(_^v<$Di348}uSO-*e#Bcp>0 z+KRy)xs~?TK}j{|rVFQqQ#)y}q60kJR~ags@qmhYL2dlV)w5^Ms$RXCa}?C3)oFQt zurBrr&x8unNKZO!eT0%-em-r(F>FoIv;rm_y9 zHIzdnMVqzEq)BUxZpB{G6g9ndcIJyo6PWHt*Y3rulw_kAjX4f@Keqm@hYh>z@Nj&x z_1Vfw$m4M#P|vGv34%rU0Y&s7Qh@u-q%wF{SFso z=5PBKgYDc=WL~?W0%spOJ;&5{NYYA&Lor{T(xD7x6Db z$^c5zV)hYbh$@#s2#efJQ7soCo&}Kn>b6xOD5dZvWfe&YmRXIq9&@8*9~L6&LMf}+ zshc+=NV+fuN`2LfQ(aTSbbCZq<*rO!M+<%GU$mqG*!ZlN&3NZEXf5U8EmY&LCiVeX zZAFi`7#|z^l$Kr6mZ%IoP>$binrq{3>Zeods63)U=~UY^;$cHJFQrtTP}?F0K}Bt- zZv#mts#mq?MavDCL+-csY(E`L4m z6H{lXdk_a89V`PS80*>!@gY=+GT+b<5_f!9-f$gvc~F2pA*cD(%E>&kU1_!NU^@EG z<=9tvUGG-Q24%h3(KgxwL`C6Z*96Hu+&>ECyE4wEJx?k&bpi5=e2CrIee9&#rY&U@ z;NzL)3QBeqevaP>_-xvrFMXq%W>s+tHuzSW>Mr>U%r((?jFW3 zgwpBW#Nrw!^t*nQaZbPrjJl2=id<9UaVFLrdV7D)d`uhzq z8mR)JLp5Jk#WA3ftdkE*V4&1{a@O~tL?>E;Rm$2pA-!31b%~mdxUH8iix#-#I`>P) zT44ORd*oD9_D+yucBP+zUa99Ve%!{pO>t^@GtFAG836%=QB368z$9q`F*{MWON&O%W)p$sm@ zlG5oLTyU^rqa8GS)`8Cw=2vowjOCQE$^xj zDY17dVH~Ikt&37D^VfA|4s%(a&n$q~Fo_zfqG1J8Vhdv`pFG~qxIk^7kqN0#mjj9u z+H$(XuFGDJxz!k|Djobgr;h5lE?raukMxizTap+x;g1>-vq`W&VKoBGPIS#R^ydcg<=rY&6 zRq}5Iluyr{-TDa?-HD^#5Noqw%9Pk7DO~aXb<-=(f7Te?ECbB}RB%7lIQ05l3Do1gJGCyD zf_J*4rnUz#)l&jzSF?c5si-ovhY0J-Z9MTEfsc$^}V0WHQ z_%5;L>-VcpExXGmYNkI!&5B>SJp=)P>>n>}Ay^Xryo~0KIfZZ=_luzmVOHpjQwfa`(qVEq@lO<_?g(yk!^en@or1Fq} zbVoVP&c&W0k{fdk)jp@Bq*uH{%#%af{tFt3K$1h`^!e*I9&f+Hg%|ZGcq@716NP*8 zu8)A4C_>0bIkg8Ehs3#a=Q^jkKP(K#mqoa9uprnGkZB&;mxP+(;o)1buB9$2#-J{w z!GiIdJKvr8;@c=CY*c5Jc-ZA~7SSIw)cQ{I&w|MddW-ixLEV(T#LVtz%)%J)&gT8l z?&#>OIAUIRno;6|UlVdGo#tii=98bP5g^z#qEHJdiTID_@_oQFuij#JsoTrNuK;P3 z?%Y8%d4LzedufNY2x`XKVw(5!#h)$YCn@q)?6+miUHo`gKU9Oypby3iRy_PcE7cf= z4nFohEe5>?9MZ*GG zH@wFlFGa z+xBK2>}WFx8|&8p5E&Uc2SXCc$pLOe&x@b*hpc#EE#4zJtVk}pdtI>{6NIAy_Lk4x3X1YE9 zrYrQ+M#yu$K9_C8Jd6s4GyMHxFr|?-o-=X_#-s2jzR5j){P^QU!D1;G1K&HIdkClO znM7zHq_U9zm8zG#_O;$QQ<?_F z`sQ}W=_XN+$C53=He+!4> zuac+oo;W@Rb_#^IT+dFuLv%(5!>8{94#@7#VSh(eO)dLC#`z#&gA10}+Rskq z|1fG>zIb?-IURhnIIdPc3K|FFcQ%-$)hYZ+b|LV=9NNzh2A@#?LCyUTZK4FFuTVjG zq3kG`3|J6vSb*raoMzl|{_6WuqcghgN04*U15ixBlfUVL^o**_A^C*D<%MHr-6!1Z zH60OzhDKjNUzKcx6<@u2^#%140h|ln{yZW`%uEO6z14igWFvG4%Idg-PO6tBW*E=G z3!Ra#Fs>u3i-E?5PH5yGiSF1n0mg4`BP8eS?5wJ)D*n7V5^Z(~W?Q^dQiSkAWh+s6 z(6W+6X5+vAVKWq9gQQ4U%01mFoFc%`xHB(jD0J{Dw%fJE~4;zZ2!vmpvGI z-_H0c+F!O9|0v7`neR+2L8*Jz&p@L{@NVN=J(_?~M?r0T%xS^WKl-r^L`QL7V)U}l z*o2~&NKEu_JlAenVWTt%U3mIcrSNNknsyhb^IU||ZQ0xk!NN|byC>t5a^mFl`DeYR zp+3GKK4<`g0Rm`>1R>~34I4%PS&zPa*nplG&udDFyNFD)?;EhApDzbq{VS(ZxWAp4 zhHS-(xc&Fvf7qsYe>nr$?0xcXbDV=(wGf2A@6=2+?Jat24v1`trcvSmZORwWi9X1- zyafy9intBm%|H~}wtahuEJ+9AslbY(55)r&z;7nEaw?7NIPad1Pt4Ff z0mYEOD+2a-hp{j|dedmmND^(B=tw9822}2L%KB-*^ke@UJ?~!=dzJG70|T+O5f6nC zlp+w$!v$qir%8qsE3@AypC;F#Dw zyLW#-YW(?#FlylHL*Hs-meH(8~9r)KQT)h(HrOX07 z7NgJQY0X1P9zB{G6fAf*__~!qs8BXlfwEqxdL6Xgnpod#kgU@8k)EC8>*C+PU!ZWw z!X`4H6WU<3!J=)O={VQ`?#$0s@E}nCo7v;+fE>R5^>Q#NyXu`JZV6N7M^D8cid`5k zK)t6|Cxx{}!T7s%*BEwTBq7ziu*CRRuRCWBUDbE7!g;S^jB*MLD3zcXar*S>aTb2l zelM}v!CQW}GP|sUWZ!Ne3VcvUE_sRf9PdGOBK{_M2P2!C@;P5+=P21%2X=t-XEMwC z<+k0wUkl*wPWOYa!ooPAk$A5*p-$}H_fJH%5*9iK!4D-4Pw2U>*N3&iZ0>GIpDZvW zE&&3d%L<)>B86=c0R&6AFZH0|mGo>|xxwgC>h z^plZjdfIX;1px8shWLVnw^xlij9m70{&!6P2!k+(nkm;&A`3E=xy5hFKO#K@EIuXF z%}%(iNI_oJ#h)_Ok^_#W7jnC~V3(c+x*J5!K$oCwkGiv!Vt4ok+%Z?p8X#M%|5GnRb+vDyff3;_qw0weabDoJ`Fao8w zLcrV5uC6{fVPuP8sOV zohV?{&apI)IrB=}x{VuxU+5K^c~9Z$$+m|?j&E4#Ll)*dV|R1rhwfo_Om@K&Rp_kw zt;*H+aC?RcE3{DyJl@E&9=+k3+Vi9tDvLL=E(H(uE7Dm_v-W{|>pHwEHZ4sgDSx*8 zTH2jUeG^kNExHrJsH=>^IyW7J_4y`TWcgu-El)5Kd8WmtcLbZs-t~5%X!A9$QZLp) zp`Ty(3S4L6OZf0#YR?%CC)_3XazDFNOw}_kpA+@k`+2~5(LPggV|r&5N4H=0*0@9Z_sa{~0#&)QW7r0e6B-GM+*YF6X&K3KgyRr);y0@JT@N z?TWk?T#BWbAd{a0FYXu4AAIUEd+YnB2X*h1S;LMIjaMLCPzwr!@^60i@X>tVYh>m3jYXlFQAiQt)Z)`#-ybvT+Al@r%!}h#C92eTC ztR_E>EC33a032Kie$#=fmLQ zVQA03emzl-`Wu5=h@NLV)(b%EEQ_gEeapII(MJLYKIJsOt0<8q;yR$3nS-GYId3FB zpu*cuR{@-HD%EYJbmY`fvt{{{$~70lOg~hJRdEhZMO%61M#(ClKeWMqxB7)p_3IJ? zwpMjVdLha0;ak&~hcFpfF>rovd7-6Ha-;%VCDvoE=UcyxzyH@#~a?+ia{T2#FcmBgy3fG8_ zRNROOv9_=^ekyjiJ{pyLo$S}Pp~(Od5s}-Y`OZIHDDIb)?J+>DF7$$`-L)QkJc?(V zehg0W78=Hg1ab?9yBt^}-2)1l=1t0zXmBoA@F6q+yLvxzw}TtggJTQ#&2BKGIofB) zHTI9gD76(Nd2^ntYzd&U|JAaxqVg>MU1H+#KyJZsmECK!pN9O6hE2SdTX_=cn1Rz_ zV>mNG>&0J(YG(wKI#5+Gyl+o?iUv3J#%Csbi}hddvuRL z6;~?gGOrZ2l@!Y>Ajl>K3uR^*8mbJ`9ih~6nA{V;b=5@MuqBMTmX{cEAX2n4>;8+( zlS-*=2Q7A#A5&3LJ!7S_S=+QZX^yh-q*pK@Zr0gvi(3n{DAJC+Ij?rMRb+BO^ zCYw)69WY`b@}MQKGg`Rd5r;i?A9bm-HPn5}M>dE=0A3*tLk&R$Q#{NP$+{5PjPs|S`XeLWOEgICw|O|IUFzU!i z6fR(b4t?swTe8{6J3(7@EJ;pySsN!@EzSj1Rc*9Qu1c5;G_aP0sYxuD1QwXTeXVN} zp%AFw2BT7p+txU{Bzu((wBoVycT_eQEE!l1HzI2u2ygW^Cw_ z_P(8C&V+^2fFQe6lgMv_mPD3CdBV$QhuwK!V%m1s8r6&ae!(c971lQyvXExaFT*c! z0Cssx7Me3Tt;VTUoeXzQqB4k;(DM)uYeWIMwLDKsT?}-g{PLLIf4Mwb!+ImG?9r;{ zFun@rdnM+A)m?^+sVR%WMT6z$@h?vq*mo_4A@B~SgBbA}g+86*OWX|;TxMxKyr@gN zavfpjjJ2s!;fm%>uU3Aj`3PL%sS=V7r@NrOWsM=@0FYb4$}r2&+_t>6jP1TB70_Eu zD^sF&=J-475N)M;4P))ivftN4$6SO*LVeiP~$gE{v`Sw)hj-G<5rY$DF8Bu!cM zT71Bv|^s~?pYS3{g!0X1h-2M>dEy??{ zCah4^W^rkn;Bbs&Z~syu4;pewRbou;ZT*qrjL+c}?awU9A@QvF{D6OM)>bV59D~O= zZNZJP(JXfBfIq&|m6N_msc{1#$S_mRozsER&6T5@NhJ)NI(^0$BfuLQXzvWo=X8;Z z=T_{U4%#nPqsrmq-L`s+VmCVgM+q65xaKs| z$U0=|I?wB`+@v89ZMqR>c0QXY*=+Y=e+=`7l#}^3JBP@|{1R~$pxU9SgLh!^C@*y^ z^GK^o0?g5((ZnZ+$#KdCp-Nit>o7(*CWlSO?LFgC;a#f z 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

*$hI3G#u%WdV|9<`IE_VBVx2~ei~?p& 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


AewDOjh!MMu(vjQJBsiX3ZCmAui zWc;QcnJqV_#AEzj@PBusvCWUSyasvqk@Il7nE9>e3uXi8zDZQaDjwZKXzUxLHCW!t zSyky-E2R5;6A%_1i%}z#9_*2_mMMX2|T;k>M`b&3^Sm3nzmRP?E zS%0@U6m9OEcQghg^#l8|os zGt`j#TV5g&W*624KKp>7ZRrABzAb?K61+(oSIJL_mhmKG&3d`S!cXa3OWS@B3snRa z_1Sz|MU8)?O1h*gn_XB*fX;%}&``kY__|kFy~H74%MdIc z$1e%@3l=;=i|_+1dof7xSVM$3EFN-r#Aq6{W}!ht!Xri`LM;ss+JAQ=zwquP4WHp9 z#3ld`*7dmD+n$%9+EdIsIh8@$up?7m_&GUgiBsD@yR_C|of?4-F*vvonEAL5e9zDb zM#CTeqijyM28XMYvSt)>!Q<3vZ*5-Fs?R!Kq|asAPd$*u{vrwSyqs20g_1DduwljR zhe%_K2wdYUatHM#`fK&A9~YD!Xy}QXTiM7j2pEmQ32`S!an|o$nx^ikA^qF?p|+>T zgRI}Q>BMcQwp-le(C^;k>!i#bQR^TGJ8pUV%WlR#+Ep|*wmUktkUDM{RW8)U*XruG z;SCH;?TW1NKJj#tzQ!3<$={c4;m`47LcFQ)4y(K#mjbTI1^R%07afr)es*wAkp;JH zpwnWAY8rH3eA1oL7>T~EoYH^}=8G5vKQzMc|IGSS`nPx-0!nNPYd(=CwH@Dt;tbnp zePm*p9^c>`H_>a!wh-^77GvkzX2DBHCKB=v^dUhR$S{CL0!Di-) z>Sgaz<7!V89P2} z8xC~5(DvcQ^~(u}0nHWS#EZA@WeUG!wEg`HNI7}0 zh%t?!Fs(v)7$>tdD2xy}s**k&s+h2V))fBmA7!-$vLy42l&dK_9*0bloa=iKcAI9E zBSwQxaL4fV$qWGC`gu?5Oub@H!q^Fs+rI%F`RBf7Qoji~mPpVscY27i1pLk}4#moj z5w5n}juv&(as-+T>FzvY55?ujbesrYk_tEny-ew#@7i;bjwS2iEKmB`=gp_Bj9Wa9 z?({FB+Co-yp-Z&u>YQA_RI{$m7V{59{vp*KTYgXI&nifWdn&R6l3oH;!{L1?7nWn{9hNSH5J7u4um=8H(0u{fMwYs=$E z-WDCv##9ubV zH_e)R@8qK8CD0BjgEkct0Y^7u^WMj8aE^F-m)0x|9RjaM2qk}3v3@HkcJaJ+ebqm- z0i4yym{7;k61?5id;dC3 z%|IQ+t*oqW{Wx8ViyRgp(N!u_ScamI0C{Qi8M}4dn>V=eSwZEF&@leN(;ED-6spgp ziqB4pGrCPazju=?hNWz<@8E6sLs^?5r{A}N#XQUX8>NgI{2eA*?L<2U_p*X*3FG0x z`bR}BcAcEj9g$HVstbLWZc-@!V@hisqA21%1TyXi*)CRi{sMXc6}N5y-^Wj)y0r+q z!fs5EWT-p9!|`89IoSNDQoe#XD>brePqe*t#tlwfWntBDR|%Bf81AA_&pl4J&o`mQ z9V=k5p6_)=0RaB_tH9TOOzo&OCrFpPt+ktY)!}3d;RQ+`K$s{MG`_x{WTFTr*sDjS z{|~iLNF=9>hs~(R#o<#dQOh$~xj^39taL@;CegMoRst63k8J?KLFbEt;6hmR{g zYK6Du)OJoR=K~z2$HSP3e;Q(Kr7BVY-Q|OjL%=#a=8FXNCH5O<6qN9)(Gri>6hP?A zNVrOtMepe;D-QTJ`sLfDSNwOMm0j`}Lc0g_;tCSD9alx|-n@LPFzD)g|I@;Z(V5N7crbH+VXoKO@34sspG64;7gw1O?7;wOrIICtS74oTE_-3~k1;Uzx} z^(EppG-KURgX>exx~i-*Eguq;(ND70r@`&`r`Y2e{EP&xcu4RA=Fi^ApgRu|J>s~r`BQ)9^Or%1eijMuZ5MJs^;w!mblCU+Wg#`fe zWtQuEVRQGs6WuGlcs;P^Hc2yvJ5E{NuIgoqir*p79(GIlMzDQ^N>4#;Yp>LcUp$9^ zXTc1i@sj0Y!K#Xl_kam@wPRgCNPdD~iISE#e$!}sz#br+EgcrjWX}@1zacU$Tk-Zd z)7@z?GZ)`<+C#wUhXhzLK;^6DCm~!@&-nXdOg!=pe?$3eAfn-h(@kPHBi)rg-CmP% zIkf%LHz+1>Ofghg^v!6{Mg}=@!gbk%djDS&KifY+V&j2KN7b#q)2|Lt2%@ z%!IDNeSE5S8f-p*STD*Lu${PM1Sblz(P;C5H%oKIM=1&CfBZbU%kRwKSga-{B`rcN z!}Ya?K$9-rfd}@`&1xNpKk3rg~1mG-p`6-4e)K(51JFnkXP|(zs z?*;sIdH^S*f18BR9-0HQPa0oECY>}4Ojs>EOQd4-T|VAe%vidkSy|aHrD+bXO}=;O z=~{l0DPcFcShE@ROnBEdEC1?t44V>sGlgG*Nq3DVLd`{;c|c5zr*h4r^qTQjA6s+& zNP9a3~aknn#^}~))6DI>g}Og>51kJm-IAM zdP{Nv9*Jue({XX%t9#{2G=CI%{Gw3+>|W7->nSoF#C+yuztj45XQru;VX!; zP$QG3rKL}bT?PI+D@p#^{ol+=5yh^L?eYQ~qe{@eyTdzFSX$F9;Tg3q`W5J11I)r7 z{?}QdNqKwcO#MNzYPwAmT-Lz{TOe7l-1A*(6UOCIb3NG&#GGdg_hK|r;1sv^ASbY* zR;pB&=48i%Pi^t5)_9aVyd*+8;TQJy&TUJ)^|w_-SUIDjq{!4b3|DcOR+l^M@(yy9 zgG+Dk&(oFcfP91f^9h!Ta#7+Ocj|_cFbyM0Nsdx=vqM=1+;`) zcZ>_i1kviAUjch-$5K8dysFD_jAzbi0 z%{|e6EK=ij1Qvx|P~1$6w-{H7kGW3@tp9wF{eQ1A;0~3@uUTMF?)0TD0j9MN z=?y(VQak$187g9pl98RKc>p&C?a|s499`rm&&h`+O^LH8|9;jH_bD=j%$DE^m+^Ao zWd>B0!g=k>$&N_YwunW#oVn4Lv9wu=uq~CksI~u2Y%Q(#avw zu;YfnaTnL=?0hFVrFG6LO$n$8zm8Z7PqGlfqX|_c?O|Tljc%Ho`n6ukRe3(ra3v%I zGEbNuUqzsChN^!r3XR?Q|fo<0V*P%3N7q z+UaKIMBM;zZ)WhE7dyw*{(@tvDK8c&f5KAyaIm83-8l4|j+ za4cZrX3%Ze>m%^4v2K51{{--VuLb|3`e+JO90D<4F2$W=1NHK+uU5HyZNk#<#bxe= z>J#^yi-yE+^RxR5M5}%b zX~!Jfkg#z|X{HC_?{*jD7du9Ccp2=i+D!WZ#F`qZTj#=@3s^Eya+`+ev>)9QyucJ7Y~N`L(#$AZh?Fq2~EHC+z2(!nK$ zH~npGL}=n{;xCNkn~bn}9ba)Zmg~aQ{4D8QO~W*^9|DE@S*Q|M_pKk&XUWCn%)co+ z-}$Z96>c(mMN~QY)Gxw0)uQDWiQBZ#^mX~UqnLsjKg-PiVpH(K&y3=*Y;~`j$M$QC zjFi5^OeAEUgEtV`&vj+?0h3DbGcA|CQv6y<^&%&+he_~yTKS#+BJYGQ}7NhJ+_ z5H>_wlc5g}F2iCGTTbHw+VHqa+tnij8Dqu24=NunIZviw{YyRZ-iu6bJyYm;0SN$H za2t%h?7cicQTonxqHf`3Z0T_RlpYH#J?$=xTsY<`#`^v({8n1Q7p_!n$V5#oxQ`>@ zq)N+?MFlY>Wa!5^9h|`ThRRD3G>QXo{$Ynk9=f?tH8i|#c_vfQZjrw(Lri2~>}kJN zxm+1qw}L6;jYF~Hs_t3(*$$7UlvAC8gs<+0p{bLf#K>?YTpTen9JR7KiP^=Lu?_tE z`X%$}V!-w9`a8hAe`MK>z^hr!nz7|pgaLJ2$bpOUax?tx$8HA(w3&eYWd0WS{L+Gz zf40Ha>qfYdO6c6dAFI&~7dvA=g`7X@1Xr&B81#*K4Qls_mZ@3Y_K}QvC2Y#Q7^~n_ zgmdCl=X{I{t#THftpQs~02(&x(lpK@!t-rt9o^jAG5p5+U#0=(y^C3Qh6`r2;ce>p zqBO!O|4OHcxD8X{GUI2+s*XuCPiJPBw??_;a1@6QzfJ3W*mlpOYtE9pbh>q}fxE5ue@a>W< zyqnb{xodOvT;tv*%h9u$aIQvE-n?z_dv(F%sw<+A%kYL)LCjGmZ6eU9mq^L2;QOs! z%PmX((F_mW@#GDUvrL#-DSMq`447x-JcOr!lN2R$IB!!iM7`S=`waC%c%6?7q1;bN7qYNT#CD!g3beSZ4~V8c6VcVoE6wz!g--e_gc-vp?WPl?~@j8DdYww?$|AJ9iAI z%gv~0pH3H}dE@M*-z-!__vIFg(XqjPutq6uMqDZ%Xn83Uw@yz77(UOOp;6u?OW|Kcg>z9mIH zkjb+Gr$pH(S$@WRw@;EMw&xn(nj4t@wmRd#8ys`?5YYe3(AOAdSRo)FaHensATk`6 zBVUWms7H9zA9K|(S?UKL0~Onw2WQ)MT6aE4o>X76x)(GY5;|sO%+j=huvR?CZv6co zDroxP>r;fJ%6xs(!dk<2Y2zNT^+9^;?}z>HIutP@IjkwpF)#EU!?mMiuM=r`FX%!? zgS1g|e}5hS>O0Lc+L<$p7dXHo*kbNI979Xu)2tu1M-UgRgZ`+mSANcGbANqwuWO$OjqMMn#c zMOgb@(CBl|^NwI^&rDzd?hXdo{d~1Yy>svCmJTu#?&N=`hxYpQJ#EO8xQIJR3tlod z0VKqGW#spMtKD~itfCLG)J}mm`>cu~16VHIT0N7_ zy1{zVYkz(_ri<)HN}rEjon~31ibcdD&=eiiyn%2ArQ5=w$$ALz_uBf@tZC;)!uk&i%&@VwTY~G#M*-&1$fl#J!wFu)c(F0 zxyQi2!tDFRQ!V&z)xz6%kTQ8@ytv+$a*#kUTeDPl`j4qu8tOgUlbOhk5jnwwpS0U9 zphz+JshMR1R2MdPCshf(1urkpHxk<^P(eHB9#;_$HeNV6%Sc2uZpB=7Me#Nn&gQ}I zhckFfB(`5@>JUiyPC@BS*^W0ylk@<9h&lR0mg%}_#QS>nw|JX0_Eu-bvRSh#ov%d^ zoA<+L&sp{Y5{hO?280 zYUe&iIbrzY_evSCWEdKYE9>V=%D7~T`KZwx+n(rtuk~o$Q0|nC2>tA+pTL(3+Jvqy zpm{t4Iex!YYBhnZ0=k6>AY*Y7i>sA&@{Sh{qBPVV{b1&26?Q(n2;TO_AU+9}ac+q= zl}k`|`p#!#j;x#K2NmK(WVn3W)^Nu+@a53+F26F+iGHOf?NKwUbQ54$a$z!~QvJrS zPq*K~{D5wB|CAfR*QW2D-iTyVd3A@72_Vfm1hPJXQ+Qb4!n#S8#i=Cuw|{K=Ot5ziOn_90(Sh*dR0r?4g7CUcG4f);>w9Sh#Kn+2 z{tyFx@RUyEUK$e$XWa5*`E}>+(<5Esk?b`W&JOPa7h$NWR4oOh+Z&8Gu&XUEXn-nSWv@Pe)1Z|2J*vJfjr zIksTRZj2qOUS?9})cDv$Kw3s%XPn&Q9p1j~!XPWLc6N3l+R>1^@I<8G2#Upj+}Phg zzp15Mzurf`Q50SYVy|}kvViw2Cac6JOS9y5t5}4vmp+0Tw<;9fnh%bZ4c96fU9D#i z2(-n1sy?65O*I1z_xT}LZx7)pZewG7N^;rBl-n&_8SOfm@N8pN*Iu4X0AQHyNNWnD z5&OT%GWQ<>Ltf>PH?n$zpXuJYKF)3k_5IA1P2FGMw3`+k6&qE=VS++Ut$`E@XeXil znKLlx5fW~nWtB_5>ycf41{rr`p*qQ)5z!M~X;9s^D~^*=T!V{x7{*_exoRVBdR&Z4 z%0q{jfhxUhMVx_2rt=t$yw1w}nbizQIoh9eYZsQ`3YJ-*Ip!H%J zkkyAx$4x6LkTK8J7_{G})!Z;NkT+)Mf999=LosxCap8`&tsp!!d@Z>CWE^YAioN9C z54Ohu#b%stPMi%RJ1%$h1Ax3xWjGRf_nBMA?lsN;$7}kG33EIxLnI#(e1V%z#hDQ= zkU8El#Cy-R6$rW>X^+Q*9(R{f)$eLiEj2QpO36La0)9yYbAvvW-j*Sh&24Xb;G^Kc zPmbw4#^gsvT@|&I%=HdW0SeyY0u&zu|HP(uT}S$LX zDkX!Nw?6@b1p)tCoZf>Q*0X4fIO4MeT_I4_m9 z+#T%dRb1!IjU>P8| zcB!u*zbNo}k(WNT28BAflChacQwZvm2+G4GamV#{ES&M9emUU{$kX~jJ7|qKAIMHa za-HyJr6EsLxbeg=il^q{kyqe^nRD684|?$3iNJ~7zvcSOD-BfVq%FLoXScP^f)2Ov z7wA@|gVTZ?7up6=6Mm2uPdof3EaFv%+@E!SMmh@1K%9^2_D z?a?{=p&q^aX{_dK5kJ%A+qMZdnRT8rcAzBWhjOXrrtI#y&F}7J zUD(bYwvgw_Bcr#E`&j!(gWoYUBlE(pemL8?qm6bQR59dqH=eHS2w6?3Xtw#3lCSYh zdSgJH<4Q2)2ejr?dfROD3|Q@*W%4}H(b)c$QR|3z{&s>Neibfp82H(AU43Yp{ZLY% zcXBAp8N*`1!LnY9tABTopH4Mrxjs=063Bbtm`zlntni$inv+2*hxLH(ibdZx6BhVv z#*vv5ts1DU*|Q3572SKNW|QmsrFE&t(6p2S2K-(o+HDT7paBGEkInm}czF!obDSi4 zRq6OL?6h*>noZEcoe@WFh@Kl)|;&X82yt(%6xK^ z6W1317UdWeHtodpi>nmDe)vuzaW9#@}VBm*{B!<$vkP(HP30qUoHz6i$K4# zT-2d`SyL<&f3PosodF9rXjVj=2$k8JUWzy&HOaX-#p0=iMN!cCuA9`qbZe_E&^4%Q*XT!C z!SvhtwvpxGZ?C7fOh4US?(i_tVg4pGIjBpP{~${K8&8{{$41m>#CAm6@^)SflCygL z+O@|&e(Z9U(8hUJL`d7m5P3akN#6TGFIEC}H+}tT@#4!vp#BgTFn0M?`wC|G@Hm(Q z5S|3#U`izt?kZ@dv&mZLC#$4|lxsm$0OBtYs~XuOJF#MDy4I$=1|+LS*1zT6U(+}2 z@0a+lb{DtwvS8lKW6^y|mkWUyBTI6LGd^vLTj;*k1dco&SiARR%g|_g^W(e5-lS7s z03;s3xrFC&fUA%;0PJNiQJE#t=Vz-6s-tK2PO8JU!cFArpN!i>5v23qb4JDW-)`#V zY9ITbFbe=6@sm3z)?1Vl65+@A&FJlAyg`n!oYCt35yh5=Mapw%?tI^P2)`!-mzQ90C(J62(7r zu|&0AjhWQ!D$MDpUCb$xbzkU57^_t0-56HMEWmjcsi3dPx1jsIJ%7i%`sK0E>zy)% zzFYn5*6J~@OcQDGBbT~AhN5;0> zx$1)Lt-CD#UrYLWasERxb;nTd@)h^_xjY{!y!VfE!mnt9b53G3&amBz>5TZqVBIFV zeqQhhi6V12QNr;h%S3hd+VdD0rUyTVO-eU_7?_xg6f@H1_i~K;s9RA28m!=#jGF#A zLE~2b#IQ}3*K@#)R#%XSvzv|NpUpP8JnQ{@Sf=p&k-7FhU9Qo06S?vZ(7+`Qnxc^# zN2^u}`W2HI^)5`nCyv22Om%0j(FQ=o#lj^!|Jgg!9#>9_HdL2H_biHdoINATXww=Q zn^dUmu2m3%;fSN8ep?DXj{oMIj|P3Ae&$r9QQMKu?pqnL~gV z>-f_jJ?{>I2OVMi$#D^eQ+Y~gT9lDo$5wT?=D=>K?EKHI`Vh3T+jjv;NkEoI5It&qh zAEcJX4Qp(v^o7n!PXHuCwOxMHmL*2NveE&H*Dx%%voIUrWy3L%?u1EM#cMC3_7M$+ zbHwc$$m{iiKc=i%<`ITy(Efb_9{mh^h%i(t`FxYP9MXo2_@RJ|BGpT?;jekC#Klgo z@vL-h6~4yWx8#HDVE!YykABn>r8YHb9>=kO&~Yq9h`zW!CAcC!$1bgNgQ&q5rr&b8 zE}W`Klak>^f!Ha!FeScP12k6&Hf;dS86&M7kMy9n$@A;`WC`Ee1b#rc6{ST%2%4oW zWYxc5AJ2gTCA2o9n(k}k+p>BnMka4x1TyV~5kE%ECR;IiW}YIQK! zEBap6zl%&`dZXF25%e#X=p^>f&lE3jEq>Ph?J|dk=r&S+$!gSRv}+be-~Lp)Ayhq5 zFl#`AA&!z#zeYVp$}b^A_o_7ALq`=Aw8vcs#HYAv#KYCT@8sZ>#}H(DgNl@SPWW=i0`6+lSnYYW81pd@F^SW*K%x`)zJZSSof z0-q_i`2tB@$Q_@$yWb9Jb!X4WvK7mY~BRJ$SM zHm2h*x70}YW2VrD!e+*<3|FueKO@Jk;^&v-pjJIUWL;`?%q@ts%b6xLWdAs6hsjXR z9c9B8LfQx(}rKUt1ji)Gt116C$6@*o1yTHB-Oud5|@4 zx|)=>xUaq`qm$z4+VuxSh&)l7^Cbx4wc?180elUeS1St@rE1bojtoK~7dNL+$xNcu zM_Xi&dOJlYjERD?t-PuhiJwVuMTd%eCSx@%wY={tK_mn)+P+F2$UrMAZ$F)aZWb9Q zi^w!`oqVmHLE0k^v1ag)kTjOuef&bx-)1$V3>qTI=lTXNo+`S&7aF`F4W%BR{PO-@ z^4_NN9>x8kJ+$%hC==Zb()CYc)@<+qLzREmH`K5snSjRnpjp|MswjHvy%pzoMSE$g z5KklBAO$C=C~~Nqc(kmb2H5@MtKiL@QdbuY0O=VLYB;_73ePD>2*E#~tiM)km*mfw z$IzV$zerLfe?DtE@*%TTRlWvk%y&!y7LncqL{3DI12yLBIOEmqY@@(%*UzO+7Fbv9 zaTW(2%&n8(6D50pu*tdBmX!r0&R{H)dhcLGCk@SlAV*#dmt5Rn&$e(P<0>F6s4R$9 z(`Yj43!RpE&?*2UPV`+&S9hOMWME)~Dj4RcfJKtOUOb5>N;PO{4V!+MnYNpLAcUXR^76|5knXUkTyOI2LiNW;ox6)>XKW)$%N(L- zwdQZ3jZu|j+Il+C5~fxBrTy1Gn6AgVI^1o;1-^g1Gh<{CS?m!w%Q`lT$?VHEv0m5B z+{m7}-Tw2Hqi^}TLGA~?SdVMn=zex?iUgtibcXw=$8{TppMqM-Y6B89LQ}5f57~)| zq~|XOE_}M}E&FW`>8R%H=Q)!&94l9m`bcZmdMb-CPj}t%lOb*5PnFBFVD}&8n(QcP zRf-4*D<{jYoBY1);WHbcF`0Q2p=a&-qH^cPlRS7SPLTJNwgiTt^ZtOKMasR0^A^Lp zfAWC7(qL6^V)0_N;owjIAOo zEs=sR%;sgnoSMSyEp>-2Z`t84ML4f++MOFuh=gJ={dcbncg!_y zsTh3-KL8qUTK~P2f8^&vs}=;9)-$%1qbHRYv)N5nN>CmC^8na2i_H=7(aN|pN)zp~o} zd9$XxR*Tz-Lf&}N%F|MOAsg+(R_9klIN&SjTHOOKBuW~YPyCHecM?bB2bk_JyBmHXwDu%Kw$Dc#JJrG8c$2^l7&>j+PH7=`6^G8T=Wu%w=p$eHF!_W5p9vyl8qL!>>%FiQ4?;;Wgm;Z z5x7PcqnT<1HGZ>2MlG8$p}G^pRs`d3BwuFRvQX{SdI9NT!v4&&r8#e{K1Tj8#@&5Y7cfH9R-59o8hoK!*X!=?Riuq4 zD|LmW(rngHULIKKrPXnrsh1(RaQeKbHJZ|gKx&6bY0j%fZ9Fpc(Rk$LgtL~ndcAnM z4)8{}5OejwUC1S= z1s}Lt1uaSbAT0j1T!o*)uWCRa;6mKhSCh1&V{rq6G_Gwq@BF9)hj~dA zD4rX3>TS7czr%2CTa%oXgaJef!`_ctk6(xromTZhV!s`6r&{9Wi+-DIdQG}6HRD?ULi)*|QH4P* z1Bx95+HQlJ{;^&M5P0{<18F#2m?6G|gPbCy`YVD(+O+4cS6kg5$`YT1%jHa{@b%A@HO3N8n7xe2-FpY+kV6CS3MSFkW z*j?p9ak8=p;kElq3G?^JVMvY~Xr?XHK35VRy38Zk?$4yqe9hOVzD(?DVcCN%8qWyX z=kY6YUo0UoOoSeof=eVn$_*MS$_ZTE)h_^PB12yAd6|{=%GGbWQr~P8WBtf7r#?&* zqRDG(7Qmk(XqZr3G4$;>p`RngsZID?`Wzz2k6Se2eHk#CVVl858ClnRj7;suGp zJh^c?_-`x{nM=LL>U8k9gIAw`u(1-BjkWtPqj8rTsmsSSgzYj&?0t&+B$6;v``FM&i3Jg z9(_}L`{>?)j%r7%(0wC40l)@k3jdH5J}1}gYN*ZcVE=}+6Jw2a7d3}1^<(&OnMCTd zBR_*2TjW1kg*Z>V4}*B`a1rKOtZ|eg;Ev-h`Pcu-xCc0-_2=C+QQh*R_L;!CA#R)H ztXzy8XAX~-Y@2$}?vGghLr=*o<9d6ieIC!g@AYE55A%eDWiZ_Ki1dqZ=}dB}eu=$p zDXT4YEFA>P*thx0z1}J4`;Z&NCDY1YX+pN&a1AtX*h7TjZ?fxh?s0M|hO-WdkJoCj zvBbBi@~h6!p6+CP&!6o(Tf;3~yLdooZ>3U=c&T81_C(yA}z2&7*-9{jy$QKLVfR7D3K}hG6 zNy{nZ819d&*>CBp)*gwu3v>}B!K4=XQI^7J@I>JQE_;-OkF_s=B>Y)S^FxNGa&c~< zn&OrR#B?DNS=pkvLnOA`Rz$=cx@_yC(5>1QUz(k3!}P?)z(l_8rV&I z9G3V)i@aq}a$7?=wCBn~!u|P6`>?$9rm42iaKaL1TjaSob?XS@i9!rQkD#jx>KL&l zbO+!}fbZuYS$t@gQXO0#(a&5r-_$dz5n4=Z?+`Z+;3%zAPnJ6`p)OmtGj4&A3)tI7 z1u*fUl1xskGomE-UIb47?+sm*w8ff!)}rOxh`+!J(%(5m_5l5-dvZ*H%4L|VFA&UYo+y&9faRm{++bAHGcob%mV7e-UPn#<= zke9Q~Apb!8JWIulOOoAf&l%zdd~rw^i9$SZ&X@eMOXW~m>3~xSE|)IisR=F0`VkKi zPJlfeIG3ZZ>8MVmg()sEa-H&h?**J6)QRnpLAzEnZ7SY|=&Q4mNFuI+j_N+{mbsGQ zNt`EulykSZ`bC|25QF-Z_&&jYr2a8c{e~SFvNNZaTM@$S(p!9cYxToT2)=3{Ix7i7 zSV|C2M})Y1q5`7K^x*Fl43KUQgho?nVDd~)3QtZwyT4rGo;Z*jK)dQ3$a&zMRspeb z3a24@;!ft%6*Dm-qdMcPN|sH-$6$Ok=-|8|4%06g01?JQzm+5Ld9@d4bNvPh;S>`q zH^k_#h-c2Jepa3P-8aqg0lxzff!jyb5gli6Lt~ip_C^->Gwe;Lm;QC`{j5;Wc~C{x z(hD;o>=^#&r9lPQumu2DvvPbLi6MkC7?3!|>Qc_&b7V*k-F$ z{cn^b#SxOm0iqlroX1~Upn*%!7%I~D=*qYP(D#G=RcN>12UWueaUBhXf8KoyOYOQY z<9l6Z*Qz4(kee)|crKb>9ZbOu12P&PQu9~P2L_b4{VARpKOmMVKLkR8gYWdMb3ekn z|1vxAoY~wjvI{yq;wLG#>h?;JdO%H0f77?izXUD}Pd)G=hn&tJFw9{M0#Z%%@kWP$ zRG-hyThBe}mR`6ZM2|LTc5N32ZeD!tM4ozJnEihKhn)@RnAKy(J`=v9`-L2ap@12} z(STof&ip*ee)geU-AQ;CH2Z`k#GirdAPNN&Z8x7S^03UtcNS&u7!eV}i=%g}9ox0xI8ZT1VmfGt z9IISHtHXCuGx$-G!O|-I?ApS3E`+CRd_vO?T+ zqD|`a-;km`8WHR;t(7Vu46=o>n$goxbD-A|8kr$7WcH-!S&mPH>nGnftoG5`v}>14 z@Wl=}A75WQanmq=l<U3wZ(o{!K44*+@t_VWQ0LtL3np8elD{9M96vW2?SayRixToB79n zFeG&Xj)S;yL5Wf6IEP9tBj`CfQk$p0H0h){y@#%_SEGGcVX_WEPp|+^Q8Ef2;{8;M z{HUXVIb_$L3>Sj_q!>iODZqFepo+hC3jZDD6MWq7!xR{T>s4{Ch(JeGNOu(a`5?Xi zJzg0LN*HvM^A_i!4JA!3&*7$$P7yibO^Zn}Q2&rID{30e;-MjjaUB3#k~?TOq02#`oVU{6Ode60 zpYQ)}=moJvqh|jya<)fJ_KSYJMS;zxTBCLnU8?uz_VitaQ@|kr6KBCud~Yz<;XI5^ z{VTs%+J2YJjPqI=ZlG3JpBG@{wRKmqVE4yyl+~?%u2X_40~%p#hca(kT)gGYF0yZO za^tDl(&_lFx>Z$5dV+{K@w(2E*%IM=_%*}h6Wxcvo_aQ1HP#tFPf-tu3i##39&EH# z2{F9K-|LG%^5Xnl`oW6_PXcP`o{*0P>_v>i9Y+96f5oGkh+xC=lLvU}oZ!g4`Od&- z^yvTyMtxMVc*)m^ukz{wKg9JlRI`~iIaw@xy)5r)?+!>#&$tQBcXsCD(j<_Y+>OUeoETz zH@Y_&0mTGV0Oh)&cDjo;+9*n{Sh?Cn3>X1gUC{E;#O)v=RsmnAZV;A4{5QyTT16!pb(1JWY=p2Yzv z_~8E5D84<+b;bMoIr?If^RAW&!OQqxq}arvB}*JC!m25v@jReNrRzwbUm} zFpB6e2vCC#e)HlFqg9NBh1t2`X0$s}Q>hBeM`nGRhw95?{vpQdlp~ry^|;9b@MK;* z%n^-}Yv1K=>0GzST9*O$vws{y^5Ca7|KvAmmVo%JZR|6cm=tkz)#==Q2mm*u(B+_c ziP9(?=D&hf3Fpj;R>Wh)x@}xiGGrj!sLym4;i(zh4dX?~e;pm5 zZFUH#H#Cd;q|?y_5nH}6*}lTdg0}>lu10f@MHN??6eYjryIbWfI|DTy`vZz&%H{}{ zIOkJd#14j3{Q%K=!l4Jb`ntwDUyY};xMRg&P)Z@2z*}JOXHo}9$brCEurdkCj73lY zBm2c$-)IqfqJe?XDKYAQoGbyJIi$289go`6nw4w4HYlSifllC$l0OC72*A^v{-m)e z=J4@hp%_S5`R4xZMRV@w7Q>h}ClZ9*run5tYQas7I6Rolu7%kz>{|Gu43sTuXX`JY zco4su_i1y(kQhd>z8c!d8C`8h3#rtLA!30kCj%7|&hR)|{X&1s3|oRQ7$Rd}jHx)V zJ<~~(F^`Slw0Q3MA;W=B;C5+bZD4yvbnD{$-f-861_F&G zojkI34*M#iqU24)2z9k{+3E-V6@iHOcxjgJ;9*uIM<$w%KD?=>VdfuE*^nEGD8AWf zp!4*leP;f(?mHvIwpz0q-Bk}RPXE7f+7xuQ*q_H#X>=akctB>8ASnP_ZoXlAF>UVxlCOMZZ|8WPQe*tJ z0rX#xbwD8{vPtm4AU%I*T<8t6myww2o-AC+QmSr}P{dly7d>uWul=3vr|UIFzlQlO zLz4|<5cWq0dM#i;~9<<=;qD<%{4K4gh8t0(cJ1}y?IElr%Pp;$JrBGZ| zsV{-uxp={zhg#71@>MKh!Lj@Yg!uo*AyW{P|F5WUfW+K58<%x0debBeb-Tmz=#(t7 zV)(-!hi3gPix7l@OLI?E^o7cpt3(q^N==5`AE;K|fe9lbQ&IufkUX3>$S^6}mvmJ9 zRTtB**NKPb8qFZ}?QXv`!Z!+PNy%b9R>r=@L^-(nuw3ta;Q?0@(K3W2fngF9G690^v zfX~&NzRilGi2S zv$+tp^&9q+o0Mr&=c2hj2BhBj3|sjw+?jBP0W=^Q5m&{;Q5a4? z03Mb?wT25*fZY)KPhY{oV+x=+31@RJbd|-G#LYi0Ok%mw(;2P{o`3caDFOJ+c9fwm zp-_JK2XMVQfJVDsk%4XV3Y^#y7+nfJs+0h4>1TFb_^hFhW)G*O$AyOLKBp!I&75qL z;%CffU9*#Mp~Tcq0r--L3Mo-` zpYT)!$^)cqQe+7)4~Xn0fdmCXk;Rtf2?^jr0Haity+GMlsUAWQTD2%3XxgW27DdDg z7%H2PTC0E{91wjobFs%~Ih>yJnm@>$bMBpc@62WLyEEVKOTC5v-ZR$Yi(;~L*UU*_ zwfdNFF?Vnqwqnns>{q)@sL`w`FEYb*j!tz*5S5P$+t*$4@7ha&TJx`e6Gu&UIo3}kwajb|5aEyC` zC-(N-F~T_+t*X+uSP9?+)8-g|LYw!+3>;6Cw9r=!zaI1nhW&8_U&)1J3f)5*++2rZ z$j->mN&!%CIGa~BVR(N|n@SjQD=EFM1i)nvr0puY6w?C3Q2#on+GiaC5OV$Uv)d5V ziCrYbv~X);whCYCG5D9j;v{h2ky4cHeRYo^#%5LA_nd%tKn`DK5%&urBx~1*WNH1@ z%fE)!eWrOF;Yy@u6xxxVz*u|xuDs1u!W8#mWL8(!xZXkVo(QorInPQwm5Y7D5%W<6 zZjhgb8MU&pGSgP*S|?qEw}1nW;o5quYt5q{rZvU02Mn8<=#1t8Q_7RM?5EP4mdhSR zoY-_xReTAyQ!JebiKx!si71(bplq0eoa&bXI;UfzDIFqkiSXPcHSlc3pzPxaz$t0! zE6hG<_`U;FE_M?-Q6IMYDa9uV8r!X2jz_%eDRLCy^7&MHxZ$xBj>`GI+?d{`Tdus$@z zEH701t5j#s5W*v^ub1Ij)H=_F)8?+<0wej75zfQ|U-Bv-#w81KB*LpaArsZxNRv9+p+UXHdC=OGgj~z$B8DA!InlctMS6#q|sYQM@6oZyo}`qWCG;)a{ms?!ZlxJ3i_W9Ic%-?TG6CL z1SdT~wkLX529uvg7Pt(NqmI9Dh~nUN5J!sBT*QJiWo!#XjM?R&sW z#tr&1A1*p|VHD#GUTpyT_A7hJFf@yK_~Oyi+OWjN((`u;s@2%ZdCi~9r*jYzmxvDt zm_90QLAaT%BgP4Pi{(pV)=fr)-yl-@rE!Wa_?HQdlE=f;QW_Ffwkd%#vCy#}GP#2liR^_Ik=OegDe?zYRU7y2%?*UUVctTsUFNcL@ z%Irh-HcOtTb@hnRyX(8%{a#1gXsCEhoEGx4&<$ELPah>8MHHSfIWPWW^!t>lc6Y}vQsc;3b9_>q`1(D>Fl(tF zG)%n(Pup`q=rMEWG=}L1Bh6LT(l@yrJ`#ivj20u+8!I*hm-cCevVG&D->fQ^_C);F zYNWMN07bO%=ZjY}@(Tp4XxCa=v+`5Hjm!DivQH+3=QFQc*u&;tHPNs*^B_#?iJnNt zy!)=2@{3cyg~YMR+6D;DYcDtNh3lHk>|C_u0Mf$!W525j3)^i)UdUXPpXT|)F82%A zSBOGN)Mn33adZ3#p*pV%T>#OMaOyC5Q|NRmPBVEyb?$&fhfs}Rqy+RgiLq47sK;Gw zn3{pZCGYX;=9+~90DLBFz?43XX32NmZ2hsNK|Y+efAl_bcxh8fDh-=@BH7BSwr8h@ z;9}D0h#dw&rfl!aEy)ErMj83PnLW0#(RzR!mc@Kk=h7jTQ-1YX_2i=<0Pgo~ify$_ z7HCywW_Gk%bh7Me-RIi-k#9h>ki-T}vYp}1a@b2MBlY(jj%NKsguT@4Q)A!dnpMqs z+)MrmC3{A{$65KauxeBckgL)R`K7Sqh}Jg_`y)-qn;-x{t2}rH3S1n%A|Z%^ObrA#q|$o$hD3 z4KD)ek!(dvor!g?_hy>se;tH53n%^sne1tdcaU9PoP_AN6K6f7KlXcbP!>*eRnWf7M5bB67uC zkw%M%z#R`v(E`FcRAenv60LmT`8==V?UNeLz;*=xHQ;CU-kmy~G%e0mncLCr3-YLH zSwAU*JUb8io{U^;mBCtGR}{W4;hKMLNNLL1gDP^fY{ObWML1@ z3X`&;6nV}ksrPat!p@;30?p7(SX os~*rBIEDgM+UH&~9-dBGoP7^i4dKu+zoI+teFYpi>)XEn0;w5z+yDRo literal 0 HcmV?d00001 diff --git a/src/DjangoBlog-master/docs/k8s-en.md b/src/DjangoBlog-master/docs/k8s-en.md new file mode 100644 index 0000000..20e9527 --- /dev/null +++ b/src/DjangoBlog-master/docs/k8s-en.md @@ -0,0 +1,141 @@ +# Deploying DjangoBlog with Kubernetes + +This document guides you through deploying the DjangoBlog application on a Kubernetes (K8s) cluster. We provide a complete set of `.yaml` configuration files in the `deploy/k8s` directory to deploy a full service stack, including the DjangoBlog application, Nginx, MySQL, Redis, and Elasticsearch. + +## Architecture Overview + +This deployment utilizes a microservices-based, cloud-native architecture: + +- **Core Components**: Each core service (DjangoBlog, Nginx, MySQL, Redis, Elasticsearch) runs as a separate `Deployment`. +- **Configuration Management**: Nginx configurations and Django application environment variables are managed via `ConfigMap`. **Note: For sensitive information like passwords, using `Secret` is highly recommended.** +- **Service Discovery**: All services are exposed internally within the cluster as `ClusterIP` type `Service`, enabling communication via service names. +- **External Access**: An `Ingress` resource is used to route external HTTP traffic to the Nginx service, which acts as the single entry point for the entire blog application. +- **Data Persistence**: A `local-storage` solution based on node-local paths is used. This requires you to manually create storage directories on a specific K8s node and statically bind them using `PersistentVolume` (PV) and `PersistentVolumeClaim` (PVC). + +## 1. Prerequisites + +Before you begin, please ensure you have the following: + +- A running Kubernetes cluster. +- The `kubectl` command-line tool configured to connect to your cluster. +- An [Nginx Ingress Controller](https://kubernetes.github.io/ingress-nginx/deploy/) installed and configured in your cluster. +- Filesystem access to one of the nodes in your cluster (defaulted to `master` in the configs) to create local storage directories. + +## 2. Deployment Steps + +### Step 1: Create a Namespace + +We recommend deploying all DjangoBlog-related resources in a dedicated namespace for better management. + +```bash +# Create a namespace named 'djangoblog' +kubectl create namespace djangoblog +``` + +### Step 2: Configure Persistent Storage + +This setup uses Local Persistent Volumes. You need to create the data storage directories on a node within your cluster (the default is the `master` node in `pv.yaml`). + +```bash +# Log in to your master node +ssh user@master-node + +# Create the required storage directories +sudo mkdir -p /mnt/local-storage-db +sudo mkdir -p /mnt/local-storage-djangoblog +sudo mkdir -p /mnt/resource/ +sudo mkdir -p /mnt/local-storage-elasticsearch + +# Log out from the node +exit +``` +**Note**: If you wish to store data on a different node or use different paths, you must modify the `nodeAffinity` and `local.path` settings in the `deploy/k8s/pv.yaml` file. + +After creating the directories, apply the storage-related configurations: + +```bash +# Apply the StorageClass +kubectl apply -f deploy/k8s/storageclass.yaml + +# Apply the PersistentVolumes (PVs) +kubectl apply -f deploy/k8s/pv.yaml + +# Apply the PersistentVolumeClaims (PVCs) +kubectl apply -f deploy/k8s/pvc.yaml +``` + +### Step 3: Configure the Application + +Before deploying the application, you need to edit the `deploy/k8s/configmap.yaml` file to modify sensitive information and custom settings. + +**It is strongly recommended to change the following fields:** +- `DJANGO_SECRET_KEY`: Change to a random, complex string. +- `DJANGO_MYSQL_PASSWORD` and `MYSQL_ROOT_PASSWORD`: Change to your own secure database password. + +```bash +# Edit the ConfigMap file +vim deploy/k8s/configmap.yaml + +# Apply the configuration +kubectl apply -f deploy/k8s/configmap.yaml +``` + +### Step 4: Deploy the Application Stack + +Now, we can deploy all the core services. + +```bash +# Deploy the Deployments (DjangoBlog, MySQL, Redis, Nginx, ES) +kubectl apply -f deploy/k8s/deployment.yaml + +# Deploy the Services (to create internal endpoints for the Deployments) +kubectl apply -f deploy/k8s/service.yaml +``` + +The deployment may take some time. You can run the following command to check if all Pods are running successfully (STATUS should be `Running`): + +```bash +kubectl get pods -n djangoblog -w +``` + +### Step 5: Expose the Application Externally + +Finally, expose the Nginx service to external traffic by applying the `Ingress` rule. + +```bash +# Apply the Ingress rule +kubectl apply -f deploy/k8s/gateway.yaml +``` + +Once deployed, you can access your blog via the external IP address of your Ingress Controller. Use the following command to find the address: + +```bash +kubectl get ingress -n djangoblog +``` + +### Step 6: First-Time Initialization + +Similar to the Docker deployment, you need to get a shell into the DjangoBlog application Pod to perform database initialization and create a superuser on the first run. + +```bash +# First, get the name of a djangoblog pod +kubectl get pods -n djangoblog | grep djangoblog + +# Exec into one of the Pods (replace [pod-name] with the name from the previous step) +kubectl exec -it [pod-name] -n djangoblog -- bash + +# Inside the Pod, run the following commands: +# Create a superuser account (follow the prompts) +python manage.py createsuperuser + +# (Optional) Create some test data +python manage.py create_testdata + +# (Optional, if ES is enabled) Create the search index +python manage.py rebuild_index + +# Exit the Pod +exit +``` + +Congratulations! You have successfully deployed DjangoBlog on your Kubernetes cluster. \ No newline at end of file diff --git a/src/DjangoBlog-master/docs/k8s.md b/src/DjangoBlog-master/docs/k8s.md new file mode 100644 index 0000000..9da3c28 --- /dev/null +++ b/src/DjangoBlog-master/docs/k8s.md @@ -0,0 +1,141 @@ +# 使用 Kubernetes 部署 DjangoBlog + +本文档将指导您如何在 Kubernetes (K8s) 集群上部署 DjangoBlog 应用。我们提供了一套完整的 `.yaml` 配置文件,位于 `deploy/k8s` 目录下,用于部署一个包含 DjangoBlog 应用、Nginx、MySQL、Redis 和 Elasticsearch 的完整服务栈。 + +## 架构概览 + +本次部署采用的是微服务化的云原生架构: + +- **核心组件**: 每个核心服务 (DjangoBlog, Nginx, MySQL, Redis, Elasticsearch) 都将作为独立的 `Deployment` 运行。 +- **配置管理**: Nginx 的配置文件和 Django 应用的环境变量通过 `ConfigMap` 进行管理。**注意:敏感信息(如密码)建议使用 `Secret` 进行管理。** +- **服务发现**: 所有服务都通过 `ClusterIP` 类型的 `Service` 在集群内部暴露,并通过服务名相互通信。 +- **外部访问**: 使用 `Ingress` 资源将外部的 HTTP 流量路由到 Nginx 服务,作为整个博客应用的统一入口。 +- **数据持久化**: 采用基于节点本地路径的 `local-storage` 方案。这需要您在指定的 K8s 节点上手动创建存储目录,并通过 `PersistentVolume` (PV) 和 `PersistentVolumeClaim` (PVC) 进行静态绑定。 + +## 1. 环境准备 + +在开始之前,请确保您已具备以下环境: + +- 一个正在运行的 Kubernetes 集群。 +- `kubectl` 命令行工具已配置并能够连接到您的集群。 +- 集群中已安装并配置好 [Nginx Ingress Controller](https://kubernetes.github.io/ingress-nginx/deploy/)。 +- 对集群中的一个节点(默认为 `master`)拥有文件系统访问权限,用于创建本地存储目录。 + +## 2. 部署步骤 + +### 步骤 1: 创建命名空间 + +我们建议将 DjangoBlog 相关的所有资源都部署在一个独立的命名空间中,便于管理。 + +```bash +# 创建一个名为 djangoblog 的命名空间 +kubectl create namespace djangoblog +``` + +### 步骤 2: 配置持久化存储 + +此方案使用本地持久卷 (Local Persistent Volume)。您需要在集群的一个节点上(在 `pv.yaml` 文件中默认为 `master` 节点)创建用于数据存储的目录。 + +```bash +# 登录到您的 master 节点 +ssh user@master-node + +# 创建所需的存储目录 +sudo mkdir -p /mnt/local-storage-db +sudo mkdir -p /mnt/local-storage-djangoblog +sudo mkdir -p /mnt/resource/ +sudo mkdir -p /mnt/local-storage-elasticsearch + +# 退出节点 +exit +``` +**注意**: 如果您希望将数据存储在其他节点或使用不同的路径,请务必修改 `deploy/k8s/pv.yaml` 文件中 `nodeAffinity` 和 `local.path` 的配置。 + +创建目录后,应用存储相关的配置文件: + +```bash +# 应用 StorageClass +kubectl apply -f deploy/k8s/storageclass.yaml + +# 应用 PersistentVolume (PV) +kubectl apply -f deploy/k8s/pv.yaml + +# 应用 PersistentVolumeClaim (PVC) +kubectl apply -f deploy/k8s/pvc.yaml +``` + +### 步骤 3: 配置应用 + +在部署应用之前,您需要编辑 `deploy/k8s/configmap.yaml` 文件,修改其中的敏感信息和个性化配置。 + +**强烈建议修改以下字段:** +- `DJANGO_SECRET_KEY`: 修改为一个随机且复杂的字符串。 +- `DJANGO_MYSQL_PASSWORD` 和 `MYSQL_ROOT_PASSWORD`: 修改为您自己的数据库密码。 + +```bash +# 编辑 ConfigMap 文件 +vim deploy/k8s/configmap.yaml + +# 应用配置 +kubectl apply -f deploy/k8s/configmap.yaml +``` + +### 步骤 4: 部署应用服务栈 + +现在,我们可以部署所有的核心服务了。 + +```bash +# 部署 Deployments (DjangoBlog, MySQL, Redis, Nginx, ES) +kubectl apply -f deploy/k8s/deployment.yaml + +# 部署 Services (为 Deployments 创建内部访问端点) +kubectl apply -f deploy/k8s/service.yaml +``` + +部署需要一些时间,您可以运行以下命令检查所有 Pod 是否都已成功运行 (STATUS 为 `Running`): + +```bash +kubectl get pods -n djangoblog -w +``` + +### 步骤 5: 暴露应用到外部 + +最后,通过应用 `Ingress` 规则来将外部流量引导至我们的 Nginx 服务。 + +```bash +# 应用 Ingress 规则 +kubectl apply -f deploy/k8s/gateway.yaml +``` + +部署完成后,您可以通过 Ingress Controller 的外部 IP 地址来访问您的博客。执行以下命令获取地址: + +```bash +kubectl get ingress -n djangoblog +``` + +### 步骤 6: 首次运行的初始化操作 + +与 Docker 部署类似,首次运行时,您需要进入 DjangoBlog 应用的 Pod 来执行数据库初始化和创建管理员账户。 + +```bash +# 首先,获取 djangoblog pod 的名称 +kubectl get pods -n djangoblog | grep djangoblog + +# 进入其中一个 Pod (将 [pod-name] 替换为上一步获取到的名称) +kubectl exec -it [pod-name] -n djangoblog -- bash + +# 在 Pod 内部执行以下命令: +# 创建超级管理员账户 (请按照提示操作) +python manage.py createsuperuser + +# (可选) 创建测试数据 +python manage.py create_testdata + +# (可选,如果启用了 ES) 创建索引 +python manage.py rebuild_index + +# 退出 Pod +exit +``` + +至此,您已成功在 Kubernetes 集群上完成了 DjangoBlog 的部署! \ No newline at end of file diff --git a/src/DjangoBlog-master/locale/en/LC_MESSAGES/django.mo b/src/DjangoBlog-master/locale/en/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..f63669f46b3283a84e04098a7338b55f204e7b9d GIT binary patch literal 11097 zcmeI1ZHygN8OIOuzGwvm6;V80DQ&fPD^j&CyM<-Dg@xUAX}2J#)VcSby?5x`naj-F zZm$#+#VU{(-w;LPTQou>QKLp83PwZtpfSFp(fGm_@tqi=i7`=s|Cw`lZ+91?#(pr_ z$v*ctbLPx*p7We@p6AT$&rd(@PQ!5+c|J0AoH3t=hfd;$1yOBsD0^;$^2&CzXM9|d!X$9guj2Uzy3VbbN55( ze-O$q4@0J|`Juo67*szVhtmHSD1U13_1r1&Y4CK&)H7#7>0J+{uLAY_D3t%EAVXsI zLg|U1?3;(ue+bI2hdti|WzR>U^xfzA6{z;V1y%q1Q2KufrRO(Les~hfUw`vF?RlkN z)czuz;38uu<#J2yeueHg0#9sd5ieEFT8cl-Mv@%*GO|1`XW zdHY$Yc=6=fWxUwU;#a)*GE}^{@r7kSPFP#^e~srkuvl+U@nQ_hj(t%6bx`&lf|>`n zK*fu9!^7}F_z0XBEXU^=EJoFPK9rscWNMlV{Ph)3{=X8+uK|?5LMVUS3^fjKgKGD^ zP=5b_zy1tl2+S9t{QYex`+p2);qTx$y!hNQUfc>*?*S+~9)?sgKZ9!Ln04iPSObsa zdJwAKdZ_ysLA5^xx4nHMEDJ;et#26-%p|J z{*&i%8_Id|94LRB17*(z@FchuYJH4B*|pu5UkNq;u7xMUCRF=vfB%iX{OwTn-s$;a zsByXvs-3Swwfl9?A3@FA-$TWVC!y>|OM?3skpx7X7_wcmlNe+WwdZBTmN4dsUqLHX+w zo?nLY%Xgs0;W4QCPeA$ouTb`{VR1?S8J=guW4RuLYUeyCzix)Azs27l_T}3=$Nl}w zJa_u?S;(|4<~T5KMs7qdLEeJA4(T0l;$#RJKyE&pF^CMC)P-xfnT& zM94Pe6ol>-hkT-AGqMhmZ{?Tkk*ks2h>k`H^G44}IP1@aoBVkIHzM+h;)0H?CCr6z z0vSVUzU&&vR5ne2y%+98G!`0{OOY7STp^Se$5s3u^5=xvV&3Vp>&pa<;dX!Bf|ny( zkSmaV$SaWEahX3EgxdRAo;G@%w6iZ$Vyvg}fA*Ms!?& zgvA+qQ#gVgK$KgqMcPP)9FOR@6yhYmv)ryHkzAtm*2u+O_L8`0}BklQ)xesDnLm&~o^3SsNNZ z-wuN}p2Uqb$U9Mxhe@1mDty=sa6{Iq)m)a%b)u+it4ZgGQM5t5o^p4{UW3o^n59YI z)Vd9c%#aQH@@^X=G!5!u>S{TvqNHKNSVe^^=Up`mb7$v6Ebrttuo$~j60Qok-Vr`z03GFSfg z7Cw`{99J`*)VY_$b79(ASTZW;U(Oo+!r_aHxroP@v36*!K%ShJI^_?t70g)hg zZ5zx7-688^{o)!fv=@QBSdvZWbHHLz(jt7az?B)i_Mycg9$Ib&D(!z6fry0vqu5g{ ziT@zr(2vvwbaSj$BUa{Sdzb~)h-}guuSj;Kn1yp8 z297tw*f9(DBx%|$r$`$$MVd(64IRhisB5+;WzH!}ET+qa4M9^8yLgN^kU0`7lOesR zUn$9gC?-YKPDVq$l>6`M(4?s+g%!ozX}h!)W*P3$ybOv|Rt7@Zagmt~8kY6dshc9& zWXmEa<&J!#)Rx4`fLP61AnDA7jSeYOo}Wzv<~xavbft@WsNx`6aNAz`Wv+55&a4%W zprG!oOVh-ccWpWJSNlA8WCK?(rn@W;QcHLz#FyKwj6GFN7NIcFF2?6RbB)iHBxskD zA{)ip>&=jI5OMYro5JjguiU+EgVb$gA8;Uu!g`UFN!Bm7Ei!HHDE9-i-w_kY744Kw zQW|yDXxf`<3Ojv?wwEOSgCs(9-@J_|klB?o1P*sZSe6gIZ%4$Xvc9Y@!sEVbQtxhD z%=-P|yR2$gRBRh;D~cFK*Vv7$u#c3gLd8mkS$mXo&*E0EOg<|bVS;+*Vr|KlBiJ?~ z1gCn}x`SbsXC`1Tmj{goOWlu6j|7b}dHM2%5iNsSuQU!0gpG0u^op`h)kZFE*pVmII4!&q-*g#(MMs6BdWlIr#39z*of>rJ7__WVm2qeh#& zM;i-c(Yr3!7Prg&`NB!oi@dEMuQg5E@9x>bv=jQEALWSH_?MQlyNhoym~ul$rk1_c z>ZbXHaq`y-i8Ny*X+}=uHKds7{S zG;9|EUR!Rv-*xpqlJO8%g+Gh4%<)>&UzvzWyXD+uJ+zo#EHg>@6epP}w#r7f>gC83 zW1^jLX69X3O-z^WnVB@vC{-rw6|#rY*sz@$8^2=g(g}Oj#O^(lyLJxjcI_n1E7Msc ztXD4SG_uNUGHeHCc2#z>)z&kW?JTEZd(Fhy?#lG8%JwmP*{9NVFi^sNa-#xKs&o-*YjSf?y)dFftR zGBP!FaTE@*A{Ogl!Sv+x#G={f5507NZK>90WtJWf+uR+@H@73+(=R021}Rx;bnonr z%GSktGHcGIm5G=bMg|+UTdQF{FcXn^qsopXZDqqYZWou?=*uo7E$PnahS;thwdZfV zaA4W1^y-%iyZWVK^-IOl7w4m}VOjlB(ZAnZ>hS)1N5T31>Q}#1^nGpQ4bgvsUj0(B w`lVv^OU3G!3cY2leyPwu>;C8e_#z7}Nk0GgUn*8VRIGleSp873^h3oz0qFQpxc~qF literal 0 HcmV?d00001 diff --git a/src/DjangoBlog-master/locale/en/LC_MESSAGES/django.po b/src/DjangoBlog-master/locale/en/LC_MESSAGES/django.po new file mode 100644 index 0000000..c80b30a --- /dev/null +++ b/src/DjangoBlog-master/locale/en/LC_MESSAGES/django.po @@ -0,0 +1,685 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-09-13 16:02+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: .\accounts\admin.py:12 +msgid "password" +msgstr "password" + +#: .\accounts\admin.py:13 +msgid "Enter password again" +msgstr "Enter password again" + +#: .\accounts\admin.py:24 .\accounts\forms.py:89 +msgid "passwords do not match" +msgstr "passwords do not match" + +#: .\accounts\forms.py:36 +msgid "email already exists" +msgstr "email already exists" + +#: .\accounts\forms.py:46 .\accounts\forms.py:50 +msgid "New password" +msgstr "New password" + +#: .\accounts\forms.py:60 +msgid "Confirm password" +msgstr "Confirm password" + +#: .\accounts\forms.py:70 .\accounts\forms.py:116 +msgid "Email" +msgstr "Email" + +#: .\accounts\forms.py:76 .\accounts\forms.py:80 +msgid "Code" +msgstr "Code" + +#: .\accounts\forms.py:100 .\accounts\tests.py:194 +msgid "email does not exist" +msgstr "email does not exist" + +#: .\accounts\models.py:12 .\oauth\models.py:17 +msgid "nick name" +msgstr "nick name" + +#: .\accounts\models.py:13 .\blog\models.py:29 .\blog\models.py:266 +#: .\blog\models.py:284 .\comments\models.py:13 .\oauth\models.py:23 +#: .\oauth\models.py:53 +msgid "creation time" +msgstr "creation time" + +#: .\accounts\models.py:14 .\comments\models.py:14 .\oauth\models.py:24 +#: .\oauth\models.py:54 +msgid "last modify time" +msgstr "last modify time" + +#: .\accounts\models.py:15 +msgid "create source" +msgstr "create source" + +#: .\accounts\models.py:33 .\djangoblog\logentryadmin.py:81 +msgid "user" +msgstr "user" + +#: .\accounts\tests.py:216 .\accounts\utils.py:39 +msgid "Verification code error" +msgstr "Verification code error" + +#: .\accounts\utils.py:13 +msgid "Verify Email" +msgstr "Verify Email" + +#: .\accounts\utils.py:21 +#, python-format +msgid "" +"You are resetting the password, the verification code is:%(code)s, valid " +"within 5 minutes, please keep it properly" +msgstr "" +"You are resetting the password, the verification code is:%(code)s, valid " +"within 5 minutes, please keep it properly" + +#: .\blog\admin.py:13 .\blog\models.py:92 .\comments\models.py:17 +#: .\oauth\models.py:12 +msgid "author" +msgstr "author" + +#: .\blog\admin.py:53 +msgid "Publish selected articles" +msgstr "Publish selected articles" + +#: .\blog\admin.py:54 +msgid "Draft selected articles" +msgstr "Draft selected articles" + +#: .\blog\admin.py:55 +msgid "Close article comments" +msgstr "Close article comments" + +#: .\blog\admin.py:56 +msgid "Open article comments" +msgstr "Open article comments" + +#: .\blog\admin.py:89 .\blog\models.py:101 .\blog\models.py:183 +#: .\templates\blog\tags\sidebar.html:40 +msgid "category" +msgstr "category" + +#: .\blog\models.py:20 .\blog\models.py:179 .\templates\share_layout\nav.html:8 +msgid "index" +msgstr "index" + +#: .\blog\models.py:21 +msgid "list" +msgstr "list" + +#: .\blog\models.py:22 +msgid "post" +msgstr "post" + +#: .\blog\models.py:23 +msgid "all" +msgstr "all" + +#: .\blog\models.py:24 +msgid "slide" +msgstr "slide" + +#: .\blog\models.py:30 .\blog\models.py:267 .\blog\models.py:285 +msgid "modify time" +msgstr "modify time" + +#: .\blog\models.py:63 +msgid "Draft" +msgstr "Draft" + +#: .\blog\models.py:64 +msgid "Published" +msgstr "Published" + +#: .\blog\models.py:67 +msgid "Open" +msgstr "Open" + +#: .\blog\models.py:68 +msgid "Close" +msgstr "Close" + +#: .\blog\models.py:71 .\comments\admin.py:47 +msgid "Article" +msgstr "Article" + +#: .\blog\models.py:72 +msgid "Page" +msgstr "Page" + +#: .\blog\models.py:74 .\blog\models.py:280 +msgid "title" +msgstr "title" + +#: .\blog\models.py:75 +msgid "body" +msgstr "body" + +#: .\blog\models.py:77 +msgid "publish time" +msgstr "publish time" + +#: .\blog\models.py:79 +msgid "status" +msgstr "status" + +#: .\blog\models.py:84 +msgid "comment status" +msgstr "comment status" + +#: .\blog\models.py:88 .\oauth\models.py:43 +msgid "type" +msgstr "type" + +#: .\blog\models.py:89 +msgid "views" +msgstr "views" + +#: .\blog\models.py:97 .\blog\models.py:258 .\blog\models.py:282 +msgid "order" +msgstr "order" + +#: .\blog\models.py:98 +msgid "show toc" +msgstr "show toc" + +#: .\blog\models.py:105 .\blog\models.py:249 +msgid "tag" +msgstr "tag" + +#: .\blog\models.py:115 .\comments\models.py:21 +msgid "article" +msgstr "article" + +#: .\blog\models.py:171 +msgid "category name" +msgstr "category name" + +#: .\blog\models.py:174 +msgid "parent category" +msgstr "parent category" + +#: .\blog\models.py:234 +msgid "tag name" +msgstr "tag name" + +#: .\blog\models.py:256 +msgid "link name" +msgstr "link name" + +#: .\blog\models.py:257 .\blog\models.py:271 +msgid "link" +msgstr "link" + +#: .\blog\models.py:260 +msgid "is show" +msgstr "is show" + +#: .\blog\models.py:262 +msgid "show type" +msgstr "show type" + +#: .\blog\models.py:281 +msgid "content" +msgstr "content" + +#: .\blog\models.py:283 .\oauth\models.py:52 +msgid "is enable" +msgstr "is enable" + +#: .\blog\models.py:289 +msgid "sidebar" +msgstr "sidebar" + +#: .\blog\models.py:299 +msgid "site name" +msgstr "site name" + +#: .\blog\models.py:305 +msgid "site description" +msgstr "site description" + +#: .\blog\models.py:311 +msgid "site seo description" +msgstr "site seo description" + +#: .\blog\models.py:313 +msgid "site keywords" +msgstr "site keywords" + +#: .\blog\models.py:318 +msgid "article sub length" +msgstr "article sub length" + +#: .\blog\models.py:319 +msgid "sidebar article count" +msgstr "sidebar article count" + +#: .\blog\models.py:320 +msgid "sidebar comment count" +msgstr "sidebar comment count" + +#: .\blog\models.py:321 +msgid "article comment count" +msgstr "article comment count" + +#: .\blog\models.py:322 +msgid "show adsense" +msgstr "show adsense" + +#: .\blog\models.py:324 +msgid "adsense code" +msgstr "adsense code" + +#: .\blog\models.py:325 +msgid "open site comment" +msgstr "open site comment" + +#: .\blog\models.py:352 +msgid "Website configuration" +msgstr "Website configuration" + +#: .\blog\models.py:360 +msgid "There can only be one configuration" +msgstr "There can only be one configuration" + +#: .\blog\views.py:348 +msgid "" +"Sorry, the page you requested is not found, please click the home page to " +"see other?" +msgstr "" +"Sorry, the page you requested is not found, please click the home page to " +"see other?" + +#: .\blog\views.py:356 +msgid "Sorry, the server is busy, please click the home page to see other?" +msgstr "Sorry, the server is busy, please click the home page to see other?" + +#: .\blog\views.py:369 +msgid "Sorry, you do not have permission to access this page?" +msgstr "Sorry, you do not have permission to access this page?" + +#: .\comments\admin.py:15 +msgid "Disable comments" +msgstr "Disable comments" + +#: .\comments\admin.py:16 +msgid "Enable comments" +msgstr "Enable comments" + +#: .\comments\admin.py:46 +msgid "User" +msgstr "User" + +#: .\comments\models.py:25 +msgid "parent comment" +msgstr "parent comment" + +#: .\comments\models.py:29 +msgid "enable" +msgstr "enable" + +#: .\comments\models.py:34 .\templates\blog\tags\article_info.html:30 +msgid "comment" +msgstr "comment" + +#: .\comments\utils.py:13 +msgid "Thanks for your comment" +msgstr "Thanks for your comment" + +#: .\comments\utils.py:15 +#, python-format +msgid "" +"

Thank you very much for your comments on this site

\n" +" You can visit
%(article_title)s\n" +" to review your comments,\n" +" Thank you again!\n" +"
\n" +" If the link above cannot be opened, please copy this " +"link to your browser.\n" +" %(article_url)s" +msgstr "" +"

Thank you very much for your comments on this site

\n" +" You can visit %(article_title)s\n" +" to review your comments,\n" +" Thank you again!\n" +"
\n" +" If the link above cannot be opened, please copy this " +"link to your browser.\n" +" %(article_url)s" + +#: .\comments\utils.py:26 +#, python-format +msgid "" +"Your comment on " +"%(article_title)s
has \n" +" received a reply.
%(comment_body)s\n" +"
\n" +" go check it out!\n" +"
\n" +" If the link above cannot be opened, please copy this " +"link to your browser.\n" +" %(article_url)s\n" +" " +msgstr "" +"Your comment on " +"%(article_title)s
has \n" +" received a reply.
%(comment_body)s\n" +"
\n" +" go check it out!\n" +"
\n" +" If the link above cannot be opened, please copy this " +"link to your browser.\n" +" %(article_url)s\n" +" " + +#: .\djangoblog\logentryadmin.py:63 +msgid "object" +msgstr "object" + +#: .\djangoblog\settings.py:140 +msgid "English" +msgstr "English" + +#: .\djangoblog\settings.py:141 +msgid "Simplified Chinese" +msgstr "Simplified Chinese" + +#: .\djangoblog\settings.py:142 +msgid "Traditional Chinese" +msgstr "Traditional Chinese" + +#: .\oauth\models.py:30 +msgid "oauth user" +msgstr "oauth user" + +#: .\oauth\models.py:37 +msgid "weibo" +msgstr "weibo" + +#: .\oauth\models.py:38 +msgid "google" +msgstr "google" + +#: .\oauth\models.py:48 +msgid "callback url" +msgstr "callback url" + +#: .\oauth\models.py:59 +msgid "already exists" +msgstr "already exists" + +#: .\oauth\views.py:154 +#, python-format +msgid "" +"\n" +"

Congratulations, you have successfully bound your email address. You " +"can use\n" +" %(oauthuser_type)s to directly log in to this website without a " +"password.

\n" +" You are welcome to continue to follow this site, the address is\n" +" %(site)s\n" +" Thank you again!\n" +"
\n" +" If the link above cannot be opened, please copy this link to your " +"browser.\n" +" %(site)s\n" +" " +msgstr "" +"\n" +"

Congratulations, you have successfully bound your email address. You " +"can use\n" +" %(oauthuser_type)s to directly log in to this website without a " +"password.

\n" +" You are welcome to continue to follow this site, the address is\n" +" %(site)s\n" +" Thank you again!\n" +"
\n" +" If the link above cannot be opened, please copy this link to your " +"browser.\n" +" %(site)s\n" +" " + +#: .\oauth\views.py:165 +msgid "Congratulations on your successful binding!" +msgstr "Congratulations on your successful binding!" + +#: .\oauth\views.py:217 +#, python-format +msgid "" +"\n" +"

Please click the link below to bind your email

\n" +"\n" +" %(url)s\n" +"\n" +" Thank you again!\n" +"
\n" +" If the link above cannot be opened, please copy this link " +"to your browser.\n" +"
\n" +" %(url)s\n" +" " +msgstr "" +"\n" +"

Please click the link below to bind your email

\n" +"\n" +" %(url)s\n" +"\n" +" Thank you again!\n" +"
\n" +" If the link above cannot be opened, please copy this link " +"to your browser.\n" +"
\n" +" %(url)s\n" +" " + +#: .\oauth\views.py:228 .\oauth\views.py:240 +msgid "Bind your email" +msgstr "Bind your email" + +#: .\oauth\views.py:242 +msgid "" +"Congratulations, the binding is just one step away. Please log in to your " +"email to check the email to complete the binding. Thank you." +msgstr "" +"Congratulations, the binding is just one step away. Please log in to your " +"email to check the email to complete the binding. Thank you." + +#: .\oauth\views.py:245 +msgid "Binding successful" +msgstr "Binding successful" + +#: .\oauth\views.py:247 +#, python-format +msgid "" +"Congratulations, you have successfully bound your email address. You can use " +"%(oauthuser_type)s to directly log in to this website without a password. " +"You are welcome to continue to follow this site." +msgstr "" +"Congratulations, you have successfully bound your email address. You can use " +"%(oauthuser_type)s to directly log in to this website without a password. " +"You are welcome to continue to follow this site." + +#: .\templates\account\forget_password.html:7 +msgid "forget the password" +msgstr "forget the password" + +#: .\templates\account\forget_password.html:18 +msgid "get verification code" +msgstr "get verification code" + +#: .\templates\account\forget_password.html:19 +msgid "submit" +msgstr "submit" + +#: .\templates\account\login.html:36 +msgid "Create Account" +msgstr "Create Account" + +#: .\templates\account\login.html:42 +#, fuzzy +#| msgid "forget the password" +msgid "Forget Password" +msgstr "forget the password" + +#: .\templates\account\result.html:18 .\templates\blog\tags\sidebar.html:126 +msgid "login" +msgstr "login" + +#: .\templates\account\result.html:22 +msgid "back to the homepage" +msgstr "back to the homepage" + +#: .\templates\blog\article_archives.html:7 +#: .\templates\blog\article_archives.html:24 +msgid "article archive" +msgstr "article archive" + +#: .\templates\blog\article_archives.html:32 +msgid "year" +msgstr "year" + +#: .\templates\blog\article_archives.html:36 +msgid "month" +msgstr "month" + +#: .\templates\blog\tags\article_info.html:12 +msgid "pin to top" +msgstr "pin to top" + +#: .\templates\blog\tags\article_info.html:28 +msgid "comments" +msgstr "comments" + +#: .\templates\blog\tags\article_info.html:58 +msgid "toc" +msgstr "toc" + +#: .\templates\blog\tags\article_meta_info.html:6 +msgid "posted in" +msgstr "posted in" + +#: .\templates\blog\tags\article_meta_info.html:14 +msgid "and tagged" +msgstr "and tagged" + +#: .\templates\blog\tags\article_meta_info.html:25 +msgid "by " +msgstr "by" + +#: .\templates\blog\tags\article_meta_info.html:29 +#, python-format +msgid "" +"\n" +" title=\"View all articles published by " +"%(article.author.username)s\"\n" +" " +msgstr "" +"\n" +" title=\"View all articles published by " +"%(article.author.username)s\"\n" +" " + +#: .\templates\blog\tags\article_meta_info.html:44 +msgid "on" +msgstr "on" + +#: .\templates\blog\tags\article_meta_info.html:54 +msgid "edit" +msgstr "edit" + +#: .\templates\blog\tags\article_pagination.html:4 +msgid "article navigation" +msgstr "article navigation" + +#: .\templates\blog\tags\article_pagination.html:9 +msgid "earlier articles" +msgstr "earlier articles" + +#: .\templates\blog\tags\article_pagination.html:12 +msgid "newer articles" +msgstr "newer articles" + +#: .\templates\blog\tags\article_tag_list.html:5 +msgid "tags" +msgstr "tags" + +#: .\templates\blog\tags\sidebar.html:7 +msgid "search" +msgstr "search" + +#: .\templates\blog\tags\sidebar.html:50 +msgid "recent comments" +msgstr "recent comments" + +#: .\templates\blog\tags\sidebar.html:57 +msgid "published on" +msgstr "published on" + +#: .\templates\blog\tags\sidebar.html:65 +msgid "recent articles" +msgstr "recent articles" + +#: .\templates\blog\tags\sidebar.html:77 +msgid "bookmark" +msgstr "bookmark" + +#: .\templates\blog\tags\sidebar.html:96 +msgid "Tag Cloud" +msgstr "Tag Cloud" + +#: .\templates\blog\tags\sidebar.html:107 +msgid "Welcome to star or fork the source code of this site" +msgstr "Welcome to star or fork the source code of this site" + +#: .\templates\blog\tags\sidebar.html:118 +msgid "Function" +msgstr "Function" + +#: .\templates\blog\tags\sidebar.html:120 +msgid "management site" +msgstr "management site" + +#: .\templates\blog\tags\sidebar.html:122 +msgid "logout" +msgstr "logout" + +#: .\templates\blog\tags\sidebar.html:129 +msgid "Track record" +msgstr "Track record" + +#: .\templates\blog\tags\sidebar.html:135 +msgid "Click me to return to the top" +msgstr "Click me to return to the top" + +#: .\templates\oauth\oauth_applications.html:5 +#| msgid "login" +msgid "quick login" +msgstr "quick login" + +#: .\templates\share_layout\nav.html:26 +msgid "Article archive" +msgstr "Article archive" diff --git a/src/DjangoBlog-master/locale/zh_Hans/LC_MESSAGES/django.mo b/src/DjangoBlog-master/locale/zh_Hans/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..a2d36e98a180a2d9f413841d0cfa0c5f85654f63 GIT binary patch literal 10321 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, YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-09-13 16:02+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: .\accounts\admin.py:12 +msgid "password" +msgstr "密码" + +#: .\accounts\admin.py:13 +msgid "Enter password again" +msgstr "再次输入密码" + +#: .\accounts\admin.py:24 .\accounts\forms.py:89 +msgid "passwords do not match" +msgstr "密码不匹配" + +#: .\accounts\forms.py:36 +msgid "email already exists" +msgstr "邮箱已存在" + +#: .\accounts\forms.py:46 .\accounts\forms.py:50 +msgid "New password" +msgstr "新密码" + +#: .\accounts\forms.py:60 +msgid "Confirm password" +msgstr "确认密码" + +#: .\accounts\forms.py:70 .\accounts\forms.py:116 +msgid "Email" +msgstr "邮箱" + +#: .\accounts\forms.py:76 .\accounts\forms.py:80 +msgid "Code" +msgstr "验证码" + +#: .\accounts\forms.py:100 .\accounts\tests.py:194 +msgid "email does not exist" +msgstr "邮箱不存在" + +#: .\accounts\models.py:12 .\oauth\models.py:17 +msgid "nick name" +msgstr "昵称" + +#: .\accounts\models.py:13 .\blog\models.py:29 .\blog\models.py:266 +#: .\blog\models.py:284 .\comments\models.py:13 .\oauth\models.py:23 +#: .\oauth\models.py:53 +msgid "creation time" +msgstr "创建时间" + +#: .\accounts\models.py:14 .\comments\models.py:14 .\oauth\models.py:24 +#: .\oauth\models.py:54 +msgid "last modify time" +msgstr "最后修改时间" + +#: .\accounts\models.py:15 +msgid "create source" +msgstr "来源" + +#: .\accounts\models.py:33 .\djangoblog\logentryadmin.py:81 +msgid "user" +msgstr "用户" + +#: .\accounts\tests.py:216 .\accounts\utils.py:39 +msgid "Verification code error" +msgstr "验证码错误" + +#: .\accounts\utils.py:13 +msgid "Verify Email" +msgstr "验证邮箱" + +#: .\accounts\utils.py:21 +#, python-format +msgid "" +"You are resetting the password, the verification code is:%(code)s, valid " +"within 5 minutes, please keep it properly" +msgstr "您正在重置密码,验证码为:%(code)s,5分钟内有效 请妥善保管." + +#: .\blog\admin.py:13 .\blog\models.py:92 .\comments\models.py:17 +#: .\oauth\models.py:12 +msgid "author" +msgstr "作者" + +#: .\blog\admin.py:53 +msgid "Publish selected articles" +msgstr "发布选中的文章" + +#: .\blog\admin.py:54 +msgid "Draft selected articles" +msgstr "选中文章设为草稿" + +#: .\blog\admin.py:55 +msgid "Close article comments" +msgstr "关闭文章评论" + +#: .\blog\admin.py:56 +msgid "Open article comments" +msgstr "打开文章评论" + +#: .\blog\admin.py:89 .\blog\models.py:101 .\blog\models.py:183 +#: .\templates\blog\tags\sidebar.html:40 +msgid "category" +msgstr "分类目录" + +#: .\blog\models.py:20 .\blog\models.py:179 .\templates\share_layout\nav.html:8 +msgid "index" +msgstr "首页" + +#: .\blog\models.py:21 +msgid "list" +msgstr "列表" + +#: .\blog\models.py:22 +msgid "post" +msgstr "文章" + +#: .\blog\models.py:23 +msgid "all" +msgstr "所有" + +#: .\blog\models.py:24 +msgid "slide" +msgstr "侧边栏" + +#: .\blog\models.py:30 .\blog\models.py:267 .\blog\models.py:285 +msgid "modify time" +msgstr "修改时间" + +#: .\blog\models.py:63 +msgid "Draft" +msgstr "草稿" + +#: .\blog\models.py:64 +msgid "Published" +msgstr "发布" + +#: .\blog\models.py:67 +msgid "Open" +msgstr "打开" + +#: .\blog\models.py:68 +msgid "Close" +msgstr "关闭" + +#: .\blog\models.py:71 .\comments\admin.py:47 +msgid "Article" +msgstr "文章" + +#: .\blog\models.py:72 +msgid "Page" +msgstr "页面" + +#: .\blog\models.py:74 .\blog\models.py:280 +msgid "title" +msgstr "标题" + +#: .\blog\models.py:75 +msgid "body" +msgstr "内容" + +#: .\blog\models.py:77 +msgid "publish time" +msgstr "发布时间" + +#: .\blog\models.py:79 +msgid "status" +msgstr "状态" + +#: .\blog\models.py:84 +msgid "comment status" +msgstr "评论状态" + +#: .\blog\models.py:88 .\oauth\models.py:43 +msgid "type" +msgstr "类型" + +#: .\blog\models.py:89 +msgid "views" +msgstr "阅读量" + +#: .\blog\models.py:97 .\blog\models.py:258 .\blog\models.py:282 +msgid "order" +msgstr "排序" + +#: .\blog\models.py:98 +msgid "show toc" +msgstr "显示目录" + +#: .\blog\models.py:105 .\blog\models.py:249 +msgid "tag" +msgstr "标签" + +#: .\blog\models.py:115 .\comments\models.py:21 +msgid "article" +msgstr "文章" + +#: .\blog\models.py:171 +msgid "category name" +msgstr "分类名" + +#: .\blog\models.py:174 +msgid "parent category" +msgstr "上级分类" + +#: .\blog\models.py:234 +msgid "tag name" +msgstr "标签名" + +#: .\blog\models.py:256 +msgid "link name" +msgstr "链接名" + +#: .\blog\models.py:257 .\blog\models.py:271 +msgid "link" +msgstr "链接" + +#: .\blog\models.py:260 +msgid "is show" +msgstr "是否显示" + +#: .\blog\models.py:262 +msgid "show type" +msgstr "显示类型" + +#: .\blog\models.py:281 +msgid "content" +msgstr "内容" + +#: .\blog\models.py:283 .\oauth\models.py:52 +msgid "is enable" +msgstr "是否启用" + +#: .\blog\models.py:289 +msgid "sidebar" +msgstr "侧边栏" + +#: .\blog\models.py:299 +msgid "site name" +msgstr "站点名称" + +#: .\blog\models.py:305 +msgid "site description" +msgstr "站点描述" + +#: .\blog\models.py:311 +msgid "site seo description" +msgstr "站点SEO描述" + +#: .\blog\models.py:313 +msgid "site keywords" +msgstr "关键字" + +#: .\blog\models.py:318 +msgid "article sub length" +msgstr "文章摘要长度" + +#: .\blog\models.py:319 +msgid "sidebar article count" +msgstr "侧边栏文章数目" + +#: .\blog\models.py:320 +msgid "sidebar comment count" +msgstr "侧边栏评论数目" + +#: .\blog\models.py:321 +msgid "article comment count" +msgstr "文章页面默认显示评论数目" + +#: .\blog\models.py:322 +msgid "show adsense" +msgstr "是否显示广告" + +#: .\blog\models.py:324 +msgid "adsense code" +msgstr "广告内容" + +#: .\blog\models.py:325 +msgid "open site comment" +msgstr "公共头部" + +#: .\blog\models.py:352 +msgid "Website configuration" +msgstr "网站配置" + +#: .\blog\models.py:360 +msgid "There can only be one configuration" +msgstr "只能有一个配置" + +#: .\blog\views.py:348 +msgid "" +"Sorry, the page you requested is not found, please click the home page to " +"see other?" +msgstr "抱歉,你所访问的页面找不到,请点击首页看看别的?" + +#: .\blog\views.py:356 +msgid "Sorry, the server is busy, please click the home page to see other?" +msgstr "抱歉,服务出错了,请点击首页看看别的?" + +#: .\blog\views.py:369 +msgid "Sorry, you do not have permission to access this page?" +msgstr "抱歉,你没用权限访问此页面。" + +#: .\comments\admin.py:15 +msgid "Disable comments" +msgstr "禁用评论" + +#: .\comments\admin.py:16 +msgid "Enable comments" +msgstr "启用评论" + +#: .\comments\admin.py:46 +msgid "User" +msgstr "用户" + +#: .\comments\models.py:25 +msgid "parent comment" +msgstr "上级评论" + +#: .\comments\models.py:29 +msgid "enable" +msgstr "启用" + +#: .\comments\models.py:34 .\templates\blog\tags\article_info.html:30 +msgid "comment" +msgstr "评论" + +#: .\comments\utils.py:13 +msgid "Thanks for your comment" +msgstr "感谢你的评论" + +#: .\comments\utils.py:15 +#, python-format +msgid "" +"

Thank you very much for your comments on this site

\n" +" You can visit %(article_title)s\n" +" to review your comments,\n" +" Thank you again!\n" +"
\n" +" If the link above cannot be opened, please copy this " +"link to your browser.\n" +" %(article_url)s" +msgstr "" +"

非常感谢您对此网站的评论

\n" +" 您可以访问%(article_title)s\n" +"查看您的评论,\n" +"再次感谢您!\n" +"
\n" +" 如果上面的链接打不开,请复制此链接链接到您的浏览器。\n" +"%(article_url)s" + +#: .\comments\utils.py:26 +#, python-format +msgid "" +"Your comment on " +"%(article_title)s
has \n" +" received a reply.
%(comment_body)s\n" +"
\n" +" go check it out!\n" +"
\n" +" If the link above cannot be opened, please copy this " +"link to your browser.\n" +" %(article_url)s\n" +" " +msgstr "" +"您对 %(article_title)s
" +"的评论有\n" +" 收到回复。
%(comment_body)s\n" +"
\n" +"快去看看吧!\n" +"
\n" +" 如果上面的链接打不开,请复制此链接链接到您的浏览器。\n" +" %(article_url)s\n" +" " + +#: .\djangoblog\logentryadmin.py:63 +msgid "object" +msgstr "对象" + +#: .\djangoblog\settings.py:140 +msgid "English" +msgstr "英文" + +#: .\djangoblog\settings.py:141 +msgid "Simplified Chinese" +msgstr "简体中文" + +#: .\djangoblog\settings.py:142 +msgid "Traditional Chinese" +msgstr "繁体中文" + +#: .\oauth\models.py:30 +msgid "oauth user" +msgstr "第三方用户" + +#: .\oauth\models.py:37 +msgid "weibo" +msgstr "微博" + +#: .\oauth\models.py:38 +msgid "google" +msgstr "谷歌" + +#: .\oauth\models.py:48 +msgid "callback url" +msgstr "回调地址" + +#: .\oauth\models.py:59 +msgid "already exists" +msgstr "已经存在" + +#: .\oauth\views.py:154 +#, python-format +msgid "" +"\n" +"

Congratulations, you have successfully bound your email address. You " +"can use\n" +" %(oauthuser_type)s to directly log in to this website without a " +"password.

\n" +" You are welcome to continue to follow this site, the address is\n" +" %(site)s\n" +" Thank you again!\n" +"
\n" +" If the link above cannot be opened, please copy this link to your " +"browser.\n" +" %(site)s\n" +" " +msgstr "" +"\n" +"

恭喜你已经绑定成功 你可以使用\n" +" %(oauthuser_type)s 来免密登录本站

\n" +" 欢迎继续关注本站, 地址是\n" +" %(site)s\n" +" 再次感谢你\n" +"
\n" +" 如果上面链接无法打开,请复制此链接到你的浏览器 \n" +" %(site)s\n" +" " + +#: .\oauth\views.py:165 +msgid "Congratulations on your successful binding!" +msgstr "恭喜你绑定成功" + +#: .\oauth\views.py:217 +#, python-format +msgid "" +"\n" +"

Please click the link below to bind your email

\n" +"\n" +" %(url)s\n" +"\n" +" Thank you again!\n" +"
\n" +" If the link above cannot be opened, please copy this link " +"to your browser.\n" +"
\n" +" %(url)s\n" +" " +msgstr "" +"\n" +"

请点击下面的链接绑定您的邮箱

\n" +"\n" +" %(url)s\n" +"\n" +"再次感谢您!\n" +"
\n" +"如果上面的链接打不开,请复制此链接到您的浏览器。\n" +"%(url)s\n" +" " + +#: .\oauth\views.py:228 .\oauth\views.py:240 +msgid "Bind your email" +msgstr "绑定邮箱" + +#: .\oauth\views.py:242 +msgid "" +"Congratulations, the binding is just one step away. Please log in to your " +"email to check the email to complete the binding. Thank you." +msgstr "恭喜您,还差一步就绑定成功了,请登录您的邮箱查看邮件完成绑定,谢谢。" + +#: .\oauth\views.py:245 +msgid "Binding successful" +msgstr "绑定成功" + +#: .\oauth\views.py:247 +#, python-format +msgid "" +"Congratulations, you have successfully bound your email address. You can use " +"%(oauthuser_type)s to directly log in to this website without a password. " +"You are welcome to continue to follow this site." +msgstr "" +"恭喜您绑定成功,您以后可以使用%(oauthuser_type)s来直接免密码登录本站啦,感谢" +"您对本站对关注。" + +#: .\templates\account\forget_password.html:7 +msgid "forget the password" +msgstr "忘记密码" + +#: .\templates\account\forget_password.html:18 +msgid "get verification code" +msgstr "获取验证码" + +#: .\templates\account\forget_password.html:19 +msgid "submit" +msgstr "提交" + +#: .\templates\account\login.html:36 +msgid "Create Account" +msgstr "创建账号" + +#: .\templates\account\login.html:42 +#| msgid "forget the password" +msgid "Forget Password" +msgstr "忘记密码" + +#: .\templates\account\result.html:18 .\templates\blog\tags\sidebar.html:126 +msgid "login" +msgstr "登录" + +#: .\templates\account\result.html:22 +msgid "back to the homepage" +msgstr "返回首页吧" + +#: .\templates\blog\article_archives.html:7 +#: .\templates\blog\article_archives.html:24 +msgid "article archive" +msgstr "文章归档" + +#: .\templates\blog\article_archives.html:32 +msgid "year" +msgstr "年" + +#: .\templates\blog\article_archives.html:36 +msgid "month" +msgstr "月" + +#: .\templates\blog\tags\article_info.html:12 +msgid "pin to top" +msgstr "置顶" + +#: .\templates\blog\tags\article_info.html:28 +msgid "comments" +msgstr "评论" + +#: .\templates\blog\tags\article_info.html:58 +msgid "toc" +msgstr "目录" + +#: .\templates\blog\tags\article_meta_info.html:6 +msgid "posted in" +msgstr "发布于" + +#: .\templates\blog\tags\article_meta_info.html:14 +msgid "and tagged" +msgstr "并标记为" + +#: .\templates\blog\tags\article_meta_info.html:25 +msgid "by " +msgstr "由" + +#: .\templates\blog\tags\article_meta_info.html:29 +#, python-format +msgid "" +"\n" +" title=\"View all articles published by " +"%(article.author.username)s\"\n" +" " +msgstr "" +"\n" +" title=\"查看所有由 %(article.author.username)s\"发布的文章\n" +" " + +#: .\templates\blog\tags\article_meta_info.html:44 +msgid "on" +msgstr "在" + +#: .\templates\blog\tags\article_meta_info.html:54 +msgid "edit" +msgstr "编辑" + +#: .\templates\blog\tags\article_pagination.html:4 +msgid "article navigation" +msgstr "文章导航" + +#: .\templates\blog\tags\article_pagination.html:9 +msgid "earlier articles" +msgstr "早期文章" + +#: .\templates\blog\tags\article_pagination.html:12 +msgid "newer articles" +msgstr "较新文章" + +#: .\templates\blog\tags\article_tag_list.html:5 +msgid "tags" +msgstr "标签" + +#: .\templates\blog\tags\sidebar.html:7 +msgid "search" +msgstr "搜索" + +#: .\templates\blog\tags\sidebar.html:50 +msgid "recent comments" +msgstr "近期评论" + +#: .\templates\blog\tags\sidebar.html:57 +msgid "published on" +msgstr "发表于" + +#: .\templates\blog\tags\sidebar.html:65 +msgid "recent articles" +msgstr "近期文章" + +#: .\templates\blog\tags\sidebar.html:77 +msgid "bookmark" +msgstr "书签" + +#: .\templates\blog\tags\sidebar.html:96 +msgid "Tag Cloud" +msgstr "标签云" + +#: .\templates\blog\tags\sidebar.html:107 +msgid "Welcome to star or fork the source code of this site" +msgstr "欢迎您STAR或者FORK本站源代码" + +#: .\templates\blog\tags\sidebar.html:118 +msgid "Function" +msgstr "功能" + +#: .\templates\blog\tags\sidebar.html:120 +msgid "management site" +msgstr "管理站点" + +#: .\templates\blog\tags\sidebar.html:122 +msgid "logout" +msgstr "登出" + +#: .\templates\blog\tags\sidebar.html:129 +msgid "Track record" +msgstr "运动轨迹记录" + +#: .\templates\blog\tags\sidebar.html:135 +msgid "Click me to return to the top" +msgstr "点我返回顶部" + +#: .\templates\oauth\oauth_applications.html:5 +#| msgid "login" +msgid "quick login" +msgstr "快捷登录" + +#: .\templates\share_layout\nav.html:26 +msgid "Article archive" +msgstr "文章归档" diff --git a/src/DjangoBlog-master/locale/zh_Hant/LC_MESSAGES/django.mo b/src/DjangoBlog-master/locale/zh_Hant/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..fe2ea17dc2636742b9c3b8d4eddb6293ee3b7290 GIT binary patch literal 10268 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 literal 0 HcmV?d00001 diff --git a/src/DjangoBlog-master/locale/zh_Hant/LC_MESSAGES/django.po b/src/DjangoBlog-master/locale/zh_Hant/LC_MESSAGES/django.po new file mode 100644 index 0000000..a2920ce --- /dev/null +++ b/src/DjangoBlog-master/locale/zh_Hant/LC_MESSAGES/django.po @@ -0,0 +1,668 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-09-13 16:02+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: .\accounts\admin.py:12 +msgid "password" +msgstr "密碼" + +#: .\accounts\admin.py:13 +msgid "Enter password again" +msgstr "再次輸入密碼" + +#: .\accounts\admin.py:24 .\accounts\forms.py:89 +msgid "passwords do not match" +msgstr "密碼不匹配" + +#: .\accounts\forms.py:36 +msgid "email already exists" +msgstr "郵箱已存在" + +#: .\accounts\forms.py:46 .\accounts\forms.py:50 +msgid "New password" +msgstr "新密碼" + +#: .\accounts\forms.py:60 +msgid "Confirm password" +msgstr "確認密碼" + +#: .\accounts\forms.py:70 .\accounts\forms.py:116 +msgid "Email" +msgstr "郵箱" + +#: .\accounts\forms.py:76 .\accounts\forms.py:80 +msgid "Code" +msgstr "驗證碼" + +#: .\accounts\forms.py:100 .\accounts\tests.py:194 +msgid "email does not exist" +msgstr "郵箱不存在" + +#: .\accounts\models.py:12 .\oauth\models.py:17 +msgid "nick name" +msgstr "昵稱" + +#: .\accounts\models.py:13 .\blog\models.py:29 .\blog\models.py:266 +#: .\blog\models.py:284 .\comments\models.py:13 .\oauth\models.py:23 +#: .\oauth\models.py:53 +msgid "creation time" +msgstr "創建時間" + +#: .\accounts\models.py:14 .\comments\models.py:14 .\oauth\models.py:24 +#: .\oauth\models.py:54 +msgid "last modify time" +msgstr "最後修改時間" + +#: .\accounts\models.py:15 +msgid "create source" +msgstr "來源" + +#: .\accounts\models.py:33 .\djangoblog\logentryadmin.py:81 +msgid "user" +msgstr "用戶" + +#: .\accounts\tests.py:216 .\accounts\utils.py:39 +msgid "Verification code error" +msgstr "驗證碼錯誤" + +#: .\accounts\utils.py:13 +msgid "Verify Email" +msgstr "驗證郵箱" + +#: .\accounts\utils.py:21 +#, python-format +msgid "" +"You are resetting the password, the verification code is:%(code)s, valid " +"within 5 minutes, please keep it properly" +msgstr "您正在重置密碼,驗證碼為:%(code)s,5分鐘內有效 請妥善保管." + +#: .\blog\admin.py:13 .\blog\models.py:92 .\comments\models.py:17 +#: .\oauth\models.py:12 +msgid "author" +msgstr "作者" + +#: .\blog\admin.py:53 +msgid "Publish selected articles" +msgstr "發布選中的文章" + +#: .\blog\admin.py:54 +msgid "Draft selected articles" +msgstr "選中文章設為草稿" + +#: .\blog\admin.py:55 +msgid "Close article comments" +msgstr "關閉文章評論" + +#: .\blog\admin.py:56 +msgid "Open article comments" +msgstr "打開文章評論" + +#: .\blog\admin.py:89 .\blog\models.py:101 .\blog\models.py:183 +#: .\templates\blog\tags\sidebar.html:40 +msgid "category" +msgstr "分類目錄" + +#: .\blog\models.py:20 .\blog\models.py:179 .\templates\share_layout\nav.html:8 +msgid "index" +msgstr "首頁" + +#: .\blog\models.py:21 +msgid "list" +msgstr "列表" + +#: .\blog\models.py:22 +msgid "post" +msgstr "文章" + +#: .\blog\models.py:23 +msgid "all" +msgstr "所有" + +#: .\blog\models.py:24 +msgid "slide" +msgstr "側邊欄" + +#: .\blog\models.py:30 .\blog\models.py:267 .\blog\models.py:285 +msgid "modify time" +msgstr "修改時間" + +#: .\blog\models.py:63 +msgid "Draft" +msgstr "草稿" + +#: .\blog\models.py:64 +msgid "Published" +msgstr "發布" + +#: .\blog\models.py:67 +msgid "Open" +msgstr "打開" + +#: .\blog\models.py:68 +msgid "Close" +msgstr "關閉" + +#: .\blog\models.py:71 .\comments\admin.py:47 +msgid "Article" +msgstr "文章" + +#: .\blog\models.py:72 +msgid "Page" +msgstr "頁面" + +#: .\blog\models.py:74 .\blog\models.py:280 +msgid "title" +msgstr "標題" + +#: .\blog\models.py:75 +msgid "body" +msgstr "內容" + +#: .\blog\models.py:77 +msgid "publish time" +msgstr "發布時間" + +#: .\blog\models.py:79 +msgid "status" +msgstr "狀態" + +#: .\blog\models.py:84 +msgid "comment status" +msgstr "評論狀態" + +#: .\blog\models.py:88 .\oauth\models.py:43 +msgid "type" +msgstr "類型" + +#: .\blog\models.py:89 +msgid "views" +msgstr "閱讀量" + +#: .\blog\models.py:97 .\blog\models.py:258 .\blog\models.py:282 +msgid "order" +msgstr "排序" + +#: .\blog\models.py:98 +msgid "show toc" +msgstr "顯示目錄" + +#: .\blog\models.py:105 .\blog\models.py:249 +msgid "tag" +msgstr "標簽" + +#: .\blog\models.py:115 .\comments\models.py:21 +msgid "article" +msgstr "文章" + +#: .\blog\models.py:171 +msgid "category name" +msgstr "分類名" + +#: .\blog\models.py:174 +msgid "parent category" +msgstr "上級分類" + +#: .\blog\models.py:234 +msgid "tag name" +msgstr "標簽名" + +#: .\blog\models.py:256 +msgid "link name" +msgstr "鏈接名" + +#: .\blog\models.py:257 .\blog\models.py:271 +msgid "link" +msgstr "鏈接" + +#: .\blog\models.py:260 +msgid "is show" +msgstr "是否顯示" + +#: .\blog\models.py:262 +msgid "show type" +msgstr "顯示類型" + +#: .\blog\models.py:281 +msgid "content" +msgstr "內容" + +#: .\blog\models.py:283 .\oauth\models.py:52 +msgid "is enable" +msgstr "是否啟用" + +#: .\blog\models.py:289 +msgid "sidebar" +msgstr "側邊欄" + +#: .\blog\models.py:299 +msgid "site name" +msgstr "站點名稱" + +#: .\blog\models.py:305 +msgid "site description" +msgstr "站點描述" + +#: .\blog\models.py:311 +msgid "site seo description" +msgstr "站點SEO描述" + +#: .\blog\models.py:313 +msgid "site keywords" +msgstr "關鍵字" + +#: .\blog\models.py:318 +msgid "article sub length" +msgstr "文章摘要長度" + +#: .\blog\models.py:319 +msgid "sidebar article count" +msgstr "側邊欄文章數目" + +#: .\blog\models.py:320 +msgid "sidebar comment count" +msgstr "側邊欄評論數目" + +#: .\blog\models.py:321 +msgid "article comment count" +msgstr "文章頁面默認顯示評論數目" + +#: .\blog\models.py:322 +msgid "show adsense" +msgstr "是否顯示廣告" + +#: .\blog\models.py:324 +msgid "adsense code" +msgstr "廣告內容" + +#: .\blog\models.py:325 +msgid "open site comment" +msgstr "公共頭部" + +#: .\blog\models.py:352 +msgid "Website configuration" +msgstr "網站配置" + +#: .\blog\models.py:360 +msgid "There can only be one configuration" +msgstr "只能有一個配置" + +#: .\blog\views.py:348 +msgid "" +"Sorry, the page you requested is not found, please click the home page to " +"see other?" +msgstr "抱歉,你所訪問的頁面找不到,請點擊首頁看看別的?" + +#: .\blog\views.py:356 +msgid "Sorry, the server is busy, please click the home page to see other?" +msgstr "抱歉,服務出錯了,請點擊首頁看看別的?" + +#: .\blog\views.py:369 +msgid "Sorry, you do not have permission to access this page?" +msgstr "抱歉,你沒用權限訪問此頁面。" + +#: .\comments\admin.py:15 +msgid "Disable comments" +msgstr "禁用評論" + +#: .\comments\admin.py:16 +msgid "Enable comments" +msgstr "啟用評論" + +#: .\comments\admin.py:46 +msgid "User" +msgstr "用戶" + +#: .\comments\models.py:25 +msgid "parent comment" +msgstr "上級評論" + +#: .\comments\models.py:29 +msgid "enable" +msgstr "啟用" + +#: .\comments\models.py:34 .\templates\blog\tags\article_info.html:30 +msgid "comment" +msgstr "評論" + +#: .\comments\utils.py:13 +msgid "Thanks for your comment" +msgstr "感謝你的評論" + +#: .\comments\utils.py:15 +#, python-format +msgid "" +"

Thank you very much for your comments on this site

\n" +" You can visit %(article_title)s\n" +" to review your comments,\n" +" Thank you again!\n" +"
\n" +" If the link above cannot be opened, please copy this " +"link to your browser.\n" +" %(article_url)s" +msgstr "" +"

非常感謝您對此網站的評論

\n" +" 您可以訪問%(article_title)s\n" +"查看您的評論,\n" +"再次感謝您!\n" +"
\n" +" 如果上面的鏈接打不開,請復製此鏈接鏈接到您的瀏覽器。\n" +"%(article_url)s" + +#: .\comments\utils.py:26 +#, python-format +msgid "" +"Your comment on " +"%(article_title)s
has \n" +" received a reply.
%(comment_body)s\n" +"
\n" +" go check it out!\n" +"
\n" +" If the link above cannot be opened, please copy this " +"link to your browser.\n" +" %(article_url)s\n" +" " +msgstr "" +"您對 %(article_title)s
" +"的評論有\n" +" 收到回復。
%(comment_body)s\n" +"
\n" +"快去看看吧!\n" +"
\n" +" 如果上面的鏈接打不開,請復製此鏈接鏈接到您的瀏覽器。\n" +" %(article_url)s\n" +" " + +#: .\djangoblog\logentryadmin.py:63 +msgid "object" +msgstr "對象" + +#: .\djangoblog\settings.py:140 +msgid "English" +msgstr "英文" + +#: .\djangoblog\settings.py:141 +msgid "Simplified Chinese" +msgstr "簡體中文" + +#: .\djangoblog\settings.py:142 +msgid "Traditional Chinese" +msgstr "繁體中文" + +#: .\oauth\models.py:30 +msgid "oauth user" +msgstr "第三方用戶" + +#: .\oauth\models.py:37 +msgid "weibo" +msgstr "微博" + +#: .\oauth\models.py:38 +msgid "google" +msgstr "谷歌" + +#: .\oauth\models.py:48 +msgid "callback url" +msgstr "回調地址" + +#: .\oauth\models.py:59 +msgid "already exists" +msgstr "已經存在" + +#: .\oauth\views.py:154 +#, python-format +msgid "" +"\n" +"

Congratulations, you have successfully bound your email address. You " +"can use\n" +" %(oauthuser_type)s to directly log in to this website without a " +"password.

\n" +" You are welcome to continue to follow this site, the address is\n" +" %(site)s\n" +" Thank you again!\n" +"
\n" +" If the link above cannot be opened, please copy this link to your " +"browser.\n" +" %(site)s\n" +" " +msgstr "" +"\n" +"

恭喜你已經綁定成功 你可以使用\n" +" %(oauthuser_type)s 來免密登錄本站

\n" +" 歡迎繼續關註本站, 地址是\n" +" %(site)s\n" +" 再次感謝你\n" +"
\n" +" 如果上面鏈接無法打開,請復製此鏈接到你的瀏覽器 \n" +" %(site)s\n" +" " + +#: .\oauth\views.py:165 +msgid "Congratulations on your successful binding!" +msgstr "恭喜你綁定成功" + +#: .\oauth\views.py:217 +#, python-format +msgid "" +"\n" +"

Please click the link below to bind your email

\n" +"\n" +" %(url)s\n" +"\n" +" Thank you again!\n" +"
\n" +" If the link above cannot be opened, please copy this link " +"to your browser.\n" +"
\n" +" %(url)s\n" +" " +msgstr "" +"\n" +"

請點擊下面的鏈接綁定您的郵箱

\n" +"\n" +" %(url)s\n" +"\n" +"再次感謝您!\n" +"
\n" +"如果上面的鏈接打不開,請復製此鏈接到您的瀏覽器。\n" +"%(url)s\n" +" " + +#: .\oauth\views.py:228 .\oauth\views.py:240 +msgid "Bind your email" +msgstr "綁定郵箱" + +#: .\oauth\views.py:242 +msgid "" +"Congratulations, the binding is just one step away. Please log in to your " +"email to check the email to complete the binding. Thank you." +msgstr "恭喜您,還差一步就綁定成功了,請登錄您的郵箱查看郵件完成綁定,謝謝。" + +#: .\oauth\views.py:245 +msgid "Binding successful" +msgstr "綁定成功" + +#: .\oauth\views.py:247 +#, python-format +msgid "" +"Congratulations, you have successfully bound your email address. You can use " +"%(oauthuser_type)s to directly log in to this website without a password. " +"You are welcome to continue to follow this site." +msgstr "" +"恭喜您綁定成功,您以後可以使用%(oauthuser_type)s來直接免密碼登錄本站啦,感謝" +"您對本站對關註。" + +#: .\templates\account\forget_password.html:7 +msgid "forget the password" +msgstr "忘記密碼" + +#: .\templates\account\forget_password.html:18 +msgid "get verification code" +msgstr "獲取驗證碼" + +#: .\templates\account\forget_password.html:19 +msgid "submit" +msgstr "提交" + +#: .\templates\account\login.html:36 +msgid "Create Account" +msgstr "創建賬號" + +#: .\templates\account\login.html:42 +#, fuzzy +#| msgid "forget the password" +msgid "Forget Password" +msgstr "忘記密碼" + +#: .\templates\account\result.html:18 .\templates\blog\tags\sidebar.html:126 +msgid "login" +msgstr "登錄" + +#: .\templates\account\result.html:22 +msgid "back to the homepage" +msgstr "返回首頁吧" + +#: .\templates\blog\article_archives.html:7 +#: .\templates\blog\article_archives.html:24 +msgid "article archive" +msgstr "文章歸檔" + +#: .\templates\blog\article_archives.html:32 +msgid "year" +msgstr "年" + +#: .\templates\blog\article_archives.html:36 +msgid "month" +msgstr "月" + +#: .\templates\blog\tags\article_info.html:12 +msgid "pin to top" +msgstr "置頂" + +#: .\templates\blog\tags\article_info.html:28 +msgid "comments" +msgstr "評論" + +#: .\templates\blog\tags\article_info.html:58 +msgid "toc" +msgstr "目錄" + +#: .\templates\blog\tags\article_meta_info.html:6 +msgid "posted in" +msgstr "發布於" + +#: .\templates\blog\tags\article_meta_info.html:14 +msgid "and tagged" +msgstr "並標記為" + +#: .\templates\blog\tags\article_meta_info.html:25 +msgid "by " +msgstr "由" + +#: .\templates\blog\tags\article_meta_info.html:29 +#, python-format +msgid "" +"\n" +" title=\"View all articles published by " +"%(article.author.username)s\"\n" +" " +msgstr "" +"\n" +" title=\"查看所有由 %(article.author.username)s\"發布的文章\n" +" " + +#: .\templates\blog\tags\article_meta_info.html:44 +msgid "on" +msgstr "在" + +#: .\templates\blog\tags\article_meta_info.html:54 +msgid "edit" +msgstr "編輯" + +#: .\templates\blog\tags\article_pagination.html:4 +msgid "article navigation" +msgstr "文章導航" + +#: .\templates\blog\tags\article_pagination.html:9 +msgid "earlier articles" +msgstr "早期文章" + +#: .\templates\blog\tags\article_pagination.html:12 +msgid "newer articles" +msgstr "較新文章" + +#: .\templates\blog\tags\article_tag_list.html:5 +msgid "tags" +msgstr "標簽" + +#: .\templates\blog\tags\sidebar.html:7 +msgid "search" +msgstr "搜索" + +#: .\templates\blog\tags\sidebar.html:50 +msgid "recent comments" +msgstr "近期評論" + +#: .\templates\blog\tags\sidebar.html:57 +msgid "published on" +msgstr "發表於" + +#: .\templates\blog\tags\sidebar.html:65 +msgid "recent articles" +msgstr "近期文章" + +#: .\templates\blog\tags\sidebar.html:77 +msgid "bookmark" +msgstr "書簽" + +#: .\templates\blog\tags\sidebar.html:96 +msgid "Tag Cloud" +msgstr "標簽雲" + +#: .\templates\blog\tags\sidebar.html:107 +msgid "Welcome to star or fork the source code of this site" +msgstr "歡迎您STAR或者FORK本站源代碼" + +#: .\templates\blog\tags\sidebar.html:118 +msgid "Function" +msgstr "功能" + +#: .\templates\blog\tags\sidebar.html:120 +msgid "management site" +msgstr "管理站點" + +#: .\templates\blog\tags\sidebar.html:122 +msgid "logout" +msgstr "登出" + +#: .\templates\blog\tags\sidebar.html:129 +msgid "Track record" +msgstr "運動軌跡記錄" + +#: .\templates\blog\tags\sidebar.html:135 +msgid "Click me to return to the top" +msgstr "點我返回頂部" + +#: .\templates\oauth\oauth_applications.html:5 +#| msgid "login" +msgid "quick login" +msgstr "快捷登錄" + +#: .\templates\share_layout\nav.html:26 +msgid "Article archive" +msgstr "文章歸檔" diff --git a/src/DjangoBlog-master/manage.py b/src/DjangoBlog-master/manage.py new file mode 100644 index 0000000..919ba74 --- /dev/null +++ b/src/DjangoBlog-master/manage.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +import os +import sys + +if __name__ == "__main__": + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djangoblog.settings") + try: + from django.core.management import execute_from_command_line + except ImportError: + # The above import may fail for some other reason. Ensure that the + # issue is really that Django is missing to avoid masking other + # exceptions on Python 2. + try: + import django + except ImportError: + raise ImportError( + "Couldn't import Django. Are you sure it's installed and " + "available on your PYTHONPATH environment variable? Did you " + "forget to activate a virtual environment?" + ) + raise + execute_from_command_line(sys.argv) diff --git a/src/DjangoBlog-master/oauth/__init__.py b/src/DjangoBlog-master/oauth/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/DjangoBlog-master/oauth/admin.py b/src/DjangoBlog-master/oauth/admin.py new file mode 100644 index 0000000..57eab5f --- /dev/null +++ b/src/DjangoBlog-master/oauth/admin.py @@ -0,0 +1,54 @@ +import logging + +from django.contrib import admin +# Register your models here. +from django.urls import reverse +from django.utils.html import format_html + +logger = logging.getLogger(__name__) + + +class OAuthUserAdmin(admin.ModelAdmin): + search_fields = ('nickname', 'email') + list_per_page = 20 + list_display = ( + 'id', + 'nickname', + 'link_to_usermodel', + 'show_user_image', + 'type', + 'email', + ) + list_display_links = ('id', 'nickname') + list_filter = ('author', 'type',) + readonly_fields = [] + + def get_readonly_fields(self, request, obj=None): + return list(self.readonly_fields) + \ + [field.name for field in obj._meta.fields] + \ + [field.name for field in obj._meta.many_to_many] + + def has_add_permission(self, request): + return False + + def link_to_usermodel(self, obj): + if obj.author: + info = (obj.author._meta.app_label, obj.author._meta.model_name) + link = reverse('admin:%s_%s_change' % info, args=(obj.author.id,)) + return format_html( + u'%s' % + (link, obj.author.nickname if obj.author.nickname else obj.author.email)) + + def show_user_image(self, obj): + img = obj.picture + return format_html( + u'' % + (img)) + + link_to_usermodel.short_description = '用户' + show_user_image.short_description = '用户头像' + + +class OAuthConfigAdmin(admin.ModelAdmin): + list_display = ('type', 'appkey', 'appsecret', 'is_enable') + list_filter = ('type',) diff --git a/src/DjangoBlog-master/oauth/apps.py b/src/DjangoBlog-master/oauth/apps.py new file mode 100644 index 0000000..17fcea2 --- /dev/null +++ b/src/DjangoBlog-master/oauth/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class OauthConfig(AppConfig): + name = 'oauth' diff --git a/src/DjangoBlog-master/oauth/forms.py b/src/DjangoBlog-master/oauth/forms.py new file mode 100644 index 0000000..0e4ede3 --- /dev/null +++ b/src/DjangoBlog-master/oauth/forms.py @@ -0,0 +1,12 @@ +from django.contrib.auth.forms import forms +from django.forms import widgets + + +class RequireEmailForm(forms.Form): + email = forms.EmailField(label='电子邮箱', required=True) + oauthid = forms.IntegerField(widget=forms.HiddenInput, required=False) + + def __init__(self, *args, **kwargs): + super(RequireEmailForm, self).__init__(*args, **kwargs) + self.fields['email'].widget = widgets.EmailInput( + attrs={'placeholder': "email", "class": "form-control"}) diff --git a/src/DjangoBlog-master/oauth/migrations/0001_initial.py b/src/DjangoBlog-master/oauth/migrations/0001_initial.py new file mode 100644 index 0000000..3aa3e03 --- /dev/null +++ b/src/DjangoBlog-master/oauth/migrations/0001_initial.py @@ -0,0 +1,57 @@ +# Generated by Django 4.1.7 on 2023-03-07 09:53 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion +import django.utils.timezone + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='OAuthConfig', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('type', models.CharField(choices=[('weibo', '微博'), ('google', '谷歌'), ('github', 'GitHub'), ('facebook', 'FaceBook'), ('qq', 'QQ')], default='a', max_length=10, verbose_name='类型')), + ('appkey', models.CharField(max_length=200, verbose_name='AppKey')), + ('appsecret', models.CharField(max_length=200, verbose_name='AppSecret')), + ('callback_url', models.CharField(default='http://www.baidu.com', max_length=200, verbose_name='回调地址')), + ('is_enable', models.BooleanField(default=True, verbose_name='是否显示')), + ('created_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='创建时间')), + ('last_mod_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='修改时间')), + ], + options={ + 'verbose_name': 'oauth配置', + 'verbose_name_plural': 'oauth配置', + 'ordering': ['-created_time'], + }, + ), + migrations.CreateModel( + name='OAuthUser', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('openid', models.CharField(max_length=50)), + ('nickname', models.CharField(max_length=50, verbose_name='昵称')), + ('token', models.CharField(blank=True, max_length=150, null=True)), + ('picture', models.CharField(blank=True, max_length=350, null=True)), + ('type', models.CharField(max_length=50)), + ('email', models.CharField(blank=True, max_length=50, null=True)), + ('metadata', models.TextField(blank=True, null=True)), + ('created_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='创建时间')), + ('last_mod_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='修改时间')), + ('author', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='用户')), + ], + options={ + 'verbose_name': 'oauth用户', + 'verbose_name_plural': 'oauth用户', + 'ordering': ['-created_time'], + }, + ), + ] diff --git a/src/DjangoBlog-master/oauth/migrations/0002_alter_oauthconfig_options_alter_oauthuser_options_and_more.py b/src/DjangoBlog-master/oauth/migrations/0002_alter_oauthconfig_options_alter_oauthuser_options_and_more.py new file mode 100644 index 0000000..d5cc70e --- /dev/null +++ b/src/DjangoBlog-master/oauth/migrations/0002_alter_oauthconfig_options_alter_oauthuser_options_and_more.py @@ -0,0 +1,86 @@ +# Generated by Django 4.2.5 on 2023-09-06 13:13 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('oauth', '0001_initial'), + ] + + operations = [ + migrations.AlterModelOptions( + name='oauthconfig', + options={'ordering': ['-creation_time'], 'verbose_name': 'oauth配置', 'verbose_name_plural': 'oauth配置'}, + ), + migrations.AlterModelOptions( + name='oauthuser', + options={'ordering': ['-creation_time'], 'verbose_name': 'oauth user', 'verbose_name_plural': 'oauth user'}, + ), + migrations.RemoveField( + model_name='oauthconfig', + name='created_time', + ), + migrations.RemoveField( + model_name='oauthconfig', + name='last_mod_time', + ), + migrations.RemoveField( + model_name='oauthuser', + name='created_time', + ), + migrations.RemoveField( + model_name='oauthuser', + name='last_mod_time', + ), + migrations.AddField( + model_name='oauthconfig', + name='creation_time', + field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='creation time'), + ), + migrations.AddField( + model_name='oauthconfig', + name='last_modify_time', + field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='last modify time'), + ), + migrations.AddField( + model_name='oauthuser', + name='creation_time', + field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='creation time'), + ), + migrations.AddField( + model_name='oauthuser', + name='last_modify_time', + field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='last modify time'), + ), + migrations.AlterField( + model_name='oauthconfig', + name='callback_url', + field=models.CharField(default='', max_length=200, verbose_name='callback url'), + ), + migrations.AlterField( + model_name='oauthconfig', + name='is_enable', + field=models.BooleanField(default=True, verbose_name='is enable'), + ), + migrations.AlterField( + model_name='oauthconfig', + name='type', + field=models.CharField(choices=[('weibo', 'weibo'), ('google', 'google'), ('github', 'GitHub'), ('facebook', 'FaceBook'), ('qq', 'QQ')], default='a', max_length=10, verbose_name='type'), + ), + migrations.AlterField( + model_name='oauthuser', + name='author', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='author'), + ), + migrations.AlterField( + model_name='oauthuser', + name='nickname', + field=models.CharField(max_length=50, verbose_name='nickname'), + ), + ] diff --git a/src/DjangoBlog-master/oauth/migrations/0003_alter_oauthuser_nickname.py b/src/DjangoBlog-master/oauth/migrations/0003_alter_oauthuser_nickname.py new file mode 100644 index 0000000..6af08eb --- /dev/null +++ b/src/DjangoBlog-master/oauth/migrations/0003_alter_oauthuser_nickname.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.7 on 2024-01-26 02:41 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('oauth', '0002_alter_oauthconfig_options_alter_oauthuser_options_and_more'), + ] + + operations = [ + migrations.AlterField( + model_name='oauthuser', + name='nickname', + field=models.CharField(max_length=50, verbose_name='nick name'), + ), + ] diff --git a/src/DjangoBlog-master/oauth/migrations/__init__.py b/src/DjangoBlog-master/oauth/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/DjangoBlog-master/oauth/models.py b/src/DjangoBlog-master/oauth/models.py new file mode 100644 index 0000000..be838ed --- /dev/null +++ b/src/DjangoBlog-master/oauth/models.py @@ -0,0 +1,67 @@ +# Create your models here. +from django.conf import settings +from django.core.exceptions import ValidationError +from django.db import models +from django.utils.timezone import now +from django.utils.translation import gettext_lazy as _ + + +class OAuthUser(models.Model): + author = models.ForeignKey( + settings.AUTH_USER_MODEL, + verbose_name=_('author'), + blank=True, + null=True, + on_delete=models.CASCADE) + openid = models.CharField(max_length=50) + nickname = models.CharField(max_length=50, verbose_name=_('nick name')) + token = models.CharField(max_length=150, null=True, blank=True) + picture = models.CharField(max_length=350, blank=True, null=True) + type = models.CharField(blank=False, null=False, max_length=50) + email = models.CharField(max_length=50, null=True, blank=True) + metadata = models.TextField(null=True, blank=True) + creation_time = models.DateTimeField(_('creation time'), default=now) + last_modify_time = models.DateTimeField(_('last modify time'), default=now) + + def __str__(self): + return self.nickname + + class Meta: + verbose_name = _('oauth user') + verbose_name_plural = verbose_name + ordering = ['-creation_time'] + + +class OAuthConfig(models.Model): + TYPE = ( + ('weibo', _('weibo')), + ('google', _('google')), + ('github', 'GitHub'), + ('facebook', 'FaceBook'), + ('qq', 'QQ'), + ) + type = models.CharField(_('type'), max_length=10, choices=TYPE, default='a') + appkey = models.CharField(max_length=200, verbose_name='AppKey') + appsecret = models.CharField(max_length=200, verbose_name='AppSecret') + callback_url = models.CharField( + max_length=200, + verbose_name=_('callback url'), + blank=False, + default='') + is_enable = models.BooleanField( + _('is enable'), default=True, blank=False, null=False) + creation_time = models.DateTimeField(_('creation time'), default=now) + last_modify_time = models.DateTimeField(_('last modify time'), default=now) + + def clean(self): + if OAuthConfig.objects.filter( + type=self.type).exclude(id=self.id).count(): + raise ValidationError(_(self.type + _('already exists'))) + + def __str__(self): + return self.type + + class Meta: + verbose_name = 'oauth配置' + verbose_name_plural = verbose_name + ordering = ['-creation_time'] diff --git a/src/DjangoBlog-master/oauth/oauthmanager.py b/src/DjangoBlog-master/oauth/oauthmanager.py new file mode 100644 index 0000000..2e7ceef --- /dev/null +++ b/src/DjangoBlog-master/oauth/oauthmanager.py @@ -0,0 +1,504 @@ +import json +import logging +import os +import urllib.parse +from abc import ABCMeta, abstractmethod + +import requests + +from djangoblog.utils import cache_decorator +from oauth.models import OAuthUser, OAuthConfig + +logger = logging.getLogger(__name__) + + +class OAuthAccessTokenException(Exception): + ''' + oauth授权失败异常 + ''' + + +class BaseOauthManager(metaclass=ABCMeta): + """获取用户授权""" + AUTH_URL = None + """获取token""" + TOKEN_URL = None + """获取用户信息""" + API_URL = None + '''icon图标名''' + ICON_NAME = None + + def __init__(self, access_token=None, openid=None): + self.access_token = access_token + self.openid = openid + + @property + def is_access_token_set(self): + return self.access_token is not None + + @property + def is_authorized(self): + return self.is_access_token_set and self.access_token is not None and self.openid is not None + + @abstractmethod + def get_authorization_url(self, nexturl='/'): + pass + + @abstractmethod + def get_access_token_by_code(self, code): + pass + + @abstractmethod + def get_oauth_userinfo(self): + pass + + @abstractmethod + def get_picture(self, metadata): + pass + + def do_get(self, url, params, headers=None): + rsp = requests.get(url=url, params=params, headers=headers) + logger.info(rsp.text) + return rsp.text + + def do_post(self, url, params, headers=None): + rsp = requests.post(url, params, headers=headers) + logger.info(rsp.text) + return rsp.text + + def get_config(self): + value = OAuthConfig.objects.filter(type=self.ICON_NAME) + return value[0] if value else None + + +class WBOauthManager(BaseOauthManager): + AUTH_URL = 'https://api.weibo.com/oauth2/authorize' + TOKEN_URL = 'https://api.weibo.com/oauth2/access_token' + API_URL = 'https://api.weibo.com/2/users/show.json' + ICON_NAME = 'weibo' + + def __init__(self, access_token=None, openid=None): + config = self.get_config() + self.client_id = config.appkey if config else '' + self.client_secret = config.appsecret if config else '' + self.callback_url = config.callback_url if config else '' + super( + WBOauthManager, + self).__init__( + access_token=access_token, + openid=openid) + + def get_authorization_url(self, nexturl='/'): + params = { + 'client_id': self.client_id, + 'response_type': 'code', + 'redirect_uri': self.callback_url + '&next_url=' + nexturl + } + url = self.AUTH_URL + "?" + urllib.parse.urlencode(params) + return url + + def get_access_token_by_code(self, code): + + params = { + 'client_id': self.client_id, + 'client_secret': self.client_secret, + 'grant_type': 'authorization_code', + 'code': code, + 'redirect_uri': self.callback_url + } + rsp = self.do_post(self.TOKEN_URL, params) + + obj = json.loads(rsp) + if 'access_token' in obj: + self.access_token = str(obj['access_token']) + self.openid = str(obj['uid']) + return self.get_oauth_userinfo() + else: + raise OAuthAccessTokenException(rsp) + + def get_oauth_userinfo(self): + if not self.is_authorized: + return None + params = { + 'uid': self.openid, + 'access_token': self.access_token + } + rsp = self.do_get(self.API_URL, params) + try: + datas = json.loads(rsp) + user = OAuthUser() + user.metadata = rsp + user.picture = datas['avatar_large'] + user.nickname = datas['screen_name'] + user.openid = datas['id'] + user.type = 'weibo' + user.token = self.access_token + if 'email' in datas and datas['email']: + user.email = datas['email'] + return user + except Exception as e: + logger.error(e) + logger.error('weibo oauth error.rsp:' + rsp) + return None + + def get_picture(self, metadata): + datas = json.loads(metadata) + return datas['avatar_large'] + + +class ProxyManagerMixin: + def __init__(self, *args, **kwargs): + if os.environ.get("HTTP_PROXY"): + self.proxies = { + "http": os.environ.get("HTTP_PROXY"), + "https": os.environ.get("HTTP_PROXY") + } + else: + self.proxies = None + + def do_get(self, url, params, headers=None): + rsp = requests.get(url=url, params=params, headers=headers, proxies=self.proxies) + logger.info(rsp.text) + return rsp.text + + def do_post(self, url, params, headers=None): + rsp = requests.post(url, params, headers=headers, proxies=self.proxies) + logger.info(rsp.text) + return rsp.text + + +class GoogleOauthManager(ProxyManagerMixin, BaseOauthManager): + AUTH_URL = 'https://accounts.google.com/o/oauth2/v2/auth' + TOKEN_URL = 'https://www.googleapis.com/oauth2/v4/token' + API_URL = 'https://www.googleapis.com/oauth2/v3/userinfo' + ICON_NAME = 'google' + + def __init__(self, access_token=None, openid=None): + config = self.get_config() + self.client_id = config.appkey if config else '' + self.client_secret = config.appsecret if config else '' + self.callback_url = config.callback_url if config else '' + super( + GoogleOauthManager, + self).__init__( + access_token=access_token, + openid=openid) + + def get_authorization_url(self, nexturl='/'): + params = { + 'client_id': self.client_id, + 'response_type': 'code', + 'redirect_uri': self.callback_url, + 'scope': 'openid email', + } + url = self.AUTH_URL + "?" + urllib.parse.urlencode(params) + return url + + def get_access_token_by_code(self, code): + params = { + 'client_id': self.client_id, + 'client_secret': self.client_secret, + 'grant_type': 'authorization_code', + 'code': code, + + 'redirect_uri': self.callback_url + } + rsp = self.do_post(self.TOKEN_URL, params) + + obj = json.loads(rsp) + + if 'access_token' in obj: + self.access_token = str(obj['access_token']) + self.openid = str(obj['id_token']) + logger.info(self.ICON_NAME + ' oauth ' + rsp) + return self.access_token + else: + raise OAuthAccessTokenException(rsp) + + def get_oauth_userinfo(self): + if not self.is_authorized: + return None + params = { + 'access_token': self.access_token + } + rsp = self.do_get(self.API_URL, params) + try: + + datas = json.loads(rsp) + user = OAuthUser() + user.metadata = rsp + user.picture = datas['picture'] + user.nickname = datas['name'] + user.openid = datas['sub'] + user.token = self.access_token + user.type = 'google' + if datas['email']: + user.email = datas['email'] + return user + except Exception as e: + logger.error(e) + logger.error('google oauth error.rsp:' + rsp) + return None + + def get_picture(self, metadata): + datas = json.loads(metadata) + return datas['picture'] + + +class GitHubOauthManager(ProxyManagerMixin, BaseOauthManager): + AUTH_URL = 'https://github.com/login/oauth/authorize' + TOKEN_URL = 'https://github.com/login/oauth/access_token' + API_URL = 'https://api.github.com/user' + ICON_NAME = 'github' + + def __init__(self, access_token=None, openid=None): + config = self.get_config() + self.client_id = config.appkey if config else '' + self.client_secret = config.appsecret if config else '' + self.callback_url = config.callback_url if config else '' + super( + GitHubOauthManager, + self).__init__( + access_token=access_token, + openid=openid) + + def get_authorization_url(self, next_url='/'): + params = { + 'client_id': self.client_id, + 'response_type': 'code', + 'redirect_uri': f'{self.callback_url}&next_url={next_url}', + 'scope': 'user' + } + url = self.AUTH_URL + "?" + urllib.parse.urlencode(params) + return url + + def get_access_token_by_code(self, code): + params = { + 'client_id': self.client_id, + 'client_secret': self.client_secret, + 'grant_type': 'authorization_code', + 'code': code, + + 'redirect_uri': self.callback_url + } + rsp = self.do_post(self.TOKEN_URL, params) + + from urllib import parse + r = parse.parse_qs(rsp) + if 'access_token' in r: + self.access_token = (r['access_token'][0]) + return self.access_token + else: + raise OAuthAccessTokenException(rsp) + + def get_oauth_userinfo(self): + + rsp = self.do_get(self.API_URL, params={}, headers={ + "Authorization": "token " + self.access_token + }) + try: + datas = json.loads(rsp) + user = OAuthUser() + user.picture = datas['avatar_url'] + user.nickname = datas['name'] + user.openid = datas['id'] + user.type = 'github' + user.token = self.access_token + user.metadata = rsp + if 'email' in datas and datas['email']: + user.email = datas['email'] + return user + except Exception as e: + logger.error(e) + logger.error('github oauth error.rsp:' + rsp) + return None + + def get_picture(self, metadata): + datas = json.loads(metadata) + return datas['avatar_url'] + + +class FaceBookOauthManager(ProxyManagerMixin, BaseOauthManager): + AUTH_URL = 'https://www.facebook.com/v16.0/dialog/oauth' + TOKEN_URL = 'https://graph.facebook.com/v16.0/oauth/access_token' + API_URL = 'https://graph.facebook.com/me' + ICON_NAME = 'facebook' + + def __init__(self, access_token=None, openid=None): + config = self.get_config() + self.client_id = config.appkey if config else '' + self.client_secret = config.appsecret if config else '' + self.callback_url = config.callback_url if config else '' + super( + FaceBookOauthManager, + self).__init__( + access_token=access_token, + openid=openid) + + def get_authorization_url(self, next_url='/'): + params = { + 'client_id': self.client_id, + 'response_type': 'code', + 'redirect_uri': self.callback_url, + 'scope': 'email,public_profile' + } + url = self.AUTH_URL + "?" + urllib.parse.urlencode(params) + return url + + def get_access_token_by_code(self, code): + params = { + 'client_id': self.client_id, + 'client_secret': self.client_secret, + # 'grant_type': 'authorization_code', + 'code': code, + + 'redirect_uri': self.callback_url + } + rsp = self.do_post(self.TOKEN_URL, params) + + obj = json.loads(rsp) + if 'access_token' in obj: + token = str(obj['access_token']) + self.access_token = token + return self.access_token + else: + raise OAuthAccessTokenException(rsp) + + def get_oauth_userinfo(self): + params = { + 'access_token': self.access_token, + 'fields': 'id,name,picture,email' + } + try: + rsp = self.do_get(self.API_URL, params) + datas = json.loads(rsp) + user = OAuthUser() + user.nickname = datas['name'] + user.openid = datas['id'] + user.type = 'facebook' + user.token = self.access_token + user.metadata = rsp + if 'email' in datas and datas['email']: + user.email = datas['email'] + if 'picture' in datas and datas['picture'] and datas['picture']['data'] and datas['picture']['data']['url']: + user.picture = str(datas['picture']['data']['url']) + return user + except Exception as e: + logger.error(e) + return None + + def get_picture(self, metadata): + datas = json.loads(metadata) + return str(datas['picture']['data']['url']) + + +class QQOauthManager(BaseOauthManager): + AUTH_URL = 'https://graph.qq.com/oauth2.0/authorize' + TOKEN_URL = 'https://graph.qq.com/oauth2.0/token' + API_URL = 'https://graph.qq.com/user/get_user_info' + OPEN_ID_URL = 'https://graph.qq.com/oauth2.0/me' + ICON_NAME = 'qq' + + def __init__(self, access_token=None, openid=None): + config = self.get_config() + self.client_id = config.appkey if config else '' + self.client_secret = config.appsecret if config else '' + self.callback_url = config.callback_url if config else '' + super( + QQOauthManager, + self).__init__( + access_token=access_token, + openid=openid) + + def get_authorization_url(self, next_url='/'): + params = { + 'response_type': 'code', + 'client_id': self.client_id, + 'redirect_uri': self.callback_url + '&next_url=' + next_url, + } + url = self.AUTH_URL + "?" + urllib.parse.urlencode(params) + return url + + def get_access_token_by_code(self, code): + params = { + 'grant_type': 'authorization_code', + 'client_id': self.client_id, + 'client_secret': self.client_secret, + 'code': code, + 'redirect_uri': self.callback_url + } + rsp = self.do_get(self.TOKEN_URL, params) + if rsp: + d = urllib.parse.parse_qs(rsp) + if 'access_token' in d: + token = d['access_token'] + self.access_token = token[0] + return token + else: + raise OAuthAccessTokenException(rsp) + + def get_open_id(self): + if self.is_access_token_set: + params = { + 'access_token': self.access_token + } + rsp = self.do_get(self.OPEN_ID_URL, params) + if rsp: + rsp = rsp.replace( + 'callback(', '').replace( + ')', '').replace( + ';', '') + obj = json.loads(rsp) + openid = str(obj['openid']) + self.openid = openid + return openid + + def get_oauth_userinfo(self): + openid = self.get_open_id() + if openid: + params = { + 'access_token': self.access_token, + 'oauth_consumer_key': self.client_id, + 'openid': self.openid + } + rsp = self.do_get(self.API_URL, params) + logger.info(rsp) + obj = json.loads(rsp) + user = OAuthUser() + user.nickname = obj['nickname'] + user.openid = openid + user.type = 'qq' + user.token = self.access_token + user.metadata = rsp + if 'email' in obj: + user.email = obj['email'] + if 'figureurl' in obj: + user.picture = str(obj['figureurl']) + return user + + def get_picture(self, metadata): + datas = json.loads(metadata) + return str(datas['figureurl']) + + +@cache_decorator(expiration=100 * 60) +def get_oauth_apps(): + configs = OAuthConfig.objects.filter(is_enable=True).all() + if not configs: + return [] + configtypes = [x.type for x in configs] + applications = BaseOauthManager.__subclasses__() + apps = [x() for x in applications if x().ICON_NAME.lower() in configtypes] + return apps + + +def get_manager_by_type(type): + applications = get_oauth_apps() + if applications: + finds = list( + filter( + lambda x: x.ICON_NAME.lower() == type.lower(), + applications)) + if finds: + return finds[0] + return None diff --git a/src/DjangoBlog-master/oauth/templatetags/__init__.py b/src/DjangoBlog-master/oauth/templatetags/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/DjangoBlog-master/oauth/templatetags/__init__.py @@ -0,0 +1 @@ + diff --git a/src/DjangoBlog-master/oauth/templatetags/oauth_tags.py b/src/DjangoBlog-master/oauth/templatetags/oauth_tags.py new file mode 100644 index 0000000..7b687d5 --- /dev/null +++ b/src/DjangoBlog-master/oauth/templatetags/oauth_tags.py @@ -0,0 +1,22 @@ +from django import template +from django.urls import reverse + +from oauth.oauthmanager import get_oauth_apps + +register = template.Library() + + +@register.inclusion_tag('oauth/oauth_applications.html') +def load_oauth_applications(request): + applications = get_oauth_apps() + if applications: + baseurl = reverse('oauth:oauthlogin') + path = request.get_full_path() + + apps = list(map(lambda x: (x.ICON_NAME, '{baseurl}?type={type}&next_url={next}'.format( + baseurl=baseurl, type=x.ICON_NAME, next=path)), applications)) + else: + apps = [] + return { + 'apps': apps + } diff --git a/src/DjangoBlog-master/oauth/tests.py b/src/DjangoBlog-master/oauth/tests.py new file mode 100644 index 0000000..bb23b9b --- /dev/null +++ b/src/DjangoBlog-master/oauth/tests.py @@ -0,0 +1,249 @@ +import json +from unittest.mock import patch + +from django.conf import settings +from django.contrib import auth +from django.test import Client, RequestFactory, TestCase +from django.urls import reverse + +from djangoblog.utils import get_sha256 +from oauth.models import OAuthConfig +from oauth.oauthmanager import BaseOauthManager + + +# Create your tests here. +class OAuthConfigTest(TestCase): + def setUp(self): + self.client = Client() + self.factory = RequestFactory() + + def test_oauth_login_test(self): + c = OAuthConfig() + c.type = 'weibo' + c.appkey = 'appkey' + c.appsecret = 'appsecret' + c.save() + + response = self.client.get('/oauth/oauthlogin?type=weibo') + self.assertEqual(response.status_code, 302) + self.assertTrue("api.weibo.com" in response.url) + + response = self.client.get('/oauth/authorize?type=weibo&code=code') + self.assertEqual(response.status_code, 302) + self.assertEqual(response.url, '/') + + +class OauthLoginTest(TestCase): + def setUp(self) -> None: + self.client = Client() + self.factory = RequestFactory() + self.apps = self.init_apps() + + def init_apps(self): + applications = [p() for p in BaseOauthManager.__subclasses__()] + for application in applications: + c = OAuthConfig() + c.type = application.ICON_NAME.lower() + c.appkey = 'appkey' + c.appsecret = 'appsecret' + c.save() + return applications + + def get_app_by_type(self, type): + for app in self.apps: + if app.ICON_NAME.lower() == type: + return app + + @patch("oauth.oauthmanager.WBOauthManager.do_post") + @patch("oauth.oauthmanager.WBOauthManager.do_get") + def test_weibo_login(self, mock_do_get, mock_do_post): + weibo_app = self.get_app_by_type('weibo') + assert weibo_app + url = weibo_app.get_authorization_url() + mock_do_post.return_value = json.dumps({"access_token": "access_token", + "uid": "uid" + }) + mock_do_get.return_value = json.dumps({ + "avatar_large": "avatar_large", + "screen_name": "screen_name", + "id": "id", + "email": "email", + }) + userinfo = weibo_app.get_access_token_by_code('code') + self.assertEqual(userinfo.token, 'access_token') + self.assertEqual(userinfo.openid, 'id') + + @patch("oauth.oauthmanager.GoogleOauthManager.do_post") + @patch("oauth.oauthmanager.GoogleOauthManager.do_get") + def test_google_login(self, mock_do_get, mock_do_post): + google_app = self.get_app_by_type('google') + assert google_app + url = google_app.get_authorization_url() + mock_do_post.return_value = json.dumps({ + "access_token": "access_token", + "id_token": "id_token", + }) + mock_do_get.return_value = json.dumps({ + "picture": "picture", + "name": "name", + "sub": "sub", + "email": "email", + }) + token = google_app.get_access_token_by_code('code') + userinfo = google_app.get_oauth_userinfo() + self.assertEqual(userinfo.token, 'access_token') + self.assertEqual(userinfo.openid, 'sub') + + @patch("oauth.oauthmanager.GitHubOauthManager.do_post") + @patch("oauth.oauthmanager.GitHubOauthManager.do_get") + def test_github_login(self, mock_do_get, mock_do_post): + github_app = self.get_app_by_type('github') + assert github_app + url = github_app.get_authorization_url() + self.assertTrue("github.com" in url) + self.assertTrue("client_id" in url) + mock_do_post.return_value = "access_token=gho_16C7e42F292c6912E7710c838347Ae178B4a&scope=repo%2Cgist&token_type=bearer" + mock_do_get.return_value = json.dumps({ + "avatar_url": "avatar_url", + "name": "name", + "id": "id", + "email": "email", + }) + token = github_app.get_access_token_by_code('code') + userinfo = github_app.get_oauth_userinfo() + self.assertEqual(userinfo.token, 'gho_16C7e42F292c6912E7710c838347Ae178B4a') + self.assertEqual(userinfo.openid, 'id') + + @patch("oauth.oauthmanager.FaceBookOauthManager.do_post") + @patch("oauth.oauthmanager.FaceBookOauthManager.do_get") + def test_facebook_login(self, mock_do_get, mock_do_post): + facebook_app = self.get_app_by_type('facebook') + assert facebook_app + url = facebook_app.get_authorization_url() + self.assertTrue("facebook.com" in url) + mock_do_post.return_value = json.dumps({ + "access_token": "access_token", + }) + mock_do_get.return_value = json.dumps({ + "name": "name", + "id": "id", + "email": "email", + "picture": { + "data": { + "url": "url" + } + } + }) + token = facebook_app.get_access_token_by_code('code') + userinfo = facebook_app.get_oauth_userinfo() + self.assertEqual(userinfo.token, 'access_token') + + @patch("oauth.oauthmanager.QQOauthManager.do_get", side_effect=[ + 'access_token=access_token&expires_in=3600', + 'callback({"client_id":"appid","openid":"openid"} );', + json.dumps({ + "nickname": "nickname", + "email": "email", + "figureurl": "figureurl", + "openid": "openid", + }) + ]) + def test_qq_login(self, mock_do_get): + qq_app = self.get_app_by_type('qq') + assert qq_app + url = qq_app.get_authorization_url() + self.assertTrue("qq.com" in url) + token = qq_app.get_access_token_by_code('code') + userinfo = qq_app.get_oauth_userinfo() + self.assertEqual(userinfo.token, 'access_token') + + @patch("oauth.oauthmanager.WBOauthManager.do_post") + @patch("oauth.oauthmanager.WBOauthManager.do_get") + def test_weibo_authoriz_login_with_email(self, mock_do_get, mock_do_post): + + mock_do_post.return_value = json.dumps({"access_token": "access_token", + "uid": "uid" + }) + mock_user_info = { + "avatar_large": "avatar_large", + "screen_name": "screen_name1", + "id": "id", + "email": "email", + } + mock_do_get.return_value = json.dumps(mock_user_info) + + response = self.client.get('/oauth/oauthlogin?type=weibo') + self.assertEqual(response.status_code, 302) + self.assertTrue("api.weibo.com" in response.url) + + response = self.client.get('/oauth/authorize?type=weibo&code=code') + self.assertEqual(response.status_code, 302) + self.assertEqual(response.url, '/') + + user = auth.get_user(self.client) + assert user.is_authenticated + self.assertTrue(user.is_authenticated) + self.assertEqual(user.username, mock_user_info['screen_name']) + self.assertEqual(user.email, mock_user_info['email']) + self.client.logout() + + response = self.client.get('/oauth/authorize?type=weibo&code=code') + self.assertEqual(response.status_code, 302) + self.assertEqual(response.url, '/') + + user = auth.get_user(self.client) + assert user.is_authenticated + self.assertTrue(user.is_authenticated) + self.assertEqual(user.username, mock_user_info['screen_name']) + self.assertEqual(user.email, mock_user_info['email']) + + @patch("oauth.oauthmanager.WBOauthManager.do_post") + @patch("oauth.oauthmanager.WBOauthManager.do_get") + def test_weibo_authoriz_login_without_email(self, mock_do_get, mock_do_post): + + mock_do_post.return_value = json.dumps({"access_token": "access_token", + "uid": "uid" + }) + mock_user_info = { + "avatar_large": "avatar_large", + "screen_name": "screen_name1", + "id": "id", + } + mock_do_get.return_value = json.dumps(mock_user_info) + + response = self.client.get('/oauth/oauthlogin?type=weibo') + self.assertEqual(response.status_code, 302) + self.assertTrue("api.weibo.com" in response.url) + + response = self.client.get('/oauth/authorize?type=weibo&code=code') + + self.assertEqual(response.status_code, 302) + + oauth_user_id = int(response.url.split('/')[-1].split('.')[0]) + self.assertEqual(response.url, f'/oauth/requireemail/{oauth_user_id}.html') + + response = self.client.post(response.url, {'email': 'test@gmail.com', 'oauthid': oauth_user_id}) + + self.assertEqual(response.status_code, 302) + sign = get_sha256(settings.SECRET_KEY + + str(oauth_user_id) + settings.SECRET_KEY) + + url = reverse('oauth:bindsuccess', kwargs={ + 'oauthid': oauth_user_id, + }) + self.assertEqual(response.url, f'{url}?type=email') + + path = reverse('oauth:email_confirm', kwargs={ + 'id': oauth_user_id, + 'sign': sign + }) + response = self.client.get(path) + self.assertEqual(response.status_code, 302) + self.assertEqual(response.url, f'/oauth/bindsuccess/{oauth_user_id}.html?type=success') + user = auth.get_user(self.client) + from oauth.models import OAuthUser + oauth_user = OAuthUser.objects.get(author=user) + self.assertTrue(user.is_authenticated) + self.assertEqual(user.username, mock_user_info['screen_name']) + self.assertEqual(user.email, 'test@gmail.com') + self.assertEqual(oauth_user.pk, oauth_user_id) diff --git a/src/DjangoBlog-master/oauth/urls.py b/src/DjangoBlog-master/oauth/urls.py new file mode 100644 index 0000000..c4a12a0 --- /dev/null +++ b/src/DjangoBlog-master/oauth/urls.py @@ -0,0 +1,25 @@ +from django.urls import path + +from . import views + +app_name = "oauth" +urlpatterns = [ + path( + r'oauth/authorize', + views.authorize), + path( + r'oauth/requireemail/.html', + views.RequireEmailView.as_view(), + name='require_email'), + path( + r'oauth/emailconfirm//.html', + views.emailconfirm, + name='email_confirm'), + path( + r'oauth/bindsuccess/.html', + views.bindsuccess, + name='bindsuccess'), + path( + r'oauth/oauthlogin', + views.oauthlogin, + name='oauthlogin')] diff --git a/src/DjangoBlog-master/oauth/views.py b/src/DjangoBlog-master/oauth/views.py new file mode 100644 index 0000000..12e3a6e --- /dev/null +++ b/src/DjangoBlog-master/oauth/views.py @@ -0,0 +1,253 @@ +import logging +# Create your views here. +from urllib.parse import urlparse + +from django.conf import settings +from django.contrib.auth import get_user_model +from django.contrib.auth import login +from django.core.exceptions import ObjectDoesNotExist +from django.db import transaction +from django.http import HttpResponseForbidden +from django.http import HttpResponseRedirect +from django.shortcuts import get_object_or_404 +from django.shortcuts import render +from django.urls import reverse +from django.utils import timezone +from django.utils.translation import gettext_lazy as _ +from django.views.generic import FormView + +from djangoblog.blog_signals import oauth_user_login_signal +from djangoblog.utils import get_current_site +from djangoblog.utils import send_email, get_sha256 +from oauth.forms import RequireEmailForm +from .models import OAuthUser +from .oauthmanager import get_manager_by_type, OAuthAccessTokenException + +logger = logging.getLogger(__name__) + + +def get_redirecturl(request): + nexturl = request.GET.get('next_url', None) + if not nexturl or nexturl == '/login/' or nexturl == '/login': + nexturl = '/' + return nexturl + p = urlparse(nexturl) + if p.netloc: + site = get_current_site().domain + if not p.netloc.replace('www.', '') == site.replace('www.', ''): + logger.info('非法url:' + nexturl) + return "/" + return nexturl + + +def oauthlogin(request): + type = request.GET.get('type', None) + if not type: + return HttpResponseRedirect('/') + manager = get_manager_by_type(type) + if not manager: + return HttpResponseRedirect('/') + nexturl = get_redirecturl(request) + authorizeurl = manager.get_authorization_url(nexturl) + return HttpResponseRedirect(authorizeurl) + + +def authorize(request): + type = request.GET.get('type', None) + if not type: + return HttpResponseRedirect('/') + manager = get_manager_by_type(type) + if not manager: + return HttpResponseRedirect('/') + code = request.GET.get('code', None) + try: + rsp = manager.get_access_token_by_code(code) + except OAuthAccessTokenException as e: + logger.warning("OAuthAccessTokenException:" + str(e)) + return HttpResponseRedirect('/') + except Exception as e: + logger.error(e) + rsp = None + nexturl = get_redirecturl(request) + if not rsp: + return HttpResponseRedirect(manager.get_authorization_url(nexturl)) + user = manager.get_oauth_userinfo() + if user: + if not user.nickname or not user.nickname.strip(): + user.nickname = "djangoblog" + timezone.now().strftime('%y%m%d%I%M%S') + try: + temp = OAuthUser.objects.get(type=type, openid=user.openid) + temp.picture = user.picture + temp.metadata = user.metadata + temp.nickname = user.nickname + user = temp + except ObjectDoesNotExist: + pass + # facebook的token过长 + if type == 'facebook': + user.token = '' + if user.email: + with transaction.atomic(): + author = None + try: + author = get_user_model().objects.get(id=user.author_id) + except ObjectDoesNotExist: + pass + if not author: + result = get_user_model().objects.get_or_create(email=user.email) + author = result[0] + if result[1]: + try: + get_user_model().objects.get(username=user.nickname) + except ObjectDoesNotExist: + author.username = user.nickname + else: + author.username = "djangoblog" + timezone.now().strftime('%y%m%d%I%M%S') + author.source = 'authorize' + author.save() + + user.author = author + user.save() + + oauth_user_login_signal.send( + sender=authorize.__class__, id=user.id) + login(request, author) + return HttpResponseRedirect(nexturl) + else: + user.save() + url = reverse('oauth:require_email', kwargs={ + 'oauthid': user.id + }) + + return HttpResponseRedirect(url) + else: + return HttpResponseRedirect(nexturl) + + +def emailconfirm(request, id, sign): + if not sign: + return HttpResponseForbidden() + if not get_sha256(settings.SECRET_KEY + + str(id) + + settings.SECRET_KEY).upper() == sign.upper(): + return HttpResponseForbidden() + oauthuser = get_object_or_404(OAuthUser, pk=id) + with transaction.atomic(): + if oauthuser.author: + author = get_user_model().objects.get(pk=oauthuser.author_id) + else: + result = get_user_model().objects.get_or_create(email=oauthuser.email) + author = result[0] + if result[1]: + author.source = 'emailconfirm' + author.username = oauthuser.nickname.strip() if oauthuser.nickname.strip( + ) else "djangoblog" + timezone.now().strftime('%y%m%d%I%M%S') + author.save() + oauthuser.author = author + oauthuser.save() + oauth_user_login_signal.send( + sender=emailconfirm.__class__, + id=oauthuser.id) + login(request, author) + + site = 'http://' + get_current_site().domain + content = _(''' +

Congratulations, you have successfully bound your email address. You can use + %(oauthuser_type)s to directly log in to this website without a password.

+ You are welcome to continue to follow this site, the address is + %(site)s + Thank you again! +
+ If the link above cannot be opened, please copy this link to your browser. + %(site)s + ''') % {'oauthuser_type': oauthuser.type, 'site': site} + + send_email(emailto=[oauthuser.email, ], title=_('Congratulations on your successful binding!'), content=content) + url = reverse('oauth:bindsuccess', kwargs={ + 'oauthid': id + }) + url = url + '?type=success' + return HttpResponseRedirect(url) + + +class RequireEmailView(FormView): + form_class = RequireEmailForm + template_name = 'oauth/require_email.html' + + def get(self, request, *args, **kwargs): + oauthid = self.kwargs['oauthid'] + oauthuser = get_object_or_404(OAuthUser, pk=oauthid) + if oauthuser.email: + pass + # return HttpResponseRedirect('/') + + return super(RequireEmailView, self).get(request, *args, **kwargs) + + def get_initial(self): + oauthid = self.kwargs['oauthid'] + return { + 'email': '', + 'oauthid': oauthid + } + + def get_context_data(self, **kwargs): + oauthid = self.kwargs['oauthid'] + oauthuser = get_object_or_404(OAuthUser, pk=oauthid) + if oauthuser.picture: + kwargs['picture'] = oauthuser.picture + return super(RequireEmailView, self).get_context_data(**kwargs) + + def form_valid(self, form): + email = form.cleaned_data['email'] + oauthid = form.cleaned_data['oauthid'] + oauthuser = get_object_or_404(OAuthUser, pk=oauthid) + oauthuser.email = email + oauthuser.save() + sign = get_sha256(settings.SECRET_KEY + + str(oauthuser.id) + settings.SECRET_KEY) + site = get_current_site().domain + if settings.DEBUG: + site = '127.0.0.1:8000' + path = reverse('oauth:email_confirm', kwargs={ + 'id': oauthid, + 'sign': sign + }) + url = "http://{site}{path}".format(site=site, path=path) + + content = _(""" +

Please click the link below to bind your email

+ + %(url)s + + Thank you again! +
+ If the link above cannot be opened, please copy this link to your browser. +
+ %(url)s + """) % {'url': url} + send_email(emailto=[email, ], title=_('Bind your email'), content=content) + url = reverse('oauth:bindsuccess', kwargs={ + 'oauthid': oauthid + }) + url = url + '?type=email' + return HttpResponseRedirect(url) + + +def bindsuccess(request, oauthid): + type = request.GET.get('type', None) + oauthuser = get_object_or_404(OAuthUser, pk=oauthid) + if type == 'email': + title = _('Bind your email') + content = _( + 'Congratulations, the binding is just one step away. ' + 'Please log in to your email to check the email to complete the binding. Thank you.') + else: + title = _('Binding successful') + content = _( + "Congratulations, you have successfully bound your email address. You can use %(oauthuser_type)s" + " to directly log in to this website without a password. You are welcome to continue to follow this site." % { + 'oauthuser_type': oauthuser.type}) + return render(request, 'oauth/bindsuccess.html', { + 'title': title, + 'content': content + }) diff --git a/src/DjangoBlog-master/owntracks/__init__.py b/src/DjangoBlog-master/owntracks/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/DjangoBlog-master/owntracks/admin.py b/src/DjangoBlog-master/owntracks/admin.py new file mode 100644 index 0000000..655b535 --- /dev/null +++ b/src/DjangoBlog-master/owntracks/admin.py @@ -0,0 +1,7 @@ +from django.contrib import admin + +# Register your models here. + + +class OwnTrackLogsAdmin(admin.ModelAdmin): + pass diff --git a/src/DjangoBlog-master/owntracks/apps.py b/src/DjangoBlog-master/owntracks/apps.py new file mode 100644 index 0000000..1bc5f12 --- /dev/null +++ b/src/DjangoBlog-master/owntracks/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class OwntracksConfig(AppConfig): + name = 'owntracks' diff --git a/src/DjangoBlog-master/owntracks/migrations/0001_initial.py b/src/DjangoBlog-master/owntracks/migrations/0001_initial.py new file mode 100644 index 0000000..9eee55c --- /dev/null +++ b/src/DjangoBlog-master/owntracks/migrations/0001_initial.py @@ -0,0 +1,31 @@ +# Generated by Django 4.1.7 on 2023-03-02 07:14 + +from django.db import migrations, models +import django.utils.timezone + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='OwnTrackLog', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('tid', models.CharField(max_length=100, verbose_name='用户')), + ('lat', models.FloatField(verbose_name='纬度')), + ('lon', models.FloatField(verbose_name='经度')), + ('created_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='创建时间')), + ], + options={ + 'verbose_name': 'OwnTrackLogs', + 'verbose_name_plural': 'OwnTrackLogs', + 'ordering': ['created_time'], + 'get_latest_by': 'created_time', + }, + ), + ] diff --git a/src/DjangoBlog-master/owntracks/migrations/0002_alter_owntracklog_options_and_more.py b/src/DjangoBlog-master/owntracks/migrations/0002_alter_owntracklog_options_and_more.py new file mode 100644 index 0000000..b4f8dec --- /dev/null +++ b/src/DjangoBlog-master/owntracks/migrations/0002_alter_owntracklog_options_and_more.py @@ -0,0 +1,22 @@ +# Generated by Django 4.2.5 on 2023-09-06 13:19 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('owntracks', '0001_initial'), + ] + + operations = [ + migrations.AlterModelOptions( + name='owntracklog', + options={'get_latest_by': 'creation_time', 'ordering': ['creation_time'], 'verbose_name': 'OwnTrackLogs', 'verbose_name_plural': 'OwnTrackLogs'}, + ), + migrations.RenameField( + model_name='owntracklog', + old_name='created_time', + new_name='creation_time', + ), + ] diff --git a/src/DjangoBlog-master/owntracks/migrations/__init__.py b/src/DjangoBlog-master/owntracks/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/DjangoBlog-master/owntracks/models.py b/src/DjangoBlog-master/owntracks/models.py new file mode 100644 index 0000000..760942c --- /dev/null +++ b/src/DjangoBlog-master/owntracks/models.py @@ -0,0 +1,20 @@ +from django.db import models +from django.utils.timezone import now + + +# Create your models here. + +class OwnTrackLog(models.Model): + tid = models.CharField(max_length=100, null=False, verbose_name='用户') + lat = models.FloatField(verbose_name='纬度') + lon = models.FloatField(verbose_name='经度') + creation_time = models.DateTimeField('创建时间', default=now) + + def __str__(self): + return self.tid + + class Meta: + ordering = ['creation_time'] + verbose_name = "OwnTrackLogs" + verbose_name_plural = verbose_name + get_latest_by = 'creation_time' diff --git a/src/DjangoBlog-master/owntracks/tests.py b/src/DjangoBlog-master/owntracks/tests.py new file mode 100644 index 0000000..3b4b9d8 --- /dev/null +++ b/src/DjangoBlog-master/owntracks/tests.py @@ -0,0 +1,64 @@ +import json + +from django.test import Client, RequestFactory, TestCase + +from accounts.models import BlogUser +from .models import OwnTrackLog + + +# Create your tests here. + +class OwnTrackLogTest(TestCase): + def setUp(self): + self.client = Client() + self.factory = RequestFactory() + + def test_own_track_log(self): + o = { + 'tid': 12, + 'lat': 123.123, + 'lon': 134.341 + } + + self.client.post( + '/owntracks/logtracks', + json.dumps(o), + content_type='application/json') + length = len(OwnTrackLog.objects.all()) + self.assertEqual(length, 1) + + o = { + 'tid': 12, + 'lat': 123.123 + } + + self.client.post( + '/owntracks/logtracks', + json.dumps(o), + content_type='application/json') + length = len(OwnTrackLog.objects.all()) + self.assertEqual(length, 1) + + rsp = self.client.get('/owntracks/show_maps') + self.assertEqual(rsp.status_code, 302) + + user = BlogUser.objects.create_superuser( + email="liangliangyy1@gmail.com", + username="liangliangyy1", + password="liangliangyy1") + + self.client.login(username='liangliangyy1', password='liangliangyy1') + s = OwnTrackLog() + s.tid = 12 + s.lon = 123.234 + s.lat = 34.234 + s.save() + + rsp = self.client.get('/owntracks/show_dates') + self.assertEqual(rsp.status_code, 200) + rsp = self.client.get('/owntracks/show_maps') + self.assertEqual(rsp.status_code, 200) + rsp = self.client.get('/owntracks/get_datas') + self.assertEqual(rsp.status_code, 200) + rsp = self.client.get('/owntracks/get_datas?date=2018-02-26') + self.assertEqual(rsp.status_code, 200) diff --git a/src/DjangoBlog-master/owntracks/urls.py b/src/DjangoBlog-master/owntracks/urls.py new file mode 100644 index 0000000..c19ada8 --- /dev/null +++ b/src/DjangoBlog-master/owntracks/urls.py @@ -0,0 +1,12 @@ +from django.urls import path + +from . import views + +app_name = "owntracks" + +urlpatterns = [ + path('owntracks/logtracks', views.manage_owntrack_log, name='logtracks'), + path('owntracks/show_maps', views.show_maps, name='show_maps'), + path('owntracks/get_datas', views.get_datas, name='get_datas'), + path('owntracks/show_dates', views.show_log_dates, name='show_dates') +] diff --git a/src/DjangoBlog-master/owntracks/views.py b/src/DjangoBlog-master/owntracks/views.py new file mode 100644 index 0000000..4c72bdd --- /dev/null +++ b/src/DjangoBlog-master/owntracks/views.py @@ -0,0 +1,127 @@ +# Create your views here. +import datetime +import itertools +import json +import logging +from datetime import timezone +from itertools import groupby + +import django +import requests +from django.contrib.auth.decorators import login_required +from django.http import HttpResponse +from django.http import JsonResponse +from django.shortcuts import render +from django.views.decorators.csrf import csrf_exempt + +from .models import OwnTrackLog + +logger = logging.getLogger(__name__) + + +@csrf_exempt +def manage_owntrack_log(request): + try: + s = json.loads(request.read().decode('utf-8')) + tid = s['tid'] + lat = s['lat'] + lon = s['lon'] + + logger.info( + 'tid:{tid}.lat:{lat}.lon:{lon}'.format( + tid=tid, lat=lat, lon=lon)) + if tid and lat and lon: + m = OwnTrackLog() + m.tid = tid + m.lat = lat + m.lon = lon + m.save() + return HttpResponse('ok') + else: + return HttpResponse('data error') + except Exception as e: + logger.error(e) + return HttpResponse('error') + + +@login_required +def show_maps(request): + if request.user.is_superuser: + defaultdate = str(datetime.datetime.now(timezone.utc).date()) + date = request.GET.get('date', defaultdate) + context = { + 'date': date + } + return render(request, 'owntracks/show_maps.html', context) + else: + from django.http import HttpResponseForbidden + return HttpResponseForbidden() + + +@login_required +def show_log_dates(request): + dates = OwnTrackLog.objects.values_list('creation_time', flat=True) + results = list(sorted(set(map(lambda x: x.strftime('%Y-%m-%d'), dates)))) + + context = { + 'results': results + } + return render(request, 'owntracks/show_log_dates.html', context) + + +def convert_to_amap(locations): + convert_result = [] + it = iter(locations) + + item = list(itertools.islice(it, 30)) + while item: + datas = ';'.join( + set(map(lambda x: str(x.lon) + ',' + str(x.lat), item))) + + key = '8440a376dfc9743d8924bf0ad141f28e' + api = 'http://restapi.amap.com/v3/assistant/coordinate/convert' + query = { + 'key': key, + 'locations': datas, + 'coordsys': 'gps' + } + rsp = requests.get(url=api, params=query) + result = json.loads(rsp.text) + if "locations" in result: + convert_result.append(result['locations']) + item = list(itertools.islice(it, 30)) + + return ";".join(convert_result) + + +@login_required +def get_datas(request): + now = django.utils.timezone.now().replace(tzinfo=timezone.utc) + querydate = django.utils.timezone.datetime( + now.year, now.month, now.day, 0, 0, 0) + if request.GET.get('date', None): + date = list(map(lambda x: int(x), request.GET.get('date').split('-'))) + querydate = django.utils.timezone.datetime( + date[0], date[1], date[2], 0, 0, 0) + nextdate = querydate + datetime.timedelta(days=1) + models = OwnTrackLog.objects.filter( + creation_time__range=(querydate, nextdate)) + result = list() + if models and len(models): + for tid, item in groupby( + sorted(models, key=lambda k: k.tid), key=lambda k: k.tid): + + d = dict() + d["name"] = tid + paths = list() + # 使用高德转换后的经纬度 + # locations = convert_to_amap( + # sorted(item, key=lambda x: x.creation_time)) + # for i in locations.split(';'): + # paths.append(i.split(',')) + # 使用GPS原始经纬度 + for location in sorted(item, key=lambda x: x.creation_time): + paths.append([str(location.lon), str(location.lat)]) + d["path"] = paths + result.append(d) + return JsonResponse(result, safe=False) diff --git a/src/DjangoBlog-master/plugins/__init__.py b/src/DjangoBlog-master/plugins/__init__.py new file mode 100644 index 0000000..e88afca --- /dev/null +++ b/src/DjangoBlog-master/plugins/__init__.py @@ -0,0 +1 @@ +# This file makes this a Python package diff --git a/src/DjangoBlog-master/plugins/article_copyright/__init__.py b/src/DjangoBlog-master/plugins/article_copyright/__init__.py new file mode 100644 index 0000000..e88afca --- /dev/null +++ b/src/DjangoBlog-master/plugins/article_copyright/__init__.py @@ -0,0 +1 @@ +# This file makes this a Python package diff --git a/src/DjangoBlog-master/plugins/article_copyright/plugin.py b/src/DjangoBlog-master/plugins/article_copyright/plugin.py new file mode 100644 index 0000000..317fed2 --- /dev/null +++ b/src/DjangoBlog-master/plugins/article_copyright/plugin.py @@ -0,0 +1,32 @@ +from djangoblog.plugin_manage.base_plugin import BasePlugin +from djangoblog.plugin_manage import hooks +from djangoblog.plugin_manage.hook_constants import ARTICLE_CONTENT_HOOK_NAME + + +class ArticleCopyrightPlugin(BasePlugin): + PLUGIN_NAME = '文章结尾版权声明' + PLUGIN_DESCRIPTION = '一个在文章正文末尾添加版权声明的插件。' + PLUGIN_VERSION = '0.2.0' + PLUGIN_AUTHOR = 'liangliangyy' + + # 2. 实现 register_hooks 方法,专门用于注册钩子 + def register_hooks(self): + # 在这里将插件的方法注册到指定的钩子上 + hooks.register(ARTICLE_CONTENT_HOOK_NAME, self.add_copyright_to_content) + + def add_copyright_to_content(self, content, *args, **kwargs): + """ + 这个方法会被注册到 'the_content' 过滤器钩子上。 + 它接收原始内容,并返回添加了版权信息的新内容。 + """ + article = kwargs.get('article') + if not article: + return content + + copyright_info = f"\n

本文由 {article.author.username} 原创,转载请注明出处。

" + return content + copyright_info + + +# 3. 实例化插件。 +# 这会自动调用 BasePlugin.__init__,然后 BasePlugin.__init__ 会调用我们上面定义的 register_hooks 方法。 +plugin = ArticleCopyrightPlugin() diff --git a/src/DjangoBlog-master/plugins/external_links/__init__.py b/src/DjangoBlog-master/plugins/external_links/__init__.py new file mode 100644 index 0000000..e88afca --- /dev/null +++ b/src/DjangoBlog-master/plugins/external_links/__init__.py @@ -0,0 +1 @@ +# This file makes this a Python package diff --git a/src/DjangoBlog-master/plugins/external_links/plugin.py b/src/DjangoBlog-master/plugins/external_links/plugin.py new file mode 100644 index 0000000..5b2ef14 --- /dev/null +++ b/src/DjangoBlog-master/plugins/external_links/plugin.py @@ -0,0 +1,48 @@ +import re +from urllib.parse import urlparse +from djangoblog.plugin_manage.base_plugin import BasePlugin +from djangoblog.plugin_manage import hooks +from djangoblog.plugin_manage.hook_constants import ARTICLE_CONTENT_HOOK_NAME + + +class ExternalLinksPlugin(BasePlugin): + PLUGIN_NAME = '外部链接处理器' + PLUGIN_DESCRIPTION = '自动为文章中的外部链接添加 target="_blank" 和 rel="noopener noreferrer" 属性。' + PLUGIN_VERSION = '0.1.0' + PLUGIN_AUTHOR = 'liangliangyy' + + def register_hooks(self): + hooks.register(ARTICLE_CONTENT_HOOK_NAME, self.process_external_links) + + def process_external_links(self, content, *args, **kwargs): + from djangoblog.utils import get_current_site + site_domain = get_current_site().domain + + # 正则表达式查找所有 标签 + link_pattern = re.compile(r'(]*?\s+)?href=")([^"]*)(".*?/a>)', re.IGNORECASE) + + def replacer(match): + # match.group(1) 是 ... + href = match.group(2) + + # 如果链接已经有 target 属性,则不处理 + if 'target=' in match.group(0).lower(): + return match.group(0) + + # 解析链接 + parsed_url = urlparse(href) + + # 如果链接是外部的 (有域名且域名不等于当前网站域名) + if parsed_url.netloc and parsed_url.netloc != site_domain: + # 添加 target 和 rel 属性 + return f'{match.group(1)}{href}" target="_blank" rel="noopener noreferrer"{match.group(3)}' + + # 否则返回原样 + return match.group(0) + + return link_pattern.sub(replacer, content) + + +plugin = ExternalLinksPlugin() diff --git a/src/DjangoBlog-master/plugins/reading_time/__init__.py b/src/DjangoBlog-master/plugins/reading_time/__init__.py new file mode 100644 index 0000000..e88afca --- /dev/null +++ b/src/DjangoBlog-master/plugins/reading_time/__init__.py @@ -0,0 +1 @@ +# This file makes this a Python package diff --git a/src/DjangoBlog-master/plugins/reading_time/plugin.py b/src/DjangoBlog-master/plugins/reading_time/plugin.py new file mode 100644 index 0000000..35f9db1 --- /dev/null +++ b/src/DjangoBlog-master/plugins/reading_time/plugin.py @@ -0,0 +1,43 @@ +import math +import re +from djangoblog.plugin_manage.base_plugin import BasePlugin +from djangoblog.plugin_manage import hooks +from djangoblog.plugin_manage.hook_constants import ARTICLE_CONTENT_HOOK_NAME + + +class ReadingTimePlugin(BasePlugin): + PLUGIN_NAME = '阅读时间预测' + PLUGIN_DESCRIPTION = '估算文章阅读时间并显示在文章开头。' + PLUGIN_VERSION = '0.1.0' + PLUGIN_AUTHOR = 'liangliangyy' + + def register_hooks(self): + hooks.register(ARTICLE_CONTENT_HOOK_NAME, self.add_reading_time) + + def add_reading_time(self, content, *args, **kwargs): + """ + 计算阅读时间并添加到内容开头。 + """ + # 移除HTML标签和空白字符,以获得纯文本 + clean_content = re.sub(r'<[^>]*>', '', content) + clean_content = clean_content.strip() + + # 中文和英文单词混合计数的一个简单方法 + # 匹配中文字符或连续的非中文字符(视为单词) + words = re.findall(r'[\u4e00-\u9fa5]|\w+', clean_content) + word_count = len(words) + + # 按平均每分钟200字的速度计算 + reading_speed = 200 + reading_minutes = math.ceil(word_count / reading_speed) + + # 如果阅读时间少于1分钟,则显示为1分钟 + if reading_minutes < 1: + reading_minutes = 1 + + reading_time_html = f'

预计阅读时间:{reading_minutes} 分钟

' + + return reading_time_html + content + + +plugin = ReadingTimePlugin() \ No newline at end of file diff --git a/src/DjangoBlog-master/plugins/seo_optimizer/__init__.py b/src/DjangoBlog-master/plugins/seo_optimizer/__init__.py new file mode 100644 index 0000000..e88afca --- /dev/null +++ b/src/DjangoBlog-master/plugins/seo_optimizer/__init__.py @@ -0,0 +1 @@ +# This file makes this a Python package diff --git a/src/DjangoBlog-master/plugins/seo_optimizer/plugin.py b/src/DjangoBlog-master/plugins/seo_optimizer/plugin.py new file mode 100644 index 0000000..b5b19a3 --- /dev/null +++ b/src/DjangoBlog-master/plugins/seo_optimizer/plugin.py @@ -0,0 +1,142 @@ +import json +from django.utils.html import strip_tags +from django.template.defaultfilters import truncatewords +from djangoblog.plugin_manage.base_plugin import BasePlugin +from djangoblog.plugin_manage import hooks +from blog.models import Article, Category, Tag +from djangoblog.utils import get_blog_setting + + +class SeoOptimizerPlugin(BasePlugin): + PLUGIN_NAME = 'SEO 优化器' + PLUGIN_DESCRIPTION = '为文章、页面等提供 SEO 优化,动态生成 meta 标签和 JSON-LD 结构化数据。' + PLUGIN_VERSION = '0.2.0' + PLUGIN_AUTHOR = 'liuangliangyy' + + def register_hooks(self): + hooks.register('head_meta', self.dispatch_seo_generation) + + def _get_article_seo_data(self, context, request, blog_setting): + article = context.get('article') + if not isinstance(article, Article): + return None + + description = strip_tags(article.body)[:150] + keywords = ",".join([tag.name for tag in article.tags.all()]) or blog_setting.site_keywords + + meta_tags = f''' + + + + + + + + + ''' + for tag in article.tags.all(): + meta_tags += f'' + meta_tags += f'' + + structured_data = { + "@context": "https://schema.org", + "@type": "Article", + "mainEntityOfPage": {"@type": "WebPage", "@id": request.build_absolute_uri()}, + "headline": article.title, + "description": description, + "image": request.build_absolute_uri(article.get_first_image_url()), + "datePublished": article.pub_time.isoformat(), + "dateModified": article.last_modify_time.isoformat(), + "author": {"@type": "Person", "name": article.author.username}, + "publisher": {"@type": "Organization", "name": blog_setting.site_name} + } + if not structured_data.get("image"): + del structured_data["image"] + + return { + "title": f"{article.title} | {blog_setting.site_name}", + "description": description, + "keywords": keywords, + "meta_tags": meta_tags, + "json_ld": structured_data + } + + def _get_category_seo_data(self, context, request, blog_setting): + category_name = context.get('tag_name') + if not category_name: + return None + + category = Category.objects.filter(name=category_name).first() + if not category: + return None + + title = f"{category.name} | {blog_setting.site_name}" + description = strip_tags(category.name) or blog_setting.site_description + keywords = category.name + + # BreadcrumbList structured data for category page + breadcrumb_items = [{"@type": "ListItem", "position": 1, "name": "首页", "item": request.build_absolute_uri('/')}] + breadcrumb_items.append({"@type": "ListItem", "position": 2, "name": category.name, "item": request.build_absolute_uri()}) + + structured_data = { + "@context": "https://schema.org", + "@type": "BreadcrumbList", + "itemListElement": breadcrumb_items + } + + return { + "title": title, + "description": description, + "keywords": keywords, + "meta_tags": "", + "json_ld": structured_data + } + + def _get_default_seo_data(self, context, request, blog_setting): + # Homepage and other default pages + structured_data = { + "@context": "https://schema.org", + "@type": "WebSite", + "url": request.build_absolute_uri('/'), + "potentialAction": { + "@type": "SearchAction", + "target": f"{request.build_absolute_uri('/search/')}?q={{search_term_string}}", + "query-input": "required name=search_term_string" + } + } + return { + "title": f"{blog_setting.site_name} | {blog_setting.site_description}", + "description": blog_setting.site_description, + "keywords": blog_setting.site_keywords, + "meta_tags": "", + "json_ld": structured_data + } + + def dispatch_seo_generation(self, metas, context): + request = context.get('request') + if not request: + return metas + + view_name = request.resolver_match.view_name + blog_setting = get_blog_setting() + + seo_data = None + if view_name == 'blog:detailbyid': + seo_data = self._get_article_seo_data(context, request, blog_setting) + elif view_name == 'blog:category_detail': + seo_data = self._get_category_seo_data(context, request, blog_setting) + + if not seo_data: + seo_data = self._get_default_seo_data(context, request, blog_setting) + + json_ld_script = f'' + + return f""" + {seo_data.get("title", "")} + + + {seo_data.get("meta_tags", "")} + {json_ld_script} + """ + +plugin = SeoOptimizerPlugin() diff --git a/src/DjangoBlog-master/plugins/view_count/__init__.py b/src/DjangoBlog-master/plugins/view_count/__init__.py new file mode 100644 index 0000000..8804fdf --- /dev/null +++ b/src/DjangoBlog-master/plugins/view_count/__init__.py @@ -0,0 +1 @@ +# This file makes this a Python package \ No newline at end of file diff --git a/src/DjangoBlog-master/plugins/view_count/plugin.py b/src/DjangoBlog-master/plugins/view_count/plugin.py new file mode 100644 index 0000000..15e9d94 --- /dev/null +++ b/src/DjangoBlog-master/plugins/view_count/plugin.py @@ -0,0 +1,18 @@ +from djangoblog.plugin_manage.base_plugin import BasePlugin +from djangoblog.plugin_manage import hooks + + +class ViewCountPlugin(BasePlugin): + PLUGIN_NAME = '文章浏览次数统计' + PLUGIN_DESCRIPTION = '统计文章的浏览次数' + PLUGIN_VERSION = '0.1.0' + PLUGIN_AUTHOR = 'liangliangyy' + + def register_hooks(self): + hooks.register('after_article_body_get', self.record_view) + + def record_view(self, article, *args, **kwargs): + article.viewed() + + +plugin = ViewCountPlugin() \ No newline at end of file diff --git a/src/DjangoBlog-master/requirements.txt b/src/DjangoBlog-master/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..9dc5c935191f166db408850beb747475a262f65f GIT binary patch literal 2554 zcmZ{mOK)0H41~|RQhy3jxa83;x~aOVRHt-$MBCMc>m$SHk)3NsCx724O z&svob%XMU|V{iQC@?R zZ~0G!W+z_|B@^!EYb0|a8|zFJJ(1fNe%^|{En8uk>3b5kw*sb!x=F1+XweA^2Zpom&^VXcC#kB7{YUtyk1AW8lRCsH7kc&9|2FJZDW6fPxwcK<4UuCUBdsXLVs`_5F zp~0oR=sQS>?<%PjW*zBU@cbYY3-!J}L^}_3Y27N;PkG)pk*uJsc&?t#R3o*J(X1SA zka;NaQGO#GYHJxbBbSkJp-k9@@&PlNs$w3EcPR@sF|TltTB6Tpl&WX?P!AFM`gAq# ziDP5!b%x?N`7!_PG~o%JQRKX9Y6p=$>EBXOM*7a}6;HOi-71ev8|^_li^@^eSj@w__0A3aLAaD3lW$cY-+ejf+0D0n;c*g?m`=Y9 z#D{NVKaQOf&bHqN|K6p!G41^vmi8TR=TIe^a2}m??@)Ypmc4|+%#Zt&bBpa!Y_Lna z95ZK`d!>na86B&$`)xt#Oe-&k^ISIS%h_8C0ec(O{{Ln{w6Q!`KVv#@hd&K=)9UJoM~W6el-zM7!{x**T=1X z^wa1z+L2b5chAc%ZKb?k2fY03=7b3E0}!J+D^ z`Om~yc~RJ~yuIGH-QLq%`|ZTuPLXcJX{%xE{f6^yk|#Rdx2k=` SS`X?#O)JeKo3nk{t@?jbHFwMa literal 0 HcmV?d00001 diff --git a/src/DjangoBlog-master/servermanager/MemcacheStorage.py b/src/DjangoBlog-master/servermanager/MemcacheStorage.py new file mode 100644 index 0000000..38a7990 --- /dev/null +++ b/src/DjangoBlog-master/servermanager/MemcacheStorage.py @@ -0,0 +1,32 @@ +from werobot.session import SessionStorage +from werobot.utils import json_loads, json_dumps + +from djangoblog.utils import cache + + +class MemcacheStorage(SessionStorage): + def __init__(self, prefix='ws_'): + self.prefix = prefix + self.cache = cache + + @property + def is_available(self): + value = "1" + self.set('checkavaliable', value=value) + return value == self.get('checkavaliable') + + def key_name(self, s): + return '{prefix}{s}'.format(prefix=self.prefix, s=s) + + def get(self, id): + id = self.key_name(id) + session_json = self.cache.get(id) or '{}' + return json_loads(session_json) + + def set(self, id, value): + id = self.key_name(id) + self.cache.set(id, json_dumps(value)) + + def delete(self, id): + id = self.key_name(id) + self.cache.delete(id) diff --git a/src/DjangoBlog-master/servermanager/__init__.py b/src/DjangoBlog-master/servermanager/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/DjangoBlog-master/servermanager/admin.py b/src/DjangoBlog-master/servermanager/admin.py new file mode 100644 index 0000000..f26f4f6 --- /dev/null +++ b/src/DjangoBlog-master/servermanager/admin.py @@ -0,0 +1,19 @@ +from django.contrib import admin +# Register your models here. + + +class CommandsAdmin(admin.ModelAdmin): + list_display = ('title', 'command', 'describe') + + +class EmailSendLogAdmin(admin.ModelAdmin): + list_display = ('title', 'emailto', 'send_result', 'creation_time') + readonly_fields = ( + 'title', + 'emailto', + 'send_result', + 'creation_time', + 'content') + + def has_add_permission(self, request): + return False diff --git a/src/DjangoBlog-master/servermanager/api/__init__.py b/src/DjangoBlog-master/servermanager/api/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/DjangoBlog-master/servermanager/api/__init__.py @@ -0,0 +1 @@ + diff --git a/src/DjangoBlog-master/servermanager/api/blogapi.py b/src/DjangoBlog-master/servermanager/api/blogapi.py new file mode 100644 index 0000000..8a4d6ac --- /dev/null +++ b/src/DjangoBlog-master/servermanager/api/blogapi.py @@ -0,0 +1,27 @@ +from haystack.query import SearchQuerySet + +from blog.models import Article, Category + + +class BlogApi: + def __init__(self): + self.searchqueryset = SearchQuerySet() + self.searchqueryset.auto_query('') + self.__max_takecount__ = 8 + + def search_articles(self, query): + sqs = self.searchqueryset.auto_query(query) + sqs = sqs.load_all() + return sqs[:self.__max_takecount__] + + def get_category_lists(self): + return Category.objects.all() + + def get_category_articles(self, categoryname): + articles = Article.objects.filter(category__name=categoryname) + if articles: + return articles[:self.__max_takecount__] + return None + + def get_recent_articles(self): + return Article.objects.all()[:self.__max_takecount__] diff --git a/src/DjangoBlog-master/servermanager/api/commonapi.py b/src/DjangoBlog-master/servermanager/api/commonapi.py new file mode 100644 index 0000000..83ad9ff --- /dev/null +++ b/src/DjangoBlog-master/servermanager/api/commonapi.py @@ -0,0 +1,64 @@ +import logging +import os + +import openai + +from servermanager.models import commands + +logger = logging.getLogger(__name__) + +openai.api_key = os.environ.get('OPENAI_API_KEY') +if os.environ.get('HTTP_PROXY'): + openai.proxy = os.environ.get('HTTP_PROXY') + + +class ChatGPT: + + @staticmethod + def chat(prompt): + try: + completion = openai.ChatCompletion.create(model="gpt-3.5-turbo", + messages=[{"role": "user", "content": prompt}]) + return completion.choices[0].message.content + except Exception as e: + logger.error(e) + return "服务器出错了" + + +class CommandHandler: + def __init__(self): + self.commands = commands.objects.all() + + def run(self, title): + """ + 运行命令 + :param title: 命令 + :return: 返回命令执行结果 + """ + cmd = list( + filter( + lambda x: x.title.upper() == title.upper(), + self.commands)) + if cmd: + return self.__run_command__(cmd[0].command) + else: + return "未找到相关命令,请输入hepme获得帮助。" + + def __run_command__(self, cmd): + try: + res = os.popen(cmd).read() + return res + except BaseException: + return '命令执行出错!' + + def get_help(self): + rsp = '' + for cmd in self.commands: + rsp += '{c}:{d}\n'.format(c=cmd.title, d=cmd.describe) + return rsp + + +if __name__ == '__main__': + chatbot = ChatGPT() + prompt = "写一篇1000字关于AI的论文" + print(chatbot.chat(prompt)) diff --git a/src/DjangoBlog-master/servermanager/apps.py b/src/DjangoBlog-master/servermanager/apps.py new file mode 100644 index 0000000..03cc38d --- /dev/null +++ b/src/DjangoBlog-master/servermanager/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class ServermanagerConfig(AppConfig): + name = 'servermanager' diff --git a/src/DjangoBlog-master/servermanager/migrations/0001_initial.py b/src/DjangoBlog-master/servermanager/migrations/0001_initial.py new file mode 100644 index 0000000..bbdbf77 --- /dev/null +++ b/src/DjangoBlog-master/servermanager/migrations/0001_initial.py @@ -0,0 +1,45 @@ +# Generated by Django 4.1.7 on 2023-03-02 07:14 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='commands', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.CharField(max_length=300, verbose_name='命令标题')), + ('command', models.CharField(max_length=2000, verbose_name='命令')), + ('describe', models.CharField(max_length=300, verbose_name='命令描述')), + ('created_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), + ('last_mod_time', models.DateTimeField(auto_now=True, verbose_name='修改时间')), + ], + options={ + 'verbose_name': '命令', + 'verbose_name_plural': '命令', + }, + ), + migrations.CreateModel( + name='EmailSendLog', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('emailto', models.CharField(max_length=300, verbose_name='收件人')), + ('title', models.CharField(max_length=2000, verbose_name='邮件标题')), + ('content', models.TextField(verbose_name='邮件内容')), + ('send_result', models.BooleanField(default=False, verbose_name='结果')), + ('created_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), + ], + options={ + 'verbose_name': '邮件发送log', + 'verbose_name_plural': '邮件发送log', + 'ordering': ['-created_time'], + }, + ), + ] diff --git a/src/DjangoBlog-master/servermanager/migrations/0002_alter_emailsendlog_options_and_more.py b/src/DjangoBlog-master/servermanager/migrations/0002_alter_emailsendlog_options_and_more.py new file mode 100644 index 0000000..4858857 --- /dev/null +++ b/src/DjangoBlog-master/servermanager/migrations/0002_alter_emailsendlog_options_and_more.py @@ -0,0 +1,32 @@ +# Generated by Django 4.2.5 on 2023-09-06 13:19 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('servermanager', '0001_initial'), + ] + + operations = [ + migrations.AlterModelOptions( + name='emailsendlog', + options={'ordering': ['-creation_time'], 'verbose_name': '邮件发送log', 'verbose_name_plural': '邮件发送log'}, + ), + migrations.RenameField( + model_name='commands', + old_name='created_time', + new_name='creation_time', + ), + migrations.RenameField( + model_name='commands', + old_name='last_mod_time', + new_name='last_modify_time', + ), + migrations.RenameField( + model_name='emailsendlog', + old_name='created_time', + new_name='creation_time', + ), + ] diff --git a/src/DjangoBlog-master/servermanager/migrations/__init__.py b/src/DjangoBlog-master/servermanager/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/DjangoBlog-master/servermanager/models.py b/src/DjangoBlog-master/servermanager/models.py new file mode 100644 index 0000000..4326c65 --- /dev/null +++ b/src/DjangoBlog-master/servermanager/models.py @@ -0,0 +1,33 @@ +from django.db import models + + +# Create your models here. +class commands(models.Model): + title = models.CharField('命令标题', max_length=300) + command = models.CharField('命令', max_length=2000) + describe = models.CharField('命令描述', max_length=300) + creation_time = models.DateTimeField('创建时间', auto_now_add=True) + last_modify_time = models.DateTimeField('修改时间', auto_now=True) + + def __str__(self): + return self.title + + class Meta: + verbose_name = '命令' + verbose_name_plural = verbose_name + + +class EmailSendLog(models.Model): + emailto = models.CharField('收件人', max_length=300) + title = models.CharField('邮件标题', max_length=2000) + content = models.TextField('邮件内容') + send_result = models.BooleanField('结果', default=False) + creation_time = models.DateTimeField('创建时间', auto_now_add=True) + + def __str__(self): + return self.title + + class Meta: + verbose_name = '邮件发送log' + verbose_name_plural = verbose_name + ordering = ['-creation_time'] diff --git a/src/DjangoBlog-master/servermanager/robot.py b/src/DjangoBlog-master/servermanager/robot.py new file mode 100644 index 0000000..7b45736 --- /dev/null +++ b/src/DjangoBlog-master/servermanager/robot.py @@ -0,0 +1,187 @@ +import logging +import os +import re + +import jsonpickle +from django.conf import settings +from werobot import WeRoBot +from werobot.replies import ArticlesReply, Article +from werobot.session.filestorage import FileStorage + +from djangoblog.utils import get_sha256 +from servermanager.api.blogapi import BlogApi +from servermanager.api.commonapi import ChatGPT, CommandHandler +from .MemcacheStorage import MemcacheStorage + +robot = WeRoBot(token=os.environ.get('DJANGO_WEROBOT_TOKEN') + or 'lylinux', enable_session=True) +memstorage = MemcacheStorage() +if memstorage.is_available: + robot.config['SESSION_STORAGE'] = memstorage +else: + if os.path.exists(os.path.join(settings.BASE_DIR, 'werobot_session')): + os.remove(os.path.join(settings.BASE_DIR, 'werobot_session')) + robot.config['SESSION_STORAGE'] = FileStorage(filename='werobot_session') + +blogapi = BlogApi() +cmd_handler = CommandHandler() +logger = logging.getLogger(__name__) + + +def convert_to_article_reply(articles, message): + reply = ArticlesReply(message=message) + from blog.templatetags.blog_tags import truncatechars_content + for post in articles: + imgs = re.findall(r'(?:http\:|https\:)?\/\/.*\.(?:png|jpg)', post.body) + imgurl = '' + if imgs: + imgurl = imgs[0] + article = Article( + title=post.title, + description=truncatechars_content(post.body), + img=imgurl, + url=post.get_full_url() + ) + reply.add_article(article) + return reply + + +@robot.filter(re.compile(r"^\?.*")) +def search(message, session): + s = message.content + searchstr = str(s).replace('?', '') + result = blogapi.search_articles(searchstr) + if result: + articles = list(map(lambda x: x.object, result)) + reply = convert_to_article_reply(articles, message) + return reply + else: + return '没有找到相关文章。' + + +@robot.filter(re.compile(r'^category\s*$', re.I)) +def category(message, session): + categorys = blogapi.get_category_lists() + content = ','.join(map(lambda x: x.name, categorys)) + return '所有文章分类目录:' + content + + +@robot.filter(re.compile(r'^recent\s*$', re.I)) +def recents(message, session): + articles = blogapi.get_recent_articles() + if articles: + reply = convert_to_article_reply(articles, message) + return reply + else: + return "暂时还没有文章" + + +@robot.filter(re.compile('^help$', re.I)) +def help(message, session): + return '''欢迎关注! + 默认会与图灵机器人聊天~~ + 你可以通过下面这些命令来获得信息 + ?关键字搜索文章. + 如?python. + category获得文章分类目录及文章数. + category-***获得该分类目录文章 + 如category-python + recent获得最新文章 + help获得帮助. + weather:获得天气 + 如weather:西安 + idcard:获得身份证信息 + 如idcard:61048119xxxxxxxxxx + music:音乐搜索 + 如music:阴天快乐 + PS:以上标点符号都不支持中文标点~~ + ''' + + +@robot.filter(re.compile(r'^weather\:.*$', re.I)) +def weather(message, session): + return "建设中..." + + +@robot.filter(re.compile(r'^idcard\:.*$', re.I)) +def idcard(message, session): + return "建设中..." + + +@robot.handler +def echo(message, session): + handler = MessageHandler(message, session) + return handler.handler() + + +class MessageHandler: + def __init__(self, message, session): + userid = message.source + self.message = message + self.session = session + self.userid = userid + try: + info = session[userid] + self.userinfo = jsonpickle.decode(info) + except Exception as e: + userinfo = WxUserInfo() + self.userinfo = userinfo + + @property + def is_admin(self): + return self.userinfo.isAdmin + + @property + def is_password_set(self): + return self.userinfo.isPasswordSet + + def save_session(self): + info = jsonpickle.encode(self.userinfo) + self.session[self.userid] = info + + def handler(self): + info = self.message.content + + if self.userinfo.isAdmin and info.upper() == 'EXIT': + self.userinfo = WxUserInfo() + self.save_session() + return "退出成功" + if info.upper() == 'ADMIN': + self.userinfo.isAdmin = True + self.save_session() + return "输入管理员密码" + if self.userinfo.isAdmin and not self.userinfo.isPasswordSet: + passwd = settings.WXADMIN + if settings.TESTING: + passwd = '123' + if passwd.upper() == get_sha256(get_sha256(info)).upper(): + self.userinfo.isPasswordSet = True + self.save_session() + return "验证通过,请输入命令或者要执行的命令代码:输入helpme获得帮助" + else: + if self.userinfo.Count >= 3: + self.userinfo = WxUserInfo() + self.save_session() + return "超过验证次数" + self.userinfo.Count += 1 + self.save_session() + return "验证失败,请重新输入管理员密码:" + if self.userinfo.isAdmin and self.userinfo.isPasswordSet: + if self.userinfo.Command != '' and info.upper() == 'Y': + return cmd_handler.run(self.userinfo.Command) + else: + if info.upper() == 'HELPME': + return cmd_handler.get_help() + self.userinfo.Command = info + self.save_session() + return "确认执行: " + info + " 命令?" + + return ChatGPT.chat(info) + + +class WxUserInfo(): + def __init__(self): + self.isAdmin = False + self.isPasswordSet = False + self.Count = 0 + self.Command = '' diff --git a/src/DjangoBlog-master/servermanager/tests.py b/src/DjangoBlog-master/servermanager/tests.py new file mode 100644 index 0000000..22a6689 --- /dev/null +++ b/src/DjangoBlog-master/servermanager/tests.py @@ -0,0 +1,79 @@ +from django.test import Client, RequestFactory, TestCase +from django.utils import timezone +from werobot.messages.messages import TextMessage + +from accounts.models import BlogUser +from blog.models import Category, Article +from servermanager.api.commonapi import ChatGPT +from .models import commands +from .robot import MessageHandler, CommandHandler +from .robot import search, category, recents + + +# Create your tests here. +class ServerManagerTest(TestCase): + def setUp(self): + self.client = Client() + self.factory = RequestFactory() + + def test_chat_gpt(self): + content = ChatGPT.chat("你好") + self.assertIsNotNone(content) + + def test_validate_comment(self): + user = BlogUser.objects.create_superuser( + email="liangliangyy1@gmail.com", + username="liangliangyy1", + password="liangliangyy1") + + self.client.login(username='liangliangyy1', password='liangliangyy1') + + c = Category() + c.name = "categoryccc" + c.save() + + article = Article() + article.title = "nicetitleccc" + article.body = "nicecontentccc" + article.author = user + article.category = c + article.type = 'a' + article.status = 'p' + article.save() + s = TextMessage([]) + s.content = "nice" + rsp = search(s, None) + rsp = category(None, None) + self.assertIsNotNone(rsp) + rsp = recents(None, None) + self.assertTrue(rsp != '暂时还没有文章') + + cmd = commands() + cmd.title = "test" + cmd.command = "ls" + cmd.describe = "test" + cmd.save() + + cmdhandler = CommandHandler() + rsp = cmdhandler.run('test') + self.assertIsNotNone(rsp) + s.source = 'u' + s.content = 'test' + msghandler = MessageHandler(s, {}) + + # msghandler.userinfo.isPasswordSet = True + # msghandler.userinfo.isAdmin = True + msghandler.handler() + s.content = 'y' + msghandler.handler() + s.content = 'idcard:12321233' + msghandler.handler() + s.content = 'weather:上海' + msghandler.handler() + s.content = 'admin' + msghandler.handler() + s.content = '123' + msghandler.handler() + + s.content = 'exit' + msghandler.handler() diff --git a/src/DjangoBlog-master/servermanager/urls.py b/src/DjangoBlog-master/servermanager/urls.py new file mode 100644 index 0000000..8d134d2 --- /dev/null +++ b/src/DjangoBlog-master/servermanager/urls.py @@ -0,0 +1,10 @@ +from django.urls import path +from werobot.contrib.django import make_view + +from .robot import robot + +app_name = "servermanager" +urlpatterns = [ + path(r'robot', make_view(robot)), + +] diff --git a/src/DjangoBlog-master/servermanager/views.py b/src/DjangoBlog-master/servermanager/views.py new file mode 100644 index 0000000..60f00ef --- /dev/null +++ b/src/DjangoBlog-master/servermanager/views.py @@ -0,0 +1 @@ +# Create your views here. diff --git a/src/DjangoBlog-master/templates/account/forget_password.html b/src/DjangoBlog-master/templates/account/forget_password.html new file mode 100644 index 0000000..3384531 --- /dev/null +++ b/src/DjangoBlog-master/templates/account/forget_password.html @@ -0,0 +1,30 @@ +{% extends 'share_layout/base_account.html' %} +{% load i18n %} +{% load static %} +{% block content %} +
+ + + + + +

+ Home Page + | + login page +

+ +
+{% endblock %} \ No newline at end of file diff --git a/src/DjangoBlog-master/templates/account/login.html b/src/DjangoBlog-master/templates/account/login.html new file mode 100644 index 0000000..cff8d33 --- /dev/null +++ b/src/DjangoBlog-master/templates/account/login.html @@ -0,0 +1,46 @@ +{% extends 'share_layout/base_account.html' %} +{% load static %} +{% load i18n %} +{% block content %} +
+ + + + + +

+ + {% trans 'Create Account' %} + + | + Home Page + | + + {% trans 'Forget Password' %} + +

+ +
+{% endblock %} \ No newline at end of file diff --git a/src/DjangoBlog-master/templates/account/registration_form.html b/src/DjangoBlog-master/templates/account/registration_form.html new file mode 100644 index 0000000..65e7549 --- /dev/null +++ b/src/DjangoBlog-master/templates/account/registration_form.html @@ -0,0 +1,29 @@ +{% extends 'share_layout/base_account.html' %} +{% load static %} +{% block content %} +
+ + + + + +

+ Sign In +

+ +
+{% endblock %} \ No newline at end of file diff --git a/src/DjangoBlog-master/templates/account/result.html b/src/DjangoBlog-master/templates/account/result.html new file mode 100644 index 0000000..23c9094 --- /dev/null +++ b/src/DjangoBlog-master/templates/account/result.html @@ -0,0 +1,27 @@ +{% extends 'share_layout/base.html' %} +{% load i18n %} +{% block header %} + {{ title }} +{% endblock %} +{% block content %} +
+ +
+{% endblock %} \ No newline at end of file diff --git a/src/DjangoBlog-master/templates/blog/article_archives.html b/src/DjangoBlog-master/templates/blog/article_archives.html new file mode 100644 index 0000000..959319e --- /dev/null +++ b/src/DjangoBlog-master/templates/blog/article_archives.html @@ -0,0 +1,60 @@ +{% extends 'share_layout/base.html' %} +{% load blog_tags %} +{% load cache %} +{% load i18n %} +{% block header %} + + {% trans 'article archive' %} | {{ SITE_DESCRIPTION }} + + + + + + + + + +{% endblock %} +{% block content %} +
+
+ +
+ +

{% trans 'article archive' %}

+
+ +
+ + {% regroup article_list by pub_time.year as year_post_group %} +
    + {% for year in year_post_group %} +
  • {{ year.grouper }} {% trans 'year' %} + {% regroup year.list by pub_time.month as month_post_group %} +
      + {% for month in month_post_group %} +
    • {{ month.grouper }} {% trans 'month' %} + +
    • + {% endfor %} +
    +
  • + {% endfor %} +
+
+
+
+ +{% endblock %} + + +{% block sidebar %} + {% load_sidebar user 'i' %} +{% endblock %} + + diff --git a/src/DjangoBlog-master/templates/blog/article_detail.html b/src/DjangoBlog-master/templates/blog/article_detail.html new file mode 100644 index 0000000..a74a0db --- /dev/null +++ b/src/DjangoBlog-master/templates/blog/article_detail.html @@ -0,0 +1,52 @@ +{% extends 'share_layout/base.html' %} +{% load blog_tags %} + +{% block header %} +{% endblock %} +{% block content %} +
+
+ {% load_article_detail article False user %} + + {% if article.type == 'a' %} + + {% endif %} + +
+ {% if article.comment_status == "o" and OPEN_SITE_COMMENT %} + + + {% include 'comments/tags/comment_list.html' %} + {% if user.is_authenticated %} + {% include 'comments/tags/post_comment.html' %} + {% else %} +
+

您还没有登录,请您登录后发表评论。 +

+ + {% load oauth_tags %} + {% load_oauth_applications request %} + +
+ {% endif %} + {% endif %} +
+ +{% endblock %} + +{% block sidebar %} + {% load_sidebar user "p" %} +{% endblock %} \ No newline at end of file diff --git a/src/DjangoBlog-master/templates/blog/article_index.html b/src/DjangoBlog-master/templates/blog/article_index.html new file mode 100644 index 0000000..0ee6150 --- /dev/null +++ b/src/DjangoBlog-master/templates/blog/article_index.html @@ -0,0 +1,42 @@ +{% extends 'share_layout/base.html' %} +{% load blog_tags %} +{% load cache %} +{% block header %} + {% if tag_name %} + {{ page_type }}:{{ tag_name }} | {{ SITE_DESCRIPTION }} + {% comment %}{% endcomment %} + {% else %} + {{ SITE_NAME }} | {{ SITE_DESCRIPTION }} + {% endif %} + + + + + + + +{% endblock %} +{% block content %} +
+
+ {% if page_type and tag_name %} +
+ +

{{ page_type }}:{{ tag_name }}

+
+ {% endif %} + + {% for article in article_list %} + {% load_article_detail article True user %} + {% endfor %} + {% if is_paginated %} + {% load_pagination_info page_obj page_type tag_name %} + + {% endif %} +
+
+ +{% endblock %} +{% block sidebar %} + {% load_sidebar user linktype %} +{% endblock %} \ No newline at end of file diff --git a/src/DjangoBlog-master/templates/blog/error_page.html b/src/DjangoBlog-master/templates/blog/error_page.html new file mode 100644 index 0000000..d41cfb6 --- /dev/null +++ b/src/DjangoBlog-master/templates/blog/error_page.html @@ -0,0 +1,45 @@ +{% extends 'share_layout/base.html' %} +{% load blog_tags %} +{% load cache %} +{% block header %} + {% if tag_name %} + {% if statuscode == '404' %} + 404 NotFound + {% elif statuscode == '403' %} + Permission Denied + {% elif statuscode == '500' %} + 500 Error + {% else %} + + {% endif %} + {% comment %}{% endcomment %} + {% else %} + {{ SITE_NAME }} | {{ SITE_DESCRIPTION }} + {% endif %} + + + + + + + +{% endblock %} +{% block content %} +
+
+ +
+

{{ message }}

+
+ +
+
+ +{% endblock %} + + +{% block sidebar %} + {% load_sidebar user 'i' %} +{% endblock %} + + diff --git a/src/DjangoBlog-master/templates/blog/links_list.html b/src/DjangoBlog-master/templates/blog/links_list.html new file mode 100644 index 0000000..ccecbea --- /dev/null +++ b/src/DjangoBlog-master/templates/blog/links_list.html @@ -0,0 +1,44 @@ +{% extends 'share_layout/base.html' %} +{% load blog_tags %} +{% load cache %} +{% block header %} + + 友情链接 | {{ SITE_DESCRIPTION }} + + + + + + + + + +{% endblock %} +{% block content %} +
+
+ +
+ +

友情链接

+
+ +
+ +
+
+
+ +{% endblock %} + + +{% block sidebar %} + {% load_sidebar user 'i' %} +{% endblock %} + + diff --git a/src/DjangoBlog-master/templates/blog/tags/article_info.html b/src/DjangoBlog-master/templates/blog/tags/article_info.html new file mode 100644 index 0000000..3deec44 --- /dev/null +++ b/src/DjangoBlog-master/templates/blog/tags/article_info.html @@ -0,0 +1,74 @@ +{% load blog_tags %} +{% load cache %} +{% load i18n %} +
+
+ +

+ {% if isindex %} + {% if article.article_order > 0 %} + 【{% trans 'pin to top' %}】{{ article.title }} + {% else %} + {{ article.title }} + {% endif %} + + {% else %} + {{ article.title }} + {% endif %} +

+ +
+ {% if article.type == 'a' %} + {% if not isindex %} + {% cache 36000 breadcrumb article.pk %} + {% load_breadcrumb article %} + {% endcache %} + {% endif %} + {% endif %} +
+ +
+ {% if isindex %} + {{ article.body|custom_markdown|escape|truncatechars_content }} +

Read more

+ {% else %} + + {% if article.show_toc %} + {% get_markdown_toc article.body as toc %} + {% trans 'toc' %}: + {{ toc|safe }} + +
+ {% endif %} +
+ + {{ article.body|custom_markdown|escape }} + +
+ {% endif %} + +
+ + {% load_article_metas article user %} + +
\ No newline at end of file diff --git a/src/DjangoBlog-master/templates/blog/tags/article_meta_info.html b/src/DjangoBlog-master/templates/blog/tags/article_meta_info.html new file mode 100644 index 0000000..cb6111c --- /dev/null +++ b/src/DjangoBlog-master/templates/blog/tags/article_meta_info.html @@ -0,0 +1,59 @@ +{% load i18n %} +{% load blog_tags %} + + + + + diff --git a/src/DjangoBlog-master/templates/blog/tags/article_pagination.html b/src/DjangoBlog-master/templates/blog/tags/article_pagination.html new file mode 100644 index 0000000..95514ff --- /dev/null +++ b/src/DjangoBlog-master/templates/blog/tags/article_pagination.html @@ -0,0 +1,17 @@ +{% load i18n %} + \ No newline at end of file diff --git a/src/DjangoBlog-master/templates/blog/tags/article_tag_list.html b/src/DjangoBlog-master/templates/blog/tags/article_tag_list.html new file mode 100644 index 0000000..c8ba474 --- /dev/null +++ b/src/DjangoBlog-master/templates/blog/tags/article_tag_list.html @@ -0,0 +1,19 @@ +{% load i18n %} +{% if article_tags_list %} +
+
+ {% trans 'tags' %} +
+
+ + {% for url,count,tag,color in article_tags_list %} + + {{ tag.name }} + {{ count }} + + {% endfor %} + +
+
+{% endif %} diff --git a/src/DjangoBlog-master/templates/blog/tags/breadcrumb.html b/src/DjangoBlog-master/templates/blog/tags/breadcrumb.html new file mode 100644 index 0000000..67087d5 --- /dev/null +++ b/src/DjangoBlog-master/templates/blog/tags/breadcrumb.html @@ -0,0 +1,19 @@ + + diff --git a/src/DjangoBlog-master/templates/blog/tags/sidebar.html b/src/DjangoBlog-master/templates/blog/tags/sidebar.html new file mode 100644 index 0000000..f70544c --- /dev/null +++ b/src/DjangoBlog-master/templates/blog/tags/sidebar.html @@ -0,0 +1,136 @@ +{% load blog_tags %} +{% load i18n %} + diff --git a/src/DjangoBlog-master/templates/comments/tags/comment_item.html b/src/DjangoBlog-master/templates/comments/tags/comment_item.html new file mode 100644 index 0000000..ebb0388 --- /dev/null +++ b/src/DjangoBlog-master/templates/comments/tags/comment_item.html @@ -0,0 +1,34 @@ +{% load blog_tags %} +
  • +
    + + + +

    {{ comment_item.body|escape|comment_markdown }}

    + +
    + +
  • \ No newline at end of file diff --git a/src/DjangoBlog-master/templates/comments/tags/comment_item_tree.html b/src/DjangoBlog-master/templates/comments/tags/comment_item_tree.html new file mode 100644 index 0000000..a9decd1 --- /dev/null +++ b/src/DjangoBlog-master/templates/comments/tags/comment_item_tree.html @@ -0,0 +1,54 @@ +{% load blog_tags %} +
  • +
    + + + +

    + {% if comment_item.parent_comment %} +

    + {% endif %} +

    + +

    {{ comment_item.body|escape|comment_markdown }}

    + + +
    + +
  • +{% query article_comments parent_comment=comment_item as cc_comments %} +{% for cc in cc_comments %} + {% with comment_item=cc template_name="comments/tags/comment_item_tree.html" %} + {% if depth >= 1 %} + {% include template_name %} + {% else %} + {% with depth=depth|add:1 %} + {% include template_name %} + {% endwith %} + {% endif %} + {% endwith %} +{% endfor %} \ No newline at end of file diff --git a/src/DjangoBlog-master/templates/comments/tags/comment_list.html b/src/DjangoBlog-master/templates/comments/tags/comment_list.html new file mode 100644 index 0000000..4092161 --- /dev/null +++ b/src/DjangoBlog-master/templates/comments/tags/comment_list.html @@ -0,0 +1,45 @@ + +
    + {% load blog_tags %} + {% load comments_tags %} + {% load cache %} + + + {% if article_comments %} +
    +
      + {# {% query article_comments parent_comment=None as parent_comments %}#} + {% for comment_item in p_comments %} + + {% with 0 as depth %} + {% include "comments/tags/comment_item_tree.html" %} + {% endwith %} + {% endfor %} + +
    + +
    +
    + {% endif %} +
    + +
    \ No newline at end of file diff --git a/src/DjangoBlog-master/templates/comments/tags/post_comment.html b/src/DjangoBlog-master/templates/comments/tags/post_comment.html new file mode 100644 index 0000000..3ae5a27 --- /dev/null +++ b/src/DjangoBlog-master/templates/comments/tags/post_comment.html @@ -0,0 +1,33 @@ +
    + +
    +

    发表评论 + +

    +
    {% csrf_token %} +

    + {{ form.body.label_tag }} + + {{ form.body }} + {{ form.body.errors }} +

    + {{ form.parent_comment_id }} +
    + {% if COMMENT_NEED_REVIEW %} + 支持markdown,评论经审核后才会显示。 + {% else %} + 支持markdown。 + {% endif %} + + +
    +
    +
    + +
    + + diff --git a/src/DjangoBlog-master/templates/oauth/bindsuccess.html b/src/DjangoBlog-master/templates/oauth/bindsuccess.html new file mode 100644 index 0000000..4bee77c --- /dev/null +++ b/src/DjangoBlog-master/templates/oauth/bindsuccess.html @@ -0,0 +1,22 @@ +{% extends 'share_layout/base.html' %} +{% block header %} + {{ title }} +{% endblock %} +{% block content %} +
    +
    + +
    + +

    {{ content }}

    +
    +
    +
    + + 登录 + | + 回到首页 +
    +
    +
    +{% endblock %} \ No newline at end of file diff --git a/src/DjangoBlog-master/templates/oauth/oauth_applications.html b/src/DjangoBlog-master/templates/oauth/oauth_applications.html new file mode 100644 index 0000000..a841ad2 --- /dev/null +++ b/src/DjangoBlog-master/templates/oauth/oauth_applications.html @@ -0,0 +1,13 @@ +{% load i18n %} + diff --git a/src/DjangoBlog-master/templates/oauth/require_email.html b/src/DjangoBlog-master/templates/oauth/require_email.html new file mode 100644 index 0000000..3adef12 --- /dev/null +++ b/src/DjangoBlog-master/templates/oauth/require_email.html @@ -0,0 +1,46 @@ +{% extends 'share_layout/base_account.html' %} + +{% load static %} +{% block content %} +
    + + + + + +

    + 登录 +

    + +
    +{% endblock %} \ No newline at end of file diff --git a/src/DjangoBlog-master/templates/owntracks/show_log_dates.html b/src/DjangoBlog-master/templates/owntracks/show_log_dates.html new file mode 100644 index 0000000..7dbba21 --- /dev/null +++ b/src/DjangoBlog-master/templates/owntracks/show_log_dates.html @@ -0,0 +1,17 @@ + + + + + 记录日期 + + + +
      + {% for date in results %} +
    • + {{ date }} +
    • + {% endfor %} +
    + + \ No newline at end of file diff --git a/src/DjangoBlog-master/templates/owntracks/show_maps.html b/src/DjangoBlog-master/templates/owntracks/show_maps.html new file mode 100644 index 0000000..3aeda36 --- /dev/null +++ b/src/DjangoBlog-master/templates/owntracks/show_maps.html @@ -0,0 +1,135 @@ + + + + + + + 运动轨迹 + + + +
    + + + + + + + + \ No newline at end of file diff --git a/src/DjangoBlog-master/templates/search/indexes/blog/article_text.txt b/src/DjangoBlog-master/templates/search/indexes/blog/article_text.txt new file mode 100644 index 0000000..4f9ca76 --- /dev/null +++ b/src/DjangoBlog-master/templates/search/indexes/blog/article_text.txt @@ -0,0 +1,3 @@ +{{ object.title }} +{{ object.author.username }} +{{ object.body }} \ No newline at end of file diff --git a/src/DjangoBlog-master/templates/search/search.html b/src/DjangoBlog-master/templates/search/search.html new file mode 100644 index 0000000..1404c60 --- /dev/null +++ b/src/DjangoBlog-master/templates/search/search.html @@ -0,0 +1,66 @@ +{% extends 'share_layout/base.html' %} +{% load blog_tags %} +{% block header %} + {{ SITE_NAME }} | {{ SITE_DESCRIPTION }} + + + + + + + +{% endblock %} +{% block content %} +
    +
    + {% if query %} +
    + {% if suggestion %} +

    + 已显示 “{{ suggestion }}” 的搜索结果。   + 仍然搜索:{{ query }}
    +

    + {% else %} +

    + 搜索:{{ query }}    +

    + {% endif %} +
    + {% endif %} + {% if query and page.object_list %} + {% for article in page.object_list %} + {% load_article_detail article.object True user %} + {% endfor %} + {% if page.has_previous or page.has_next %} + + + {% endif %} + {% else %} +
    + +

    哎呀,关键字:{{ query }}没有找到结果,要不换个词再试试?

    +
    + {% endif %} +
    +
    +{% endblock %} + + +{% block sidebar %} + {% load_sidebar request.user 'i' %} +{% endblock %} + + diff --git a/src/DjangoBlog-master/templates/share_layout/adsense.html b/src/DjangoBlog-master/templates/share_layout/adsense.html new file mode 100644 index 0000000..8f99c55 --- /dev/null +++ b/src/DjangoBlog-master/templates/share_layout/adsense.html @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/src/DjangoBlog-master/templates/share_layout/base.html b/src/DjangoBlog-master/templates/share_layout/base.html new file mode 100644 index 0000000..75d0df5 --- /dev/null +++ b/src/DjangoBlog-master/templates/share_layout/base.html @@ -0,0 +1,123 @@ +{% load static %} +{% load cache %} +{% load i18n %} +{% load compress %} + + + + + + + + + + {% block header %} + {% block title %}{{ SITE_NAME }}{% endblock %} + + + {% endblock %} + {% load blog_tags %} + {% head_meta %} + + + + + + + + + + + {% compress css %} + + + + {% comment %}{% endcomment %} + + + + {% block compress_css %} + {% endblock %} + {% endcompress %} + {% if GLOBAL_HEADER %} + {{ GLOBAL_HEADER|safe }} + {% endif %} + + + +
    + +
    + + {% block content %} + {% endblock %} + + + {% block sidebar %} + {% endblock %} + + +
    + {% include 'share_layout/footer.html' %} +
    + + +
    + + {% compress js %} + + + + + + {% block compress_js %} + {% endblock %} + {% endcompress %} + {% block footer %} + {% endblock %} +
    + diff --git a/src/DjangoBlog-master/templates/share_layout/base_account.html b/src/DjangoBlog-master/templates/share_layout/base_account.html new file mode 100644 index 0000000..c00d842 --- /dev/null +++ b/src/DjangoBlog-master/templates/share_layout/base_account.html @@ -0,0 +1,47 @@ + + + + {% load static %} + + + + + + + + + {{ SITE_NAME }} | {{ SITE_DESCRIPTION }} + + {% load compress %} + {% compress css %} + + + + + + + + + + {% endcompress %} + {% compress js %} + + + {% endcompress %} + + + + + +{% block content %} +{% endblock %} + + + + + + + \ No newline at end of file diff --git a/src/DjangoBlog-master/templates/share_layout/footer.html b/src/DjangoBlog-master/templates/share_layout/footer.html new file mode 100644 index 0000000..cd86a29 --- /dev/null +++ b/src/DjangoBlog-master/templates/share_layout/footer.html @@ -0,0 +1,56 @@ + + + diff --git a/src/DjangoBlog-master/templates/share_layout/nav.html b/src/DjangoBlog-master/templates/share_layout/nav.html new file mode 100644 index 0000000..24d4da6 --- /dev/null +++ b/src/DjangoBlog-master/templates/share_layout/nav.html @@ -0,0 +1,30 @@ +{% load i18n %} + + \ No newline at end of file diff --git a/src/DjangoBlog-master/templates/share_layout/nav_node.html b/src/DjangoBlog-master/templates/share_layout/nav_node.html new file mode 100644 index 0000000..c266880 --- /dev/null +++ b/src/DjangoBlog-master/templates/share_layout/nav_node.html @@ -0,0 +1,19 @@ + + +

    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