def new_activity(request, token): if request.method == 'GET': success = HttpResponse(request.GET['hub.challenge']) failure = HttpResponseNotFound() topic = request.GET['hub.topic'] subscription_exists = True if ActivitySubscription.objects.filter( feed_uri=topic, token=token).count() > 0 else False mode = request.GET['hub.mode'] log.debug('Got verification request for mode %r on topic %r', mode, topic) if mode == 'subscribe': return success if subscription_exists else failure elif mode == 'unsubscribe': return failure if subscription_exists else success return HttpResponse("Unknown hub mode %r" % mode, status=400, content_type='text/plain') log.debug('Got pushed some feed data to %r!', request.build_absolute_uri()) try: feed = ElementTree.fromstring(request.raw_post_data) entries = feed.findall('{http://www.w3.org/2005/Atom}entry') if entries is None: raise ValueError('No entries in this feed') for entry in entries: act = Activity.from_atom_entry(entry, request) if not act.pk: act.save() except Exception, exc: log.exception(exc) raise