@csrf_exempt def google_receive(request): if not request.body: notification = Notification(email="testing") notification.save() return HttpResponse('error') json_response = simplejson.loads(request.body) timeline_id = json_response['itemId'] email = json_response['userToken'] notification = Notification(email=email) notification.save() users = GlassUser.Query.all().eq(email=email) user = None for item in users: user = item if not user: return HttpResponse('error') access_token = get_new_access_token(user.refresh_token) url = 'https://www.googleapis.com/mirror/v1/timeline/%s/?access_token=%s' % (timeline_id, access_token) r = requests.get(url) json_response = r.json() if 'attachments' in json_response and len(json_response['attachments']) > 0: attachment_id = json_response['attachments'][0]['id'] else: return HttpResponse('error') attachment_exists = TimelineAttachment.Query.all().where(timeline_id=timeline_id, attachment_id=attachment_id, email=email).count() > 0 if not attachment_exists: attachment = TimelineAttachment(timeline_id=timeline_id, attachment_id=attachment_id, email=email) attachment.save() devices = Device.Query.all().eq(email=email) for device in devices: response = send_notification(device.gcm_registration_id, timeline_id, attachment_id) notification.response = response notification.save() return HttpResponse('done') def send_notification(registration_id, timeline_id, attachment_id): url = 'https://android.googleapis.com/gcm/send' payload = {'registration_ids' : [registration_id], 'data' : {'timeline_id' : timeline_id, 'attachment_id' : attachment_id}} headers = {'content-type' : 'application/json', 'Authorization' : 'key=%s' % settings.GOOGLE_API_KEY} r = requests.post(url, headers=headers, data=json.dumps(payload)) return r.text