Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # __init__.py
- # coding: utf-8
- from flask import Flask
- from flask_sqlalchemy import SQLAlchemy
- from flask_login import LoginManager
- from controllers import main
- app = Flask(__name__)
- app.config['JSON_AS_ASCII'] = False
- app.config.from_json("config.json")
- db = SQLAlchemy(app)
- # db.init_app(app)
- lm = LoginManager()
- lm.init_app(app)
- app.register_blueprint(main)
- if __name__ == "__main__":
- app.run()
- ______________________________________________________
- # controllers.py
- # coding: utf-8
- from flask import Blueprint
- from flask import current_app as app
- from flask import render_template
- from flask import request
- from re import compile
- from flask_login import login_required, login_manager
- from apis.nra import NraAPI
- from apis.orange import OrangeAPI
- from models import User
- main = Blueprint('main', __name__)
- @login_manager.user_loader
- def load_user(user_id):
- return User.get(user_id)
- @main.route('/login', methods=['GET', 'POST'])
- def login():
- return render_template('login.html')
- @main.route('/', methods=['GET', 'POST'])
- @login_required
- def index():
- """
- Page principale du test_md5 d'éligibilitée, divisés en deux méthode GET et POST,
- Cette page génère un formulaire, puis traite les informations en passant par l'API Orange.
- @return: Retourne une vue sous forme de texte au format HTML
- @rtype: str
- """
- if request.method == 'POST':
- ndi = request.form['ndi']
- regex = compile('^\d{10}$')
- if regex.match(ndi) is not None:
- study_type = request.form['study_type']
- orange_api = OrangeAPI(app)
- orange_api.connect()
- eligibility = orange_api.get_eligibility(ndi, study_type, app.config["XDSL"])
- if len(eligibility[0]) > 0:
- nra_api = NraAPI(app)
- infos = dict(nra_api.get_info(eligibility[1]))
- return render_template('result.html',
- products=eligibility[0],
- site=eligibility[1],
- length=eligibility[2],
- weakning=eligibility[3],
- ndi=ndi,
- TECHNOLOGIES_SORTING=app.config['TECHNOLOGIES_SORTING'],
- zone=infos.get('zone', '?'),
- code_insee=infos.get('code_insee', '?'),
- city=infos.get('city', '?'),
- department=infos.get('department', '?'),
- region=infos.get('region', '?'))
- else:
- return render_template('error.html', error=u'Impossible d\'étudier l\'éligibilité de la ligne.')
- else:
- return render_template('error.html', error=u'Le format du numéro de désignation est incorrect.')
- else:
- return render_template('form.html')
- __________________________________________________________
- # models.py
- # coding: utf-8
- from eligibility_test import db
- class User(db.Model):
- id = db.Column(db.Integer, primary_key=True)
- username = db.Column(db.String(16), unique=True)
- password = db.Column(db.String(32))
- logs = db.relationship('Log', backref=db.backref('user'), lazy='dynamic')
- def __init__(self, username, password=None):
- self.username = username
- if password:
- self.password = password
- else:
- self.gen_password(12)
- def __repr__(self):
- return '<User %r>' % self.username
- def add(self):
- db.session.add(self)
- db.session.commit()
- def gen_password(self, length):
- import random
- alphanum = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
- random_password = "".join([random.choice(alphanum) for i in range(length)])
- self.password = random_password
- return random_password
- class Log(db.Model):
- id = db.Column(db.Integer, primary_key=True)
- def __init__(self):
- pass
- def __repr__(self):
- return '<Log %r>' % self.id
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement