def upload(request, note_id, par_id): p = get_object_or_404(Paragraph, pk=par_id) if request.method == "POST": submitted_key = get_blob_key(request) if submitted_key is None: return HttpResponseForbidden( "An ugly person you are. Please,\ don't feed me with invalid headrs. This functionality\ is mission-crtical, you know." ) info = blobstore.BlobInfo(blobstore.BlobKey(submitted_key)) if re.match("image/", info.content_type) is None: blobstore.delete_async(submitted_key) return HttpResponseForbidden("An image, please!") blobstore.delete_async(p.blob_key) p.blob_key = submitted_key p.last_edit = datetime.datetime.now() p.save() view_url = reverse("notes.views.serve_image", args=[note_id, par_id]) return HttpResponseRedirect(view_url) upload_url = reverse("notes.views.upload", args=[note_id, par_id]) upload_url_rpc = blobstore.create_upload_url_async(upload_url) form = UploadForm() upload_url = upload_url_rpc.get_result() return direct_to_template(request, "notes/upload.html", {"form": form, "upload_url": upload_url})
def post(self): if users.get_current_user(): post_id = self.request.get("post_id") post = db.get(post_id) if post.blob_key: blobstore.delete_async(post.blob_key.key()) post.blob_key=None post.put() else: url = users.CreateLogoutURL('/logout?message=' + self.message, _auth_domain=None) self.redirect(url)
def SafeBlobDel(blobstore_key): """Helper method to delete a blob by its key. Args: blobstore_key: str, a blob key """ try: blobstore.delete_async(blobstore_key) except blobstore.Error, e: logging.warning(( 'blobstore.delete(%s) failed: %s. ' 'this key is now probably orphaned.'), blobstore_key, str(e))
def SafeBlobDel(blobstore_key): """Helper method to delete a blob by its key. Args: blobstore_key: str, a blob key """ try: blobstore.delete_async(blobstore_key) except blobstore.Error, e: logging.warning(('blobstore.delete(%s) failed: %s. ' 'this key is now probably orphaned.'), blobstore_key, str(e))
def post(self): if users.get_current_user(): post_id = self.request.get("post_id") post = db.get(post_id) if post.blob_key: blobstore.delete_async(post.blob_key.key()) post.blob_key = None post.put() else: url = users.CreateLogoutURL('/logout?message=' + self.message, _auth_domain=None) self.redirect(url)
def delete(self): key = self.request.get('key') async = self.request.get('async') if async is not None and async == 'true': delete_rpc = blobstore.delete_async(key) if delete_rpc.get_result() is None: self.response.out.write(json.dumps({ 'success' : True })) else: self.response.out.write(json.dumps({ 'success' : False }))
def delete(self): key = self.request.get('key') async = self.request.get('async') if async is not None and async == 'true': delete_rpc = blobstore.delete_async(key) if delete_rpc.get_result() is None: self.response.out.write(json.dumps({ 'success' : True })) else: self.response.out.write(json.dumps({ 'success' : False }))
def timeline_delete(self, card): """Remove an existing card for the current user. This will set all properties except the ID to None and set isDeleted to true """ if not card.from_datastore or card.user != endpoints.get_current_user(): raise endpoints.NotFoundException("Contact not found.") if card.isDeleted: raise endpoints.NotFoundException("Card has been deleted") # Delete attachments keys = [] if card.attachments is not None: for att in card.attachments: keys.append(blobstore.BlobKey(att.id)) blobstore.delete_async(keys) card.attachments = [] card.bundleId = None card.canonicalUrl = None card.created = None card.creator = None card.displayTime = None card.html = None card.inReplyTo = None card.isBundleCover = None card.isPinned = None card.menuItems = [] card.notification = None card.recipients = [] card.sourceItemId = None card.speakableType = None card.speakableText = None card.text = None card.title = None card.updated = None card.isDeleted = True card.put() # Notify Glass emulator channel.send_message(card.user.email(), json.dumps({"id": card.id})) # Notify timeline DELETE subscriptions data = {} data["collection"] = "timeline" data["itemId"] = card.id operation = Operation.DELETE data["operation"] = operation.name header = {"Content-type": "application/json"} query = Subscription.query().filter(Subscription.user == endpoints.get_current_user()) query = query.filter(Subscription.collection == "timeline") query = query.filter(Subscription.operation == operation) for subscription in query.fetch(): data["userToken"] = subscription.userToken data["verifyToken"] = subscription.verifyToken req = urllib2.Request(subscription.callbackUrl, json.dumps(data), header) try: urllib2.urlopen(req) except: logging.error(sys.exc_info()[0]) return card