From 495c7e978ba5e30ba46c9948138d9f5fe5fc5708 Mon Sep 17 00:00:00 2001 From: PetrS12 Date: Sun, 11 Oct 2020 18:17:13 +0300 Subject: [PATCH 01/20] added absolute templatetag --- http_stubs/templatetags/__init__.py | 0 http_stubs/templatetags/utils.py | 9 +++++++++ 2 files changed, 9 insertions(+) create mode 100644 http_stubs/templatetags/__init__.py create mode 100644 http_stubs/templatetags/utils.py diff --git a/http_stubs/templatetags/__init__.py b/http_stubs/templatetags/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/http_stubs/templatetags/utils.py b/http_stubs/templatetags/utils.py new file mode 100644 index 0000000..d33a750 --- /dev/null +++ b/http_stubs/templatetags/utils.py @@ -0,0 +1,9 @@ +from django import template + +register = template.Library() + + +@register.simple_tag(takes_context=True, name='absolute') +def get_absolute_url_tag(context, url): + """Тег возвращающий абсолютный урл.""" + return context.get('request').build_absolute_uri(url) From 38225e4a3e6bc924e9b5b5b757c3b2be63b01eef Mon Sep 17 00:00:00 2001 From: PetrS12 Date: Sun, 11 Oct 2020 18:17:33 +0300 Subject: [PATCH 02/20] added request url to stub edit page --- templates/admin/http_stubs/change_form.html | 7 + .../admin/http_stubs/includes/fieldset.html | 236 ++++++++++++++++++ 2 files changed, 243 insertions(+) create mode 100644 templates/admin/http_stubs/change_form.html create mode 100644 templates/admin/http_stubs/includes/fieldset.html diff --git a/templates/admin/http_stubs/change_form.html b/templates/admin/http_stubs/change_form.html new file mode 100644 index 0000000..7a7425d --- /dev/null +++ b/templates/admin/http_stubs/change_form.html @@ -0,0 +1,7 @@ +{% extends "admin/change_form.html" %} +{% load i18n admin_urls static admin_modify simpletags%} +{% block field_sets %} +{% for fieldset in adminform %} + {% include "admin/http_stubs/includes/fieldset.html" %} +{% endfor %} +{% endblock %} diff --git a/templates/admin/http_stubs/includes/fieldset.html b/templates/admin/http_stubs/includes/fieldset.html new file mode 100644 index 0000000..6d1b4b9 --- /dev/null +++ b/templates/admin/http_stubs/includes/fieldset.html @@ -0,0 +1,236 @@ +{% load utils %} +
+ {% if fieldset.name %}

{{ fieldset.name }}

{% endif %} + {% if fieldset.description %} +
{{ fieldset.description|safe }}
+ {% endif %} + {% for line in fieldset %} +
+ {% if line.fields|length_is:'1' %}{{ line.errors }}{% endif %} + {% for field in line %} + + {% if not line.fields|length_is:'1' and not field.is_readonly %}{{ field.errors }}{% endif %} + {% if field.is_checkbox %} + {{ field.field }}{{ field.label_tag }} + {% else %} + {{ field.label_tag }} + {% if field.is_readonly %} +
{{ field.contents }}
+ {% else %} + {{ field.field }} + {% if field.field.name == 'path' %}
{% absolute field.field.value %}
Скопировано!
{% endif %} + {% endif %} + {% endif %} + {% if field.field.help_text %} +
{{ field.field.help_text|safe }}
+ {% endif %} +
+ {% endfor %} + + {% endfor %} + +
+ + + + + + + From 877957725819b71d37011d439ee68429fde7a5cf Mon Sep 17 00:00:00 2001 From: PetrS12 Date: Sun, 11 Oct 2020 19:19:01 +0300 Subject: [PATCH 03/20] added str_to_list filter for template --- http_stubs/templatetags/utils.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/http_stubs/templatetags/utils.py b/http_stubs/templatetags/utils.py index d33a750..21dec08 100644 --- a/http_stubs/templatetags/utils.py +++ b/http_stubs/templatetags/utils.py @@ -1,4 +1,7 @@ +from html import unescape + from django import template +from django.template.defaultfilters import stringfilter register = template.Library() @@ -7,3 +10,10 @@ def get_absolute_url_tag(context, url): """Тег возвращающий абсолютный урл.""" return context.get('request').build_absolute_uri(url) + + +@register.filter(name='str_to_list') +@stringfilter +def get_headers_list(value, separator): + """Фильтр создает список из строки.""" + return unescape(value).lstrip('{').rstrip('}').split(separator) From 11d0672e4cdf846c06d6f39bec6e7d22c54fc062 Mon Sep 17 00:00:00 2001 From: PetrS12 Date: Sun, 11 Oct 2020 19:19:26 +0300 Subject: [PATCH 04/20] headers in column --- templates/admin/http_stubs/includes/fieldset.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/admin/http_stubs/includes/fieldset.html b/templates/admin/http_stubs/includes/fieldset.html index 6d1b4b9..691ecda 100644 --- a/templates/admin/http_stubs/includes/fieldset.html +++ b/templates/admin/http_stubs/includes/fieldset.html @@ -15,7 +15,7 @@ {% else %} {{ field.label_tag }} {% if field.is_readonly %} -
{{ field.contents }}
+ {% if field.field.name == 'headers' %}
    {% for header in field.contents|str_to_list:"', " %}
  • {{ header|cut:"'" }}
  • {% endfor %}
{% else %}
{{ field.contents }}
{% endif %} {% else %} {{ field.field }} {% if field.field.name == 'path' %}
{% absolute field.field.value %}
Скопировано!
{% endif %} From 629041aa77d851ef2fdc2b2303a901b316bad9c4 Mon Sep 17 00:00:00 2001 From: PetrS12 Date: Sat, 17 Oct 2020 23:51:46 +0300 Subject: [PATCH 05/20] linted and added test for filter --- http_stubs/templatetags/stub_tags.py | 16 +++++++++++++++- http_stubs/templatetags/utils.py | 19 ------------------- http_stubs/tests/test_tags.py | 12 ++++++++++-- 3 files changed, 25 insertions(+), 22 deletions(-) delete mode 100644 http_stubs/templatetags/utils.py diff --git a/http_stubs/templatetags/stub_tags.py b/http_stubs/templatetags/stub_tags.py index c4fd5fb..ec79e7f 100644 --- a/http_stubs/templatetags/stub_tags.py +++ b/http_stubs/templatetags/stub_tags.py @@ -1,6 +1,8 @@ -from typing import Dict +from html import unescape +from typing import AnyStr, Dict, List from django import template +from django.template.defaultfilters import stringfilter Url = str @@ -16,3 +18,15 @@ def get_absolute_url_tag(context: Dict, url: Url) -> Url: :returns: absolute url """ return context.get('request').build_absolute_uri(url) + + +@register.filter(name='str_to_list') +@stringfilter +def get_headers_list(headers: AnyStr, separator: AnyStr) -> List: + """Filter that creates a list from a string. + + :param headers: string of headers + :param separator: separator to separate string + :returns: list of headers + """ + return unescape(headers).lstrip('{').rstrip('}').split(separator) diff --git a/http_stubs/templatetags/utils.py b/http_stubs/templatetags/utils.py deleted file mode 100644 index 21dec08..0000000 --- a/http_stubs/templatetags/utils.py +++ /dev/null @@ -1,19 +0,0 @@ -from html import unescape - -from django import template -from django.template.defaultfilters import stringfilter - -register = template.Library() - - -@register.simple_tag(takes_context=True, name='absolute') -def get_absolute_url_tag(context, url): - """Тег возвращающий абсолютный урл.""" - return context.get('request').build_absolute_uri(url) - - -@register.filter(name='str_to_list') -@stringfilter -def get_headers_list(value, separator): - """Фильтр создает список из строки.""" - return unescape(value).lstrip('{').rstrip('}').split(separator) diff --git a/http_stubs/tests/test_tags.py b/http_stubs/tests/test_tags.py index 29b9d2b..f2c49d4 100644 --- a/http_stubs/tests/test_tags.py +++ b/http_stubs/tests/test_tags.py @@ -1,6 +1,6 @@ from django.http.request import HttpRequest -from http_stubs.templatetags.stub_tags import get_absolute_url_tag +from http_stubs.templatetags import stub_tags class TestStubTags: @@ -14,5 +14,13 @@ def test_absolute_url_tag(self): 'SERVER_PORT': '80', } relative_url = '/check/' - url = get_absolute_url_tag({'request': req}, relative_url) + url = stub_tags.get_absolute_url_tag({'request': req}, relative_url) assert url == 'http://127.0.0.1/check/' + + def test_headers_to_list_filter(self): + """Check that the list of headers is returned.""" + headers = '{"Content-Length": "2", "Accept": "text/html"}' + headers_list = stub_tags.get_headers_list(headers, ', ') + assert ( + headers_list == ['"Content-Length": "2"', '"Accept": "text/html"'] + ) From f91a7304c4b6cb8cecd00f32810c5cdc83ab11d0 Mon Sep 17 00:00:00 2001 From: PetrS12 Date: Mon, 2 Nov 2020 00:32:45 +0300 Subject: [PATCH 06/20] added change_form_template for every Admin and refactor templates --- .../{ => httpstub}/change_form.html | 2 +- .../admin/http_stubs/includes/fieldset.html | 38 ++++++------------- .../includes/fieldset_http_stub.html | 35 +++++++++++++++++ .../includes/fieldset_log_entry.html | 5 +++ .../http_stubs/logentry/change_form.html | 6 +++ 5 files changed, 58 insertions(+), 28 deletions(-) rename templates/admin/http_stubs/{ => httpstub}/change_form.html (63%) create mode 100644 templates/admin/http_stubs/includes/fieldset_http_stub.html create mode 100644 templates/admin/http_stubs/includes/fieldset_log_entry.html create mode 100644 templates/admin/http_stubs/logentry/change_form.html diff --git a/templates/admin/http_stubs/change_form.html b/templates/admin/http_stubs/httpstub/change_form.html similarity index 63% rename from templates/admin/http_stubs/change_form.html rename to templates/admin/http_stubs/httpstub/change_form.html index 49a8497..1a088de 100644 --- a/templates/admin/http_stubs/change_form.html +++ b/templates/admin/http_stubs/httpstub/change_form.html @@ -1,6 +1,6 @@ {% extends "admin/change_form.html" %} {% block field_sets %} {% for fieldset in adminform %} - {% include "admin/http_stubs/includes/fieldset.html" %} + {% include "admin/http_stubs/includes/fieldset_http_stub.html" %} {% endfor %} {% endblock %} diff --git a/templates/admin/http_stubs/includes/fieldset.html b/templates/admin/http_stubs/includes/fieldset.html index c7f0ce6..953234c 100644 --- a/templates/admin/http_stubs/includes/fieldset.html +++ b/templates/admin/http_stubs/includes/fieldset.html @@ -1,6 +1,6 @@ {% load stub_tags %}
- + {% if fieldset.name %}

{{ fieldset.name }}

{% endif %} {% if fieldset.description %}
{{ fieldset.description|safe }}
@@ -16,11 +16,13 @@ {% else %} {{ field.label_tag }} {% if field.is_readonly %} - {% if field.field.name == 'headers' %}
    {% for header in field.contents|str_to_list:"', " %}
  • {{ header|cut:"'" }}
  • {% endfor %}
{% else %}
{{ field.contents }}
{% endif %} + {% block readonly_field %} +
{{ field.contents }}
+ {% endblock %} {% else %} - {{ field.field }} - {# added request url for path field(issue #35) #} - {% if field.field.name == 'path' %}
{% absolute field.field.value %}
Скопировано!
{% endif %} + {% block writable_field %} + {{ field.field }} + {% endblock %} {% endif %} {% endif %} {% if field.field.help_text %} @@ -193,32 +195,14 @@ } } ImagePreview.init({id:$("#imgBox img")}); - - - // copy content to clipboard - function copyToClipboard(element) { - var $temp = $(""); - $("body").append($temp); - $temp.val($(element).text()).select(); - document.execCommand("copy"); - $temp.remove(); - } - - // copy full request path to clipboard - $("#full-path").on("click", function() { - copyToClipboard("#full-path"); - $("#path-copied-alert").fadeIn("slow"); - }); - +{% block javascripts %} +{% endblock %} +{% block css %} +{% endblock %} diff --git a/templates/admin/http_stubs/includes/fieldset_http_stub.html b/templates/admin/http_stubs/includes/fieldset_http_stub.html new file mode 100644 index 0000000..f920dd7 --- /dev/null +++ b/templates/admin/http_stubs/includes/fieldset_http_stub.html @@ -0,0 +1,35 @@ +{% extends 'admin/http_stubs/includes/fieldset.html' %} +{% load stub_tags %} +{% block writable_field %} + {{ field.field }} + {# added request url for path field(issue #35) #} + {% if field.field.name == 'path' %}
{% absolute field.field.value %}
Скопировано!
{% endif %} +{% endblock %} +{% block javascripts %} + +{% endblock %} +{% block css %} + +{% endblock %} diff --git a/templates/admin/http_stubs/includes/fieldset_log_entry.html b/templates/admin/http_stubs/includes/fieldset_log_entry.html new file mode 100644 index 0000000..652fbfb --- /dev/null +++ b/templates/admin/http_stubs/includes/fieldset_log_entry.html @@ -0,0 +1,5 @@ +{% extends 'admin/http_stubs/includes/fieldset.html' %} +{% load stub_tags %} +{% block readonly_field %} + {% if field.field.name == 'headers' %}
    {% for header in field.contents|str_to_list:"', " %}
  • {{ header|cut:"'" }}
  • {% endfor %}
{% else %}
{{ field.contents }}
{% endif %} +{% endblock %} diff --git a/templates/admin/http_stubs/logentry/change_form.html b/templates/admin/http_stubs/logentry/change_form.html new file mode 100644 index 0000000..7855d18 --- /dev/null +++ b/templates/admin/http_stubs/logentry/change_form.html @@ -0,0 +1,6 @@ +{% extends "admin/change_form.html" %} +{% block field_sets %} +{% for fieldset in adminform %} + {% include "admin/http_stubs/includes/fieldset_log_entry.html" %} +{% endfor %} +{% endblock %} From ddc7213ba1df027841235ef5028c1fbdb0c282cb Mon Sep 17 00:00:00 2001 From: PetrS12 Date: Wed, 4 Nov 2020 22:39:13 +0300 Subject: [PATCH 07/20] added change_form_template attribute --- http_stubs/admin.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/http_stubs/admin.py b/http_stubs/admin.py index 8cd2a05..717d71f 100644 --- a/http_stubs/admin.py +++ b/http_stubs/admin.py @@ -49,6 +49,7 @@ class LogEntryAdminInline(LogEntryMixin, admin.TabularInline): class LogEntryAdmin(LogEntryMixin, admin.ModelAdmin): """Log entries admin.""" + change_form_template = 'admin/http_stubs/logentry/change_form.html' list_display = ('pk', 'date', 'http_stub', 'source_ip') list_filter = ('date', 'method', 'path', 'source_ip') @@ -58,6 +59,7 @@ class LogEntryAdmin(LogEntryMixin, admin.ModelAdmin): class HTTPStubAdmin(admin.ModelAdmin): """HTTP stub admin.""" + change_form_template = 'admin/http_stubs/httpstub/change_form.html' extra_buttons_style = 'background-color:#00b0ff;color:white' actions = ['enable_action', 'disable_action'] From 5be013dbcb83fa238aea44de787bd805f1db5ed5 Mon Sep 17 00:00:00 2001 From: PetrS12 Date: Wed, 4 Nov 2020 22:39:40 +0300 Subject: [PATCH 08/20] changed local host in .sh for dev --- deploy/app/start-django-dev.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/app/start-django-dev.sh b/deploy/app/start-django-dev.sh index a01796c..ae58211 100755 --- a/deploy/app/start-django-dev.sh +++ b/deploy/app/start-django-dev.sh @@ -2,4 +2,4 @@ wait-for-it "${PARROT_DB_HOST:-parrot-database}":5432 -s -t 180 \ && python /app/src/manage.py migrate --noinput \ -&& python /app/src/manage.py runserver 0.0.0.0:8042 +&& python /app/src/manage.py runserver 127.0.0.1:8042 From 867ae5ed7ccdcaa5e5147120325aa3ea0e28a3eb Mon Sep 17 00:00:00 2001 From: PetrS12 Date: Wed, 4 Nov 2020 22:51:02 +0300 Subject: [PATCH 09/20] str_to_list renamed to headers_to_list --- http_stubs/templatetags/stub_tags.py | 4 ++-- templates/admin/http_stubs/includes/fieldset_log_entry.html | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/http_stubs/templatetags/stub_tags.py b/http_stubs/templatetags/stub_tags.py index ec79e7f..e8e363f 100644 --- a/http_stubs/templatetags/stub_tags.py +++ b/http_stubs/templatetags/stub_tags.py @@ -20,10 +20,10 @@ def get_absolute_url_tag(context: Dict, url: Url) -> Url: return context.get('request').build_absolute_uri(url) -@register.filter(name='str_to_list') +@register.filter(name='headers_to_list') @stringfilter def get_headers_list(headers: AnyStr, separator: AnyStr) -> List: - """Filter that creates a list from a string. + """Filter that creates a list from a string of headers(dict). :param headers: string of headers :param separator: separator to separate string diff --git a/templates/admin/http_stubs/includes/fieldset_log_entry.html b/templates/admin/http_stubs/includes/fieldset_log_entry.html index 652fbfb..fd0a6fa 100644 --- a/templates/admin/http_stubs/includes/fieldset_log_entry.html +++ b/templates/admin/http_stubs/includes/fieldset_log_entry.html @@ -1,5 +1,5 @@ {% extends 'admin/http_stubs/includes/fieldset.html' %} {% load stub_tags %} {% block readonly_field %} - {% if field.field.name == 'headers' %}
    {% for header in field.contents|str_to_list:"', " %}
  • {{ header|cut:"'" }}
  • {% endfor %}
{% else %}
{{ field.contents }}
{% endif %} + {% if field.field.name == 'headers' %}
    {% for header in field.contents|headers_to_list:"', " %}
  • {{ header|cut:"'" }}
  • {% endfor %}
{% else %}
{{ field.contents }}
{% endif %} {% endblock %} From 27bfe76b2ab5999cb5986942382b937492c54858 Mon Sep 17 00:00:00 2001 From: PetrS12 Date: Sun, 22 Nov 2020 23:54:58 +0300 Subject: [PATCH 10/20] tranclate to copied --- .../admin/http_stubs/includes/fieldset_http_stub.html | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/templates/admin/http_stubs/includes/fieldset_http_stub.html b/templates/admin/http_stubs/includes/fieldset_http_stub.html index f920dd7..082d587 100644 --- a/templates/admin/http_stubs/includes/fieldset_http_stub.html +++ b/templates/admin/http_stubs/includes/fieldset_http_stub.html @@ -3,7 +3,12 @@ {% block writable_field %} {{ field.field }} {# added request url for path field(issue #35) #} - {% if field.field.name == 'path' %}
{% absolute field.field.value %}
Скопировано!
{% endif %} + {% if field.field.name == 'path' %} +
+
{% absolute field.field.value %}
+
Copied!
+
+ {% endif %} {% endblock %} {% block javascripts %}