diff --git a/HyperKitty-1.3.8.tar.gz b/HyperKitty-1.3.8.tar.gz deleted file mode 100644 index c578a74..0000000 --- a/HyperKitty-1.3.8.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8fffccadba2cfe0d4119e9c746639ee46bc0cdae67bbf99c84081d2d0bbd87b8 -size 2556166 diff --git a/hyperkitty-1.3.9.tar.gz b/hyperkitty-1.3.9.tar.gz new file mode 100644 index 0000000..581dffd --- /dev/null +++ b/hyperkitty-1.3.9.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05f842878cd971fc2821fb9b5bff8c5165f0875c85387fe3a5175076c8fa94c1 +size 2204377 diff --git a/hyperkitty-1.3.9.tar.gz.asc b/hyperkitty-1.3.9.tar.gz.asc new file mode 100644 index 0000000..294213e --- /dev/null +++ b/hyperkitty-1.3.9.tar.gz.asc @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCAAdFiEEVB6gRIRTOU/3eg7MnZsroGHQpnwFAmXdpUoACgkQnZsroGHQ +pnyY9g//RnBU9jWIctSQSxpU5KkSigsznJ98WfrZDt8bJus/AIt9heMSKHsnOo7s +DkU6Bd+W92bk685nUJxLws4AncsWXqGnyANI2N8BWdTCTXDBgAPSlr9cryqO7rM7 +n95eIMX8N40nS9WUeIV3qlHuDR0eBaNB0GseLu24W+JbB+JCKbxLn/nQT3MVeno4 +WbAhq8NAQsE1IFbUTVyyoaETTuHbCkNoetmpz+OPR70zKs57as78FAYaGrOPdWpL +10DxIDOqQS4SZu9Ca1pv5avDOuP+1dkyR584mY462GX1yjb5m2IIIocBnOGbgqaL +Mz7cuc186e9KHWk43uPecj5i02D1oyoQ2HqswNkeT/p1It0H0vO86UI79wuewes6 +WOvLibO0FnbINjv3ckLTi0JzpLSe4tVkJhzt59NeYkB0S8X9LXGM7MTXxiJYQhDP +orVGGTd7AFtA0QLqKH75ZgI1/vlpSeAJe5+tYORByPWCfeKZCyhe6sDEgqj4E+Fc +XDZov5gyS/b1yhvpU1OeaWKUh613PLnfSVpo8lS0mbYENAApkMNZkXGbssqXnDZP +Gtkj6PGHVBEN1rZWhKehMjPBvGuyfu1Jt0BxS99SbMKnKuUbPgm1MCUCgBvTZ3P0 +1Ca6l2n06RJ7G+7jorPQhkPXOLJiG/73+Cj4K2uqhZe3pxwooh8= +=Ww80 +-----END PGP SIGNATURE----- diff --git a/mistune3.patch b/mistune3.patch deleted file mode 100644 index 5f741b0..0000000 --- a/mistune3.patch +++ /dev/null @@ -1,596 +0,0 @@ -From 2d123efddf474b6cc367b16e59ba9b99e95164e1 Mon Sep 17 00:00:00 2001 -From: Abhilash Raj -Date: Wed, 5 Jul 2023 10:15:04 +0530 -Subject: [PATCH 1/6] fix: Update mistune plugin to be compat with 3.0.x - -Mistune bump to 3.x updated the plugin API making our current one -incompatible and requiring changes. This commit makes the required -changes so we can work with newer version. - -This also strictly works on mistune>=3.0 since the older API won't -work for us anymore. ---- - hyperkitty/lib/haystack.py | 57 ++++++++++++++++++++++++++++++++++++++ - hyperkitty/lib/renderer.py | 44 +++++++++++++++-------------- - setup.py | 2 +- - 4 files changed, 82 insertions(+), 22 deletions(-) - create mode 100644 hyperkitty/lib/haystack.py - -diff --git a/hyperkitty/lib/haystack.py b/hyperkitty/lib/haystack.py -new file mode 100644 -index 00000000..8dbe64a7 ---- /dev/null -+++ b/hyperkitty/lib/haystack.py -@@ -0,0 +1,57 @@ -+# -*- coding: utf-8 -*- -+# -+# Copyright (C) 2023 by the Free Software Foundation, Inc. -+# -+# This program is free software; you can redistribute it and/or -+# modify it under the terms of the GNU General Public License -+# as published by the Free Software Foundation; either version 2 -+# of the License, or (at your option) any later version. -+# -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+# -+# You should have received a copy of the GNU General Public License -+# along with this program; if not, write to the Free Software -+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, -+# USA. -+ -+"""This module contains Django-haystack backend for SQLlite3.""" -+ -+from haystack.backends import ( -+ BaseEngine, BaseSearchBackend, BaseSearchQuery, SearchNode, log_query) -+ -+ -+class SqliteSearchBackend(BaseSearchBackend): -+ -+ def update(self, index, iterable, commit=True): -+ return super().update(index, iterable, commit) -+ -+ def remove(self, obj_or_string): -+ return super().remove(obj_or_string) -+ -+ def clear(self, models=None, commit=True): -+ return super().clear(models, commit) -+ -+ @log_query -+ def search(self, query_string, **kwargs): -+ return super().search(query_string, **kwargs) -+ -+ def prep_value(self, value): -+ return super().prep_value(value) -+ -+ def more_like_this(self, model_instance, additional_query_string=None, result_class=None): -+ return super().more_like_this(model_instance, additional_query_string, result_class) -+ -+ -+class SqliteSearchQuery(BaseSearchQuery): -+ -+ def build_query(self): -+ return super().build_query() -+ -+ -+class SqliteEngine(BaseEngine): -+ -+ backend = SqliteSearchBackend -+ query = SqliteSearchQuery -\ No newline at end of file -diff --git a/hyperkitty/lib/renderer.py b/hyperkitty/lib/renderer.py -index cbb83b9a..2db2aee6 100644 ---- a/hyperkitty/lib/renderer.py -+++ b/hyperkitty/lib/renderer.py -@@ -3,8 +3,9 @@ import re - from django.conf import settings - - import mistune --from mistune.plugins.extra import plugin_url --from mistune.util import escape_html, escape_url -+from mistune.plugins.url import url -+from mistune.util import escape as escape_html -+from mistune.util import escape_url - - - class MyRenderer(mistune.HTMLRenderer): -@@ -42,7 +43,7 @@ class MyRenderer(mistune.HTMLRenderer): - return '![{alt}]({src} {title})'.format( - src=src, title=title, alt=alt) - -- def image(self, src, alt_text, title): -+ def image(self, alt, src, title): - """Render image if configured to do so. - - HYPERKITTY_RENDER_INLINE_IMAGE configuration allows for -@@ -50,10 +51,10 @@ class MyRenderer(mistune.HTMLRenderer): - default since embeded images can cause problems. - """ - if getattr(settings, 'HYPERKITTY_RENDER_INLINE_IMAGE', False): -- return super().image(src, alt_text, title, ) -- return self._md_style_img(src, title, alt_text) -+ return super().image(src, alt, title, ) -+ return self._md_style_img(src, title, alt) - -- def link(self, link, text=None, title=None): -+ def link(self, text=None, url=None, title=None): - """URL link renderer that truncates the length of the URL. - - This only does it for the URLs that are not hyperlinks by just literal -@@ -61,14 +62,14 @@ class MyRenderer(mistune.HTMLRenderer): - It also adds target=“_blank” so that the URLs open in a new tab. - """ - if text is None: -- text = link -+ text = url - if len(text) > 76: -- text = link[:76] + '...' -+ text = url[:76] + '...' - -- s = '' + (text or link) + '' -+ return s + '>' + (text or url) + '' - - - class InlineParser(mistune.inline_parser.InlineParser): -@@ -113,7 +114,7 @@ def remove_header_rules(rules): - class BlockParser(mistune.block_parser.BlockParser): - """A copy of Mistune's block parser with header parsing rules removed.""" - RULE_NAMES = remove_header_rules( -- mistune.block_parser.BlockParser.RULE_NAMES) -+ mistune.block_parser.BlockParser.DEFAULT_RULES) - - - OUTLOOK_REPLY_PATTERN = re.compile( -@@ -163,10 +164,10 @@ def plugin_signature(md): - - It only provides an HTML renderer because that is the only one needed. - """ -- md.block.register_rule('signature', SIGNATURE_PATTERN, parse_signature) -+ md.block.register('signature', SIGNATURE_PATTERN, parse_signature) - -- md.block.rules.insert(0, 'signature') -- if md.renderer.NAME == 'html': -+ # md.block.rules.insert(0, 'signature') -+ if md.renderer and md.renderer.NAME == 'html': - md.renderer.register('signature', render_html_signature) - - -@@ -211,22 +212,23 @@ def plugin_pgp_signature(md): - It parses BEGIN PGP SIGNATURE and END PGP SIGNATURE and collapses content - in between them. - """ -- md.block.register_rule('pgp', PGP_SIGNATURE_MATCH, parse_pgp_signature) -- md.block.rules.append('pgp') -- if md.renderer.NAME == 'html': -+ md.block.register('pgp', PGP_SIGNATURE_MATCH, parse_pgp_signature) -+ # md.block.rules.append('pgp') -+ if md.renderer and md.renderer.NAME == 'html': - md.renderer.register('pgp', render_pgp_signature) - - - renderer = MyRenderer(escape=True) - markdown_renderer = mistune.Markdown( - renderer=renderer, -- inline=InlineParser(renderer, hard_wrap=False), -+ inline=InlineParser(hard_wrap=False), - block=BlockParser(), -+ - plugins=[ - plugin_pgp_signature, - plugin_signature, - plugin_outlook_reply, -- plugin_url -+ url - ]) - - -@@ -235,10 +237,10 @@ markdown_renderer = mistune.Markdown( - # rules that results in a regularly formatted email. - text_renderer = mistune.Markdown( - renderer=renderer, -- inline=InlineParser(renderer, hard_wrap=False), -+ inline=InlineParser(hard_wrap=False), - block=BlockParser(), - plugins=[plugin_disable_markdown, - plugin_pgp_signature, - plugin_signature, -- plugin_url, -+ url, - ]) -diff --git a/setup.py b/setup.py -index 2d8da168..d8c2d2fb 100755 ---- a/setup.py -+++ b/setup.py -@@ -45,7 +45,7 @@ REQUIRES = [ - "pytz>=2012", - "django-compressor>=1.3", - "mailmanclient>=3.3.3", -- "mistune>=2.0.0,<3.0", -+ "mistune>=3.0", - "python-dateutil >= 2.0", - "networkx>=2.0", - "django-haystack>=2.8.0", --- -GitLab - - -From 2312689ea67f631c2aae54013a3e6a57be7ef36d Mon Sep 17 00:00:00 2001 -From: Abhilash Raj -Date: Wed, 5 Jul 2023 10:20:04 +0530 -Subject: [PATCH 2/6] Remove the hack for urls with @ since it is fixed - upstream - ---- - hyperkitty/lib/renderer.py | 15 --------------- - 1 file changed, 15 deletions(-) - -diff --git a/hyperkitty/lib/renderer.py b/hyperkitty/lib/renderer.py -index 2db2aee6..6a86cc4c 100644 ---- a/hyperkitty/lib/renderer.py -+++ b/hyperkitty/lib/renderer.py -@@ -87,21 +87,6 @@ class InlineParser(mistune.inline_parser.InlineParser): - return 'emphasis', marker, self.render(text, state) - return 'strong', marker, self.render(text, state) - -- # This is an override for a fix that should be in mistune. -- # https://github.com/lepture/mistune/pull/276 -- def parse_auto_link(self, m, state): -- if state.get('_in_link'): -- return 'text', m.group(0) -- -- text = m.group(1) -- if ('@' in text and -- not text.lower().startswith('mailto:') and -- not text.lower().startswith('http')): -- link = 'mailto:' + text -- else: -- link = text -- return 'link', escape_url(link), text -- - - def remove_header_rules(rules): - rules = list(rules) --- -GitLab - - -From 373dadee496c70ee0c6384ef2ad467919e5315cb Mon Sep 17 00:00:00 2001 -From: Abhilash Raj -Date: Wed, 5 Jul 2023 10:39:31 +0530 -Subject: [PATCH 3/6] QA checks - ---- - hyperkitty/lib/renderer.py | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/hyperkitty/lib/renderer.py b/hyperkitty/lib/renderer.py -index 6a86cc4c..b233dcad 100644 ---- a/hyperkitty/lib/renderer.py -+++ b/hyperkitty/lib/renderer.py -@@ -5,7 +5,6 @@ from django.conf import settings - import mistune - from mistune.plugins.url import url - from mistune.util import escape as escape_html --from mistune.util import escape_url - - - class MyRenderer(mistune.HTMLRenderer): --- -GitLab - - -From 481e81d32c2e5ff1c9516fe41512bcfd3cf2c208 Mon Sep 17 00:00:00 2001 -From: Abhilash Raj -Date: Wed, 5 Jul 2023 13:10:49 +0530 -Subject: [PATCH 4/6] Fixes for more mistune 3.x compat - ---- - hyperkitty/lib/renderer.py | 32 ++++++++++++++------------- - hyperkitty/tests/test_templatetags.py | 3 +++ - 2 files changed, 20 insertions(+), 15 deletions(-) - -diff --git a/hyperkitty/lib/renderer.py b/hyperkitty/lib/renderer.py -index b233dcad..346472d2 100644 ---- a/hyperkitty/lib/renderer.py -+++ b/hyperkitty/lib/renderer.py -@@ -5,6 +5,7 @@ from django.conf import settings - import mistune - from mistune.plugins.url import url - from mistune.util import escape as escape_html -+from mistune.util import safe_entity - - - class MyRenderer(mistune.HTMLRenderer): -@@ -24,15 +25,16 @@ class MyRenderer(mistune.HTMLRenderer): - quote-switched classed hyperlink that can collapse the next quote-text - using JS. - """ -+ print(text) - return ( - f'' - f'
{text}
') - -- def emphasis(self, marker, text): -+ def emphasis(self, text, marker): - """Emphasis with marker included.""" - return super().emphasis(marker + text + marker) - -- def strong(self, marker, text): -+ def strong(self, text, marker): - """Strong with marker included.""" - return super().strong(marker + text + marker) - -@@ -42,7 +44,7 @@ class MyRenderer(mistune.HTMLRenderer): - return '![{alt}]({src} {title})'.format( - src=src, title=title, alt=alt) - -- def image(self, alt, src, title): -+ def image(self, alt, url, title=None): - """Render image if configured to do so. - - HYPERKITTY_RENDER_INLINE_IMAGE configuration allows for -@@ -50,10 +52,10 @@ class MyRenderer(mistune.HTMLRenderer): - default since embeded images can cause problems. - """ - if getattr(settings, 'HYPERKITTY_RENDER_INLINE_IMAGE', False): -- return super().image(src, alt, title, ) -- return self._md_style_img(src, title, alt) -+ return super().image(alt, url, title) -+ return self._md_style_img(url, title, alt) - -- def link(self, text=None, url=None, title=None): -+ def link(self, text, url, title=None): - """URL link renderer that truncates the length of the URL. - - This only does it for the URLs that are not hyperlinks by just literal -@@ -67,7 +69,7 @@ class MyRenderer(mistune.HTMLRenderer): - - s = '' + (text or url) + '' - - -@@ -79,13 +81,13 @@ class InlineParser(mistune.inline_parser.InlineParser): - ‘emphasis’ or ‘strong’ node. - """ - -- def tokenize_emphasis(self, m, state): -- marker = m.group(1) -- text = m.group(2) -- if len(marker) == 1: -- return 'emphasis', marker, self.render(text, state) -- return 'strong', marker, self.render(text, state) -- -+ def parse_emphasis(self, m, state): -+ end_pos = super().parse_emphasis(m, state) -+ last_token = state.tokens[-1].copy() -+ marker = m.group(0) -+ last_token['attrs'] = {'marker': marker} -+ state.tokens[-1] = last_token -+ return end_pos - - def remove_header_rules(rules): - rules = list(rules) -@@ -97,7 +99,7 @@ def remove_header_rules(rules): - - class BlockParser(mistune.block_parser.BlockParser): - """A copy of Mistune's block parser with header parsing rules removed.""" -- RULE_NAMES = remove_header_rules( -+ DEFAULT_RULES = remove_header_rules( - mistune.block_parser.BlockParser.DEFAULT_RULES) - - -diff --git a/hyperkitty/tests/test_templatetags.py b/hyperkitty/tests/test_templatetags.py -index 79372d84..b1d83177 100644 ---- a/hyperkitty/tests/test_templatetags.py -+++ b/hyperkitty/tests/test_templatetags.py -@@ -156,6 +156,7 @@ On Fri, 09.11.12 11:27, Someone wrote: - > This is the first quoted line - > On Fri 07.25.12, Aperson wrote: - >> This is the second quoted line. -+ - This is the response. - """ - expected = ( -@@ -167,6 +168,8 @@ This is the response. - '' - '

This is the response.

\n') - result = markdown_renderer(contents) -+ print('----------'*10) -+ print(result) - self.assertEqual(result.strip(), expected.strip()) - - def test_parse_heading_normal(self): --- -GitLab - - -From b2d809b446402296b5e1b830a7f408a6e464210d Mon Sep 17 00:00:00 2001 -From: Abhilash Raj -Date: Wed, 12 Jul 2023 12:23:23 +0530 -Subject: [PATCH 5/6] Fix the outlook_reply_plugin for mixtune 3.x - ---- - hyperkitty/lib/renderer.py | 29 ++++++++++++++------------- - hyperkitty/tests/test_templatetags.py | 12 +++-------- - 2 files changed, 18 insertions(+), 23 deletions(-) - -diff --git a/hyperkitty/lib/renderer.py b/hyperkitty/lib/renderer.py -index 346472d2..ddb2a77d 100644 ---- a/hyperkitty/lib/renderer.py -+++ b/hyperkitty/lib/renderer.py -@@ -25,7 +25,6 @@ class MyRenderer(mistune.HTMLRenderer): - quote-switched classed hyperlink that can collapse the next quote-text - using JS. - """ -- print(text) - return ( - f'' - f'
{text}
') -@@ -62,7 +61,10 @@ class MyRenderer(mistune.HTMLRenderer): - URLs (text=None) so text is same as URL. - It also adds target=“_blank” so that the URLs open in a new tab. - """ -- if text is None: -+ # text can be none of same as url in case of autolink parsing. This -+ # will truncate the length of the URL in both cases but preserve -+ # the actual URL destination in the hyperlink. -+ if text is None or text == url: - text = url - if len(text) > 76: - text = url[:76] + '...' -@@ -103,26 +105,26 @@ class BlockParser(mistune.block_parser.BlockParser): - mistune.block_parser.BlockParser.DEFAULT_RULES) - - --OUTLOOK_REPLY_PATTERN = re.compile( -+OUTLOOK_REPLY_PATTERN = ( - r'^-------- Original message --------\n' -- r'([\s\S]+)', # everything after newline. -- re.M -+ r'(?P[\s\S]+)' # everything after newline - ) - - - def parse_outlook_reply(block, m, state): - """Parser for outlook style replies.""" -- text = m.group(0) -- return { -+ text = m.group('reply_text') -+ reply_token = '-------- Original message --------\n' -+ state.append_token({ - 'type': 'block_quote', -- 'children': [{'type': 'paragraph', 'text': text}] -- } -+ 'children': [{'type': 'paragraph', 'text': reply_token + text}], -+ }) -+ return m.end() + 1 - - - def plugin_outlook_reply(md): -- md.block.register_rule( -+ md.block.register( - 'outlook_reply', OUTLOOK_REPLY_PATTERN, parse_outlook_reply) -- md.block.rules.insert(-1, 'outlook_reply') - - - # Signature Plugin looks for signature pattern in email content and converts it -@@ -209,12 +211,11 @@ markdown_renderer = mistune.Markdown( - renderer=renderer, - inline=InlineParser(hard_wrap=False), - block=BlockParser(), -- - plugins=[ -+ plugin_outlook_reply, - plugin_pgp_signature, - plugin_signature, -- plugin_outlook_reply, -- url -+ url, - ]) - - -diff --git a/hyperkitty/tests/test_templatetags.py b/hyperkitty/tests/test_templatetags.py -index b1d83177..f567388d 100644 ---- a/hyperkitty/tests/test_templatetags.py -+++ b/hyperkitty/tests/test_templatetags.py -@@ -147,9 +147,6 @@ class TestGravatar(TestCase): - - class TestDecorate(TestCase): - -- def setUp(self): -- pass -- - def test_parse_quote(self): - contents = """ - On Fri, 09.11.12 11:27, Someone wrote: -@@ -168,8 +165,6 @@ This is the response. - '' - '

This is the response.

\n') - result = markdown_renderer(contents) -- print('----------'*10) -- print(result) - self.assertEqual(result.strip(), expected.strip()) - - def test_parse_heading_normal(self): -@@ -187,7 +182,7 @@ https://some.url/llasdfjaksdgfjsdfgkjasdfbgksdfjgbsdfkgjbsdflkgjbsdflgksjdhfbgks - result = markdown_renderer(contents) - self.assertEqual( - result.strip(), -- '

https://some.url/llasdfjaksdgfjsdfgkjasdfbgksdfjgbsdfkgjbsdflkgjbsdflgksjdhf...

') # noqa: E501 -+ ('

https://some.url/llasdfjaksdgfjsdfgkjasdfbgksdfjgbsdfkgjbsdflkgjbsdflgksjdhf...

')) # noqa: E501 - - def test_autolink_small_url(self): - # Test that autolink doesn't add ... to URLs that aren't truncated. -@@ -241,6 +236,7 @@ Subject: Testing if the quoted reply works with Outlook style. - This is the original text *with* some __markup__. - """ - result = markdown_renderer(contents) -+ print(result) - self.assertEqual( - result.strip(), - """

This is the replied text.

-@@ -250,9 +246,7 @@ From: A person <person(a)example.com> - Date: 6/26/23 16:23 (GMT-05:00) - To: mytestlist@example.com - Subject: Testing if the quoted reply works with Outlook style. -- --This is the original text *with* some __markup__. --

-+This is the original text *with* some __markup__.

- """) # noqa: E501 - - --- -GitLab - - -From af17c334a2a35d672c9c732ed9a37bc780fdb64d Mon Sep 17 00:00:00 2001 -From: Abhilash Raj -Date: Wed, 12 Jul 2023 14:14:00 +0530 -Subject: [PATCH 6/6] qa fixes - ---- - hyperkitty/lib/renderer.py | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/hyperkitty/lib/renderer.py b/hyperkitty/lib/renderer.py -index ddb2a77d..7f1a3230 100644 ---- a/hyperkitty/lib/renderer.py -+++ b/hyperkitty/lib/renderer.py -@@ -4,7 +4,6 @@ from django.conf import settings - - import mistune - from mistune.plugins.url import url --from mistune.util import escape as escape_html - from mistune.util import safe_entity - - -@@ -91,6 +90,7 @@ class InlineParser(mistune.inline_parser.InlineParser): - state.tokens[-1] = last_token - return end_pos - -+ - def remove_header_rules(rules): - rules = list(rules) - for rule in ('setex_header', 'axt_heading'): -@@ -107,7 +107,7 @@ class BlockParser(mistune.block_parser.BlockParser): - - OUTLOOK_REPLY_PATTERN = ( - r'^-------- Original message --------\n' -- r'(?P[\s\S]+)' # everything after newline -+ r'(?P[\s\S]+)' # everything after newline - ) - - --- -GitLab - diff --git a/python-HyperKitty.changes b/python-HyperKitty.changes index 37115af..bab0ba7 100644 --- a/python-HyperKitty.changes +++ b/python-HyperKitty.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Sat Mar 2 07:57:47 UTC 2024 - Andreas Schneider + +- Update to version 1.3.9 + * https://gitlab.com/mailman/hyperkitty/-/releases/1.3.9 +- Removed mistune3.patch + ------------------------------------------------------------------- Thu Feb 29 19:57:33 UTC 2024 - Ben Greiner diff --git a/python-HyperKitty.keyring b/python-HyperKitty.keyring new file mode 100644 index 0000000..45104e2 --- /dev/null +++ b/python-HyperKitty.keyring @@ -0,0 +1,90 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +=s7HB +-----END PGP PUBLIC KEY BLOCK----- diff --git a/python-HyperKitty.spec b/python-HyperKitty.spec index 6741a32..1632340 100644 --- a/python-HyperKitty.spec +++ b/python-HyperKitty.spec @@ -66,14 +66,16 @@ %define plainpython python Name: python-HyperKitty -Version: 1.3.8 +Version: 1.3.9 Release: 0 Summary: A web interface to access GNU Mailman v3 archives License: GPL-3.0-only URL: https://gitlab.com/mailman/hyperkitty # -Source0: https://files.pythonhosted.org/packages/source/H/HyperKitty/HyperKitty-%{version}.tar.gz -Source1: python-HyperKitty-rpmlintrc +Source0: https://gitlab.com/mailman/hyperkitty/-/releases/%{version}/downloads/hyperkitty-%{version}.tar.gz +Source1: https://gitlab.com/mailman/hyperkitty/-/releases/%{version}/downloads/hyperkitty-%{version}.tar.gz.asc +Source2: python-HyperKitty.keyring +Source3: python-HyperKitty-rpmlintrc # Source10: hyperkitty-manage.sh Source12: hyperkitty.uwsgi @@ -87,8 +89,6 @@ Source30: README.SUSE.md # PATCH-FIX-OPENSUSE hyperkitty-settings.patch mcepl@suse.com # hard-code locations of configuration files Patch0: hyperkitty-settings.patch -# PATCH-FIX-UPSTREAM mistune3.patch gl#mailman/hyperkitty#541 -Patch2: mistune3.patch # # PATCH-FIX-UPSTREAM gl-mr300-add-opengraph-metadata.patch gl#mailman/hyperkitty#300 Patch98: gl-mr300-add-opengraph-metadata.patch @@ -104,6 +104,7 @@ BuildRequires: %{python_module django-gravatar2 >= %{django_gravatar2_min_versi BuildRequires: %{python_module isort} BuildRequires: %{python_module mailmanclient >= %{mailmanclient_min_version}} BuildRequires: %{python_module mistune >= %{mistune_min_version}} +BuildRequires: %{python_module pdm} BuildRequires: %{python_module pip} BuildRequires: %{python_module setuptools} BuildRequires: %{python_module wheel} @@ -212,7 +213,7 @@ BuildRequires: sysuser-tools System user for HyperKitty. %prep -%setup -n HyperKitty-%{version} +%setup -n hyperkitty-%{version} cp %{SOURCE30} . touch settings_local.py @@ -360,10 +361,10 @@ fi %service_del_postun %{hyperkitty_services} %files -n %{hyperkitty_pkgname} -%doc AUTHORS.txt README.rst example_project doc/*.rst +%doc AUTHORS.txt README.rst example_project %license COPYING.txt %{mypython_sitelib}/hyperkitty -%{mypython_sitelib}/HyperKitty-%{version}*-info +%{mypython_sitelib}/hyperkitty-%{version}*-info %files -n %{hyperkitty_pkgname}-web %doc README.SUSE.md