diff --git a/meinberlin/apps/budgeting/api.py b/meinberlin/apps/budgeting/api.py index 3c65064359..c4ecd9dba2 100644 --- a/meinberlin/apps/budgeting/api.py +++ b/meinberlin/apps/budgeting/api.py @@ -37,11 +37,13 @@ def list(self, request, *args, **kwargs): return response -class ProposalFilterInfoMixin(ModuleMixin): +class ProposalFilterInfoMixin: def list(self, request, *args, **kwargs): """Add the filter information to the data of the Proposal API. Needs to be used with rest_framework.mixins.ListModelMixin + and adhocracy4.api.mixins.ModuleMixin or some other mixin that + fetches the module """ filters = {} @@ -92,7 +94,8 @@ def list(self, request, *args, **kwargs): return response -class ProposalViewSet(ProposalFilterInfoMixin, +class ProposalViewSet(ModuleMixin, + ProposalFilterInfoMixin, LocaleInfoMixin, VotingTokenInfoMixin, mixins.ListModelMixin, diff --git a/meinberlin/apps/budgeting/serializers.py b/meinberlin/apps/budgeting/serializers.py index 4304fab0af..b912129136 100644 --- a/meinberlin/apps/budgeting/serializers.py +++ b/meinberlin/apps/budgeting/serializers.py @@ -3,6 +3,7 @@ from adhocracy4.categories.models import Category from meinberlin.apps.votes.models import TokenVote +from meinberlin.apps.votes.models import VotingToken from .models import Proposal @@ -89,8 +90,17 @@ def get_session_token_voted(self, proposal): """ if 'request' in self.context: if 'voting_token' in self.context['request'].session: + token = None + try: + token = VotingToken.objects.get( + token=self.context['request'].session['voting_token'], + module=self.context['view'].module + ) + except VotingToken.DoesNotExist: + pass + vote = TokenVote.objects.filter( - token__pk=self.context['request'].session['voting_token'], + token=token, content_type=ContentType.objects.get_for_model( proposal.__class__), object_pk=proposal.pk diff --git a/meinberlin/apps/budgeting/templates/meinberlin_budgeting/proposal_list.html b/meinberlin/apps/budgeting/templates/meinberlin_budgeting/proposal_list.html index fd9b906212..7d22756a3a 100644 --- a/meinberlin/apps/budgeting/templates/meinberlin_budgeting/proposal_list.html +++ b/meinberlin/apps/budgeting/templates/meinberlin_budgeting/proposal_list.html @@ -26,9 +26,7 @@ {% if module.phases.count == 3 %} {% has_perm 'meinberlin_budgeting.add_vote' request.user module as vote_allowed %} {% if vote_allowed %} - {% if request.session.voting_token %} - You are using token {{ request.session.voting_token }} - {% else %} + {% if not valid_token_present %}