def newsSource(nsid):
    conn = dbi.connect('credbase')
    source = dbi.lookupNewsSource(conn, nsid)
        
    if source == None:
        flash("Sorry, no news source with this ID is in the database")
        return redirect( url_for('home') )
    else:
        if 'username' in session and dbi.checkInWatchlist(conn, nsid, session['username']) is not None:
            source['onWatchlist'] = True
        else:
            source['onWatchlist'] = False
        stories = dbi.getStoriesByNewsSource(conn, nsid)
        similar = dbi.getSimilar(conn, nsid)
        #handle error that sometimes occurs, with unicode (some titles and URLs have hex characters in them)
        try:
            for story in stories:
                story['url'] = unicode(story['url'], errors='ignore')
                story['title'] = unicode(story['url'], errors='ignore')
                story['originQuery'] = unicode(story['originQuery'], errors='ignore')
                story['resultDate'] = unicode(story['resultDate'], errors='ignore')
            return render_template('news_source_page.html', page_title=unicode(source['name'], errors='ignore'), newsSource=source, stories=stories, similar_sources=similar, login_session=session)
        #sometimes have errors turning into unicode if already converted
        except TypeError: 
            return render_template('news_source_page.html', page_title=source['name'], newsSource=source, stories=stories, similar_sources=similar, login_session=session)
Пример #2
0
def user(username):
    try:
        # don't trust the URL; it's only there for decoration
        if 'username' in session:
            user = session['username']
            if username != user:
                flash('You are not logged in as this account. Switch accounts to proceed')
                return redirect( url_for('home') )
            conn = dbi.connect('credbase')
            user_info = dbi.lookupUser(conn, user)
            sources = dbi.getWatchedNewsSources(conn, user)
            for source in sources:
                source['name'] = dbi.lookupNewsSource(conn, source['nsid'])['name']
            return render_template('user_page.html', page_title=user_info['name'], sources=sources, login_session=session.get('name', 'Not logged in'))
        else:
            flash('You are not logged in. Please login or join')
            return redirect( url_for('home') )
    except Exception as err:
        flash('Error: '+str(err))
        return redirect( url_for('home') )
Пример #3
0
def newsSource(nsid):
    conn = dbi.connect('credbase')
    source = dbi.lookupNewsSource(conn, nsid)
    if source == None:
        flash("Sorry, no news source with this ID is in the database")
        #We need to create not found page or something...
        return redirect( url_for('home') )
    else:
        stories = dbi.getStoriesByNewsSource(conn, nsid)
        #handle error that sometimes occurs, with unicode (some titles and URLs have hex characters in them)
        try:
            for story in stories:
                story['url'] = unicode(story['url'], errors='ignore')
                story['title'] = unicode(story['url'], errors='ignore')
                story['originQuery'] = unicode(story['originQuery'], errors='ignore')
                story['resultDate'] = unicode(story['resultDate'], errors='ignore')
            return render_template('news_source_page.html', page_title=unicode(source['name'], errors='ignore'), newsSource=source, stories=stories, login_session=session.get('name', 'Not logged in'))
        #sometimes have errors turning into unicode if already converted
        except TypeError: 
            return render_template('news_source_page.html', page_title=source['name'], newsSource=source, stories=stories, login_session=session.get('name', 'Not logged in'))
def newsSource(nsid):
    conn = dbi.connect('credbase')
    source = dbi.lookupNewsSource(conn, nsid)
    if source == None:
        flash("Sorry, no news source with this ID is in the database")
        #We need to create not found page or something...
        return redirect(url_for('home'))
    else:
        stories = dbi.getStoriesByNewsSource(conn, nsid)
        for story in stories:
            print story
            story['url'] = story['url'].decode('utf-8')
            story['title'] = story['title'].decode('utf-8')
            story['originQuery'] = story['originQuery'].decode('utf-8')
        return render_template('news_source_page.html',
                               page_title=source['name'],
                               newsSource=source,
                               stories=stories,
                               login_session=session.get(
                                   'name', 'Not logged in'))
Пример #5
0
def updateSource(nsid):
    #NOT THREAD SAFE -- NEED TO FIX (should be fixed, ARR 11/11)
    if 'username' not in session:
        flash("You must be logged in to use this feature")
        return render_template("home_page.html", page_title="Welcome to CRED base!", login_session=session.get('name', 'Not logged in'))

    conn = dbi.connect('credbase') 
    if request.method == "GET":
        sourceInfo = dbi.lookupNewsSource(conn, nsid)
        #handing hex characters
        try:
            sourceInfo['url'] = unicode(sourceInfo['url'], errors='ignore')
            sourceInfo['name'] = unicode(sourceInfo['name'], errors='ignore')
            return render_template('update_source.html', sourceInfo=sourceInfo, login_session=session.get('name', 'Not logged in'))
        except TypeError:
            return render_template('update_source.html', sourceInfo=sourceInfo, login_session=session.get('name', 'Not logged in'))
    if request.method == "POST":
        print "got inside post"
        #delete if user wants
        if len(request.form) != 0:
            if 'submitDelete' in request.form:
                if 'delete' in request.form['submitDelete']: 
                    print "going to delete"
                    dbi.deleteSource(conn, nsid)
                    flash("Source with NSID: " + str(nsid) + " was removed from the database")
                    sourceInfo = dbi.lookupNewsSource(conn, nsid)
                    return render_template('update_source.html', sourceInfo=[], login_session=session.get('name', 'Not logged in'))
            #otherwise update as appropriate
            if 'submitUpdate' in request.form:
                if 'update' in request.form['submitUpdate']: 
                    original = dbi.lookupNewsSource(conn, nsid)
                    print original
                    if (original['name'] != request.form['name']) and (request.form['name'] != ""):
                         dbi.updateSourceName(conn, request.form['name'], nsid)
                    if (original['publisher'] != request.form['publisher']) and (request.form['publisher'] != ""):
                         dbi.updateSourcePublisher(conn, request.form['publisher'], nsid)
                    #special case where may not have a mediatype value picked
                    if 'mediatype' in request.form:
                        if (original['mediatype'] != request.form['mediatype']) and (request.form['mediatype'] != ""):
                             print original['mediatype']
                             print request.form['mediatype']
                             dbi.updateSourceMediatype(conn, request.form['mediatype'], nsid)
                    if (original['location'] != request.form['location']) and (request.form['location'] != ""):
                         dbi.updateSourceLocation(conn, request.form['location'], nsid)
                    if (original['editor'] != request.form['editor']) and (request.form['editor'] != ""):
                         dbi.updateSourceEditor(conn, request.form['editor'], nsid)
                    if (original['url'] != request.form['url']) and (request.form['url'] != ""):
                        dbi.updateSourceURL(conn, request.form['url'], nsid)
                    if (original['doe'] != request.form['doe']) and (request.form['doe'] != ""):
                         dbi.updateSourceDOE(conn, request.form['doe'], nsid)
                    sourceInfo = dbi.lookupNewsSource(conn, nsid)
                    return render_template('update_source.html', sourceInfo=sourceInfo, login_session=session.get('name', 'Not logged in'))
        
        else:
            print "got into else"
            print dbi.lookupNewsSource(conn, nsid)
            sourceInfo = dbi.lookupNewsSource(conn, nsid)
            try:
                sourceInfo['url'] = unicode(sourceInfo['url'], errors='ignore')
                sourceInfo['name'] = unicode(sourceInfo['name'], errors='ignore')
                return render_template('update_source.html', sourceInfo=sourceInfo, login_session=session.get('name', 'Not logged in'))
            except TypeError:
                return render_template('update_source.html', sourceInfo=sourceInfo, login_session=session.get('name', 'Not logged in'))
    flash("No changes made, please change appropriate values or delete item, as desired")
    return render_template('update_source.html', sourceInfo=sourceInfo, login_session=session.get('name', 'Not logged in'))