def post(self): form = SignInForm(self.request.POST) if not form.validate(): path = os.path.join(os.path.dirname(__file__)) path_length = path.__len__() final_path = path + '/views/htmls/member_login_form.html' #print final_path data = { 'form': form, } self.response.out.write(template.render(final_path, data)) else: login_check = login_member(self) email = self.request.get("email") password = self.request.get("password") hashed_password = get_hash(password) filters = { "email": email, "password": hashed_password, } session = get_current_session() session.clear() results, results_exist = datastore_results("Member", filters = filters, inequality_filters = None, order = None, fetch_total = 1000, offset = 0, mem_key = None) if results_exist: session = get_current_session() session['member'] = True session['email'] = email if login_check: ### check for first name, if first name, go to main page session = get_current_session() session['member'] = True email = session['email'] filters = { "email": email, } results, results_exist = datastore_results("Member", filters = filters, inequality_filters = None, order = None, fetch_total = 1, offset = 0, mem_key = None) first_name = None if results_exist: for result in results: first_name = result.first_name if first_name is None: self.redirect('/?' + urllib.urlencode({'member_info': True})) else: self.redirect('/?' + urllib.urlencode({'home_page': True})) else: self.redirect('/?' + urllib.urlencode({'member_login': True}))
def put_member_sign_up(self): logging.debug("sign_in_user") email = self.request.get("email") password = self.request.get("password") password2 = self.request.get("password2") invite_hash = self.request.get("invite_hash") filters = { "email": email, } results, results_exist = datastore_results("Member", filters = filters, inequality_filters = None, order = None, fetch_total = 1, offset = 0, mem_key = None) if results_exist: show_error_html(self, "email already exists error") return False if password == password2: category = "Volunteer" try: if check_invite_email_and_hash(email = email, invite_hash = invite_hash): hashed_password = get_hash(password) m = model.Member(email = email, password = hashed_password, category = category, skills_list = [""]) m.put() delete_invite(invite_hash = invite_hash, invite_email = email) else: show_error_html(self, "Not the correct email for this invite.") logging.debug("Incorrect email for invite") return False except: logging.debug("datastore error") show_error_html(self, "database error") try: session = get_current_session() session['email'] = email session['member'] = True except: logging.debug("gaesessions error") show_error_html(self, "session error") return True else: show_error_html(self, "The passwords are not the same, press back and try again.")
def send_invite(self): logging.debug("send_invite") email = self.request.get("email") confirm_email = self.request.get("confirm_email") invite_hash = get_hash() put_invite_hash(email=email, invite_hash=invite_hash) sender = "3Rorg Crowdsourcing Invite <%s>" % "*****@*****.**" logging.debug("sender" + sender) body_first = "Hello " + email body_edited = """ You're receiving this invite from the team behind Responsibuild, a hackathon award-winning project focused on creating a hub for survivors of disasters to rebuild their homes, communities, and lives. We're building a site of best practices and best materials for rebuilding in the wake of a natural disaster, such as a hurricane, flood, tornado, etc. Our project was created in response to Hurricane Sandy and the wide scoping impact it had on the New York City community. Thank you for joining and for contributing your expert take and advice on issues such as mold remediation, most sustainable building materials (that are also economically affordable), and on how to best rebuild a home or community to weather future inevitable disasters and storms. With gratitude, Responsibuild (Andy, Ana, and Erica) """ body_last = "To accept invite, go to 3rorg-test.appspot.com/?accept_invite=%s" % invite_hash finished_body = body_first + body_edited + body_last if email == confirm_email: message = mail.EmailMessage(sender=sender, subject="\n!") message.to = "%s <%s>" % (email, email) message.body = finished_body message.send() return True else: return False
def put_comment(self): logging.debug("put_post") if check_login(self): continue_boolean = False email = "" #try: session = get_current_session() email = session['email'] continue_boolean = True #except: #logging.debug("gaesessions exception, do not continue") #continue_boolean = False #show_error_html(self, "session error") comment = self.request.get("comment") post_id = self.request.get("post_id") if not comment: logging.debug("No comment entered") return False, post_id if continue_boolean: ### check db, if not in db put tag new_hash = get_hash() timestamp = get_date_time() c = model.Comment(comment = comment, email = email, comment_id = new_hash, post_id = post_id, timestamp = timestamp) c.put() filters = { "email": email, } results, results_exist = datastore_results("Member", filters = filters, inequality_filters = None, order = None, fetch_total = 1, offset = 0, mem_key = None) if results_exist: for result in results: key = result.key() points = result.rep_points member = model.Member.get(key) member.rep_points = points + 5 member.put() return True, post_id else: self.redirect("/")
def login_member(self): logging.debug("login_member") email = self.request.get("email") password = self.request.get("password") logging.debug("email = " + email) logging.debug("password = "******"hashed_password") #print hashed_password filters = { "email": email, "password": hashed_password, } results, results_exist = datastore_results("Member", filters = filters, inequality_filters = None, order = None, fetch_total = 1, offset = 0, mem_key = None) category = "" for result in results: category = result.category try: session = get_current_session() session['member'] = True session['email'] = email if category == "Staff": session['staff'] = True except: logging.debug("gaesessions exception") show_error_html(self, "session error") if results_exist: return True else: return False
def put_post(self): logging.debug("put_post") if check_login(self): continue_boolean = False email = "" #try: session = get_current_session() email = session['email'] continue_boolean = True #except: #logging.debug("gaesessions exception, do not continue") #continue_boolean = False #show_error_html(self, "session error") if continue_boolean: title = self.request.get("title") tags = self.request.get("tags") entry = self.request.get("entry") old_hash = self.request.get("old_hash") tags_list = [] final_list = [] tags = tags.lower() tags_list = tags.split(",") for item in tags_list: final_item = item.strip() put_tag(self, final_item) final_list.append(final_item) new_hash = get_hash() timestamp = get_date_time() key = check_post_duplicates(old_hash) if key: p = model.Post.get(key) p.title = title p.tags = tags p.entry = entry p.tags_list = final_list p.timestamp = timestamp p.put() return old_hash p = model.Post(post_id = new_hash, email = email, title = title, tags = tags, entry = entry, tags_list = final_list, timestamp = timestamp, points=0) p.put() filters = { "email": email, } results, results_exist = datastore_results("Member", filters = filters, inequality_filters = None, order = None, fetch_total = 1, offset = 0, mem_key = None) if results_exist: for result in results: key = result.key() points = result.rep_points member = model.Member.get(key) member.rep_points = points + 10 member.put() return new_hash else: self.redirect("/")
def show_index_html(self): logging.debug("show_index_html") session = get_current_session() staff_boolean = False try: staff_boolean = session['staff'] except: staff_boolean = False if staff_boolean: try: path = os.path.join(os.path.dirname(__file__)) path_length = path.__len__() final_path = path[0:path_length-11] + 'views/htmls/index_staff.html' logging.debug("path = " + path) logging.debug("final_path = " + final_path) logged_in = check_login(self) data = { "logged_in": logged_in, } self.response.out.write(template.render(final_path, data)) except: logging.debug("exception") show_error_html(self, "template error") else: #try: path = os.path.join(os.path.dirname(__file__)) path_length = path.__len__() final_path = path[0:path_length-11] + 'views/htmls/index.html' logging.debug("path = " + path) logging.debug("final_path = " + final_path) logged_in = check_login(self) results, results_exist = datastore_results("Post", filters = None, inequality_filters = None, order = None, fetch_total = 1000, offset = 0, mem_key = None) data = { "logged_in": logged_in, "post_results": results, "title_kind": "Timeline", } member_filters = { "first_name": "Admin" } results, results_exist = datastore_results("Member", filters = member_filters, inequality_filters = None, order = None, fetch_total = 1000, offset = 0, mem_key = None) if not results_exist: password = get_hash("sandytech") m = model.Member(first_name = "Admin", password = password, category="Volunteer", orgs_list = [""], email = "*****@*****.**") m.put() self.response.out.write(template.render(final_path, data)) #except: #logging.debug("exception") #show_error_html(self, "template error")