Skip to content

Commit

Permalink
Format the feed entry detail, add unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Xpirix committed Dec 2, 2024
1 parent c78ba8e commit c62ca31
Show file tree
Hide file tree
Showing 7 changed files with 453 additions and 34 deletions.
22 changes: 0 additions & 22 deletions qgisfeedproject/qgisfeed/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -174,25 +174,3 @@ def get_approvers_choices(self):
)


class FeedItemDetailForm(forms.ModelForm):
"""
Form for feed entry detail view
"""
class Meta:
model = QgisFeedEntry
fields = [
'language_filter',
'spatial_filter'
]

def __init__(self, *args, **kwargs):
super(FeedItemDetailForm, self).__init__(*args, **kwargs)
# Custom fields widget
self.fields['spatial_filter'].widget = MapWidget(attrs={
'geom_type': 'Polygon',
'default_lat': 0,
'default_lon': 0,
'default_zoom': 2,
'disable_draw': True,
'disable_add': True
})
11 changes: 10 additions & 1 deletion qgisfeedproject/qgisfeed/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,14 @@
from qgisfeed.utils import simplify
from django.core.exceptions import ValidationError

from .languages import LANGUAGES

class QgisLanguageField(models.CharField):
"""
A language field for Django models.
"""
def __init__(self, *args, **kwargs):
# Local import so the languages aren't loaded unless they are needed.
from .languages import LANGUAGES
kwargs.setdefault('max_length', 3)
kwargs.setdefault('choices', LANGUAGES)
super().__init__(*args, **kwargs)
Expand Down Expand Up @@ -113,6 +114,14 @@ def publish_from_epoch(self):
def __str__(self):
return self.title

@property
def language_filter_text(self):
"""Return the text value of the language filter"""
if self.language_filter:
choices_dict = dict(LANGUAGES)
return choices_dict.get(self.language_filter, 'English')
return None

class Meta:
db_table = ''
managed = True
Expand Down
19 changes: 19 additions & 0 deletions qgisfeedproject/qgisfeed/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -621,3 +621,22 @@ def test_add_feed_with_reviewer(self):
settings.QGISFEED_FROM_EMAIL
)


class FeedEntryDetailViewTestCase(TestCase):
fixtures = ['qgisfeed.json', 'users.json']

def setUp(self):
self.client = Client()

def test_feed_entry_detail_view(self):
# Test accessing a valid feed entry detail
feed_entry = QgisFeedEntry.objects.first()
response = self.client.get(reverse('feed_detail', args=[feed_entry.pk]))
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, 'feeds/feed_item_detail.html')
self.assertContains(response, feed_entry.title)

def test_feed_entry_detail_view_not_found(self):
# Test accessing a non-existent feed entry detail
response = self.client.get(reverse('feed_detail', args=[9999]))
self.assertEqual(response.status_code, 404)
7 changes: 2 additions & 5 deletions qgisfeedproject/qgisfeed/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
from django.db import transaction
from django.contrib.auth.models import User

from .forms import FeedEntryFilterForm, FeedItemForm, HomePageFilterForm, FeedItemDetailForm
from .forms import FeedEntryFilterForm, FeedItemForm, HomePageFilterForm
from .utils import get_field_max_length, notify_reviewers
from .models import QgisFeedEntry, CharacterLimitConfiguration
from .languages import LANGUAGE_KEYS
Expand Down Expand Up @@ -413,10 +413,7 @@ class FeedEntryDetailView(View):
View to display a feed entry item
"""
template_name = 'feeds/feed_item_detail.html'
# For spatial filter
form_class = FeedItemDetailForm

def get(self, request, pk):
feed_entry = get_object_or_404(QgisFeedEntry, pk=pk)
form = self.form_class(instance=feed_entry)
return render(request, self.template_name, {"feed_entry": feed_entry, "form": form})
return render(request, self.template_name, {"feed_entry": feed_entry})
Loading

0 comments on commit c62ca31

Please sign in to comment.