Exemple #1
0
 def post(self):
     user = users.get_current_user()
     if not user:
         self.redirect("/welcome")
     else:
         teleUser = TeleUser.get_by_id(user.user_id())
         if not teleUser:
             teleUser = TeleUser.fromGSI(user=user)
             teleUser.put()
         thread_id = random.randint(1000000000, 9999999999)
         thread = Thread(thread_id=thread_id)
         drawingDataUrl = self.request.get("drawing")
         img_data = drawingDataUrl.split('data:image/png;base64,')[1]
         img = Image.open(BytesIO(base64.b64decode(img_data)))
         output = StringIO()
         img.save(output, format=img.format)
         drawing = output.getvalue()
         new_drawing = Drawing(content=drawing)
         allDrawings = Drawing.query().fetch()
         drawings = []
         for drawin in allDrawings:
             if drawin.content == new_drawing.content:
                 drawings.append(drawin)
         if drawings:
             new_drawing = drawings[0]
             threads = Thread.query().fetch()
             for threadD in threads:
                 if new_drawing.key in threadD.drawings:
                     thread = threads[0]
             new_edit = Edit.query().filter(
                 Edit.addition == new_drawing.key).fetch()[0]
         else:
             content_key = new_drawing.put()
             thread.drawings.append(content_key)
             thread_key = thread.put()
             new_edit = Edit(user=teleUser.key,
                             thread=thread_key,
                             addition=content_key)
             new_edit.put()
         confirmation_newThread_template = the_jinja_env.get_template(
             "confirmation-newthread.html")
         self.response.write(
             confirmation_newThread_template.render({
                 "user_info": user,
                 "thread": thread,
                 "new_edit": new_edit
             }))
 def post(self):
     user = users.get_current_user()
     if not user:
         self.redirect("/welcome")
     else:
         teleUser = TeleUser.get_by_id(user.user_id())
         if not teleUser:
             teleUser = TeleUser.fromGSI(user=user)
             teleUser.put()
         edit_type = self.request.get("request_type")
         print self.request.get("thread_id")
         thread_id = int(self.request.get("thread_id"))
         thread_entity_list = Thread.query().filter(Thread.thread_id==thread_id).fetch()
         if thread_entity_list:
             thread = thread_entity_list[0]
         else:
             thread = Thread(thread_id=thread_id)
         print thread
         edit_entity_list = Edit.query().filter(Edit.thread==thread.key).fetch()
         edit_entity_list.sort(key=lambda x: x.addition.get().date,reverse=True)
         lastEdit = edit_entity_list[0]
         if lastEdit.user == teleUser.key:
             self.redirect("/edit?key="+str(thread.key.id()))
         if edit_type=="caption":
             if lastEdit.key.kind() == "Caption":
                 self.redirect("/home?request=failed")
                 return
             caption = self.request.get("caption")
             new_caption = Caption(content=caption)
             content_key = new_caption.put()
             thread.captions.append(content_key)
         elif edit_type=="drawing":
             if lastEdit.key.kind() == "Caption":
                 self.redirect("/home?request=failed")
                 return
             drawingDataUrl = self.request.get("drawing")
             img_data = drawingDataUrl.split('data:image/png;base64,')[1]
             img = Image.open(BytesIO(base64.b64decode(img_data)))
             output = StringIO()
             img.save(output, format=img.format)
             drawing = output.getvalue()
             new_drawing = Drawing(content=drawing)
             content_key = new_drawing.put()
             thread.drawings.append(content_key)
         else:
             self.response.write("oof!")
             return
         thread_key = thread.put()
         edit_entity_list = Edit.query().filter(Edit.thread==thread_key).fetch()
         edit_entity_list.sort(key=lambda x: x.addition.get().date,reverse=True)
         new_edit = Edit(user=teleUser.key,thread=thread_key,addition=content_key)
         new_edit.put()
         for edit in edit_entity_list:
             print edit.thread.id(),":",edit.thread.get().thread_id,":",edit.addition.kind()
         last_edit = edit_entity_list[0]
         confirmation_template = the_jinja_env.get_template("confirmation.html")
         self.response.write(confirmation_template.render({
             "user_info":user,
             "thread":thread,
             "last_edit":last_edit,
             "new_edit":new_edit
         }))