def favorite(request): if request.method != 'POST': return HttpResponse('POST required at this url', status=400, content_type='text/plain') action = request.POST.get('action', 'favorite') asset_id = request.POST.get('asset_id', '') try: (asset_id,) = re.findall('6a\w+', asset_id) except TypeError: raise Http404 if action == 'favorite': with typepad.client.batch_request(): asset = Asset.get_by_url_id(asset_id) fav = Favorite() fav.in_reply_to = asset.asset_ref request.user.favorites.post(fav) typepadapp.signals.favorite_created.send(sender=fav, instance=fav, parent=asset, group=request.group) # Save the user's last face when favorited. try: last = Lastface.objects.get(owner=request.user.xid) except Lastface.DoesNotExist: pass else: Favoriteface(favoriter=request.user.xid, favorited=asset_id, lastface=last.face).save() else: # Getting the xid will do a batch, so don't do it inside our other batch. xid = request.user.xid with typepad.client.batch_request(): asset = Asset.get_by_url_id(asset_id) fav = Favorite.get_by_user_asset(xid, asset_id) fav.delete() typepadapp.signals.favorite_deleted.send(sender=fav, instance=fav, parent=asset, group=request.group) return HttpResponse('OK', content_type='text/plain')