From 4ca514b8421faedf50ee26a5a45d52f5cccb6ef9 Mon Sep 17 00:00:00 2001 From: liangliang Date: Sun, 9 May 2021 08:47:16 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E5=A2=9E=E5=8A=A0ip=E5=9C=B0=E5=9D=80?= =?UTF-8?q?=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DjangoBlog/elasticsearch_backend.py | 10 +++++----- blog/documents.py | 5 +++-- blog/middleware.py | 6 ++++-- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/DjangoBlog/elasticsearch_backend.py b/DjangoBlog/elasticsearch_backend.py index 4728ad8..fa23e0f 100644 --- a/DjangoBlog/elasticsearch_backend.py +++ b/DjangoBlog/elasticsearch_backend.py @@ -41,7 +41,7 @@ class ElasticSearchBackend(BaseSearchBackend): # pass def _get_models(self, iterable): - models = iterable if iterable else Article.objects.all() + models = iterable if iterable and iterable[0] else Article.objects.all() docs = self.manager.convert_to_doc(models) return docs @@ -83,10 +83,10 @@ class ElasticSearchBackend(BaseSearchBackend): 'match', title=query_string)], 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] + .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 diff --git a/blog/documents.py b/blog/documents.py index fa382d5..9fb15b6 100644 --- a/blog/documents.py +++ b/blog/documents.py @@ -30,6 +30,7 @@ class ElapsedTimeDocument(Document): log_datetime = Date() type = Text(analyzer='ik_max_word') useragent = Text() + ip = Text() class Index: name = 'performance' @@ -45,7 +46,7 @@ class ElapsedTimeDocument(Document): class ElaspedTimeDocumentManager(): @staticmethod - def create(url, time_taken, log_datetime, type, useragent): + def create(url, time_taken, log_datetime, type, useragent, ip): # if not hasattr(ElaspedTimeDocumentManager, 'mapping_created'): # ElapsedTimeDocument.init() # setattr(ElaspedTimeDocumentManager, 'mapping_created', True) @@ -59,7 +60,7 @@ class ElaspedTimeDocumentManager(): time_taken=time_taken, log_datetime=log_datetime, type=type, - useragent=useragent) + useragent=useragent, ip=ip) doc.save() diff --git a/blog/middleware.py b/blog/middleware.py index 62af932..5b7b4a7 100644 --- a/blog/middleware.py +++ b/blog/middleware.py @@ -15,6 +15,7 @@ import time import logging +from ipware import get_client_ip from blog.documents import ELASTICSEARCH_ENABLED, ElaspedTimeDocumentManager logger = logging.getLogger(__name__) @@ -30,7 +31,7 @@ class OnlineMiddleware(object): start_time = time.time() response = self.get_response(request) http_user_agent = request.META.get('HTTP_USER_AGENT', '') - + ip = get_client_ip(request) if 'spider'.upper() not in http_user_agent.upper(): try: cast_time = time.time() - start_time @@ -44,7 +45,8 @@ class OnlineMiddleware(object): time_taken=time_taken, log_datetime=timezone.now(), type='blog', - useragent=http_user_agent) + useragent=http_user_agent, + ip=ip) response.content = response.content.replace( b'', str.encode(str(cast_time)[:5])) except Exception as e: From 6a5ef6c8f084bd30d2e42d54d55ed29e846b1da2 Mon Sep 17 00:00:00 2001 From: liangliang Date: Fri, 14 May 2021 11:19:43 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E5=A2=9E=E5=8A=A0ip=E5=9C=B0=E5=9D=80?= =?UTF-8?q?=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- blog/middleware.py | 2 +- blog/tests.py | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/blog/middleware.py b/blog/middleware.py index 5b7b4a7..a73fac2 100644 --- a/blog/middleware.py +++ b/blog/middleware.py @@ -31,7 +31,7 @@ class OnlineMiddleware(object): start_time = time.time() response = self.get_response(request) http_user_agent = request.META.get('HTTP_USER_AGENT', '') - ip = get_client_ip(request) + ip, _ = get_client_ip(request) if 'spider'.upper() not in http_user_agent.upper(): try: cast_time = time.time() - start_time diff --git a/blog/tests.py b/blog/tests.py index 89c60c6..131ce41 100644 --- a/blog/tests.py +++ b/blog/tests.py @@ -11,6 +11,7 @@ from django.conf import settings from django.urls import reverse from django.utils import timezone import os +from django.core.management import call_command # Create your tests here. @@ -196,3 +197,11 @@ class ArticleTest(TestCase): def test_errorpage(self): rsp = self.client.get('/eee') self.assertEqual(rsp.status_code, 404) + + def test_commands(self): + call_command("ping_baidu", "all") + call_command("create_testdata") + call_command("clear_cache") + call_command("build_index") + call_command("build_search_words") + call_command("sync_user_avatar") From cf26f73993bd1c3015f5ffefc12085d3dfa25734 Mon Sep 17 00:00:00 2001 From: liangliang Date: Fri, 14 May 2021 11:30:04 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E4=BF=AE=E6=94=B9test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- blog/tests.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/blog/tests.py b/blog/tests.py index 131ce41..fbc52b5 100644 --- a/blog/tests.py +++ b/blog/tests.py @@ -202,6 +202,9 @@ class ArticleTest(TestCase): call_command("ping_baidu", "all") call_command("create_testdata") call_command("clear_cache") - call_command("build_index") - call_command("build_search_words") call_command("sync_user_avatar") + call_command("build_search_words") + + from documents import ELASTICSEARCH_ENABLED + if ELASTICSEARCH_ENABLED: + call_command("build_index") From 6f336119a5fa0dd408eb74a521397ca35630a5c0 Mon Sep 17 00:00:00 2001 From: liangliang Date: Fri, 14 May 2021 11:34:00 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E4=BF=AE=E6=94=B9test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- blog/tests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blog/tests.py b/blog/tests.py index fbc52b5..ebc92f3 100644 --- a/blog/tests.py +++ b/blog/tests.py @@ -205,6 +205,6 @@ class ArticleTest(TestCase): call_command("sync_user_avatar") call_command("build_search_words") - from documents import ELASTICSEARCH_ENABLED + from blog.documents import ELASTICSEARCH_ENABLED if ELASTICSEARCH_ENABLED: call_command("build_index")