示例#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
             }))
示例#2
0
 def get(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_entity_list = Thread.query().fetch()
         user_bailOuts = [
             bailOut_key.get() for bailOut_key in teleUser.bailOuts
         ]
         bailed_threads = []
         user_threads = []
         edits_by_thread = {}
         for thread in thread_entity_list:
             thread_key = thread.key
             edit_entity_list = Edit.query().filter(
                 Edit.thread == thread_key).fetch()
             if edit_entity_list:
                 edit_entity_list.sort(key=lambda x: x.addition.get().date)
                 bailed = False
                 for bailOut in user_bailOuts:
                     if thread_key == bailOut.thread:
                         bailed = True
                         bailed_threads.append(thread)
                         last_edit_before_bail = bailOut.last_edit.get()
                         for i in range(len(edit_entity_list)):
                             if edit_entity_list[
                                     i] == last_edit_before_bail:
                                 edit_entity_list = edit_entity_list[0:i +
                                                                     1]
                                 break
                         edits_by_thread[str(
                             thread_key.id())] = edit_entity_list
                         break
                 if not bailed:
                     editedThread = False
                     for edit in edit_entity_list:
                         if edit.user == teleUser.key:
                             editedThread = True
                             break
                     if editedThread:
                         user_threads.append(thread)
                         edits_by_thread[str(
                             thread_key.id())] = edit_entity_list
         # user_threads.sort(key=lambda x: x.key in teleUser.bailedThreads,reverse=True)
         my_threads_template = the_jinja_env.get_template("my-threads.html")
         self.response.write(
             my_threads_template.render({
                 "user_info":
                 teleUser,
                 "logout_url":
                 users.create_logout_url("/welcome"),
                 "bailed_threads":
                 bailed_threads,
                 "user_threads":
                 user_threads,
                 "edits_by_thread":
                 edits_by_thread,
             }))
示例#3
0
 def get(self):
     request = self.request.get("request")
     user = users.get_current_user()
     if not user:
         self.redirect("/welcome")
     else:
         teleUser = TeleUser.get_by_id(user.user_id())
         if not teleUser:
             print "no teleUser"
             teleUser = TeleUser.fromGSI(user=user)
             teleUser.put()
             print teleUser
         thread_entity_list = Thread.query().fetch()
         user_bailOuts = [
             bailOut_key.get() for bailOut_key in teleUser.bailOuts
         ]
         user_open_threads = []
         for thread in thread_entity_list:
             bailed = False
             for bailOut in user_bailOuts:
                 if thread.key == bailOut.thread:
                     bailed = True
                     break
             if not bailed:
                 user_open_threads.append(thread)
         # print user_open_threads
         edits_by_thread = {}
         for thread in user_open_threads:
             thread_key = thread.key
             edit_entity_list = Edit.query().filter(
                 Edit.thread == thread_key).fetch()
             if edit_entity_list:
                 edit_entity_list.sort(key=lambda x: x.addition.get().date)
                 for edit in edit_entity_list:
                     print edit.thread.id(), ":", edit.thread.get(
                     ).thread_id, ":", edit.addition.kind()
             edits_by_thread[str(thread_key.id())] = edit_entity_list
         # for thread_id in edits_by_thread:
         #     print thread_id,":"
         #     for edit in edits_by_thread[thread_id]:
         #         print edit
         # drawing_entity_list = Drawing.query().order(Drawing.date).fetch()
         # # drawing_entity_list.sort(key=lambda x: x.date)
         # caption_entity_list = Caption.query().order(Caption.date).fetch()
         # # caption_entity_list.sort(key=lambda x: x.date)
         home_template = the_jinja_env.get_template("home.html")
         self.response.write(
             home_template.render({
                 "request":
                 request,
                 "user_info":
                 teleUser,
                 "logout_url":
                 users.create_logout_url("/welcome"),
                 "threads":
                 user_open_threads,
                 "edits_by_thread":
                 edits_by_thread,
                 # "drawings":drawing_entity_list,
                 # "captions":caption_entity_list
             }))
 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
         }))