Tried for a while to fix this but nothing helped, I don't know what's throwing this issue.
My views.py
Thanks in advance.
And sorry for not pointing out that the full error is:
My views.py
""" Routes and views for the flask application. """ import datetime from datetime import datetime import get from flask import render_template, redirect, request from FlaskWebProject1 import app from FlaskWebProject1.models import PollNotFound from FlaskWebProject1.models.factory import create_repository from FlaskWebProject1.settings import REPOSITORY_NAME, REPOSITORY_SETTINGS import numpy as np import matplotlib.pyplot as plt import pandas as pd import json import requests import io import base64 from flask import Flask, render_template, flash, request from wtforms import Form, BooleanField, StringField, PasswordField, validators from wtforms import TextField, TextAreaField, SubmitField from wtforms import ValidationError from FlaskWebProject1.models.objects import RegistrationForm from FlaskWebProject1.models.objects import LoginForm from FlaskWebProject1.models.objects import SearchParameters repository = create_repository(REPOSITORY_NAME, REPOSITORY_SETTINGS) # ------------------------------------------------------- # transform a picture to a memory represenation of the image # ------------------------------------------------------- def fig_to_base64(fig): img = io.BytesIO() fig.savefig(img, format='png', bbox_inches='tight') img.seek(0) return base64.b64encode(img.getvalue()) # ------------------------------------------------------- # return boolean if username (paramter) is in the Users DB # ------------------------------------------------------- def IsUserExist(UserName): # Load the database of users df = repository.OpenUsersDB() df = df.set_index('username') return (UserName in df.index.values) # ------------------------------------------------------- # return boolean if username/password pair is in the DB # ------------------------------------------------------- def IsLoginGood(UserName, Password): # Load the database of users df = repository.OpenUsersDB() df=df.reset_index() selection = [UserName] df = df[pd.DataFrame(df.username.tolist()).isin(selection).any(1)] df = df.set_index('password') return (Password in df.index.values) # ------------------------------------------------------- # Add a new user to the DB # ------------------------------------------------------- def AddNewUser(User): # Load the database of users df = repository.OpenUsersDB() dfNew = pd.DataFrame([[User.username.data, User.password.data,User.email.data,User.phone.data,User.firstname.data,User.lastname.data]], columns=['username', 'password', 'email', 'phone', 'firstname', 'lastname']) dfComplete = df.append(dfNew, ignore_index=True) repository.WriteToFile_users(dfComplete) # ------------------------------------------------------- # Page routing - position of the home page # ------------------------------------------------------- @app.route('/') @app.route('/home') def home(): """Renders the home page, with a list of all polls.""" return render_template( 'index.html', title='Home', year=datetime.now().year, month=datetime.now().month, day=datetime.now().day, hour=datetime.now().hour, minute=datetime.now().minute, polls=repository.get_polls(), ) # ------------------------------------------------------- # Page routing - position of the about page # ------------------------------------------------------- @app.route('/about') def about(): """Renders the about page.""" return render_template( 'about.html', title='About', year=datetime.now().year, month=datetime.now().month, day=datetime.now().day, hour=datetime.now().hour, minute=datetime.now().minute, repository_name=repository.name, ) # ------------------------------------------------------- # Page routing - position of the contact page # ------------------------------------------------------- @app.route('/contact') def contact(): """Renders the contact page.""" return render_template( 'contact.html', title='Contact', year=datetime.now().year, month=datetime.now().month, day=datetime.now().day, hour=datetime.now().hour, minute=datetime.now().minute, ) # ------------------------------------------------------- # Register new user page # ------------------------------------------------------- @app.route('/register', methods=['GET', 'POST']) def register(): form = RegistrationForm(request.form) if request.method == 'POST' and form.validate(): user = User(form.username.data, form.email.data, form.password.data) db_session.add(user) flash('Thanks for registering') return redirect(url_for('/home')) else: return render_template( 'register.html', year=datetime.now().year, month=datetime.now().month, day=datetime.now().day, hour=datetime.now().hour, minute=datetime.now().minute, form=form ) # ------------------------------------------------------- # Login page # This page is the filter before the data analysis # ------------------------------------------------------- @app.route('/login', methods=['GET', 'POST']) def login(): form = LoginForm(request.form) if (request.method == 'POST' and form.validate()): if (IsLoginGood(form.username.data, form.password.data)): return redirect('GetParameters') else: flash('Error in - Username and password') return render_template( 'login.html', form=form, title='Login to data analysis', year=datetime.now().year, repository_name='Pandas', ) # ------------------------------------------------------- # When a user was qualified o enter the DB page # he needs to enter some parameters to set the requested # query # ------------------------------------------------------- @app.route('/GetParameters', methods=['GET', 'POST']) def GetParameters(): form = SearchParameters(request.form) if (request.method == 'POST' and form.validate()): return pandas(form) return render_template( 'GetParameters.html', form=form, title='Enter parameters for data analysis', year=datetime.now().year, repository_name='Pandas', ) # ------------------------------------------------------- # The data analysis page according to the entered parameters # Get parameters that the user entered # ------------------------------------------------------- @app.route('/pandas/<form>') def pandas(form): #choosedatabase = form.choosedatabase.data #startdate = form.startdate.data #form = SearchParameters(self.request.POST) if (form!='None'): form = SearchParameters(request.form) DBPath=form.choosedatabase.data FromDate = form.startdate.data #DBPath='https://data.gov.il/api/action/datastore_search?resource_id=1cf76fb6-1813-40b8-b13f-91ecc1384994&limit=1000' #FromDate = "1/1/2019" else: DBPath='https://data.gov.il/api/action/datastore_search?resource_id=1cf76fb6-1813-40b8-b13f-91ecc1384994&limit=1000' FromDate = "1/1/2019" r = requests.get(DBPath) x = r.json() #y = str(type(x)) df = pd.DataFrame.from_dict(x["result"]["records"]) db_table = df.head(5).to_html(escape=False) fig, ax = plt.subplots() df['_id'].hist() encoded = fig_to_base64(fig) plot_img = '<img src="data:image/png;base64, {}">'.format(encoded.decode('utf-8')) return render_template( 'pandas.html', title='Pandas', year=datetime.now().year, repository_name='Pandas', db_table=db_table, plot_img=plot_img, )My __init___.py
""" The flask application package. """ from flask import Flask app = Flask(__name__) import FlaskWebProject1.views def _load_users(): users_db = path.join(path.dirname(_file_), '..\\static\\db\\users.json') try: with open(users_db, 'r') as userfile: s = json.load(userfile) x = json.load(s) df = pd.DataFrame.from_dict(x) except: Data = {'username': ['netalevy', 'admin'], 'password': ['netalevy', 'admin1234'], 'email': ['[email protected]', '[email protected]'], 'phone': ['054-3333475', '054-3333475'], 'firstname': ['Neta', 'Teacher'], 'lastname': ['Levy', 'Tichonet'] } df = pd.DataFrame(Data, collums=['username', 'password', 'email', 'phone', 'firstname', 'lastname']) finally: return dfI have been looking for days how to fix this... Please help me.
Thanks in advance.
And sorry for not pointing out that the full error is:
Error:Traceback (most recent call last):
File "C:\Users\User\source\repos\FlaskWebProject1\FlaskWebProject1\FlaskWebProject1\views.py", line 83, in <module>
@app.route('/home')
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\site-packages\flask\app.py", line 1250, in decorator
self.add_url_rule(rule, endpoint, f, **options)
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\site-packages\flask\app.py", line 66, in wrapper_func
return f(self, *args, **kwargs)
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\site-packages\flask\app.py", line 1221, in add_url_rule
'existing endpoint function: %s' % endpoint)
AssertionError: View function mapping is overwriting an existing endpoint function: home
Press any key to continue . . .
So the function that throws this error is home.