From ef539ce2fd3c332999b5c3e89684607acd008062 Mon Sep 17 00:00:00 2001 From: rdobuilder Date: Jan 17 2024 14:58:35 +0000 Subject: Update to 4.4 Related-to: https://review.rdoproject.org/r/q/I323ad53e5a2f99475f222d8a2ae0e4c39f7f66f3 --- diff --git a/.python-django-compressor.metadata b/.python-django-compressor.metadata new file mode 100644 index 0000000..6a058fa --- /dev/null +++ b/.python-django-compressor.metadata @@ -0,0 +1 @@ +bc2cd6c459ea9b56c1eb299e9f6735e48ff5303b SOURCES/django-compressor-4.4.tar.gz diff --git a/SOURCES/django-compressor-fix-attributeerror-in-offline.patch b/SOURCES/django-compressor-fix-attributeerror-in-offline.patch new file mode 100644 index 0000000..75a1dc7 --- /dev/null +++ b/SOURCES/django-compressor-fix-attributeerror-in-offline.patch @@ -0,0 +1,37 @@ +From ac70fbfb7f8349e5c1150f40bf1d21ba635d0cb8 Mon Sep 17 00:00:00 2001 +From: Chirag Jadwani +Date: Fri, 29 Aug 2014 13:15:35 +0530 +Subject: [PATCH] Fix AttributeError in offline compression + +--- + compressor/offline/django.py | 2 ++ + .../test_block_super_base_compressed/test_compressor_offline.html | 5 +++++ + 2 files changed, 7 insertions(+) + +diff --git a/compressor/offline/django.py b/compressor/offline/django.py +index 3986562..b326093 100644 +--- a/compressor/offline/django.py ++++ b/compressor/offline/django.py +@@ -54,6 +54,8 @@ def remove_block_nodes(nodelist, block_stack, block_context): + if not block_stack: + continue + node = block_context.get_block(block_stack[-1].name) ++ if not node: ++ continue + if isinstance(node, BlockNode): + expanded_block = expand_blocknode(node, block_stack, block_context) + new_nodelist.extend(expanded_block) +diff --git a/compressor/tests/test_templates/test_block_super_base_compressed/test_compressor_offline.html b/compressor/tests/test_templates/test_block_super_base_compressed/test_compressor_offline.html +index 01382ec..10097c1 100644 +--- a/compressor/tests/test_templates/test_block_super_base_compressed/test_compressor_offline.html ++++ b/compressor/tests/test_templates/test_block_super_base_compressed/test_compressor_offline.html +@@ -5,4 +5,9 @@ + ++ {% block orphan %} ++ {{ block.super }} ++ An 'orphan' block that refers to a non-existent super block. ++ Contents of this block are ignored. ++ {% endblock %} + {% endspaceless %}{% endblock %} diff --git a/SOURCES/django-compressor-make-compress-run-through.patch b/SOURCES/django-compressor-make-compress-run-through.patch new file mode 100644 index 0000000..4252405 --- /dev/null +++ b/SOURCES/django-compressor-make-compress-run-through.patch @@ -0,0 +1,162 @@ +From 72b33ddbcdc41eb5af42b86329d81d96894a9d10 Mon Sep 17 00:00:00 2001 +From: Carlton Gibson +Date: Tue, 10 Mar 2015 20:04:07 +0100 +Subject: [PATCH] Make `compress` command (at least) run through on 1.8 + +FAILED (failures=15, errors=15, skipped=1) + +AssertionError: 2 != 12 +OfflineGenerationError: ... key "XYZ" missing ... +--- + compressor/management/commands/compress.py | 41 +++++++++++++++++------------- + compressor/offline/django.py | 27 ++++++++++++++------ + 2 files changed, 43 insertions(+), 25 deletions(-) + +diff --git a/compressor/management/commands/compress.py b/compressor/management/commands/compress.py +index 6be215e..0bc436a 100644 +--- a/compressor/management/commands/compress.py ++++ b/compressor/management/commands/compress.py +@@ -5,6 +5,7 @@ + from fnmatch import fnmatch + from optparse import make_option + ++import django + from django.core.management.base import NoArgsCommand, CommandError + import django.template + from django.template import Context +@@ -53,24 +54,30 @@ class Command(NoArgsCommand): + requires_model_validation = False + + def get_loaders(self): +- from django.template.loader import template_source_loaders +- if template_source_loaders is None: +- try: +- from django.template.loader import ( +- find_template as finder_func) +- except ImportError: +- from django.template.loader import ( +- find_template_source as finder_func) # noqa +- try: +- # Force django to calculate template_source_loaders from +- # TEMPLATE_LOADERS settings, by asking to find a dummy template +- source, name = finder_func('test') +- except django.template.TemplateDoesNotExist: +- pass +- # Reload template_source_loaders now that it has been calculated ; +- # it should contain the list of valid, instanciated template loaders +- # to use. ++ if django.VERSION < (1, 8): + from django.template.loader import template_source_loaders ++ if template_source_loaders is None: ++ try: ++ from django.template.loader import ( ++ find_template as finder_func) ++ except ImportError: ++ from django.template.loader import ( ++ find_template_source as finder_func) # noqa ++ try: ++ # Force django to calculate template_source_loaders from ++ # TEMPLATE_LOADERS settings, by asking to find a dummy template ++ source, name = finder_func('test') ++ except django.template.TemplateDoesNotExist: ++ pass ++ # Reload template_source_loaders now that it has been calculated ; ++ # it should contain the list of valid, instanciated template loaders ++ # to use. ++ from django.template.loader import template_source_loaders ++ else: ++ from django.template import engines ++ template_source_loaders = [] ++ for e in engines.all(): ++ template_source_loaders.extend(e.engine.get_template_loaders(e.engine.loaders)) + loaders = [] + # If template loader is CachedTemplateLoader, return the loaders + # that it wraps around. So if we have +diff --git a/compressor/offline/django.py b/compressor/offline/django.py +index b326093..107c6e4 100644 +--- a/compressor/offline/django.py ++++ b/compressor/offline/django.py +@@ -1,6 +1,7 @@ + from __future__ import absolute_import + from copy import copy + ++import django + from django import template + from django.conf import settings + from django.template import Context +@@ -14,7 +15,7 @@ + from compressor.templatetags.compress import CompressorNode + + +-def handle_extendsnode(extendsnode, block_context=None): ++def handle_extendsnode(extendsnode, block_context=None, original=None): + """Create a copy of Node tree of a derived template replacing + all blocks tags with the nodes of appropriate blocks. + Also handles {{ block.super }} tags. +@@ -26,6 +27,9 @@ def handle_extendsnode(extendsnode, block_context=None): + block_context.add_blocks(blocks) + + context = Context(settings.COMPRESS_OFFLINE_CONTEXT) ++ if original is not None: ++ context.template = original ++ + compiled_parent = extendsnode.get_parent(context) + parent_nodelist = compiled_parent.nodelist + # If the parent template has an ExtendsNode it is not the root. +@@ -33,7 +37,7 @@ def handle_extendsnode(extendsnode, block_context=None): + # The ExtendsNode has to be the first non-text node. + if not isinstance(node, TextNode): + if isinstance(node, ExtendsNode): +- return handle_extendsnode(node, block_context) ++ return handle_extendsnode(node, block_context, original) + break + # Add blocks of the root template to block context. + blocks = dict((n.name, n) for n in +@@ -95,7 +99,10 @@ def __init__(self, charset): + + def parse(self, template_name): + try: +- return get_template(template_name) ++ if django.VERSION < (1, 8): ++ return get_template(template_name) ++ else: ++ return get_template(template_name).template + except template.TemplateSyntaxError as e: + raise TemplateSyntaxError(str(e)) + except template.TemplateDoesNotExist as e: +@@ -111,15 +118,17 @@ def process_node(self, template, context, node): + pass + + def render_nodelist(self, template, context, node): ++ if django.VERSION >= (1, 8): ++ context.template = template + return node.nodelist.render(context) + + def render_node(self, template, context, node): + return node.render(context, forced=True) + +- def get_nodelist(self, node): ++ def get_nodelist(self, node, original=None): + if isinstance(node, ExtendsNode): + try: +- return handle_extendsnode(node) ++ return handle_extendsnode(node, block_context=None, original=original) + except template.TemplateSyntaxError as e: + raise TemplateSyntaxError(str(e)) + except template.TemplateDoesNotExist as e: +@@ -134,10 +143,12 @@ def get_nodelist(self, node): + nodelist = getattr(node, 'nodelist', []) + return nodelist + +- def walk_nodes(self, node): +- for node in self.get_nodelist(node): ++ def walk_nodes(self, node, original=None): ++ if django.VERSION >= (1, 8) and original is None: ++ original = node ++ for node in self.get_nodelist(node, original): + if isinstance(node, CompressorNode) and node.is_offline_compression_enabled(forced=True): + yield node + else: +- for node in self.walk_nodes(node): ++ for node in self.walk_nodes(node, original): + yield node diff --git a/SOURCES/django-compressor-use-get_template.patch b/SOURCES/django-compressor-use-get_template.patch new file mode 100644 index 0000000..b890d49 --- /dev/null +++ b/SOURCES/django-compressor-use-get_template.patch @@ -0,0 +1,48 @@ +From c8495264b503a595fbc89e6c8a83a402eff445c6 Mon Sep 17 00:00:00 2001 +From: Mathieu Pillard +Date: Sun, 25 May 2014 14:09:33 +0200 +Subject: [PATCH] Use get_template() when dealing with django templates + +--- + compressor/offline/django.py | 16 +++++++--------- + 1 file changed, 7 insertions(+), 9 deletions(-) + +diff --git a/compressor/offline/django.py b/compressor/offline/django.py +index 6541471..3986562 100644 +--- a/compressor/offline/django.py ++++ b/compressor/offline/django.py +@@ -1,13 +1,12 @@ + from __future__ import absolute_import +-import io + from copy import copy + + from django import template + from django.conf import settings +-from django.template import Template + from django.template import Context + from django.template.base import Node, VariableNode, TextNode, NodeList + from django.template.defaulttags import IfNode ++from django.template.loader import get_template + from django.template.loader_tags import ExtendsNode, BlockNode, BlockContext + + +@@ -93,13 +92,12 @@ def __init__(self, charset): + self.charset = charset + + def parse(self, template_name): +- with io.open(template_name, mode='rb') as file: +- try: +- return Template(file.read().decode(self.charset)) +- except template.TemplateSyntaxError as e: +- raise TemplateSyntaxError(str(e)) +- except template.TemplateDoesNotExist as e: +- raise TemplateDoesNotExist(str(e)) ++ try: ++ return get_template(template_name) ++ except template.TemplateSyntaxError as e: ++ raise TemplateSyntaxError(str(e)) ++ except template.TemplateDoesNotExist as e: ++ raise TemplateDoesNotExist(str(e)) + + def process_template(self, template, context): + return True diff --git a/SOURCES/rdep-version.patch b/SOURCES/rdep-version.patch new file mode 100644 index 0000000..73e620c --- /dev/null +++ b/SOURCES/rdep-version.patch @@ -0,0 +1,12 @@ +--- a/setup.py ++++ b/setup.py +@@ -164,7 +164,7 @@ setup( + zip_safe=False, + install_requires=[ + "django-appconf >= 1.0.3", +- "rcssmin == 1.1.1", +- "rjsmin == 1.2.1", ++ "rcssmin >= 1.1.1", ++ "rjsmin >= 1.2.1", + ], + ) diff --git a/SPECS/python-django-compressor.spec b/SPECS/python-django-compressor.spec new file mode 100644 index 0000000..c1f4584 --- /dev/null +++ b/SPECS/python-django-compressor.spec @@ -0,0 +1,202 @@ +## START: Set by rpmautospec +## (rpmautospec version 0.3.5) +## RPMAUTOSPEC: autorelease, autochangelog +%define autorelease(e:s:pb:n) %{?-p:0.}%{lua: + release_number = 1; + base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}")); + print(release_number + base_release_number - 1); +}%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}} +## END: Set by rpmautospec + +%global srcname django-compressor +%global _desc\ +Django Compressor combines and compresses linked and inline Javascript\ +or CSS in a Django templates into cacheable static files by using the\ +``compress`` template tag. HTML in between\ +``{% compress js/css %}`` and ``{% endcompress %}`` is\ +parsed and searched for CSS or JS. These styles and scripts are subsequently\ +processed with optional, configurable compilers and filters. + +Name: python-django-compressor +Version: 4.4 +Release: %autorelease +Summary: Compresses linked and inline JavaScript or CSS into single cached files + +License: MIT +URL: https://github.com/django-compressor/django-compressor +Source0: %{url}/archive/%{version}/%{srcname}-%{version}.tar.gz + +Patch0: rdep-version.patch + +BuildArch: noarch + +BuildRequires: python3-devel +BuildRequires: pyproject-rpm-macros + +%description %_desc + +%package -n python3-%{srcname} +Summary: %{summary} + +%description -n python3-%{srcname} +%_desc + +# Added in f28 cycle. +Obsoletes: python2-%{srcname} < 2.1-6 +Obsoletes: python-%{srcname} < 2.1-6 + +%prep +%autosetup -p1 -n %{srcname}-%{version} + +%generate_buildrequires +%pyproject_buildrequires + +%build +%pyproject_wheel + +%install +%pyproject_install +%pyproject_save_files compressor + +%files -n python3-%{srcname} -f %{pyproject_files} +%doc README.rst + +%changelog +* Tue Jan 16 2024 Michel Lind - 4.4-1 +- Update to 4.4 (rhbz#1715669) +- cleanup unused patches + +* Fri Jul 21 2023 Fedora Release Engineering - 4.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Thu Jun 29 2023 Python Maint - 4.1-3 +- Rebuilt for Python 3.12 + +* Fri Jan 20 2023 Fedora Release Engineering - 4.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Mon Jun 13 2022 Python Maint - 2.4.1-2 +- Rebuilt for Python 3.11 + +* Mon Mar 14 2022 Karolina Kula - 2.4.1-1 +- Update to 2.4.1 + +* Fri Jan 21 2022 Fedora Release Engineering - 2.4-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Fri Jul 23 2021 Fedora Release Engineering - 2.4-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Fri Jun 04 2021 Python Maint - 2.4-3 +- Rebuilt for Python 3.10 + +* Wed Jan 27 2021 Fedora Release Engineering - 2.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Wed Sep 09 2020 Yatin Karel - 2.4-1 +- Update to 2.4 + +* Wed Jul 29 2020 Fedora Release Engineering - 2.2-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue May 26 2020 Miro Hrončok - 2.2-10 +- Rebuilt for Python 3.9 + +* Thu Jan 30 2020 Fedora Release Engineering - 2.2-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Thu Oct 03 2019 Miro Hrončok - 2.2-8 +- Rebuilt for Python 3.8.0rc1 (#1748018) + +* Mon Aug 19 2019 Miro Hrončok - 2.2-7 +- Rebuilt for Python 3.8 + +* Fri Jul 26 2019 Fedora Release Engineering - 2.2-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Sat Feb 02 2019 Fedora Release Engineering - 2.2-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Sat Jul 14 2018 Fedora Release Engineering - 2.2-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Tue Jun 19 2018 Miro Hrončok - 2.2-3 +- Rebuilt for Python 3.7 + +* Fri Feb 09 2018 Fedora Release Engineering - 2.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Wed Jan 31 2018 Matthias Runge - 2.2-1 +- update to 2.2 + +* Fri Jan 26 2018 Matthias Runge - 2.1-6 +- Drop python2 package for https://fedoraproject.org/wiki/Changes/Django20 + +* Sat Aug 19 2017 Zbigniew Jędrzejewski-Szmek - 2.1-5 +- Python 2 binary package renamed to python2-django-compressor + See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3 + +* Thu Jul 27 2017 Fedora Release Engineering - 2.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Sat Feb 11 2017 Fedora Release Engineering - 2.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Mon Dec 19 2016 Miro Hrončok - 2.1-2 +- Rebuild for Python 3.6 + +* Thu Aug 11 2016 Matthias Runge - 2.1-1 +- update to 2.1 (rhbz#1365700) +- modernize spec + +* Tue Jul 19 2016 Fedora Release Engineering - 2.0-2 +- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages + +* Fri Feb 26 2016 Matthias Runge - 2.0-1 +- update to 2.0 (rhbz#1296716) + +* Thu Feb 04 2016 Fedora Release Engineering - 1.6-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Fri Nov 20 2015 Matthias Runge - 1.6-1 +- update to 1.6 (rhbz#1283807) + +* Tue Nov 10 2015 Fedora Release Engineering - 1.5-3 +- Rebuilt for https://fedoraproject.org/wiki/Changes/python3.5 + +* Thu Aug 27 2015 Matthias Runge - 1.5-2 +- add python3 subpackage + +* Wed Aug 26 2015 Matthias Runge - 1.5-1 +- update to 1.5 + +* Thu Jun 18 2015 Fedora Release Engineering - 1.4-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Wed Apr 15 2015 Matthias Runge - 1.4-3 +- make compress command work on django-1.8 + +* Sat Jun 07 2014 Fedora Release Engineering - 1.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Mon May 26 2014 Matthias Runge - 1.4-1 +- update to 1.4 (rhbz#1100732) + +* Sun Aug 04 2013 Fedora Release Engineering - 1.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Wed Mar 20 2013 Matthias Runge - 1.3-1 +- update to python-django-compressor-1.3 (rhbz#923735) + +* Thu Feb 14 2013 Fedora Release Engineering - 1.2-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Mon Sep 24 2012 Matthias Runge - 1.2-3 +- add requirement Django/python-django + +* Fri Sep 14 2012 Matthias Runge - 1.2-2 +- add requirement python-versiontools + +* Tue Sep 11 2012 Matthias Runge - 1.2-1 +- Initial package. +