mirror of
https://github.com/boostorg/website-v2.git
synced 2026-01-19 04:42:17 +00:00
Remove old code for mailing list. (#1363)
- Remove old templates, views, urls, tests and models - Per #204, this project was abandoned. - We will query and save aggregated stats from hyperkitty in a future commit, in #1289
This commit is contained in:
@@ -36,7 +36,6 @@ from libraries.views import (
|
||||
LibraryListByCategory,
|
||||
LibraryListMini,
|
||||
)
|
||||
from mailing_list.views import MailingListDetailView, MailingListView
|
||||
from news.feeds import AtomNewsFeed, RSSNewsFeed
|
||||
from news.views import (
|
||||
AllTypesCreateView,
|
||||
@@ -169,12 +168,6 @@ urlpatterns = (
|
||||
LibraryDetail.as_view(redirect_to_docs=True),
|
||||
name="library-docs-redirect",
|
||||
),
|
||||
path(
|
||||
"mailing-list/<int:pk>/",
|
||||
MailingListDetailView.as_view(),
|
||||
name="mailing-list-detail",
|
||||
),
|
||||
path("mailing-list/", MailingListView.as_view(), name="mailing-list"),
|
||||
path("news/", EntryListView.as_view(), name="news"),
|
||||
path("news/blogpost/", BlogPostListView.as_view(), name="news-blogpost-list"),
|
||||
path("news/link/", LinkListView.as_view(), name="news-link-list"),
|
||||
|
||||
@@ -1,59 +0,0 @@
|
||||
import random
|
||||
from django.core.management.base import BaseCommand
|
||||
from django.utils import timezone
|
||||
from model_bakery import baker
|
||||
|
||||
from mailing_list.models import MailingListMessage
|
||||
|
||||
subjects = [
|
||||
"Re: Master is open for merges",
|
||||
"Re: Suggestion for ccmath library",
|
||||
"Re: Update on boost::asio",
|
||||
"Re: boost::python issue",
|
||||
"Re: boost::filesystem question",
|
||||
"Re: boost::mpl - New release?",
|
||||
"Re: boost::log - Configuration",
|
||||
]
|
||||
|
||||
sender_displays = [
|
||||
"Oliver Smith",
|
||||
"Sophia Johnson",
|
||||
"Liam Williams",
|
||||
"Ava Taylor",
|
||||
"Noah Davis",
|
||||
"Isabella Brown",
|
||||
"Lucas Wilson",
|
||||
]
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = "Generate realistic-looking test data for MailingListMessage model"
|
||||
|
||||
def handle(self, *args, **options):
|
||||
self.stdout.write("Generating test data...")
|
||||
|
||||
for _ in range(5):
|
||||
# Create a top-level message
|
||||
top_level_message = baker.make(
|
||||
MailingListMessage,
|
||||
sender=None,
|
||||
sender_email=None,
|
||||
sender_display=random.choice(sender_displays),
|
||||
subject=random.choice(subjects),
|
||||
sent_at=timezone.now() - timezone.timedelta(days=random.randint(1, 30)),
|
||||
)
|
||||
|
||||
# Create replies for the top-level message
|
||||
for _ in range(random.randint(1, 5)):
|
||||
baker.make(
|
||||
MailingListMessage,
|
||||
sender=None,
|
||||
sender_email=None,
|
||||
sender_display=random.choice(sender_displays),
|
||||
subject=f"Re: {top_level_message.subject}",
|
||||
parent=top_level_message,
|
||||
sent_at=timezone.now()
|
||||
- timezone.timedelta(days=random.randint(1, 30)),
|
||||
)
|
||||
|
||||
self.stdout.write(self.style.SUCCESS("Test data generated successfully!"))
|
||||
16
mailing_list/migrations/0003_delete_mailinglistmessage.py
Normal file
16
mailing_list/migrations/0003_delete_mailinglistmessage.py
Normal file
@@ -0,0 +1,16 @@
|
||||
# Generated by Django 4.2.15 on 2024-10-16 18:28
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("mailing_list", "0002_mailinglistmessage_sender_and_more"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.DeleteModel(
|
||||
name="MailingListMessage",
|
||||
),
|
||||
]
|
||||
@@ -1,43 +0,0 @@
|
||||
from django.db import models
|
||||
from django.contrib.auth import get_user_model
|
||||
from mptt.models import MPTTModel, TreeForeignKey
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
User = get_user_model()
|
||||
|
||||
|
||||
class MailingListMessage(MPTTModel):
|
||||
sender = models.ForeignKey(
|
||||
User,
|
||||
on_delete=models.CASCADE,
|
||||
null=True,
|
||||
blank=True,
|
||||
help_text=_("The registered user who sent the message."),
|
||||
)
|
||||
sender_email = models.EmailField(
|
||||
null=True, blank=True, help_text=_("The email address of the sender.")
|
||||
)
|
||||
sender_display = models.CharField(
|
||||
max_length=255,
|
||||
null=True,
|
||||
blank=True,
|
||||
help_text=_("The display name of the sender."),
|
||||
)
|
||||
subject = models.CharField(
|
||||
max_length=255, help_text=_("The subject of the message.")
|
||||
)
|
||||
body = models.TextField(help_text=_("The body of the message."))
|
||||
parent = TreeForeignKey(
|
||||
"self",
|
||||
on_delete=models.CASCADE,
|
||||
null=True,
|
||||
blank=True,
|
||||
related_name="replies",
|
||||
help_text=_("The parent message to which this message is a reply."),
|
||||
)
|
||||
sent_at = models.DateTimeField(
|
||||
help_text=_("The date and time when the message was sent.")
|
||||
)
|
||||
|
||||
class MPTTMeta:
|
||||
order_insertion_by = ["-sent_at"]
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
import pytest
|
||||
from model_bakery import baker
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mailing_list_message_factory():
|
||||
def factory(**kwargs):
|
||||
return baker.make("mailing_list.MailingListMessage", **kwargs)
|
||||
|
||||
return factory
|
||||
|
||||
|
||||
def test_mailing_list_message_tree_structure(mailing_list_message_factory):
|
||||
root = mailing_list_message_factory(subject="Root")
|
||||
child1 = mailing_list_message_factory(subject="Child 1", parent=root)
|
||||
child2 = mailing_list_message_factory(subject="Child 2", parent=root)
|
||||
grandchild1 = mailing_list_message_factory(subject="Grandchild 1", parent=child1)
|
||||
grandchild2 = mailing_list_message_factory(subject="Grandchild 2", parent=child1)
|
||||
|
||||
assert root.get_children().count() == 2
|
||||
assert child1 in root.get_children()
|
||||
assert child2 in root.get_children()
|
||||
|
||||
assert child1.get_children().count() == 2
|
||||
assert grandchild1 in child1.get_children()
|
||||
assert grandchild2 in child1.get_children()
|
||||
|
||||
assert child2.get_children().count() == 0
|
||||
assert grandchild1.get_children().count() == 0
|
||||
assert grandchild2.get_children().count() == 0
|
||||
@@ -1,24 +0,0 @@
|
||||
import pytest
|
||||
from model_bakery import baker
|
||||
from ..models import MailingListMessage
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mailing_list_messages():
|
||||
return baker.make(MailingListMessage, _quantity=10)
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_mailing_list_view(tp, mailing_list_messages):
|
||||
"""Test the mailing list view."""
|
||||
url = tp.reverse("mailing-list")
|
||||
response = tp.get_check_200(url)
|
||||
assert len(response.context["object_list"]) == len(mailing_list_messages)
|
||||
assert set(response.context["object_list"]) == set(mailing_list_messages)
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_mailing_list_detail_view(tp, mailing_list_messages):
|
||||
"""Test the mailing list view."""
|
||||
url = tp.reverse("mailing-list-detail", pk=mailing_list_messages[0].pk)
|
||||
tp.get_check_200(url)
|
||||
@@ -1,25 +0,0 @@
|
||||
from django.views.generic import DetailView, ListView
|
||||
from .models import MailingListMessage
|
||||
|
||||
|
||||
class MailingListView(ListView):
|
||||
model = MailingListMessage
|
||||
template_name = "mailing_list/list.html"
|
||||
context_object_name = "objects"
|
||||
paginate_by = 10
|
||||
|
||||
def get_queryset(self):
|
||||
return MailingListMessage.objects.filter(parent__isnull=True).order_by(
|
||||
"-sent_at"
|
||||
)
|
||||
|
||||
|
||||
class MailingListDetailView(DetailView):
|
||||
model = MailingListMessage
|
||||
template_name = "mailing_list/detail.html"
|
||||
context_object_name = "message"
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
context["replies"] = self.object.replies.order_by("sent_at")
|
||||
return context
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
{% extends 'base.html' %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Mailing List Message</h1>
|
||||
<div>
|
||||
<h2>{{ message.subject }}</h2>
|
||||
<p><strong>{{ message.sender_display }}</strong> - {{ message.sent_at }}</p>
|
||||
<p>{{ message.body|linebreaks }}</p>
|
||||
</div>
|
||||
<h3>Replies</h3>
|
||||
<ul>
|
||||
{% for reply in replies %}
|
||||
<li>
|
||||
<a href="{% url 'mailing-list-detail' pk=reply.pk %}" class="text-orange"><strong>{{ reply.sender_display }}</strong>: {{ reply.subject }}</a>
|
||||
<p>{{ reply.body|linebreaks }}</p>
|
||||
</li>
|
||||
{% empty %}
|
||||
<li>No replies for this message.</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<p><a href="{% url 'mailing-list' %}" class="text-orange">Back to Mailing List Archives</a></p>
|
||||
{% endblock %}
|
||||
@@ -1,37 +0,0 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block content %}
|
||||
<div class="p-3 md:p-0">
|
||||
<h1 class="my-5 text-4xl">Mailing List Archives</h1>
|
||||
</div>
|
||||
<div class="py-0 px-3 mb-3 md:py-6 md:px-0">
|
||||
<ul class="space-y-3">
|
||||
{% for message in objects %}
|
||||
<li>
|
||||
{{ message.sent_at }}: <a href="{% url 'mailing-list-detail' pk=message.pk %}" class="text-orange">
|
||||
<strong>{{ message.sender_display }}</strong>: {{ message.subject }}
|
||||
</a>
|
||||
<ul class="pl-5 space-y-2">
|
||||
{% for reply in message.get_descendants %}
|
||||
<li>
|
||||
<a href="{% url 'mailing-list-detail' pk=reply.pk %}" class="text-orange">
|
||||
<strong>{{ reply.sender_display }}</strong>: {{ reply.subject }}
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<div class="mt-5 space-x-3 text-center">
|
||||
{% if messages.has_previous %}
|
||||
<a href="?page=1" class="text-orange"><small> << First</small></a>
|
||||
<a href="?page={{ messages.previous_page_number }}" class="text-orange"><small> < Previous</small> </a>
|
||||
{% endif %}
|
||||
{% if messages.has_next %}
|
||||
<a href="?page={{ messages.next_page_number }}" class="text-orange"><small>Next <small> > </small></a>
|
||||
<a href="?page={{ messages.paginator.num_pages }}" class="text-orange">Last <small> >></small></a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user