1 pièce(s) jointe(s)
[Flask]je crois que je suis perdu
Bonjour à tout le monde
je développe depuis plusieurs années par intermittence une petite application immobiliers ( suivi quittance, édition automatique, etc....)
dans l'IDE, çà se passait bien..j'ai décidé de continuer a développer sur mon poste, et a installer l'appli en production ( serveur dédié, passage de flask à gunicorn)
Le problème est que ça ne démarre pas, pas de message d'erreur, rien a l écran, ni dans les logs
voici l'archi
REP_INSTALL
|____________.flaskenv
|____________config
|____________immo.py
|____________immo
|_____routes.py
|_____routes_listes.py
|_____routes_ajout.py
|_____....
|_____models.py
|_____templates
|________index.html
Pièce jointe 636244
et voici les fichiers
.flaskenv :
Code:
1 2 3 4 5 6 7 8 9 10
| FLASK_APP=immo.py
#FLASK_DEBUG=on
# SQL Database
# Leave comment for SQLite3 database
# Uncomment and update for mysql database
# SQLALCHEMY_DATABASE_URI=mysql+pymysql://MYSQL_USER:MYSQL_PASSWORD@MYSQL_SERVER:3306/DATABASE
# Uncomment and update for mysql database
SQLALCHEMY_DATABASE_URI=mysql+pymysql://immo:PASSWORD@localhost:3306/IMMOBILIER
# Directory to Install
REP_INSTALL=/Projet/ma-PGI |
config.py :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| import os
basedir = os.path.abspath(os.path.dirname(__file__))
class Config(object):
SECRET_KEY = os.environ.get('SECRET_KEY') or 'you-will-never-guess'
SQLALCHEMY_DATABASE_URI = os.environ.get('SQLALCHEMY_DATABASE_URI') or \
'sqlite:///' + os.path.join(basedir, 'immo.db')
SQLALCHEMY_TRACK_MODIFICATIONS = False
class App_Config(object):
REP_CONTRAT_LOCATION = os.path.join(basedir, "Fichiers/Contrats_de_locations/")
REP_QUITTANCES = os.path.join(basedir, "Fichiers/Quittances/")
REP_MODELES = os.path.join(basedir, "Fichiers/Modeles/")
REP_LOG = os.path.join(basedir, "Logs/")
FICHIER_LOG = os.path.join(basedir, REP_LOG + "immo.log")
NIVEAU_LOG = "INFO" # ou WARN ou DEBUG ou ERROR
Message_IHM = "" |
immo.py :
Code:
1 2 3 4 5 6 7 8 9 10 11
| import config
from immo import immo as application, db
from immo.models import Appartements, Locations
@immo.shell_context_processor
def make_shell_context():
return {'db': db, 'Appartements': Appartements, 'Locataire': Locations}
app = application |
immo/__init__.py
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from config import Config, App_Config
immo = Flask(__name__)
immo.config.from_object(Config)
immo.config.from_object(App_Config)
db = SQLAlchemy(immo)
migrate = Migrate(immo, db)
from immo import routes, routes_ajouts, routes_init, routes_listes, routes_divers, routes_modifications, models |
immo/routes.py
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
from flask import render_template
from immo import immo
from config import App_Config
from immo.models import Appartements,Encaissements
from flask_sqlalchemy import SQLAlchemy
import logging
import locale
locale.setlocale(locale.LC_TIME, '')
logging.basicConfig(filename=App_Config.FICHIER_LOG, level=logging.INFO, format='%(asctime)s -- %(name)s -- %(levelname)s -- %(message)s')
logging.getLogger('sqlalchemy.engine').setLevel(logging.INFO)
#db = SQLAlchemy(immo)
@immo.route('/')
@immo.route('/index')
def index():
Titre_Page = "ma PGI :: Accueil"
db = SQLAlchemy(immo)
print("toto")
nb_a = db.session.query(Appartements).count()
nb_a_libre=db.session.query(Appartements).filter(Appartements.LIBRE==0).count()
print(nb_a,nb_a_libre)
nb_e = db.session.query(Encaissements).count()
nb_loyers = db.session.query(Encaissements).filter(Encaissements.TYPE_ENCAISSEMENT=='Loyer et Charges').count()
print(nb_e, nb_loyers)
return render_template('index.html', TITRE_PAGE=Titre_Page,NB_APPARTEMENTS=nb_a,NB_APPARTEMENTS_LIBRES=nb_a_libre, NB_ENCAISSEMENTS=nb_e, NB_LOYERS=nb_loyers, Affichage_Message_Information="True", Message_IHM=App_Config.Message_IHM) |
immo/models.py
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
from immo import db
from dataclasses import dataclass
class Appartements(db.Model):
__tablename__ = "T_APPARTEMENTS"
id = db.Column(db.Integer, primary_key=True)
NUMERO = db.Column(db.Integer, )
NOM_VOIE = db.Column(db.String(10), )
VOIE = db.Column(db.String(50))
CP = db.Column(db.Integer)
VILLE = db.Column(db.String(50))
RESIDENCE = db.Column(db.String(30))
NOM_PROPRIETAIRE = db.Column(db.String(50))
DATE_ACHAT = db.Column(db.Date)
LIBRE = db.Column(db.Integer)
def __repr__(self):
return str(self.id)
def save(self):
db.session.add(self)
db.session.commit()
def update_data(self, new_data):
self.data = new_data
@classmethod
def get_by_id(cls, id):
return cls.query.filter_by(id=id).first()
def toDICT(self):
cls_dict = {}
cls_dict['_id'] = self.id
cls_dict['data'] = self.data
return cls_dict
def toJSON(self):
return self.toDICT()
class Locations(db.Model):
__tablename__ = "T_LOCATIONS" |
Erreur dans le navigateur
Code:
1 2 3
| Internal Server Error
The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application. |
Ce code va peut-être vous choquer...mais j'apprends doucement, sur mon temps libre, alors soyez indulgents ;-)
Il y a 6 mois, il y avait plein de requêtes sql, j'ai décidé de passer avec SQL Alchemy, pour apprendre....bref, j'ai fait des choses pour améliorer et sécuriser , je me suis documenté, du mieux que mon anglais défaillant me le permet
Merci d'avance à ceux qui voudront/pourront m'aider
Olivier