Exemple #1
0
def wsgi_app(environ, start_response):    
    """
        ==========================================================        
        * Logic for determining web view content is located here *
        ==========================================================
    """
    # Activate session storage
    session = environ['pesto.session']  
    # Retrieve GET variables and store them as a dictionary
    form = cgi.FieldStorage(fp=environ['wsgi.input'], environ=environ)

    # Initialize web classes    
    CalSwimView = WebView(base_dir, environ['wsgi.errors'])    
    CalSwimDB = WebDB(base_dir, environ['wsgi.errors']);
    #print >> CalSwimView.errors, "Print Error Message In Apache Logs"
    
    """
        ================================================
        * Main switch to determine controller/template *
        ================================================
    """
    if 'get_map_locs' in form:
        """
            Return AJAX call results for Google Map Pins
        """
        CalSwimView.set_search(form.getvalue('get_map_locs'),form.getvalue('radius'),form.getvalue('keywords'))
        CalSwimView.content = CalSwimDB.get_map_locs(CalSwimView)    
    elif 'get_data_details' in form:
        """
           Return AJAX call results for data details
        """
        dataID = form.getvalue('get_data_details')
        
        if 'format' in form:
            format = form.getvalue('format')
        else:
            format = 'json'       
        CalSwimView.content = CalSwimDB.get_data_details(dataID, format)
        
        if format == 'csv':
            # Return CVS content
            start_response('200 OK', [('content-type', 'application/CSV'),('Content-Disposition','attachment; filename=ecodata'+dataID+'.csv')])
            return CalSwimView.content
        if format == 'json':
            start_response('200 OK', [('content-type', 'application/json')])
            return CalSwimView.content
    elif 'login' in form:
        # Logout from admin area
        if 'false' == form.getvalue('login'):
            session['user'] = ""
              
        # Set user name in session to mark successful login
        if 'username' in form:
            passwd = form.getvalue('password')
            if passwd=='EcoAdminPass2012':                
                session['user'] = '******'
            else:
                session['user'] = "******"
        
        user = session.get('user')
        # Get user if it exists, and verify if it is admin        
        if 'admin' == user:
            if 'edit' in form:
                """
                    Handler for a single item edit
                """
                gd_id = form.getvalue('edit')                
                if 'organization' in form:                    
                    CalSwimView.content = CalSwimDB.set_data_details(gd_id, form)
                else:
                    CalSwimView.set_content('admin')
                    items = CalSwimDB.get_data_details(gd_id, 'html')
                    CalSwimView.content = CalSwimView.content % {'Items' : items}
            elif 'import_data' in form:
                """
                    Handle AJAX call for data import into DB
                """        
                CalSwimDB.import_data(form)
                CalSwimView.content = CalSwimDB.return_message
            elif 'delete' in form:
                """
                    Handler for deleting items
                """                
                # Delete items from a list of ids
                CalSwimDB.delete_items(form.getlist('deletes'))                
                # Get all records
                items = CalSwimDB.get_items()
                # Place all records in html frontend
                CalSwimView.set_content('admin')
                CalSwimView.content = CalSwimView.content % {'Items' : items}
#                CalSwimView.content = str(form.getlist('deletes'))
            else:
                # Get all records
                items = CalSwimDB.get_items()
                # Place all records in html frontend
                CalSwimView.set_content('admin')
                CalSwimView.content = CalSwimView.content % {'Items' : items}
        else:            
            CalSwimView.set_content('index')
            CalSwimView.content = CalSwimView.content % {'uploadResult' : "Incorrect name or password."}            
    else:        
        CalSwimView.set_content('index')
        CalSwimView.content = CalSwimView.content % {'uploadResult' : ""}
    
    # Return finalized content
    start_response('200 OK', [('content-type', 'text/html')]) 
    return CalSwimView.content
Exemple #2
0
def wsgi_app(environ, start_response):    
    """
        ==========================================================        
        * Logic for determining web view content is located here *
        ==========================================================
    """
    # Activate session storage
    session = environ['pesto.session']  
    # Retrieve GET variables and store them as a dictionary
    form = cgi.FieldStorage(fp=environ['wsgi.input'], environ=environ)

    # Initialize web classes    
    CalSwimView = WebView(base_dir, environ['wsgi.errors'])    
    CalSwimDB = WebDB(base_dir, environ['wsgi.errors'], environ.get('HTTP_HOST'));
    #print >> CalSwimView.errors, "Print Error Message In Apache Logs"
    
    """
        ================================================
        * Main switch to determine controller/template *
        ================================================
    """
    if 'get_map_locs' in form:
        """
            Return AJAX call results for Google Map Pins
        """
        CalSwimView.set_search(form.getvalue('get_map_locs'),form.getvalue('radius'),form.getvalue('keywords'))
        CalSwimView.content = CalSwimDB.get_map_locs(CalSwimView)    
    elif 'get_data_details' in form:
        """
           Return AJAX call results for data details
        """
        dataID = form.getvalue('get_data_details')
        
        if 'format' in form:
            format = form.getvalue('format')
        else:
            format = 'json'       
        CalSwimView.content = CalSwimDB.get_data_details(dataID, format)
        
        if format == 'csv':
            # Return CVS content
            start_response('200 OK', [('content-type', 'application/CSV'),('Content-Disposition','attachment; filename=ecodata'+dataID+'.csv')])
            return CalSwimView.content
        if format == 'json':
            start_response('200 OK', [('content-type', 'application/json')])
            return CalSwimView.content
    elif 'login' in form:
        # Logout from admin area
        if 'false' == form.getvalue('login'):
            session['user'] = ""
            session['g_id'] = ""
            session['u_id'] = ""
              
        # Set user name in session to mark successful login
        if 'username' in form:
            username = form.getvalue('username')
            passwd = md5(form.getvalue('password')).hexdigest()
            valid_user = CalSwimDB.validate_user(username,passwd)
            
            if valid_user:
                session['user'] = username
                session['u_id'] = CalSwimDB.user['u_id']
                session['g_id'] = ', '.join(map(str, CalSwimDB.user['g_id']))
            else:
                session['user'] = ""
        
        user = session.get('user')
        u_id = session.get('u_id')
        g_id = session.get('g_id')
        
        # If user has account allow access to upload area
        if user and u_id:
            if 'get_items' in form:
                # Get all records and return json list
                #items = CalSwimDB.get_items()
                CalSwimView.content = CalSwimDB.get_items('json',g_id)
            elif form.getvalue('import_data') == "update_data":
                """
                    Handler for a single item edit
                """
                gd_id = form.getvalue('edit')                
                CalSwimView.content = CalSwimDB.set_data_details(gd_id, form, g_id)
            elif form.getvalue('import_data') == "import_data":
                """
                    Handle AJAX call for data import into DB
                """        
                CalSwimDB.import_data(form,g_id)
                CalSwimView.content = CalSwimDB.return_message
            elif 'delete' in form:
                """
                    Handler for deleting items
                """                
                # Delete items from a list of ids
                CalSwimDB.delete_items(form.getlist('deletes'),g_id)
                # Set template type
                CalSwimView.set_content('admin')
                # Set content
                CalSwimView.content = CalSwimView.content
            else:
                # Set template type
                CalSwimView.set_content('admin')
                # Set content
                CalSwimView.content = CalSwimView.content
        else:            
            CalSwimView.set_content('index')
            CalSwimView.content = CalSwimView.content % {'uploadResult' : "Incorrect name or password."}            
    else:        
        CalSwimView.set_content('index')
        CalSwimView.content = CalSwimView.content % {'uploadResult' : ""}
    
    # Return finalized content
    start_response('200 OK', [('content-type', 'text/html')]) 
    return CalSwimView.content