def get_user_info(): """Get UserInfo for currently logged in user. This will insert the new user if it does not already exist in datastore. Returns: UserInfo record for user if user is logged in, else None. """ user = users.get_current_user() if user is None: return None auth_email = user.email() effective_email = auth_email if auth_email == '*****@*****.**': effective_email = '*****@*****.**' if auth_email == '*****@*****.**': effective_email = '*****@*****.**' if auth_email == effective_email: ui = UserInfo.get_or_insert(key_name='user:%s' % auth_email) else: ui = UserInfo.get_by_key_name('user:%s' % effective_email) if not ui: logging.error("User %s failed to act as %s; %s doesn't exist", auth_email, effective_email, effective_email) return None logging.info("User %s acting as %s", auth_email, effective_email) ui.non_owner = True ui.real_email = auth_email return ui
def lookup_and_authenticate_user(handler, claimed_email, claimed_password): if not claimed_email: return None claimed_user = UserInfo.get_by_key_name("user:%s" % claimed_email) if not claimed_user: return None if claimed_email == "*****@*****.**" and handler.request.headers["Host"] == "localhost:8080": # No auth for testing. return claimed_user if claimed_user.upload_password and claimed_user.upload_password == claimed_password: return claimed_user return None
def lookup_and_authenticate_user(handler, claimed_email, claimed_password): if not claimed_email: return None claimed_user = UserInfo.get_by_key_name('user:%s' % claimed_email) if not claimed_user: return None if claimed_email == '*****@*****.**' and \ handler.request.headers["Host"] == "localhost:8080": # No auth for testing. return claimed_user if claimed_user.upload_password and \ claimed_user.upload_password == claimed_password: return claimed_user return None
def get(self): effective_user = None claimed_email = self.request.get('user_email') if claimed_email: claimed_user = UserInfo.get_by_key_name('user:%s' % claimed_email) if claimed_user and \ claimed_user.upload_password and \ claimed_user.upload_password == self.request.get('password'): effective_user = claimed_user if effective_user: self.response.headers['Content-Type'] = 'text/plain' upload_url = blobstore.create_upload_url('/admin/store') self.response.out.write(upload_url) else: self.error(403)
def store_media(): """Store media object info in datastore. Also updates the user-info record to keep count of media objects. This function is run as a transaction. """ user_info = UserInfo.get_by_key_name("user:%s" % user_email) if user_info is None: error_messages.append("User record has been deleted. " "Try uploading again") return media = MediaObject( parent=user_info, owner=user_info, blob=blob_info.key(), creation=blob_info.creation, content_type=blob_info.content_type, filename=blob_info.filename, size=int(blob_info.size), lacks_document=True, ) user_info.media_objects += 1 db.put(user_info) db.put(media) if bool(is_doc) and is_doc != "0": tag_list = [] if tags is not None: tag_list = [x for x in re.split("\s*,\s*", tags) if x] doc = Document( parent=user_info, owner=user_info, pages=[media.key()], title=title, description=description, no_tags=(len(tag_list) == 0), tags=tag_list, ) db.put(doc) media.document = doc.key() media.lacks_document = False db.put(media)
def get(self): self.response.headers['Cache-Control'] = "private" self.response.headers['Content-Type'] = "text/plain; charset=utf-8" user = UserInfo.get_by_key_name('user:[email protected]') docs = Document.all().filter('owner', user) docs = docs.fetch(10000) self.response.out.write("# got %d docs\n" % len(docs)) for doc in docs: self.response.out.write("%s tags[%s] date[%s] title[%s] \n" % (doc.display_url, doc.tag_comma_separated, doc.date_yyyy_mm_dd, doc.title_or_empty_string)) for page in doc.pages: self.response.out.write(" has_page: %d\n" % (page.id_or_name())) meds = MediaObject.all().filter('owner', user) meds = meds.fetch(10000) self.response.out.write("# got %d mediaobjects\n" % len(meds)) for mo in meds: self.response.out.write("%s creation[%s] size[%d]\n" % (mo.url_path, str(mo.creation), mo.size))
def store_media(): """Store media object info in datastore. Also updates the user-info record to keep count of media objects. This function is run as a transaction. """ user_info = UserInfo.get_by_key_name('user:%s' % user_email) if user_info is None: error_messages.append('User record has been deleted. ' 'Try uploading again') return media = MediaObject( parent=user_info, owner=user_info, blob=blob_info.key(), creation=blob_info.creation, content_type=blob_info.content_type, filename=blob_info.filename, size=int(blob_info.size), lacks_document=True) user_info.media_objects += 1 db.put(user_info) db.put(media) if bool(is_doc) and is_doc != "0": tag_list = [] if tags is not None: tag_list = [x for x in re.split('\s*,\s*', tags) if x] doc = Document( parent=user_info, owner=user_info, pages=[media.key()], title=title, description=description, no_tags=(len(tag_list)==0), tags=tag_list) db.put(doc) media.document = doc.key() media.lacks_document = False db.put(media)
def get(self): self.response.headers['Cache-Control'] = "private" self.response.headers['Content-Type'] = "text/plain; charset=utf-8" user = UserInfo.get_by_key_name('user:[email protected]') docs = Document.all().filter('owner', user) docs = docs.fetch(10000) self.response.out.write("# got %d docs\n" % len(docs)) for doc in docs: self.response.out.write( "%s tags[%s] date[%s] title[%s] \n" % (doc.display_url, doc.tag_comma_separated, doc.date_yyyy_mm_dd, doc.title_or_empty_string)) for page in doc.pages: self.response.out.write(" has_page: %d\n" % (page.id_or_name())) meds = MediaObject.all().filter('owner', user) meds = meds.fetch(10000) self.response.out.write("# got %d mediaobjects\n" % len(meds)) for mo in meds: self.response.out.write("%s creation[%s] size[%d]\n" % (mo.url_path, str(mo.creation), mo.size))