@contextfunction
def subscription_block(context, object):
    "Block with objects subscriptions"

    request = context['request']

    response_format = 'html'
    if 'response_format' in context:
        response_format = context['response_format']

    response_format_tags = response_format
    if 'response_format_tags' in context:
        response_format_tags = context['response_format_tags']

    subscriptions = object.subscribers.all()

    subscribed = False
    if request.user.profile in subscriptions:
        subscribed = True

    if 'subscribe_add' in request.GET and request.user.profile.has_permission(object, mode='w'):
        if request.POST and 'subscriber' in request.POST:
            if 'cancel' in request.POST:
                request.redirect = request.path
                return Markup(render_to_string('core/tags/subscription_block',
                                               {'object': object, 'subscriptions': subscriptions,
                                                'request': request, 'path': request.path,
                                                'subscribed': subscribed},
                                               context_instance=RequestContext(
                                                   request),
                                               response_format=response_format))
            else:
                form = SubscribeForm(object, request.POST)
                if form.is_valid():
                    subscriptions = form.save()

                request.redirect = request.path
                return Markup(render_to_string('core/tags/subscription_block',
                                               {'object': object, 'subscriptions': subscriptions,
                                                'request': request, 'path': request.path,
                                                'subscribed': subscribed},
                                               context_instance=RequestContext(
                                                   request),
                                               response_format=response_format))

        else:
            form = SubscribeForm(instance=object)

            context = {'object': object, 'subscriptions': subscriptions,
                       'request': request, 'path': request.path,
                       'subscribed': subscribed, 'form': form}

            if 'ajax' in response_format_tags:
                context = converter.preprocess_context(context)

            return Markup(render_to_string('core/tags/subscription_block_add', context,
                          context_instance=RequestContext(request),
                          response_format=response_format))

    if 'subscribe' in request.GET:
        if not subscribed:
            object.subscribers.add(request.user.profile)
            subscriptions = object.subscribers.all()
            subscribed = True
    elif 'unsubscribe' in request.GET and request.GET['unsubscribe']:
        user_id = int(request.GET['unsubscribe'])
        try:
            if request.user.profile.id == user_id or \
                    request.user.profile.has_permission(object, mode='w'):
                object.subscribers.remove(subscriptions.get(pk=user_id))
                subscriptions = object.subscribers.all()
                if user_id is not request.user.profile.id:
                    subscribed = False
        except Exception:
            pass

    return Markup(render_to_string('core/tags/subscription_block',
                                   {'object': object, 'subscriptions': subscriptions,
                                    'request': request, 'path': request.path,
                                    'subscribed': subscribed},
                                   context_instance=RequestContext(request),
                                   response_format=response_format))
dataset/ETHPy150Open treeio/treeio/treeio/core/templatetags/object.py/subscription_block/operator `==` -> `is not`