def get_context_data(self, **kwargs): context = super(EntityDetailView, self).get_context_data(**kwargs) # Query for all people's relations to the current Entity. entity = kwargs["object"] relations = Relation.objects.filter(entity=entity) context["relations"] = relations context["user_can_promote"] = has_promote_perms(self.request.user, entity) context["user_can_edit"] = has_edit_perms(self.request.user, entity) context["user_can_submit"] = has_submit_perms(self.request.user, entity) return context
def dispatch(self, request, *args, **kwargs): # @TODO Find a way to move the success_url line to __init__. The kwargs seem to be available in dispatch, but not __init__. self.success_url = reverse("build_world:entity", kwargs={"etype": kwargs["etype"], "pk": kwargs["pk"]}) entity = Entity.objects.get(id=kwargs["pk"]) if not has_edit_perms(request.user, entity): return self.error_page # Create a new blank (ie. active=False) version if editing an entity. # @NOTE @TODO This does not work if someone loads a cached version of # the page! Eg. if someone hits back, dispatch() is not hit. if request.method == "GET": version = utility.create_entity_version(entity, request.user) version.save() return super(EntityUpdateView, self).dispatch(request, *args, **kwargs)