Skip to content

Commit

Permalink
convert idea/topic views from FilterSetView to TemplateView as data is
Browse files Browse the repository at this point in the history
now fetched via react.
  • Loading branch information
goapunk committed Dec 4, 2023
1 parent dfc22af commit c2f2772
Show file tree
Hide file tree
Showing 9 changed files with 34 additions and 298 deletions.
51 changes: 6 additions & 45 deletions meinberlin/apps/ideas/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,66 +4,30 @@
from django.utils.translation import gettext_lazy as _
from django.views import generic

from adhocracy4.categories import filters as category_filters
from adhocracy4.categories import forms as category_forms
from adhocracy4.categories import models as category_models
from adhocracy4.dashboard import mixins as a4dashboard_mixins
from adhocracy4.exports.views import DashboardExportView
from adhocracy4.filters import filters as a4_filters
from adhocracy4.filters import views as filter_views
from adhocracy4.filters import widgets as filters_widgets
from adhocracy4.filters.filters import FreeTextFilter
from adhocracy4.labels import filters as label_filters
from adhocracy4.labels import forms as label_forms
from adhocracy4.labels import models as label_models
from adhocracy4.projects.mixins import DisplayProjectOrModuleMixin
from adhocracy4.projects.mixins import ProjectMixin
from adhocracy4.rules import mixins as rules_mixins
from meinberlin.apps.contrib import forms as contrib_forms
from meinberlin.apps.contrib.views import CanonicalURLDetailView
from meinberlin.apps.ideas import forms
from meinberlin.apps.ideas import models
from meinberlin.apps.moderatorfeedback.forms import ModeratorFeedbackForm
from meinberlin.apps.moderatorfeedback.models import ModeratorFeedback
from meinberlin.apps.moderatorremark.models import ModeratorRemark
from meinberlin.apps.notifications.emails import (
NotifyCreatorOrContactOnModeratorFeedback,
)

from . import forms
from . import models


class FreeTextFilterWidget(filters_widgets.FreeTextFilterWidget):
label = _("Search")


def get_ordering_choices(view):
choices = (("-created", _("Most recent")),)
if view.module.has_feature("rate", models.Idea):
choices += (("-positive_rating_count", _("Most popular")),)
choices += (("-comment_count", _("Most commented")),)
return choices


class IdeaFilterSet(a4_filters.DefaultsFilterSet):
defaults = {"ordering": "-created"}
ordering = a4_filters.DynamicChoicesOrderingFilter(choices=get_ordering_choices)
search = FreeTextFilter(widget=FreeTextFilterWidget, fields=["name"])

class Meta:
model = models.Idea
fields = ["search", "category", "labels"]

def __init__(self, data, *args, **kwargs):
self.base_filters["category"] = category_filters.CategoryAliasFilter(
module=kwargs["view"].module, field_name="category"
)
self.base_filters["labels"] = label_filters.LabelAliasFilter(
module=kwargs["view"].module, field_name="labels"
)
super().__init__(data, *args, **kwargs)


class AbstractIdeaListView(ProjectMixin, filter_views.FilteredListView):
# Todo: only used by budgeting, remove once budgeting is fully in react
paginate_by = 15

def get_queryset(self):
Expand All @@ -89,12 +53,9 @@ def get_queryset(self):
return qs


class IdeaListView(AbstractIdeaListView, DisplayProjectOrModuleMixin):
model = models.Idea
filter_set = IdeaFilterSet

def get_queryset(self):
return super().get_queryset().filter(module=self.module)
class IdeaListView(ProjectMixin, DisplayProjectOrModuleMixin, generic.TemplateView):
template_name = "meinberlin_ideas/idea_list.html"
pass


class AbstractIdeaDetailView(
Expand Down
50 changes: 5 additions & 45 deletions meinberlin/apps/kiezkasse/views.py
Original file line number Diff line number Diff line change
@@ -1,55 +1,15 @@
from django.urls import reverse
from django.utils.translation import gettext_lazy as _

from adhocracy4.categories import filters as category_filters
from adhocracy4.exports.views import DashboardExportView
from adhocracy4.filters import filters as a4_filters
from adhocracy4.labels import filters as label_filters
from adhocracy4.projects.mixins import DisplayProjectOrModuleMixin
from meinberlin.apps.ideas import views as idea_views
from meinberlin.apps.ideas.views import IdeaListView
from meinberlin.apps.kiezkasse import forms
from meinberlin.apps.kiezkasse import models

from . import forms
from . import models


def get_ordering_choices(view):
choices = (("-created", _("Most recent")),)
if view.module.has_feature("rate", models.Proposal):
choices += (("-positive_rating_count", _("Most popular")),)
choices += (("-comment_count", _("Most commented")),)
return choices


class ProposalFilterSet(a4_filters.DefaultsFilterSet):
defaults = {"ordering": "-created"}
ordering = a4_filters.DynamicChoicesOrderingFilter(choices=get_ordering_choices)

class Meta:
model = models.Proposal
fields = ["category", "labels"]

def __init__(self, data, *args, **kwargs):
self.base_filters["category"] = category_filters.CategoryAliasFilter(
module=kwargs["view"].module, field_name="category"
)
self.base_filters["labels"] = label_filters.LabelAliasFilter(
module=kwargs["view"].module, field_name="labels"
)
super().__init__(data, *args, **kwargs)


class ProposalListView(idea_views.AbstractIdeaListView, DisplayProjectOrModuleMixin):
model = models.Proposal
filter_set = ProposalFilterSet

def dispatch(self, request, **kwargs):
self.mode = request.GET.get("mode", "map")
if self.mode == "map":
self.paginate_by = 0
return super().dispatch(request, **kwargs)

def get_queryset(self):
return super().get_queryset().filter(module=self.module)
class ProposalListView(IdeaListView):
template_name = "meinberlin_kiezkasse/proposal_list.html"


class ProposalDetailView(idea_views.AbstractIdeaDetailView):
Expand Down
50 changes: 5 additions & 45 deletions meinberlin/apps/mapideas/views.py
Original file line number Diff line number Diff line change
@@ -1,55 +1,15 @@
from django.urls import reverse
from django.utils.translation import gettext_lazy as _

from adhocracy4.categories import filters as category_filters
from adhocracy4.exports.views import DashboardExportView
from adhocracy4.filters import filters as a4_filters
from adhocracy4.labels import filters as label_filters
from adhocracy4.projects.mixins import DisplayProjectOrModuleMixin
from meinberlin.apps.ideas import views as idea_views
from meinberlin.apps.ideas.views import IdeaListView
from meinberlin.apps.mapideas import forms
from meinberlin.apps.mapideas import models

from . import forms
from . import models


def get_ordering_choices(view):
choices = (("-created", _("Most recent")),)
if view.module.has_feature("rate", models.MapIdea):
choices += (("-positive_rating_count", _("Most popular")),)
choices += (("-comment_count", _("Most commented")),)
return choices


class MapIdeaFilterSet(a4_filters.DefaultsFilterSet):
defaults = {"ordering": "-created"}
ordering = a4_filters.DynamicChoicesOrderingFilter(choices=get_ordering_choices)

class Meta:
model = models.MapIdea
fields = ["category", "labels"]

def __init__(self, data, *args, **kwargs):
self.base_filters["category"] = category_filters.CategoryAliasFilter(
module=kwargs["view"].module, field_name="category"
)
self.base_filters["labels"] = label_filters.LabelAliasFilter(
module=kwargs["view"].module, field_name="labels"
)
super().__init__(data, *args, **kwargs)


class MapIdeaListView(idea_views.AbstractIdeaListView, DisplayProjectOrModuleMixin):
model = models.MapIdea
filter_set = MapIdeaFilterSet

def dispatch(self, request, **kwargs):
self.mode = request.GET.get("mode", "map")
if self.mode == "map":
self.paginate_by = 0
return super().dispatch(request, **kwargs)

def get_queryset(self):
return super().get_queryset().filter(module=self.module)
class MapIdeaListView(IdeaListView):
template_name = "meinberlin_mapideas/mapidea_list.html"


class MapIdeaDetailView(idea_views.AbstractIdeaDetailView):
Expand Down
47 changes: 5 additions & 42 deletions meinberlin/apps/maptopicprio/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,38 +7,15 @@
from adhocracy4.filters import filters as a4_filters
from adhocracy4.filters import views as filter_views
from adhocracy4.labels import filters as label_filters
from adhocracy4.projects.mixins import DisplayProjectOrModuleMixin
from adhocracy4.projects.mixins import ProjectMixin
from meinberlin.apps.ideas import views as idea_views
from meinberlin.apps.ideas.views import IdeaListView
from meinberlin.apps.maptopicprio import forms
from meinberlin.apps.maptopicprio import models

from . import forms
from . import models


def get_ordering_choices(view):
choices = (("-created", _("Most recent")),)
if view.module.has_feature("rate", models.MapTopic):
choices += (("-positive_rating_count", _("Most popular")),)
choices += (("-comment_count", _("Most commented")),)
return choices


class MapTopicFilterSet(a4_filters.DefaultsFilterSet):
defaults = {"ordering": "-created"}
ordering = a4_filters.DynamicChoicesOrderingFilter(choices=get_ordering_choices)

class Meta:
model = models.MapTopic
fields = ["category", "labels"]

def __init__(self, data, *args, **kwargs):
self.base_filters["category"] = category_filters.CategoryAliasFilter(
module=kwargs["view"].module, field_name="category"
)
self.base_filters["labels"] = label_filters.LabelAliasFilter(
module=kwargs["view"].module, field_name="labels"
)
super().__init__(data, *args, **kwargs)
class MapTopicListView(IdeaListView):
template_name = "meinberlin_maptopicprio/maptopic_list.html"


class MapTopicCreateFilterSet(a4_filters.DefaultsFilterSet):
Expand All @@ -64,20 +41,6 @@ class MapTopicDetailView(idea_views.AbstractIdeaDetailView):
permission_required = "meinberlin_maptopicprio.view_maptopic"


class MapTopicListView(idea_views.AbstractIdeaListView, DisplayProjectOrModuleMixin):
model = models.MapTopic
filter_set = MapTopicFilterSet

def dispatch(self, request, **kwargs):
self.mode = request.GET.get("mode", "map")
if self.mode == "map":
self.paginate_by = 0
return super().dispatch(request, **kwargs)

def get_queryset(self):
return super().get_queryset().filter(module=self.module)


class MapTopicListDashboardView(
ProjectMixin,
mixins.DashboardBaseMixin,
Expand Down
46 changes: 5 additions & 41 deletions meinberlin/apps/topicprio/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,52 +6,16 @@
from adhocracy4.exports.views import DashboardExportView
from adhocracy4.filters import filters as a4_filters
from adhocracy4.filters import views as filter_views
from adhocracy4.filters import widgets as filters_widgets
from adhocracy4.filters.filters import FreeTextFilter
from adhocracy4.labels import filters as label_filters
from adhocracy4.projects.mixins import DisplayProjectOrModuleMixin
from adhocracy4.projects.mixins import ProjectMixin
from meinberlin.apps.ideas import views as idea_views
from meinberlin.apps.ideas.views import IdeaListView
from meinberlin.apps.topicprio import forms
from meinberlin.apps.topicprio import models

from . import forms
from . import models


class FreeTextFilterWidget(filters_widgets.FreeTextFilterWidget):
label = _("Search")


class TopicFilterSet(a4_filters.DefaultsFilterSet):
defaults = {"ordering": "name"}
ordering = a4_filters.DynamicChoicesOrderingFilter(
choices=(
("name", _("Alphabetical")),
("-positive_rating_count", _("Most popular")),
("-comment_count", _("Most commented")),
)
)
search = FreeTextFilter(widget=FreeTextFilterWidget, fields=["name"])

class Meta:
model = models.Topic
fields = ["search", "category", "labels"]

def __init__(self, data, *args, **kwargs):
self.base_filters["category"] = category_filters.CategoryAliasFilter(
module=kwargs["view"].module, field_name="category"
)
self.base_filters["labels"] = label_filters.LabelAliasFilter(
module=kwargs["view"].module, field_name="labels"
)
super().__init__(data, *args, **kwargs)


class TopicListView(idea_views.AbstractIdeaListView, DisplayProjectOrModuleMixin):
model = models.Topic
filter_set = TopicFilterSet

def get_queryset(self):
return super().get_queryset().filter(module=self.module)
class TopicListView(IdeaListView):
template_name = "meinberlin_topicprio/topic_list.html"


class TopicDetailView(idea_views.AbstractIdeaDetailView):
Expand Down

0 comments on commit c2f2772

Please sign in to comment.