Skip to content
This repository has been archived by the owner on Nov 7, 2019. It is now read-only.

Commit

Permalink
Merge 1b0ca4e into 76d6c4a
Browse files Browse the repository at this point in the history
  • Loading branch information
Magdalena Noffke committed Jul 19, 2019
2 parents 76d6c4a + 1b0ca4e commit 07dcfaf
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 34 deletions.
35 changes: 35 additions & 0 deletions apps/contrib/mixins.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
from django import forms
from django.utils.functional import cached_property
from django.utils.translation import ugettext_lazy as _
from django.views import generic

RIGHT_OF_USE_LABEL = _('I hereby confirm that the copyrights for this '
'photo are with me or that I have received '
Expand Down Expand Up @@ -58,3 +60,36 @@ def clean(self):
_("You want to upload an image. "
"Please check that you have the "
"right of use for the image."))


class ProjectModuleDispatchMixin(generic.DetailView):

@cached_property
def project(self):
return self.get_object()

@cached_property
def module(self):
if self.modules.count() == 1 and not self.events:
return self.modules.first()
elif len(self.get_current_modules()) == 1:
return self.get_current_modules()[0]

def dispatch(self, request, *args, **kwargs):
kwargs['project'] = self.project
kwargs['module'] = self.module

if self.modules.count() == 1 and not self.events:
return self._view_by_phase()(request, *args, **kwargs)
elif len(self.get_current_modules()) == 1:
return self._view_by_phase()(request, *args, **kwargs)
else:
return super().dispatch(request)

def _view_by_phase(self):
if self.module.last_active_phase:
return self.module.last_active_phase.view.as_view()
elif self.module.future_phases:
return self.module.future_phases.first().view.as_view()
else:
return super().dispatch
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ <h3 class="tile__title" id="project-title-{{ project.pk }}">
{% if project.has_finished %}
<span><i class="tile__icon fa fa-flag-checkered"></i> {% trans 'Finished' %}</span>
{% else %}
<span><i class="tile__icon fa fa-comments"></i> {% trans 'Participation possible until' %} {{ project.phases.last.end_date|date:'d. M. Y'}}</span>
<span><i class="tile__icon fa fa-comments"></i> {% trans 'Participation possible until' %} {{ project.end_date|date:'d. M. Y'}}</span>
{% endif %}
</p>
</div>
Expand Down
37 changes: 6 additions & 31 deletions apps/projects/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
from adhocracy4.projects.mixins import DisplayProjectOrModuleMixin
from adhocracy4.projects.mixins import PhaseDispatchMixin
from adhocracy4.projects.mixins import ProjectMixin
from apps.contrib.mixins import ProjectModuleDispatchMixin

from . import forms
from . import models
Expand Down Expand Up @@ -261,47 +262,21 @@ def delete(self, request, *args, **kwargs):


class ProjectDetailView(PermissionRequiredMixin,
generic.DetailView,
DisplayProjectOrModuleMixin):
ProjectModuleDispatchMixin,
DisplayProjectOrModuleMixin
):

model = models.Project
permission_required = 'a4projects.view_project'
template_name = 'a4_candy_projects/project_detail.html'

def dispatch(self, request, *args, **kwargs):
kwargs['project'] = self.project
kwargs['module'] = self.module

if self.modules.count() == 1 and not self.events:
return self._view_by_phase()(request, *args, **kwargs)
elif len(self.get_current_modules()) == 1:
return self._view_by_phase()(request, *args, **kwargs)
else:
return super().dispatch(request)

@cached_property
def project(self):
return self.get_object()

@cached_property
def module(self):
if self.modules.count() == 1 and not self.events:
return self.modules.first()
elif len(self.get_current_modules()) == 1:
return self.modules.first()
def get_permission_object(self):
return self.project

@cached_property
def is_project_view(self):
return self.get_current_modules()

def _view_by_phase(self):
if self.module.last_active_phase:
return self.module.last_active_phase.view.as_view()
elif self.module.future_phases:
return self.module.future_phases.first().view.as_view()
else:
return super().dispatch

@property
def raise_exception(self):
return self.request.user.is_authenticated
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
"@babel/runtime": "7.5.4",
"@fortawesome/fontawesome-free": "5.9.0",
"acorn": "6.2.0",
"adhocracy4": "liqd/adhocracy4#f25e97108b6f8b924cf7fa261c03cef600dd5904",
"adhocracy4": "liqd/adhocracy4#ecc998d60e5deef6d0eeac749facbfe67706d068",
"autoprefixer": "9.6.1",
"babel-loader": "8.0.6",
"bootstrap": "4.3.1",
Expand Down
2 changes: 1 addition & 1 deletion requirements/base.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# A4
git+git://github.com/liqd/adhocracy4.git@f25e97108b6f8b924cf7fa261c03cef600dd5904#egg=adhocracy4
git+git://github.com/liqd/adhocracy4.git@ecc998d60e5deef6d0eeac749facbfe67706d068#egg=adhocracy4

# Additional requirements
bcrypt==3.1.6
Expand Down

0 comments on commit 07dcfaf

Please sign in to comment.