Newer
Older
from opentech.apply.utils.views import DelegatedViewMixin
from .messaging import messenger, MESSAGES
from .models import Activity, COMMENT
class AllActivityContextMixin:
def get_context_data(self, **kwargs):
extra = {
'actions': Activity.actions.select_related(
'comments': Activity.comments.select_related(
'all_activity': Activity.objects.select_related(
}
return super().get_context_data(**extra, **kwargs)
def get_context_data(self, **kwargs):
related_query = self.model.activities.rel.related_query_name
query = {related_query: self.object}
# Do not prefetch on the related_object__author as the models
# are not homogeneous and this will fail
'actions': Activity.actions.filter(**query).select_related(
).prefetch_related(
).visible_to(self.request.user),
'comments': Activity.comments.filter(**query).select_related(
).prefetch_related(
).visible_to(self.request.user),
}
return super().get_context_data(**extra, **kwargs)
class CommentFormView(DelegatedViewMixin, CreateView):
context_name = 'comment_form'
def form_valid(self, form):
source = self.kwargs['object']
form.instance.user = self.request.user
form.instance.source = source
form.instance.timestamp = timezone.now()
return self.object.source.get_absolute_url() + '#communications'
# We dont want to pass the submission as the instance
kwargs = super().get_form_kwargs()
kwargs.pop('instance')
return kwargs