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)
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') )
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'))
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'))