Пример #1
0
 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
Пример #2
0
    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)