Beispiel #1
0
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})
Beispiel #2
0
 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)
Beispiel #3
0
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))
Beispiel #4
0
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))
Beispiel #5
0
 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)
Beispiel #6
0
 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 }))
Beispiel #7
0
 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 }))
Beispiel #8
0
    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