forked from pool/python-HyperKitty
Accepting request 1182740 from home:gladiac:mailman
- Update to version 1.3.10 * https://gitlab.com/mailman/hyperkitty/-/releases/1.3.10 OBS-URL: https://build.opensuse.org/request/show/1182740 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:mailman/python-HyperKitty?expand=0&rev=84
This commit is contained in:
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
## Default LFS
|
||||
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||
*.bsp filter=lfs diff=lfs merge=lfs -text
|
||||
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.gem filter=lfs diff=lfs merge=lfs -text
|
||||
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||
*.jar filter=lfs diff=lfs merge=lfs -text
|
||||
*.lz filter=lfs diff=lfs merge=lfs -text
|
||||
*.lzma filter=lfs diff=lfs merge=lfs -text
|
||||
*.obscpio filter=lfs diff=lfs merge=lfs -text
|
||||
*.oxt filter=lfs diff=lfs merge=lfs -text
|
||||
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||
*.png filter=lfs diff=lfs merge=lfs -text
|
||||
*.rpm filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||
*.txz filter=lfs diff=lfs merge=lfs -text
|
||||
*.whl filter=lfs diff=lfs merge=lfs -text
|
||||
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||
*.zst filter=lfs diff=lfs merge=lfs -text
|
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.osc
|
114
README.SUSE.md
Normal file
114
README.SUSE.md
Normal file
@@ -0,0 +1,114 @@
|
||||
HyperKitty
|
||||
==========
|
||||
|
||||
## Configuration
|
||||
|
||||
The web application is configured in `/etc/hyperkitty/settings_local.py` which
|
||||
is included by the default configuration in
|
||||
/srv/www/webapps/mailman/hyperkitty/settings.py.
|
||||
|
||||
1. Optional: Change the default secret for the application:
|
||||
We already created one, but feel free to replace with a stronger
|
||||
alternative.
|
||||
|
||||
`/etc/hyperkitty/settings_local.py`:
|
||||
|
||||
SECRET_KEY = 'something-very-secret'
|
||||
|
||||
2. Make sure to disable debugging when running in production:
|
||||
|
||||
`/etc/hyperkitty/settings_local.py`:
|
||||
|
||||
DEBUG = False
|
||||
|
||||
3. The valid hosts or domain names for the application need to be defined:
|
||||
|
||||
`/etc/hyperkitty/settings_local.py`:
|
||||
|
||||
ALLOWED_HOSTS = [
|
||||
'localhost',
|
||||
'lists.example.com'
|
||||
]
|
||||
|
||||
4. Add a valid email configuration
|
||||
|
||||
`/etc/hyperkitty/settings_local.py`:
|
||||
|
||||
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
|
||||
EMAIL_HOST = 'localhost'
|
||||
EMAIL_PORT = 25
|
||||
EMAIL_HOST_USER = <username>
|
||||
EMAIL_HOST_PASSWORD = <password>
|
||||
|
||||
5. To connect with a running mailman instance's REST API, configuration options
|
||||
have to be added to hyperkitty's configuration.
|
||||
|
||||
`/etc/hyperkitty/settings_local.py`:
|
||||
|
||||
MAILMAN_REST_API_URL = 'http://localhost:8001'
|
||||
MAILMAN_REST_API_USER = 'rest_admin'
|
||||
MAILMAN_REST_API_PASS = 'rest_admin_password'
|
||||
|
||||
6. To configure the archive integration with a mailman instance first setup the
|
||||
integration with hyperkitty on mailman's side and then configure hyperkitty
|
||||
to accept those connections:
|
||||
|
||||
`/etc/hyperkitty/settings_local.py`:
|
||||
|
||||
MAILMAN_ARCHIVER_KEY = 'SecretArchiverAPIKey'
|
||||
MAILMAN_ARCHIVER_FROM = ('127.0.0.1', '::1')
|
||||
|
||||
7. Optional: Configure postgres or another database (default: sqlite3)
|
||||
|
||||
8. Create and setup the database
|
||||
|
||||
hyperkitty-manage migrate
|
||||
|
||||
9. Populate the database with default data (when setting up for the first time):
|
||||
|
||||
hyperkitty-manage loaddata first_start
|
||||
|
||||
10. Create admin user
|
||||
|
||||
hyperkitty-manage createsuperuser
|
||||
|
||||
11. Enable HyperKitty async tasks runner
|
||||
|
||||
systemctl enable --now hyperkitty-qcluster.service
|
||||
|
||||
12. Enable HyperKitty runjob timers
|
||||
|
||||
systemctl enable hyperkitty-runjob-minutely.timer
|
||||
systemctl enable hyperkitty-runjob-quarter-hourly.timer
|
||||
systemctl enable hyperkitty-runjob-hourly.timer
|
||||
systemctl enable hyperkitty-runjob-daily.timer
|
||||
systemctl enable hyperkitty-runjob-weekly.timer
|
||||
systemctl enable hyperkitty-runjob-monthly.timer
|
||||
systemctl enable hyperkitty-runjob-yearly.timer
|
||||
|
||||
## Apache2
|
||||
|
||||
To configure hyperkitty with Apache and uwsgi, just add the follwing lines to a vhost:
|
||||
|
||||
ProxyPassMatch ^/static !
|
||||
ProxyPass / unix:/run/uwsgi/uwsgi-hyperkitty.sock|uwsgi://localhost/
|
||||
<Directory /srv/www/webapps/mailman/hyperkitty>
|
||||
Require all granted
|
||||
</Directory>
|
||||
|
||||
## Xapian search backend
|
||||
|
||||
Hyperkitty can make use of a Xapian based search backend.
|
||||
|
||||
`/etc/hyperkitty/settings_local.py`:
|
||||
|
||||
HAYSTACK_CONNECTIONS = {
|
||||
'default': {
|
||||
'ENGINE': 'xapian_backend.XapianEngine',
|
||||
'PATH': "/var/lib/hyperkitty/data/xapian_index",
|
||||
},
|
||||
}
|
||||
|
||||
Make sure to create the search index for all lists afterwards.
|
||||
|
||||
hyperkitty-manage update_index
|
302
gl-mr300-add-opengraph-metadata.patch
Normal file
302
gl-mr300-add-opengraph-metadata.patch
Normal file
@@ -0,0 +1,302 @@
|
||||
# Rewritten from upstream .patch to avoid fuzzing
|
||||
Index: HyperKitty-1.3.8/hyperkitty/templates/hyperkitty/base.html
|
||||
===================================================================
|
||||
--- HyperKitty-1.3.8.orig/hyperkitty/templates/hyperkitty/base.html
|
||||
+++ HyperKitty-1.3.8/hyperkitty/templates/hyperkitty/base.html
|
||||
@@ -24,6 +24,11 @@
|
||||
{% block additional_stylesheets %} {% endblock %}
|
||||
{% block head_feed %}{% endblock %}
|
||||
{% include 'hyperkitty/headers.html' %}
|
||||
+ <meta property="og:site_name" content="{{ site_name }}">
|
||||
+ {% block additional_og %}{% endblock %}
|
||||
+ <meta property="og:url" content="{{ request.get_full_path }}">
|
||||
+ <meta name="twitter:card" content="summary">
|
||||
+ <meta name="twitter:url" content="{{ request.get_full_path }}">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
Index: HyperKitty-1.3.8/hyperkitty/templates/hyperkitty/errors/notimplemented.html
|
||||
===================================================================
|
||||
--- HyperKitty-1.3.8.orig/hyperkitty/templates/hyperkitty/errors/notimplemented.html
|
||||
+++ HyperKitty-1.3.8/hyperkitty/templates/hyperkitty/errors/notimplemented.html
|
||||
@@ -7,6 +7,11 @@
|
||||
{% trans "Not implemented yet" %} - {{ block.super }}
|
||||
{% endblock %}
|
||||
|
||||
+{% block additional_og %}
|
||||
+<meta property="og:title" content="{% trans "Not implemented yet" %}">
|
||||
+<meta name="twitter:title" content="{% trans "Not implemented yet" %}">
|
||||
+{% endblock %}
|
||||
+
|
||||
{% block content %}
|
||||
|
||||
<h1>{% trans "Not implemented" %}</h1>
|
||||
Index: HyperKitty-1.3.8/hyperkitty/templates/hyperkitty/errors/private.html
|
||||
===================================================================
|
||||
--- HyperKitty-1.3.8.orig/hyperkitty/templates/hyperkitty/errors/private.html
|
||||
+++ HyperKitty-1.3.8/hyperkitty/templates/hyperkitty/errors/private.html
|
||||
@@ -7,6 +7,11 @@
|
||||
{% trans "Error: private list" %} - {{ mlist.display_name|default:mlist.name }} - {{ block.super }}
|
||||
{% endblock %}
|
||||
|
||||
+{% block additional_og %}
|
||||
+<meta property="og:title" content="{% trans "Error: private list" %} - {{ mlist.display_name|default:mlist.name }}">
|
||||
+<meta name="twitter:title" content="{% trans "Error: private list" %} - {{ mlist.display_name|default:mlist.name }}">
|
||||
+{% endblock %}
|
||||
+
|
||||
{% block content %}
|
||||
|
||||
<div class="row">
|
||||
Index: HyperKitty-1.3.8/hyperkitty/templates/hyperkitty/index.html
|
||||
===================================================================
|
||||
--- HyperKitty-1.3.8.orig/hyperkitty/templates/hyperkitty/index.html
|
||||
+++ HyperKitty-1.3.8/hyperkitty/templates/hyperkitty/index.html
|
||||
@@ -9,6 +9,11 @@
|
||||
{% trans 'Available lists' %} - {{ block.super }}
|
||||
{% endblock %}
|
||||
|
||||
+{% block additional_og %}
|
||||
+<meta property="og:title" content="{% trans 'Available lists' %}">
|
||||
+<meta name="twitter:title" content="{% trans 'Available lists' %}">
|
||||
+{% endblock %}
|
||||
+
|
||||
{% block content %}
|
||||
|
||||
<div class="all-lists">
|
||||
Index: HyperKitty-1.3.8/hyperkitty/templates/hyperkitty/message.html
|
||||
===================================================================
|
||||
--- HyperKitty-1.3.8.orig/hyperkitty/templates/hyperkitty/message.html
|
||||
+++ HyperKitty-1.3.8/hyperkitty/templates/hyperkitty/message.html
|
||||
@@ -1,12 +1,29 @@
|
||||
{% extends "hyperkitty/base.html" %}
|
||||
{% load i18n %}
|
||||
{% load hk_generic %}
|
||||
+{% load gravatar %}
|
||||
|
||||
|
||||
{% block head_title %}
|
||||
{{ message.subject }} - {{ mlist.display_name|default:mlist.name }} - {{ block.super }}
|
||||
{% endblock %}
|
||||
|
||||
+{% block additional_og %}
|
||||
+<meta property="og:title" content="{{ message.subject }} - {{ mlist.display_name|default:mlist.name }}">
|
||||
+<meta property="og:type" content="article">
|
||||
+<meta property="og:image" content="{% gravatar_url message.sender.address 200 %}">
|
||||
+<meta property="og:description" content="{{ message.content|escapeemail|truncatechars:199 }}…">
|
||||
+<meta property="og:article:author" content="{{ message.sender_name|default:message.sender.address|escapeemail }}">
|
||||
+<meta property="og:article:published_time" content="{{ message.date|date:'c' }}">
|
||||
+<meta property="og:article:section" content="{{ mlist.display_name|default:mlist.name }}">
|
||||
+{% for tag in message.thread.tags.distinct %}
|
||||
+<meta property="og:article:tag" content="{{ tag.name }}">
|
||||
+{% endfor %}
|
||||
+<meta name="twitter:title" content="{{ message.subject }} - {{ mlist.display_name|default:mlist.name }}">
|
||||
+<meta name="twitter:description" content="{{ message.content|escapeemail|truncatechars:199 }}…">
|
||||
+<meta name="twitter:image" content="{% gravatar_url message.sender.address 200 %}">
|
||||
+{% endblock %}
|
||||
+
|
||||
{% block content %}
|
||||
|
||||
<div class="row">
|
||||
Index: HyperKitty-1.3.8/hyperkitty/templates/hyperkitty/message_new.html
|
||||
===================================================================
|
||||
--- HyperKitty-1.3.8.orig/hyperkitty/templates/hyperkitty/message_new.html
|
||||
+++ HyperKitty-1.3.8/hyperkitty/templates/hyperkitty/message_new.html
|
||||
@@ -8,6 +8,11 @@
|
||||
{% trans "Create a new thread" %} - {{ mlist.display_name|default:mlist.name }} - {{ block.super }}
|
||||
{% endblock %}
|
||||
|
||||
+{% block additional_og %}
|
||||
+<meta property="og:title" content="{% trans "Create a new thread" %} - {{ mlist.display_name|default:mlist.name }}">
|
||||
+<meta name="twitter:title" content="{% trans "Create a new thread" %} - {{ mlist.display_name|default:mlist.name }}">
|
||||
+{% endblock %}
|
||||
+
|
||||
{% block content %}
|
||||
|
||||
<div class="row">
|
||||
Index: HyperKitty-1.3.8/hyperkitty/templates/hyperkitty/overview.html
|
||||
===================================================================
|
||||
--- HyperKitty-1.3.8.orig/hyperkitty/templates/hyperkitty/overview.html
|
||||
+++ HyperKitty-1.3.8/hyperkitty/templates/hyperkitty/overview.html
|
||||
@@ -4,6 +4,13 @@
|
||||
{% load static %}
|
||||
{% load cache %}
|
||||
|
||||
+{% block additional_og %}
|
||||
+<meta property="og:title" content="{{ mlist.display_name|default:mlist.name }}">
|
||||
+<meta property="og:description" content="{{ mlist.description|default_if_none:''|truncatechars:199 }}…">
|
||||
+<meta name="twitter:title" content="{{ mlist.display_name|default:mlist.name }}">
|
||||
+<meta name="twitter:description" content="{{ mlist.description|default_if_none:''|truncatechars:199 }}…">
|
||||
+{% endblock %}
|
||||
+
|
||||
{% block head_title %}
|
||||
{{ mlist.display_name|default:mlist.name }} - {{ block.super }}
|
||||
{% endblock %}
|
||||
Index: HyperKitty-1.3.8/hyperkitty/templates/hyperkitty/reattach.html
|
||||
===================================================================
|
||||
--- HyperKitty-1.3.8.orig/hyperkitty/templates/hyperkitty/reattach.html
|
||||
+++ HyperKitty-1.3.8/hyperkitty/templates/hyperkitty/reattach.html
|
||||
@@ -9,6 +9,11 @@
|
||||
{% trans "Reattach a thread" %} - {{ mlist.display_name|default:mlist.name }} - {{ block.super }}
|
||||
{% endblock %}
|
||||
|
||||
+{% block additional_og %}
|
||||
+<meta property="og:title" content="{% trans "Reattach a thread" %} - {{ mlist.display_name|default:mlist.name }}">
|
||||
+<meta name="twitter:title" content="{% trans "Reattach a thread" %} - {{ mlist.display_name|default:mlist.name }}">
|
||||
+{% endblock %}
|
||||
+
|
||||
{% block content %}
|
||||
|
||||
<div class="row reattach-thread">
|
||||
Index: HyperKitty-1.3.8/hyperkitty/templates/hyperkitty/search_results.html
|
||||
===================================================================
|
||||
--- HyperKitty-1.3.8.orig/hyperkitty/templates/hyperkitty/search_results.html
|
||||
+++ HyperKitty-1.3.8/hyperkitty/templates/hyperkitty/search_results.html
|
||||
@@ -8,6 +8,11 @@
|
||||
{% trans "Search results for" %} "{{ query }}"{% if mlist %} - {{ mlist.display_name|default:mlist.name }} {% endif %} - {{ block.super }}
|
||||
{% endblock %}
|
||||
|
||||
+{% block additional_og %}
|
||||
+<meta property="og:title" content="{% trans "Search results for" %} "{{ query }}"{% if mlist %} - {{ mlist.display_name|default:mlist.name }} {% endif %}">
|
||||
+<meta name="twitter:title" content="{% trans "Search results for" %} "{{ query }}"{% if mlist %} - {{ mlist.display_name|default:mlist.name }} {% endif %}">
|
||||
+{% endblock %}
|
||||
+
|
||||
{% block content %}
|
||||
|
||||
<div class="row">
|
||||
Index: HyperKitty-1.3.8/hyperkitty/templates/hyperkitty/thread.html
|
||||
===================================================================
|
||||
--- HyperKitty-1.3.8.orig/hyperkitty/templates/hyperkitty/thread.html
|
||||
+++ HyperKitty-1.3.8/hyperkitty/templates/hyperkitty/thread.html
|
||||
@@ -3,12 +3,29 @@
|
||||
{% load i18n %}
|
||||
{% load hk_generic %}
|
||||
{% load static %}
|
||||
+{% load gravatar %}
|
||||
|
||||
|
||||
{% block head_title %}
|
||||
{{ subject }} - {{ mlist.display_name|default:mlist.name }} - {{ block.super }}
|
||||
{% endblock %}
|
||||
|
||||
+{% block additional_og %}
|
||||
+<meta property="og:title" content="{{ subject }} - {{ mlist.display_name|default:mlist.name }}">
|
||||
+<meta property="og:type" content="article">
|
||||
+<meta property="og:image" content="{% gravatar_url starting_email.sender.address 200 %}">
|
||||
+<meta property="og:description" content="{{ starting_email.content|escapeemail|truncatechars:199 }}…">
|
||||
+<meta property="og:article:author" content="{{ starting_email.sender_name|default:starting_email.sender.address|escapeemail }}">
|
||||
+<meta property="og:article:published_time" content="{{ starting_email.date|date:'c' }}">
|
||||
+<meta property="og:article:section" content="{{ mlist.display_name|default:mlist.name }}">
|
||||
+{% for tag in thread.tags.distinct %}
|
||||
+<meta property="og:article:tag" content="{{ tag.name }}">
|
||||
+{% endfor %}
|
||||
+<meta name="twitter:title" content="{{ subject }} - {{ mlist.display_name|default:mlist.name }}">
|
||||
+<meta name="twitter:description" content="{{ starting_email.content|escapeemail|truncatechars:199 }}…">
|
||||
+<meta name="twitter:image" content="{% gravatar_url starting_email.sender.address 200 %}">
|
||||
+{% endblock %}
|
||||
+
|
||||
{% block content %}
|
||||
|
||||
<div class="row view-thread d-flex">
|
||||
Index: HyperKitty-1.3.8/hyperkitty/templates/hyperkitty/thread_list.html
|
||||
===================================================================
|
||||
--- HyperKitty-1.3.8.orig/hyperkitty/templates/hyperkitty/thread_list.html
|
||||
+++ HyperKitty-1.3.8/hyperkitty/templates/hyperkitty/thread_list.html
|
||||
@@ -13,6 +13,13 @@
|
||||
<link rel="alternate" type="application/rss+xml" title="{{ mlist.display_name }}" href="{% url 'hk_list_feed' mlist_fqdn=mlist.name %}"/>
|
||||
{% endblock %}
|
||||
|
||||
+{% block additional_og %}
|
||||
+<meta property="og:title" content="{{ list_title }} - {{ mlist.display_name|default:mlist.name }}">
|
||||
+<meta property="og:description" content="{{ mlist.description|default_if_none:''|truncatechars:199 }}…">
|
||||
+<meta name="twitter:title" content="{{ list_title }} - {{ mlist.display_name|default:mlist.name }}">
|
||||
+<meta name="twitter:description" content="{{ mlist.description|default_if_none:''|truncatechars:199 }}…">
|
||||
+{% endblock %}
|
||||
+
|
||||
{% block content %}
|
||||
|
||||
<div class="row">
|
||||
Index: HyperKitty-1.3.8/hyperkitty/templates/hyperkitty/user_posts.html
|
||||
===================================================================
|
||||
--- HyperKitty-1.3.8.orig/hyperkitty/templates/hyperkitty/user_posts.html
|
||||
+++ HyperKitty-1.3.8/hyperkitty/templates/hyperkitty/user_posts.html
|
||||
@@ -8,6 +8,11 @@
|
||||
{% trans "Messages by" %} {{ fullname }}{% if mlist %} - {{ mlist.display_name|default:mlist.name }} {% endif %} - {{ block.super }}
|
||||
{% endblock %}
|
||||
|
||||
+{% block additional_og %}
|
||||
+<meta property="og:title" content="{% trans "Messages by" %} {{ fullname }}{% if mlist %} - {{ mlist.display_name|default:mlist.name }} {% endif %}">
|
||||
+<meta name="twitter:title" content="{% trans "Messages by" %} {{ fullname }}{% if mlist %} - {{ mlist.display_name|default:mlist.name }} {% endif %}">
|
||||
+{% endblock %}
|
||||
+
|
||||
{% block content %}
|
||||
|
||||
<div class="row">
|
||||
Index: HyperKitty-1.3.8/hyperkitty/templates/hyperkitty/user_profile/base.html
|
||||
===================================================================
|
||||
--- HyperKitty-1.3.8.orig/hyperkitty/templates/hyperkitty/user_profile/base.html
|
||||
+++ HyperKitty-1.3.8/hyperkitty/templates/hyperkitty/user_profile/base.html
|
||||
@@ -5,6 +5,11 @@
|
||||
{% trans "User posting activity" %} - {{ block.super }}
|
||||
{% endblock %}
|
||||
|
||||
+{% block additional_og %}
|
||||
+<meta property="og:title" content="{% trans "User posting activity" %}">
|
||||
+<meta name="twitter:title" content="{% trans "User posting activity" %}">
|
||||
+{% endblock %}
|
||||
+
|
||||
{% block content %}
|
||||
|
||||
<div class="user-profile">
|
||||
Index: HyperKitty-1.3.8/hyperkitty/templates/hyperkitty/user_public_profile.html
|
||||
===================================================================
|
||||
--- HyperKitty-1.3.8.orig/hyperkitty/templates/hyperkitty/user_public_profile.html
|
||||
+++ HyperKitty-1.3.8/hyperkitty/templates/hyperkitty/user_public_profile.html
|
||||
@@ -1,12 +1,20 @@
|
||||
{% extends "hyperkitty/base.html" %}
|
||||
{% load i18n %}
|
||||
{% load hk_generic %}
|
||||
+{% load gravatar %}
|
||||
|
||||
|
||||
{% block head_title %}
|
||||
{% trans 'User Profile' %} {% trans "for" %} {{ fullname }} - {{ block.super }}
|
||||
{% endblock %}
|
||||
|
||||
+{% block additional_og %}
|
||||
+<meta property="og:title" content="{% trans 'User Profile' %} {% trans "for" %} {{ fullname }}">
|
||||
+<meta property="og:image" content="{% gravatar_url addresses.0 200 %}">
|
||||
+<meta name="twitter:title" content="{% trans 'User Profile' %} {% trans "for" %} {{ fullname }}">
|
||||
+<meta name="twitter:image" content="{% gravatar_url addresses.0 200 %}">
|
||||
+{% endblock %}
|
||||
+
|
||||
{% block content %}
|
||||
|
||||
<div class="user-profile user-public-profile">
|
||||
Index: HyperKitty-1.3.8/hyperkitty/tests/views/test_accounts.py
|
||||
===================================================================
|
||||
--- HyperKitty-1.3.8.orig/hyperkitty/tests/views/test_accounts.py
|
||||
+++ HyperKitty-1.3.8/hyperkitty/tests/views/test_accounts.py
|
||||
@@ -197,7 +197,7 @@ class AccountViewsTestCase(TestCase):
|
||||
"?list=list@example.com")
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertContains(response, "Dummy content", count=1, html=False)
|
||||
- self.assertContains(response, "Dummy Sender", count=5, html=False)
|
||||
+ self.assertContains(response, "Dummy Sender", count=7, html=False)
|
||||
self.assertContains(
|
||||
response,
|
||||
'<a name="{}" href="{}">Dummy message</a>'.format(
|
||||
Index: HyperKitty-1.3.8/hyperkitty/tests/views/test_message.py
|
||||
===================================================================
|
||||
--- HyperKitty-1.3.8.orig/hyperkitty/tests/views/test_message.py
|
||||
+++ HyperKitty-1.3.8/hyperkitty/tests/views/test_message.py
|
||||
@@ -124,8 +124,8 @@ class MessageViewsTestCase(TestCase):
|
||||
response = self.client.get(url)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertContains(response, "Dummy message")
|
||||
- self.assertContains(response, "Dummy Sender", count=1)
|
||||
- self.assertContains(response, "Dummy Subject", count=2)
|
||||
+ self.assertContains(response, "Dummy Sender", count=2)
|
||||
+ self.assertContains(response, "Dummy Subject", count=4)
|
||||
self.assertNotContains(response, "dummy@example.com")
|
||||
self.assertContains(
|
||||
response,
|
51
gl-mr470-introduce-feed-filtering.patch
Normal file
51
gl-mr470-introduce-feed-filtering.patch
Normal file
@@ -0,0 +1,51 @@
|
||||
diff --git a/hyperkitty/feed.py b/hyperkitty/feed.py
|
||||
index 8242662c2158be7b34527cf933565588892ce25f..a9bd9ae546aa51f717b07b6c270b769e9e8c775f 100644
|
||||
--- a/hyperkitty/feed.py
|
||||
+++ b/hyperkitty/feed.py
|
||||
@@ -16,7 +16,7 @@
|
||||
# You should have received a copy of the GNU General Public License along with
|
||||
# HyperKitty. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
-# Author: Stasiek Michalski <stasiek@michalski.cc>
|
||||
+# Author: Jacob Michalskie <jacob@michalskie.cc>
|
||||
#
|
||||
import re
|
||||
|
||||
@@ -43,20 +43,32 @@ def sanitize(x):
|
||||
class MailingListFeed(Feed):
|
||||
|
||||
def get_object(self, request, mlist_fqdn):
|
||||
- return get_object_or_404(MailingList, name=mlist_fqdn)
|
||||
+ return {'mlist': get_object_or_404(MailingList, name=mlist_fqdn),
|
||||
+ 'params': request.GET}
|
||||
|
||||
def title(self, obj):
|
||||
- return sanitize(obj.display_name)
|
||||
+ return sanitize(obj['mlist'].display_name)
|
||||
|
||||
def link(self, obj):
|
||||
- return reverse("hk_list_overview", kwargs={"mlist_fqdn": obj.name})
|
||||
+ return reverse("hk_list_overview",
|
||||
+ kwargs={"mlist_fqdn": obj['mlist'].name})
|
||||
|
||||
def description(self, obj):
|
||||
- return sanitize(obj.description)
|
||||
+ return sanitize(obj['mlist'].description)
|
||||
|
||||
def items(self, obj):
|
||||
len = getattr(settings, 'HYPERKITTY_MLIST_FEED_LENGTH', 30)
|
||||
- return Email.objects.filter(mailinglist=obj).order_by('-date')[:len]
|
||||
+ emails = Email.objects.filter(mailinglist=obj['mlist'])
|
||||
+ if 'subject' in obj['params']:
|
||||
+ emails = emails.filter(subject__regex=obj['params']['subject'])
|
||||
+ if 'sender' in obj['params']:
|
||||
+ emails = emails.filter(sender_name__regex=obj['params']['email'])
|
||||
+ if 'threads' in obj['params']:
|
||||
+ emails = emails.filter(thread_depth=0)
|
||||
+ if 'limit' in obj['params']:
|
||||
+ if int(obj['params']['limit']) < len:
|
||||
+ len = int(obj['params']['limit'])
|
||||
+ return emails.order_by('-date')[:len]
|
||||
|
||||
def item_title(self, item):
|
||||
return sanitize(item.subject)
|
3
hyperkitty-1.3.10.tar.gz
Normal file
3
hyperkitty-1.3.10.tar.gz
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:7cb1a021c5813d92ec3d174482f70f1b46174364f7d9b423586ee4f347f71e7b
|
||||
size 2204682
|
16
hyperkitty-1.3.10.tar.gz.asc
Normal file
16
hyperkitty-1.3.10.tar.gz.asc
Normal file
@@ -0,0 +1,16 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCAAdFiEEVB6gRIRTOU/3eg7MnZsroGHQpnwFAmZ2g7oACgkQnZsroGHQ
|
||||
pnxfTQ/+J5TIlLOZ7XNrBhprfZYp0zhU5TmLkHhCTLbm/06SyvGNspEcqqQicLSJ
|
||||
YZEkKF4CPByLMCTDvVLiEjjiaaq9S+MJ+FVkASZKPrvogRDxVmB//whIJWjhWYfQ
|
||||
VPMqj8fflZiuLNLqmfFf7AU2mZbn/y6+ODS2+vDeNISydze5pFEUyLTfk+VXf+X3
|
||||
9btHzvRjCXC8s7Buj9GaDID0hYU3aYyyLoVMSqnQ0ESqd4YHpSX5+q0PpkTmFuhH
|
||||
DR/I1vCDsbj4HMvzPJx1dFFEKysMjOmRPqVSTaGGj51EiFZJReraNZ6zSKh4uclx
|
||||
dO1rE4yqD5l7HkrTCBd7n+Lr3jefJDaTtUjHwTDC2EAC4Z3JfrvB0rczPcTKpzFp
|
||||
s61fePie43JU/aXfhvObHs/++FZKmLC7B2Q4OpWRQpAIikDcQimLCYOXqpc8WAqo
|
||||
13CrpRIQXUh5oQuUH69WHDgw/U0QTWtbpYEIDJZ4Ls9MrEeLwJIaM9JZnuBCPUm7
|
||||
o358JVdBwL/w65BxK4Csk4Y32W8sJM5XF0JtJ+Yzf4PAd6gk2gUetLkRikphih24
|
||||
2TFzR4Upvc5DJWIM8uitmxFpxo4dmnctbg7bLrWMsvs9Yw4M8kuEVR9QdrNr1ZYS
|
||||
Thzg/WkYKi0x+BtXE0JxtJ66y+h+hWXQ0ARN9h4XZP7V41UWR+o=
|
||||
=6rnT
|
||||
-----END PGP SIGNATURE-----
|
3
hyperkitty-manage.sh
Normal file
3
hyperkitty-manage.sh
Normal file
@@ -0,0 +1,3 @@
|
||||
#!/bin/bash
|
||||
|
||||
sudo -u hyperkitty /usr/bin/python3 /srv/www/webapps/mailman/hyperkitty/manage.py "$@"
|
12
hyperkitty-qcluster.service
Normal file
12
hyperkitty-qcluster.service
Normal file
@@ -0,0 +1,12 @@
|
||||
[Unit]
|
||||
Description=HyperKitty async tasks runner
|
||||
After=network.target remote-fs.target
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/bin/python3 /srv/www/webapps/mailman/hyperkitty/manage.py qcluster --pythonpath /srv/www/webapps/mailman/hyperkitty/ --settings settings
|
||||
User=hyperkitty
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
|
8
hyperkitty-runjob.service
Normal file
8
hyperkitty-runjob.service
Normal file
@@ -0,0 +1,8 @@
|
||||
[Unit]
|
||||
Description=HyperKitty runjob @HYPERKITTY_RUNJOB@
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=/usr/bin/python3 /srv/www/webapps/mailman/hyperkitty/manage.py runjob @HYPERKITTY_RUNJOB@ --pythonpath /srv/www/webapps/mailman/hyperkitty/ --settings settings
|
||||
User=hyperkitty
|
||||
Group=hyperkitty
|
10
hyperkitty-runjob.timer
Normal file
10
hyperkitty-runjob.timer
Normal file
@@ -0,0 +1,10 @@
|
||||
[Unit]
|
||||
Description=HyperKitty runjob @HYPERKITTY_RUNJOB@
|
||||
|
||||
[Timer]
|
||||
@HYPERKITTY_RUNJOB_CALENDAR@
|
||||
@HYPERKITTY_RUNJOB_DELAY@
|
||||
Persistent=true
|
||||
|
||||
[Install]
|
||||
WantedBy=basic.target
|
31
hyperkitty-settings.patch
Normal file
31
hyperkitty-settings.patch
Normal file
@@ -0,0 +1,31 @@
|
||||
Index: HyperKitty-1.3.6/example_project/settings.py
|
||||
===================================================================
|
||||
--- HyperKitty-1.3.6.orig/example_project/settings.py 2022-05-19 03:16:49.000000000 +0200
|
||||
+++ HyperKitty-1.3.6/example_project/settings.py 2022-11-21 10:36:26.670671874 +0100
|
||||
@@ -134,7 +134,7 @@ DATABASES = {
|
||||
# Use 'sqlite3', 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
|
||||
'ENGINE': 'django.db.backends.sqlite3',
|
||||
# DB name or path to database file if using sqlite3.
|
||||
- 'NAME': os.path.join(BASE_DIR, 'hyperkitty.db'),
|
||||
+ 'NAME': '/var/lib/hyperkitty/data/hyperkitty.db',
|
||||
# The following settings are not used with sqlite3:
|
||||
'USER': 'hyperkitty',
|
||||
'PASSWORD': 'hkpass',
|
||||
@@ -205,7 +205,7 @@ USE_TZ = True
|
||||
# Don't put anything in this directory yourself; store your static files
|
||||
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
|
||||
# Example: "/var/www/example.com/static/"
|
||||
-STATIC_ROOT = os.path.join(BASE_DIR, 'static')
|
||||
+STATIC_ROOT = '/srv/www/webapps/mailman/hyperkitty/static'
|
||||
|
||||
# URL prefix for static files.
|
||||
# Example: "http://example.com/static/", "http://static.example.com/"
|
||||
@@ -386,7 +386,7 @@ LOGGING = {
|
||||
'level': 'INFO',
|
||||
#'class': 'logging.handlers.RotatingFileHandler',
|
||||
'class': 'logging.handlers.WatchedFileHandler',
|
||||
- 'filename': os.path.join(BASE_DIR, 'hyperkitty.log'),
|
||||
+ 'filename': '/var/log/hyperkitty/hyperkitty.log',
|
||||
'formatter': 'verbose',
|
||||
},
|
||||
'console': {
|
17
hyperkitty.uwsgi
Normal file
17
hyperkitty.uwsgi
Normal file
@@ -0,0 +1,17 @@
|
||||
[uwsgi]
|
||||
#plugin = apparmor
|
||||
#apparmor-hat = hyperkitty
|
||||
|
||||
uid = hyperkitty
|
||||
gid = hyperkitty
|
||||
|
||||
processes = 1
|
||||
threads = 25
|
||||
|
||||
socket = /run/uwsgi/uwsgi-hyperkitty.sock
|
||||
chmod-socket = 660
|
||||
chown-socket = wwwrun:www
|
||||
|
||||
plugin = python3
|
||||
chdir = /srv/www/webapps/mailman/hyperkitty
|
||||
module = wsgi
|
6
python-HyperKitty-rpmlintrc
Normal file
6
python-HyperKitty-rpmlintrc
Normal file
@@ -0,0 +1,6 @@
|
||||
addFilter("zero-length")
|
||||
addFilter("non-standard-gid")
|
||||
addFilter("non-standard-uid")
|
||||
addFilter("spurious-executable-perm .*example_project/wsgi.py")
|
||||
addFilter("hidden-file-or-dir .*example_project/logs/.keep")
|
||||
addFilter("obsolete-not-provided python3-HyperKitty")
|
401
python-HyperKitty.changes
Normal file
401
python-HyperKitty.changes
Normal file
@@ -0,0 +1,401 @@
|
||||
-------------------------------------------------------------------
|
||||
Sun Jun 23 08:37:43 UTC 2024 - Andreas Schneider <asn@cryptomilk.org>
|
||||
|
||||
- Update to version 1.3.10
|
||||
* https://gitlab.com/mailman/hyperkitty/-/releases/1.3.10
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat Mar 2 07:57:47 UTC 2024 - Andreas Schneider <asn@cryptomilk.org>
|
||||
|
||||
- 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 <code@bnavigator.de>
|
||||
|
||||
- Simplify python flavor selection
|
||||
* Go back to primary python3 on Tumbleweed
|
||||
* Use SLE15 python module pythons on 15.x
|
||||
- Build PEP517 wheel
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Feb 28 06:46:36 UTC 2024 - Andreas Schneider <asn@cryptomilk.org>
|
||||
|
||||
- Fix building on SLE15 based distributions
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat Feb 24 20:34:06 UTC 2024 - Georg Pfuetzenreuter <mail+rpm@georg-pfuetzenreuter.net>
|
||||
|
||||
- Split out system user
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Feb 23 22:20:00 UTC 2024 - Georg Pfuetzenreuter <mail+rpm@georg-pfuetzenreuter.net>
|
||||
|
||||
- Build for Python 3.12
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Nov 6 12:05:07 UTC 2023 - Marcus Rueckert <mrueckert@suse.de>
|
||||
|
||||
- forgot to use 2 defined variables:
|
||||
%{django_haystack_min_version}
|
||||
%{django_extensions_min_version}
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Nov 6 11:47:26 UTC 2023 - Marcus Rueckert <mrueckert@suse.de>
|
||||
|
||||
- make it easy to run a build without testsuite
|
||||
osc build --without=testsuite
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Nov 6 01:20:05 UTC 2023 - Marcus Rueckert <mrueckert@suse.de>
|
||||
|
||||
- ensure that we can create the user and group
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Nov 6 01:10:25 UTC 2023 - Marcus Rueckert <mrueckert@suse.de>
|
||||
|
||||
- make user and group creation verbose so we actually see errors
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Nov 6 00:05:35 UTC 2023 - Marcus Rueckert <mrueckert@suse.de>
|
||||
|
||||
- make it easier to notice to keep buildrequires and runtime
|
||||
requires version limits in sync. This will also help us to notice
|
||||
early when the version of other libraries do not match the
|
||||
requires encoded in the source code.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sun Nov 5 23:32:56 UTC 2023 - Marcus Rueckert <mrueckert@suse.de>
|
||||
|
||||
- refresh gl-mr300-add-opengraph-metadata.patch for version update
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Nov 2 09:27:37 UTC 2023 - Andreas Schneider <asn@cryptomilk.org>
|
||||
|
||||
- Update to version 1.3.8
|
||||
* See https://gitlab.com/mailman/hyperkitty/-/blob/v1.3.8/doc/news.rst
|
||||
or the file news.ret included in this package
|
||||
- Removed fix-elasticsearch8.patch
|
||||
- Updated mistune3.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Oct 5 08:21:08 UTC 2023 - Markéta Machová <mmachova@suse.com>
|
||||
|
||||
- Add mistune3.patch to fix compatibility with mistune 3.0
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sun Jul 30 03:50:42 UTC 2023 - Georg Pfuetzenreuter <georg.pfuetzenreuter@suse.com>
|
||||
|
||||
- Add upstream patch gl-mr300-add-opengraph-metadata.patch:
|
||||
* Add OpenGraph Metadata (https://gitlab.com/mailman/hyperkitty/-/merge_requests/300)
|
||||
- Add upstream patch gl-mr470-introduce-feed-filtering.patch:
|
||||
* Introduce feed filtering (https://gitlab.com/mailman/hyperkitty/-/merge_requests/470)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Jul 6 09:33:42 UTC 2023 - Andreas Schneider <asn@cryptomilk.org>
|
||||
|
||||
- Add missing dependency to whoosh
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sun Jul 2 06:29:45 UTC 2023 - Andreas Schneider <asn@cryptomilk.org>
|
||||
|
||||
- Fix uwsgi requirement
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat Jul 1 10:03:57 UTC 2023 - Andreas Schneider <asn@cryptomilk.org>
|
||||
|
||||
- Use sle15_python_module_pythons
|
||||
- Some spec file fixes
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat Jul 1 09:13:51 UTC 2023 - Andreas Schneider <asn@cryptomilk.org>
|
||||
|
||||
- Add BuildRequires for sassc
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sun Jun 18 16:12:47 UTC 2023 - Andreas Schneider <asn@cryptomilk.org>
|
||||
|
||||
- Update to version 1.3.7
|
||||
* ``hyperkitty_import`` will now import messages to a list with archiving
|
||||
disabled. (Closes #451)
|
||||
* Add support for Python 3.11.
|
||||
- Use sle15_python_module_pythons
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Apr 5 09:44:44 UTC 2023 - Andreas Schneider <asn@cryptomilk.org>
|
||||
|
||||
- Add missing requires for sassc used by manage.py
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Nov 21 09:34:53 UTC 2022 - Andreas Schneider <asn@cryptomilk.org>
|
||||
|
||||
- Update to version 1.3.6
|
||||
* Fixed an issue in hyperkitty_import with an empty Message-ID. (Closes #396)
|
||||
* Set Q_CLUSTER retry > timeout in example_project. (Closes #402)
|
||||
* Set DEFAULT_AUTO_FIELD to silence errors with Django >= 3.2.
|
||||
* Require mistune >= 2.0.0 and fix a problem with importing from it. (Closes
|
||||
#395)
|
||||
* Adapt parsing of emails to be compatible with python 3.10. (Closes #401)
|
||||
* Add gitlab-ci integration for python 3.10.
|
||||
* Skip lists with private archives in the find list search. (Closes #237)
|
||||
* Add a new setting HYPERKITTY_MBOX_EXPORT which, when set to false, removes
|
||||
the :guilabel:`Download` button and disables the export view. ( Fixes #386)
|
||||
* Return 400 instead of 500 when the sort mode is invalid. (Fixes #270)
|
||||
* Allow HyperKitty to find attachments in either the database or the
|
||||
HYPERKITTY_ATTACHMENT_FOLDER. (Closes #213)
|
||||
* Implemented a new attachments_to_file management command to move attachment
|
||||
content to the file system after setting HYPERKITTY_ATTACHMENT_FOLDER.
|
||||
(Closes #413)
|
||||
* Handle exception when a banned address tries to post. (Fixes #325)
|
||||
* Add an index on the 'name' column (fqdn)for the MailingList table since it
|
||||
is most frequently used to query the MailingList object.
|
||||
* Add the ability to view a thread without Javascript enabled. This uses the
|
||||
same mechanism we use with bot-detection and rendering of the entire page
|
||||
at once, which will be slow to load but allow reading. (See #422)
|
||||
* Improve the performance of the thread view for logged-in users by
|
||||
optimizing the total database calls made. (See !409)
|
||||
* Add support for Django <= 4.1
|
||||
* Remove support for Django < 3.2
|
||||
* Remove support for Python 3.6
|
||||
* Fix tests to be compatible with Python 3.10
|
||||
* Replace use of mock with unittest.mock in all tests. (Closes #429)
|
||||
* The check for writability of HYPERKITTY_ATTACHMENT_FOLDER when set has been
|
||||
improved to avoid a potential race condition. (Closes #389)
|
||||
- Run complete testsuite with pytest
|
||||
- Removed hyperkitty-django4.patch
|
||||
- Removed hyperkitty-fix-mistune-2.0-imports.patch
|
||||
- Removed python-HyperKitty-no-mock.patch
|
||||
- Removed hyperkitty-fix-qcluster-timeout.patch
|
||||
- Removed hyperkitty-fix-py310-tests.patch
|
||||
- Removed fix-django41.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Oct 6 12:07:43 UTC 2022 - Daniel Garcia <daniel.garcia@suse.com>
|
||||
|
||||
- Add fix-django41.patch to fix issues with django4.1
|
||||
- Add fix-elasticsearch8.patch to fix issues with elasticsearch 8.0.0
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Jul 4 11:02:04 UTC 2022 - Ben Greiner <code@bnavigator.de>
|
||||
|
||||
- Rename the built package to python prefixless HyperKitty
|
||||
* Doesn't imply any false impression of multiflavor
|
||||
- Go back to python39 -- highest supported Python by mailman
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sun Jul 3 20:46:20 UTC 2022 - Ben Greiner <code@bnavigator.de>
|
||||
|
||||
- Add hyperkitty-fix-py310-tests.patch
|
||||
* Fix test failures on Python 3.10 (and Python 3.9.13)
|
||||
* https://gitlab.com/mailman/hyperkitty/-/issues/401
|
||||
* https://gitlab.com/mailman/hyperkitty/-/merge_requests/381
|
||||
* https://gitlab.com/mailman/hyperkitty/-/merge_requests/449
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat Jul 2 06:12:09 UTC 2022 - Andreas Schneider <asn@cryptomilk.org>
|
||||
|
||||
- Fix django warning that timeout is bigger than retry
|
||||
* Added hyperkitty-fix-qcluster-timeout.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Jun 10 08:14:18 UTC 2022 - Andreas Schneider <asn@cryptomilk.org>
|
||||
|
||||
- First Make migrations on update, then call migrate
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu May 26 09:19:37 UTC 2022 - pgajdos@suse.com
|
||||
|
||||
- do not require python-mock for build
|
||||
- added patches
|
||||
fix https://gitlab.com/mailman/hyperkitty/-/issues/429
|
||||
+ python-HyperKitty-no-mock.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Dec 28 07:02:11 UTC 2021 - John Vandenberg <jayvdb@gmail.com>
|
||||
|
||||
- Add hyperkitty-django4.patch to support Django 4
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Dec 17 10:25:31 UTC 2021 - Matej Cepl <mcepl@suse.com>
|
||||
|
||||
- Add hyperkitty-fix-mistune-2.0-imports.patch ... two function
|
||||
moved in mistune 2.0 (gl#mailman/hyperkitty#379).
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Dec 16 15:11:02 UTC 2021 - Sasi Olin <hel@lcp.world>
|
||||
|
||||
- Add a patch that fixes compatibility with the full release of mistune 2.0
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Nov 17 08:30:52 UTC 2021 - Andreas Schneider <asn@cryptomilk.org>
|
||||
|
||||
- Update to version 1.3.5
|
||||
* https://gitlab.com/mailman/hyperkitty/-/blob/1.3.5/doc/news.rst
|
||||
- Fixes CVE-2021-35057
|
||||
- Removed obsolete python-HyperKitty-CVE-2021-33038.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Jun 2 18:33:55 UTC 2021 - Andreas Schneider <asn@cryptomilk.org>
|
||||
|
||||
- Fix log dir permissions
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Jun 2 12:25:48 UTC 2021 - pgajdos@suse.com
|
||||
|
||||
- security update
|
||||
- added patches
|
||||
fix CVE-2021-33038 [bsc#1186575], information disclosure when importing a private mailing list
|
||||
+ python-HyperKitty-CVE-2021-33038.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed May 26 14:04:05 UTC 2021 - Andreas Schneider <asn@cryptomilk.org>
|
||||
|
||||
- Remove the hyperkitty-admin user
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue May 25 18:55:19 UTC 2021 - Andreas Schneider <asn@cryptomilk.org>
|
||||
|
||||
- Create static files as part of the build process
|
||||
- Fixed CVE-2021-25322
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue May 4 09:31:59 UTC 2021 - Ben Greiner <code@bnavigator.de>
|
||||
|
||||
- restrict to primary python3 flavor due to mailman
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Feb 3 12:29:57 UTC 2021 - Andreas Schneider <asn@cryptomilk.org>
|
||||
|
||||
- Update to version 1.3.4
|
||||
* Sync owners and moderators from Mailman Core for MailingList. (Fixes #302)
|
||||
* Implemented a new HYPERKITTY_JOBS_UPDATE_INDEX_LOCK_LIFE setting to set the
|
||||
lock lifetime for the update_and_clean_index job. (Closes #300)
|
||||
* Implemented a new HYPERKITTY_ALLOW_WEB_POSTING that allows disabling the
|
||||
web posting feature. (Closes #264)
|
||||
* Add the ability to disable Gravatar using HYPERKITTY_ENABLE_GRAVATAR
|
||||
settings. (Closes #303)
|
||||
* Replaced deprecated ugettext functions with gettext. (Closes #310)
|
||||
* Fix export of Email message where the In-Reply-To header doesn’t include
|
||||
the <> brackets. (Closes #331)
|
||||
* We now catch a few more exceptions in hyperkitty_import when getting
|
||||
messages from a mbox. (Closes #313 and #314)
|
||||
* Added a new contrib/check_hk_import script to check mboxes before running
|
||||
hyperkitty_import.
|
||||
* We now ignore a ValueError in hyperkitty_import when trying to replace a
|
||||
Subject: header. (Closes #317)
|
||||
* hyperkitty_import now includes the mbox name in error messages when
|
||||
importing multiple mboxes. (Closes #318)
|
||||
* `` at `` is now only replaced with @ in From: header values when necessary
|
||||
and not unconditionally. (Closes #320)
|
||||
* The wildcard notation for any host '*' is now supported into
|
||||
MAILMAN_ARCHVER_FROM to disable Hyperkitty clients IP checking.
|
||||
* Join the searchbar and search button like it was before bootstrap 4
|
||||
migration. (See !301)
|
||||
* Use the umd builds for popper.js instead of the regular ones. (See !309)
|
||||
* Exceptions thrown by smtplib in sending replies are now caught and give an
|
||||
appropriate error message. (Closes #309)
|
||||
- Removed hyperkitty-fix-tests.patch
|
||||
- Fixed build on tumbleweed
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Dec 28 08:32:51 UTC 2020 - Andreas Schneider <asn@cryptomilk.org>
|
||||
|
||||
- Fix quarter hourly timer
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sun Dec 20 14:37:27 UTC 2020 - Andreas Schneider <asn@cryptomilk.org>
|
||||
|
||||
- Fix access to CACHE dir
|
||||
- Improve documentation (README.SUSE.md)
|
||||
- Fix quaterly timer and service
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sun Dec 13 11:16:18 UTC 2020 - Andreas Schneider <asn@cryptomilk.org>
|
||||
|
||||
- Added hyperkitty-qcluster.service
|
||||
- Added hyperkitty-runjob.service and hyperkitty-runjob.timer
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat Dec 12 19:43:44 UTC 2020 - Andreas Schneider <asn@cryptomilk.org>
|
||||
|
||||
- Create a HyperKitty-web package with webroot files
|
||||
- Create a HyperKitty-web-uwsgi with uwsgi configuration
|
||||
- Added hyperkitty-settings.patch
|
||||
* Sets the FHS default paths
|
||||
- Added hyperkitty-fix-tests.patch
|
||||
* Make migration compatible with django >= 3.1
|
||||
- Added rpmlint config
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Aug 4 01:35:17 UTC 2020 - Stasiek Michalski <stasiek@michalski.cc>
|
||||
|
||||
- Version update to 1.3.3
|
||||
* Allow SHOW_INACTIVE_LISTS_DEFAULT setting to be configurable. (Closes #276)
|
||||
* Fix a bug where the user couldn’t chose the address to send reply or new post as. (Closes #288)
|
||||
* Improve the Django admin command reference from hyperkitty_import. (Closes #281)
|
||||
* Fix FILTER_VHOST to work with web hosts other than the email host. (Closes #254)
|
||||
* Fixed a bug where export can fail if certain headers are wrapped. (Closes #292)
|
||||
* Fixed hyperkitty_import to allow odd line endings in a folded message subject. (Closes #280)
|
||||
* Fixed a bug that could throw an IndexError when exporting messages. (Closes #293)
|
||||
* Use errors='replace' when encoding attachments. (Closes #294)
|
||||
- Drop merged python-HyperKitty-remove-legacy-use-of-available_attrs.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu May 14 12:57:07 UTC 2020 - pgajdos@suse.com
|
||||
|
||||
- version update to 1.3.2
|
||||
- Remove support for Django 1.11. (Closes #273)
|
||||
- Skip ``Thread.DoesNotExist`` exception when raised within
|
||||
``rebuild_thread_cache_votes``. (Closes #245)
|
||||
- Send 400 status code for ``ValueError`` when archiving. (Closes #271)
|
||||
- Fix a bug where exception for elasticsearch backend would not be caught. (Closes #263)
|
||||
- added patches
|
||||
https://gitlab.com/mailman/hyperkitty/-/commit/03c99ad5beefeac4474b5a00c840fd9debccba02
|
||||
+ python-HyperKitty-remove-legacy-use-of-available_attrs.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Jan 10 12:30:33 UTC 2020 - pgajdos@suse.com
|
||||
|
||||
- fix dependency (django_compressor -> django-compressor)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Dec 10 14:34:40 UTC 2019 - pgajdos@suse.com
|
||||
|
||||
- version update to 1.3.1
|
||||
* Add support to delete mailing list. (Closes #3)
|
||||
* Fix a bug where messages with attachments would skip adding the body when
|
||||
exporting the email. (Closes #252)
|
||||
* Fix a bug where exporting mbox with messages that have attachments saved
|
||||
to disk would raise exception and return a corrupt mbox. (Closes #258)
|
||||
* Fix a bug where downloaded attachments are returned as a memoryview object
|
||||
instead of bytes and hence fail to download. (Closes #247)
|
||||
* Fix a bug where migrations would fail with exceptions on postgresl. (Closes
|
||||
#266)
|
||||
* Add support for Django 3.0.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Dec 2 10:47:13 UTC 2019 - pgajdos@suse.com
|
||||
|
||||
- call spec-cleaner
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Nov 27 13:38:35 UTC 2019 - pgajdos@suse.com
|
||||
|
||||
- package documentation
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Nov 27 13:09:09 UTC 2019 - pgajdos@suse.com
|
||||
|
||||
- require python-libsass
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Nov 14 20:58:30 UTC 2019 - pgajdos@suse.com
|
||||
|
||||
- run the testsuite correctly
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Oct 1 09:06:27 UTC 2019 - pgajdos@suse.com
|
||||
|
||||
- initial version 1.3.0 [SLE-7686]
|
||||
|
90
python-HyperKitty.keyring
Normal file
90
python-HyperKitty.keyring
Normal file
@@ -0,0 +1,90 @@
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
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
|
||||
13uS0qfwHEvxfNbR011PQGPf7eD4e4i0uh4IcTw=
|
||||
=s7HB
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
423
python-HyperKitty.spec
Normal file
423
python-HyperKitty.spec
Normal file
@@ -0,0 +1,423 @@
|
||||
#
|
||||
# spec file for package python-HyperKitty
|
||||
#
|
||||
# Copyright (c) 2024 SUSE LLC
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
# upon. The license for this file, and modifications and additions to the
|
||||
# file, is the same license as for the pristine package itself (unless the
|
||||
# license for the pristine package is not an Open Source License, in which
|
||||
# case the license is the MIT License). An "Open Source License" is a
|
||||
# license that conforms to the Open Source Definition (Version 1.9)
|
||||
# published by the Open Source Initiative.
|
||||
|
||||
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
||||
#
|
||||
|
||||
|
||||
%bcond_without testsuite
|
||||
|
||||
# keep in sync with setup.py
|
||||
%global django_min_version 3.2
|
||||
%global django_max_version 4.3
|
||||
%global django_mailman3_min_version 1.3.13
|
||||
%global django_gravatar2_min_version 1.0.6
|
||||
%global djangorestframework_min_version 3.0.0
|
||||
%global robot_detection_min_version 0.3
|
||||
%global pytz_min_version 2012
|
||||
%global django_compressor_min_version 1.3
|
||||
%global mailmanclient_min_version 3.3.3
|
||||
# original this was >= 2.0.0, < 3.0 but overwritten by mistune3.patch
|
||||
%global mistune_min_version 3.0
|
||||
%global python_dateutil_min_version 2.0
|
||||
%global networkx_min_version 2.0
|
||||
%global django_haystack_min_version 2.8.0
|
||||
%global django_extensions_min_version 1.3.7
|
||||
%global flufl_lock_min_version 4.0
|
||||
%global django_q_min_version 1.0.0
|
||||
|
||||
%global webapps_dir /srv/www/webapps
|
||||
|
||||
%global hyperkitty_pkgname HyperKitty
|
||||
%global lowname hyperkitty
|
||||
|
||||
%global hyperkitty_basedir %{webapps_dir}/mailman/hyperkitty
|
||||
%global hyperkitty_localedir %{hyperkitty_basedir}/locale
|
||||
%global hyperkitty_staticdir %{hyperkitty_basedir}/static
|
||||
|
||||
%global hyperkitty_etcdir %{_sysconfdir}/hyperkitty
|
||||
%global hyperkitty_libdir %{_localstatedir}/lib/hyperkitty
|
||||
%global hyperkitty_logdir %{_localstatedir}/log/hyperkitty
|
||||
%global hyperkitty_datadir %{hyperkitty_libdir}/data
|
||||
|
||||
%global hyperkitty_services hyperkitty-qcluster.service hyperkitty-runjob-daily.service hyperkitty-runjob-daily.timer hyperkitty-runjob-hourly.service hyperkitty-runjob-hourly.timer hyperkitty-runjob-minutely.service hyperkitty-runjob-minutely.timer hyperkitty-runjob-monthly.service hyperkitty-runjob-monthly.timer hyperkitty-runjob-quarter-hourly.service hyperkitty-runjob-quarter-hourly.timer hyperkitty-runjob-weekly.service hyperkitty-runjob-weekly.timer hyperkitty-runjob-yearly.service hyperkitty-runjob-yearly.timer
|
||||
|
||||
# keep in sync with python-postorius/python-mailman-web
|
||||
# Always only build one flavor: primary python for TW, python311 from the SLE15 python module for 15.x
|
||||
%if 0%{?suse_version} >= 1550
|
||||
%define pythons python3
|
||||
%else
|
||||
%{?sle15_python_module_pythons}
|
||||
%endif
|
||||
%global mypython %pythons
|
||||
%global mypython_sitelib %{expand:%%{%{mypython}_sitelib}}
|
||||
%global __mypython %{expand:%%{__%{mypython}}}
|
||||
%define plainpython python
|
||||
|
||||
Name: python-HyperKitty
|
||||
Version: 1.3.10
|
||||
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://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
|
||||
#
|
||||
Source20: hyperkitty-qcluster.service
|
||||
Source21: hyperkitty-runjob.service
|
||||
Source22: hyperkitty-runjob.timer
|
||||
#
|
||||
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 gl-mr300-add-opengraph-metadata.patch gl#mailman/hyperkitty#300
|
||||
Patch98: gl-mr300-add-opengraph-metadata.patch
|
||||
# PATCH-FIX-UPSTREAM gl-mr470-introduce-feed-filtering.patch gl#mailman/hyperkitty#470
|
||||
Patch99: gl-mr470-introduce-feed-filtering.patch
|
||||
#
|
||||
BuildRequires: %{python_module Django >= %{django_min_version} with %python-Django < %{django_max_version}}
|
||||
BuildRequires: %{python_module Whoosh}
|
||||
BuildRequires: %{python_module django-compressor >= %{django_compressor_min_version}}
|
||||
BuildRequires: %{python_module django-debug-toolbar >= 2.2}
|
||||
BuildRequires: %{python_module django-extensions >= %{django_extensions_min_version}}
|
||||
BuildRequires: %{python_module django-gravatar2 >= %{django_gravatar2_min_version}}
|
||||
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}
|
||||
BuildRequires: %{python_module xapian-haystack >= 2.1.0}
|
||||
BuildRequires: acl
|
||||
BuildRequires: fdupes
|
||||
BuildRequires: openssl
|
||||
BuildRequires: python-rpm-macros
|
||||
BuildRequires: rsync
|
||||
BuildRequires: sassc
|
||||
BuildRequires: sudo
|
||||
BuildArch: noarch
|
||||
%if 0%{?suse_version} >= 1550
|
||||
# use the real python3 primary for rpm pythondistdeps.py
|
||||
BuildRequires: python3-packaging
|
||||
%endif
|
||||
# SECTION test requirements
|
||||
BuildRequires: %{python_module Whoosh >= 2.5.7}
|
||||
BuildRequires: %{python_module beautifulsoup4 >= 4.3.2}
|
||||
BuildRequires: %{python_module django-haystack >= %{django_haystack_min_version}}
|
||||
BuildRequires: %{python_module django-mailman3 >= %{django_mailman3_min_version}}
|
||||
BuildRequires: %{python_module django-q >= %{django_q_min_version}}
|
||||
BuildRequires: %{python_module djangorestframework >= %{djangorestframework_min_version}}
|
||||
BuildRequires: %{python_module elasticsearch}
|
||||
BuildRequires: %{python_module flufl.lock >= %{flufl_lock_min_version}}
|
||||
BuildRequires: %{python_module lxml}
|
||||
BuildRequires: %{python_module mistune >= %{mistune_min_version}}
|
||||
BuildRequires: %{python_module networkx >= %{networkx_min_version}}
|
||||
BuildRequires: %{python_module pytest-django}
|
||||
BuildRequires: %{python_module pytest}
|
||||
BuildRequires: %{python_module python-dateutil >= %{python_dateutil_min_version}}
|
||||
BuildRequires: %{python_module pytz >= %{pytz_min_version}}
|
||||
BuildRequires: %{python_module robot-detection >= %{robot_detection_min_version}}
|
||||
# /SECTION
|
||||
|
||||
%description
|
||||
A web interface to access GNU Mailman v3 archives.
|
||||
|
||||
%package -n %{hyperkitty_pkgname}
|
||||
Summary: A web interface to access GNU Mailman v3 archives
|
||||
# important sync with
|
||||
Requires: (%{mypython}-Django >= %{django_min_version} with %{mypython}-Django < %{django_max_version})
|
||||
Requires: %{mypython}-django-compressor >= %{django_compressor_min_version}
|
||||
Requires: %{mypython}-django-debug-toolbar >= 2.2
|
||||
Requires: %{mypython}-django-extensions >= %{django_extensions_min_version}
|
||||
Requires: %{mypython}-django-gravatar2 >= %{django_gravatar2_min_version}
|
||||
Requires: %{mypython}-django-haystack >= 2.8.0
|
||||
Requires: %{mypython}-django-mailman3 >= %{django_mailman3_min_version}
|
||||
Requires: %{mypython}-django-q >= %{django_q_min_version}
|
||||
Requires: %{mypython}-djangorestframework >= %{djangorestframework_min_version}
|
||||
Requires: %{mypython}-flufl.lock >= %{flufl_lock_min_version}
|
||||
Requires: %{mypython}-mailmanclient >= %{mailmanclient_min_version}
|
||||
Requires: %{mypython}-mistune >= %{mistune_min_version}
|
||||
Requires: %{mypython}-networkx >= %{networkx_min_version}
|
||||
Requires: %{mypython}-python-dateutil >= %{python_dateutil_min_version}
|
||||
Requires: %{mypython}-pytz >= %{pytz_min_version}
|
||||
Requires: %{mypython}-robot-detection >= %{robot_detection_min_version}
|
||||
Requires: %{mypython}-xapian-haystack >= %{django_haystack_min_version}
|
||||
# help in replacing any previously installed flavor package back to the unprefixed package
|
||||
%if 0%{?suse_version} < 1550
|
||||
Obsoletes: python3-%{hyperkitty_pkgname} < %{version}-%{release}
|
||||
%endif
|
||||
Provides: %{mypython}-%{hyperkitty_pkgname} = %{version}-%{release}
|
||||
Obsoletes: %{mypython}-%{hyperkitty_pkgname} < %{version}-%{release}
|
||||
%if 0%{?suse_version} >= 1550
|
||||
Requires: sassc
|
||||
%endif
|
||||
|
||||
%description -n %{hyperkitty_pkgname}
|
||||
A web interface to access GNU Mailman v3 archives.
|
||||
|
||||
%package -n %{hyperkitty_pkgname}-web
|
||||
Summary: The webroot for GNU Mailman
|
||||
Requires: %{hyperkitty_pkgname}
|
||||
Requires: acl
|
||||
Requires: openssl
|
||||
Requires: sudo
|
||||
Requires: system-user-%{lowname}
|
||||
|
||||
%description -n %{hyperkitty_pkgname}-web
|
||||
A web user interface for GNU Mailman.
|
||||
|
||||
This package holds the web interface.
|
||||
|
||||
%package -n %{hyperkitty_pkgname}-web-uwsgi
|
||||
Summary: HyperKitty - uwsgi configuration
|
||||
Requires: %{hyperkitty_pkgname}-web
|
||||
%if 0%{suse_version} >= 1550 || 0%{?sle_version} >= 150500
|
||||
Requires: %{mypython}-uwsgi-python3
|
||||
%else
|
||||
Requires: uwsgi-python3
|
||||
%endif
|
||||
|
||||
%description -n %{hyperkitty_pkgname}-web-uwsgi
|
||||
A web user interface for GNU Mailman.
|
||||
|
||||
This package holds the uwsgi configuration.
|
||||
|
||||
%package -n system-user-%{lowname}
|
||||
Summary: System user for HyperKitty
|
||||
BuildArch: noarch
|
||||
BuildRequires: sysuser-tools
|
||||
%sysusers_requires
|
||||
|
||||
%description -n system-user-%{lowname}
|
||||
System user for HyperKitty.
|
||||
|
||||
%prep
|
||||
%setup -n hyperkitty-%{version}
|
||||
cp %{SOURCE30} .
|
||||
touch settings_local.py
|
||||
|
||||
# Copy example_project to just build the static files
|
||||
rsync -a example_project/* build_static_files
|
||||
|
||||
%autopatch -p1
|
||||
|
||||
tee > %{lowname}.sysuser <<EOF
|
||||
u %{lowname} - "HyperKitty" %{hyperkitty_basedir} -
|
||||
EOF
|
||||
|
||||
%build
|
||||
sed -i 's|^#!/usr/bin/env.*|#!%{__mypython}|' \
|
||||
example_project/manage.py
|
||||
sed -i 's|/usr/bin/python3|%{__mypython}|' %{SOURCE10} %{SOURCE20} %{SOURCE21}
|
||||
sed -i 's|python3|%{mypython}|' %{SOURCE12}
|
||||
|
||||
%pyproject_wheel
|
||||
|
||||
# Build static files
|
||||
export PYTHONPATH=$(pwd)
|
||||
%python_exec build_static_files/manage.py collectstatic --clear --noinput
|
||||
%python_exec build_static_files/manage.py compress --force
|
||||
|
||||
%sysusers_generate_pre %{lowname}.sysuser %{lowname}
|
||||
|
||||
%install
|
||||
install -d -m 0750 \
|
||||
%{buildroot}%{hyperkitty_etcdir} \
|
||||
%{buildroot}%{hyperkitty_libdir} \
|
||||
%{buildroot}%{hyperkitty_datadir} \
|
||||
%{buildroot}%{hyperkitty_datadir}/attachments \
|
||||
%{buildroot}%{hyperkitty_logdir}
|
||||
|
||||
install -d -m 0755 \
|
||||
%{buildroot}%{hyperkitty_basedir} \
|
||||
%{buildroot}%{hyperkitty_localedir} \
|
||||
%{buildroot}%{hyperkitty_staticdir} \
|
||||
%{buildroot}%{hyperkitty_staticdir}/CACHE \
|
||||
%{buildroot}%{_unitdir}
|
||||
|
||||
%pyproject_install
|
||||
%python_expand %fdupes %{buildroot}%{$python_sitelib}
|
||||
|
||||
# Copy static files
|
||||
rsync -a build_static_files/static %{buildroot}%{hyperkitty_basedir}
|
||||
# Remove the directory
|
||||
%python_expand rm -rf %{buildroot}%{$python_sitelib}/build_static_files
|
||||
|
||||
rsync -a example_project/* %{buildroot}%{hyperkitty_basedir}
|
||||
chmod -x %{buildroot}%{hyperkitty_basedir}/wsgi.py
|
||||
|
||||
for f in \
|
||||
README.rst \
|
||||
apache.conf \
|
||||
crontab \
|
||||
qcluster.service \
|
||||
; do
|
||||
rm -f %{buildroot}%{hyperkitty_basedir}/$f
|
||||
done
|
||||
rm -f %{buildroot}%{hyperkitty_localedir}/.keep
|
||||
rm -f %{buildroot}%{hyperkitty_basedir}/logs/.keep
|
||||
|
||||
%python_expand rm -rf %{buildroot}%{$python_sitelib}/example_project
|
||||
|
||||
# Create an empty settings_local.py. This will be filled with a SECRET_KEY in post
|
||||
install -m 0644 settings_local.py %{buildroot}%{hyperkitty_etcdir}/settings_local.py
|
||||
|
||||
ln -svf %{hyperkitty_etcdir}/settings_local.py \
|
||||
%{buildroot}/%{hyperkitty_basedir}/settings_local.py
|
||||
|
||||
%fdupes %{buildroot}%{hyperkitty_basedir}
|
||||
|
||||
# Manage script
|
||||
install -d -m 0755 %{buildroot}%{_sbindir}
|
||||
install -m 0755 %{SOURCE10} %{buildroot}%{_sbindir}/hyperkitty-manage
|
||||
|
||||
install -d -m 0755 %{buildroot}%{_sysconfdir}/uwsgi/vassals
|
||||
install -m 0644 %{SOURCE12} %{buildroot}%{_sysconfdir}/uwsgi/vassals/hyperkitty.ini
|
||||
|
||||
install -m 0644 %{SOURCE20} %{buildroot}%{_unitdir}/hyperkitty-qcluster.service
|
||||
ln -s /sbin/service %{buildroot}%{_sbindir}/rchyperkitty-qcluster
|
||||
|
||||
for job in \
|
||||
minutely \
|
||||
quarter-hourly \
|
||||
hourly \
|
||||
daily \
|
||||
weekly \
|
||||
monthly \
|
||||
yearly \
|
||||
; do
|
||||
install -m 0644 %{SOURCE21} %{buildroot}%{_unitdir}/hyperkitty-runjob-${job}.service
|
||||
sed -i "s/@HYPERKITTY_RUNJOB@/${job}/g" %{buildroot}%{_unitdir}/hyperkitty-runjob-${job}.service
|
||||
ln -s /sbin/service %{buildroot}%{_sbindir}/rchyperkitty-runjob-${job}
|
||||
|
||||
install -m 0644 %{SOURCE22} %{buildroot}%{_unitdir}/hyperkitty-runjob-${job}.timer
|
||||
|
||||
hyperkitty_runjob_calendar="OnCalendar=${job}"
|
||||
hyperkitty_runjob_delay="RandomizedDelaySec=15m"
|
||||
hyperkitty_runjob_name="${job}"
|
||||
|
||||
if [ "${job}" = "minutely" ]; then
|
||||
hyperkitty_runjob_delay="RandomizedDelaySec=15s"
|
||||
elif [ "${job}" = "quarter-hourly" ]; then
|
||||
hyperkitty_runjob_calendar="OnCalendar=*:0/15"
|
||||
hyperkitty_runjob_delay="RandomizedDelaySec=2m"
|
||||
# The real jobname is with an underscore
|
||||
hyperkitty_runjob_name="quarter_hourly"
|
||||
fi
|
||||
sed -i "s#@HYPERKITTY_RUNJOB_CALENDAR@#${hyperkitty_runjob_calendar}#g" %{buildroot}%{_unitdir}/hyperkitty-runjob-${job}.timer
|
||||
sed -i "s#@HYPERKITTY_RUNJOB_DELAY@#${hyperkitty_runjob_delay}#g" %{buildroot}%{_unitdir}/hyperkitty-runjob-${job}.timer
|
||||
sed -i "s#@HYPERKITTY_RUNJOB@#${hyperkitty_runjob_name}#g" %{buildroot}%{_unitdir}/hyperkitty-runjob-${job}.timer
|
||||
done
|
||||
|
||||
install -Dm644 %{lowname}.sysuser %{buildroot}%{_sysusersdir}/%{lowname}.conf
|
||||
|
||||
%if %{with testuite}
|
||||
%check
|
||||
export PYTHONPATH="$(pwd)"
|
||||
export LANG=C.UTF-8
|
||||
%pytest
|
||||
%endif
|
||||
|
||||
%pre -n %{hyperkitty_pkgname}-web
|
||||
%service_add_pre %{hyperkitty_services}
|
||||
|
||||
%pre -n system-user-%{lowname} -f %{lowname}.pre
|
||||
|
||||
%post -n %{hyperkitty_pkgname}-web
|
||||
# We need a SECRET_KEY for manage to work
|
||||
if ! grep -q "^SECRET_KEY.*" %{hyperkitty_etcdir}/settings_local.py; then
|
||||
echo "SECRET_KEY='$(openssl rand -base64 48)'" >> %{hyperkitty_etcdir}/settings_local.py
|
||||
fi
|
||||
%{_sbindir}/hyperkitty-manage makemigrations --pythonpath /srv/www/webapps/mailman/hyperkitty/ --settings settings
|
||||
%{_sbindir}/hyperkitty-manage migrate --pythonpath /srv/www/webapps/mailman/hyperkitty/ --settings settings
|
||||
|
||||
%service_add_post %{hyperkitty_services}
|
||||
|
||||
%preun -n %{hyperkitty_pkgname}-web
|
||||
%service_del_preun %{hyperkitty_services}
|
||||
|
||||
%postun -n %{hyperkitty_pkgname}-web
|
||||
%service_del_postun %{hyperkitty_services}
|
||||
|
||||
%files -n %{hyperkitty_pkgname}
|
||||
%doc AUTHORS.txt README.rst example_project
|
||||
%license COPYING.txt
|
||||
%{mypython_sitelib}/hyperkitty
|
||||
%{mypython_sitelib}/hyperkitty-%{version}*-info
|
||||
|
||||
%files -n %{hyperkitty_pkgname}-web
|
||||
%doc README.SUSE.md
|
||||
%{_sbindir}/hyperkitty-manage
|
||||
%{_sbindir}/rchyperkitty-qcluster
|
||||
%{_sbindir}/rchyperkitty-runjob-*
|
||||
%dir %{webapps_dir}
|
||||
%dir %{webapps_dir}/mailman
|
||||
%{_unitdir}/hyperkitty-qcluster.service
|
||||
%{_unitdir}/hyperkitty-runjob-*.service
|
||||
%{_unitdir}/hyperkitty-runjob-*.timer
|
||||
|
||||
%defattr(-,root,hyperkitty)
|
||||
%dir %{hyperkitty_basedir}
|
||||
%{hyperkitty_basedir}/__init__.py
|
||||
%{hyperkitty_basedir}/manage.py
|
||||
%{hyperkitty_basedir}/settings.py
|
||||
%{hyperkitty_basedir}/settings_local.py
|
||||
%{hyperkitty_basedir}/urls.py
|
||||
%{hyperkitty_basedir}/wsgi.py
|
||||
|
||||
%dir %{hyperkitty_basedir}/static
|
||||
%{hyperkitty_basedir}/static/admin
|
||||
%{hyperkitty_basedir}/static/debug_toolbar
|
||||
%{hyperkitty_basedir}/static/django-mailman3
|
||||
%{hyperkitty_basedir}/static/django_extensions
|
||||
%{hyperkitty_basedir}/static/hyperkitty
|
||||
%{hyperkitty_basedir}/static/rest_framework
|
||||
|
||||
# The wsgi needs to write to static/CACHE
|
||||
%attr(755,hyperkitty,hyperkitty) %dir %{hyperkitty_basedir}/static/CACHE
|
||||
%attr(644,hyperkitty,hyperkitty) %{hyperkitty_basedir}/static/CACHE/manifest.json
|
||||
|
||||
%attr(755,hyperkitty,hyperkitty) %dir %{hyperkitty_basedir}/static/CACHE/css
|
||||
%attr(644,hyperkitty,hyperkitty) %{hyperkitty_basedir}/static/CACHE/css/output.*.css
|
||||
|
||||
%attr(755,hyperkitty,hyperkitty) %dir %{hyperkitty_basedir}/static/CACHE/js
|
||||
%attr(644,hyperkitty,hyperkitty) %{hyperkitty_basedir}/static/CACHE/js/output.*.js
|
||||
|
||||
%dir %{hyperkitty_localedir}
|
||||
|
||||
%attr(750,root,hyperkitty) %dir %{hyperkitty_etcdir}
|
||||
%attr(640,root,hyperkitty) %config(noreplace) %{hyperkitty_etcdir}/settings_local.py
|
||||
%attr(750,root,hyperkitty) %dir %{hyperkitty_libdir}
|
||||
%attr(750,hyperkitty,hyperkitty) %dir %{hyperkitty_datadir}
|
||||
%attr(770,hyperkitty,hyperkitty) %dir %{hyperkitty_logdir}
|
||||
|
||||
%files -n %{hyperkitty_pkgname}-web-uwsgi
|
||||
%dir %{_sysconfdir}/uwsgi
|
||||
%dir %{_sysconfdir}/uwsgi/vassals
|
||||
%config (noreplace) %{_sysconfdir}/uwsgi/vassals/hyperkitty.ini
|
||||
|
||||
%files -n system-user-%{lowname}
|
||||
%{_sysusersdir}/%{lowname}.conf
|
||||
|
||||
%changelog
|
Reference in New Issue
Block a user