Spaces:
Runtime error
Runtime error
| # Plugin will run on this file & Strictly only contains codes for routing between files! | |
| from flask import Flask, render_template, request, flash, g | |
| from TextSummarizationFeature import summarize, getTextSumContents, insertTextSumRow | |
| from BreakdownFeature import breakdown, getBreakdownContents, insertBreakdownRow | |
| from TranslationFeature import translate_text, switch, getTranslatedContents, insertTranslationRow | |
| from GenerationFeature import generate, getTextGenContents, insertTextGenRow | |
| app = Flask(__name__) | |
| app.secret_key = 'refineverseAdmin' # Used to encrypt cookies & sessions | |
| # Routing to Main Dashboard/homepage file | |
| def index(): | |
| return render_template('RefineverseDashboardUI.html') | |
| # Routing to text summarization file | |
| def text_summarization(): | |
| if request.method == "POST": | |
| try: | |
| # Grab the user story text from the textarea in html form | |
| Entered_story = request.form["input_text"] | |
| # The results are stored into a dictionary variable | |
| summarizedStory = summarize(Entered_story) | |
| flash("Your user story has been summarized!") # Displays a success message using flash, which is part of the Flask framework | |
| # Insert into TextSummarization table in Refineverse.db | |
| insertTextSumRow(Entered_story, summarizedStory) | |
| # Render and display summarized user story | |
| return render_template('TextSummarizationUI.html', summarizedStory=summarizedStory) | |
| # Exception handling messages for specific errors | |
| except ValueError as e: | |
| if str(e) == "Empty input!": | |
| flash("The input text cannot be empty! Please enter a user story.", 'error') | |
| return render_template('TextSummarizationUI.html') | |
| elif str(e) == "Incorrect format!": | |
| flash("Incorrect user story format! Please enter in the right format.", 'error') | |
| return render_template('TextSummarizationUI.html') | |
| elif str(e) == "Invalid length!": | |
| flash("Your inputted user story is too short to summarize. Please enter a longer story!", 'error') | |
| return render_template('TextSummarizationUI.html') | |
| else: # As a final resort, simply print out the error name | |
| flash("An error of type '{}' occurred: {}".format(type(e).__name__, str(e)), 'error') | |
| return render_template('TextSummarizationUI.html') | |
| except KeyError: | |
| flash("Please enter a valid user story!") | |
| return render_template('TextSummarizationUI.html') | |
| # Catch-all exception handling | |
| except Exception as e: | |
| flash("An error of type '{}' occurred: {}".format(type(e).__name__, str(e)), 'error') | |
| return render_template('TextSummarizationUI.html') | |
| else: | |
| return render_template('TextSummarizationUI.html') | |
| # Routing to summarization table file | |
| def summarization_table(): | |
| # Get the summarization data from the database | |
| summarizations = getTextSumContents() | |
| # Render the summarization data as an HTML table | |
| return render_template('SummarizationTable.html', summarizations=summarizations) | |
| # Routing to Project Task Breakdown file | |
| # This tells flask the route to get to the page | |
| def project_breakdown(): | |
| if request.method == "POST": # POST occurs when submitting a form, as specified in the HTML file | |
| try: | |
| # Grab the user story contents | |
| userStory = request.form["user-story-text"] | |
| # The results are stored into a dictionary variable | |
| processedLabel = breakdown(userStory) | |
| # Display success popup message | |
| flash("Your user story has been allocated as a " + processedLabel + " task!") | |
| insertBreakdownRow(userStory, processedLabel) # Inserts data into the Breakdown table | |
| rows = getBreakdownContents() # Grab all contents inside the Breakdown table | |
| return render_template('ProjectBreakdownUI.html', rows=rows) | |
| # Exception handling messages for specific errors | |
| except KeyError: | |
| flash("Please enter a valid user story!", 'error') | |
| rows = getBreakdownContents() | |
| return render_template('ProjectBreakdownUI.html', row=rows) | |
| # Catch-all exception handling | |
| except Exception as e: | |
| flash("An error of type '{}' occurred: {}".format(type(e).__name__, str(e)), 'error') | |
| rows = getBreakdownContents() | |
| return render_template('ProjectBreakdownUI.html', rows=rows) | |
| else: # For "GET" scenarios (loading the page, etc.) | |
| rows = getBreakdownContents() # To always display the table, we must grab the contents of Breakdown every time the page loads | |
| return render_template('ProjectBreakdownUI.html', rows=rows) | |
| # Routing to Translation file | |
| def language_translation(): | |
| if request.method == "POST": | |
| try: | |
| # Grab all relevant information for processing | |
| input_text = request.form['input'] # Grab user text input | |
| # Grab source language code | |
| source_language = request.form['source_language'] | |
| # Grab target language code | |
| target_language = request.form['target_language'] | |
| # Generate translated text using custom translation function | |
| translatedStory = translate_text(input_text, source_language, target_language) | |
| # Display success popup message | |
| flash("Your user story has been translated to " + switch(target_language) + " !") | |
| # Insert into Translation table in Refineverse.db | |
| insertTranslationRow(input_text, translatedStory) | |
| # Display the page | |
| return render_template('LanguageTranslationUI.html', input_text=input_text, translatedStory=translatedStory) | |
| # Exception handling messages for specific errors | |
| except ValueError as e: | |
| if str(e) == "Empty input!": | |
| flash("The input text cannot be empty! Please enter a user story.", 'error') | |
| return render_template('LanguageTranslationUI.html') | |
| elif str(e) == "Incorrect format!": | |
| flash("Unable to translate your user story. Please enter in the correct format.", 'error') | |
| return render_template('LanguageTranslationUI.html') | |
| else: # As a final resort, simply print out the error name | |
| flash("An error of type '{}' occurred: {}".format(type(e).__name__, str(e)), 'error') | |
| return render_template('LanguageTranslationUI.html') | |
| # Catch-all exception handling | |
| except Exception as e: | |
| flash("An error of type '{}' occurred: {}".format(type(e).__name__, str(e)), 'error') | |
| return render_template('LanguageTranslationUI.html') | |
| else: | |
| return render_template('LanguageTranslationUI.html') | |
| # Routing to translation table file | |
| def translation_data(): | |
| # Get the translation data from the database | |
| translations = getTranslatedContents() | |
| # Render the translation data as an HTML table | |
| return render_template('TranslationTable.html', translations=translations) | |
| # Routing to text summarization file | |
| def text_generation(): | |
| if request.method == "POST": | |
| try: | |
| # Grab the user story text from the textarea in html form | |
| Entered_story = request.form["input_text"] | |
| # The results are stored into a dictionary variable | |
| generatedStory = generate(Entered_story) | |
| # Display a success message for the user | |
| flash("Your user story has been generated!") | |
| # Insert into TextGeneration table in Refineverse.db | |
| insertTextGenRow(Entered_story, generatedStory) | |
| # Render and display summarized user story | |
| return render_template('TextGenerationUI.html', generatedStory=generatedStory) | |
| # Exception handling messages for specific errors | |
| except ValueError as e: | |
| if str(e) == "Empty input!": | |
| flash("The input text cannot be empty! Please enter a user story.", 'error') | |
| return render_template('TextGenerationUI.html') | |
| elif str(e) == "Incorrect format!": | |
| flash("Incorrect user story format! Please enter in the right format.", 'error') | |
| return render_template('TextGenerationUI.html') | |
| else: # As a final resort, simply print out the error name | |
| flash("An error of type '{}' occurred: {}".format(type(e).__name__, str(e)), 'error') | |
| return render_template('TextGenerationUI.html') | |
| except KeyError: | |
| flash("Please enter a valid user story!") | |
| return render_template('TextGenerationUI.html') | |
| # Catch-all exception handling | |
| except Exception as e: | |
| flash("An error of type '{}' occurred: {}".format(type(e).__name__, str(e)), 'error') | |
| return render_template('TextGenerationUI.html') | |
| else: | |
| return render_template('TextGenerationUI.html') | |
| # Routing to generation table file | |
| def generation_table(): | |
| # Get the generation data from the database | |
| generations = getTextGenContents() | |
| # Render the generation data as an HTML table | |
| return render_template('GenerationTable.html', generations=generations) | |
| # Used when the application is torn down | |
| # Its purpose is to close the database connection if it has not been closed | |
| def close_connection(exception): | |
| db = getattr(g, '_database', None) | |
| if db is not None: | |
| db.close() # Closes the database connection | |
| # Initialise the app | |
| if __name__ == '__main__': | |
| app.run(host="0.0.0.0", port=7860) # For HF hosting | |
| #app.run(debug=False) # can set to True/False for local testing |