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 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, }))
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 }))