Exemplo n.º 1
0
 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")