Advertisement
Guest User

Untitled

a guest
Feb 16th, 2017
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.20 KB | None | 0 0
  1. # __init__.py
  2.  
  3. # coding: utf-8
  4. from flask import Flask
  5. from flask_sqlalchemy import SQLAlchemy
  6. from flask_login import LoginManager
  7. from controllers import main
  8.  
  9. app = Flask(__name__)
  10. app.config['JSON_AS_ASCII'] = False
  11. app.config.from_json("config.json")
  12. db = SQLAlchemy(app)
  13. # db.init_app(app)
  14. lm = LoginManager()
  15. lm.init_app(app)
  16.  
  17. app.register_blueprint(main)
  18.  
  19. if __name__ == "__main__":
  20.     app.run()
  21.  
  22.  
  23. ______________________________________________________
  24. # controllers.py
  25.  
  26.  
  27. # coding: utf-8
  28. from flask import Blueprint
  29. from flask import current_app as app
  30. from flask import render_template
  31. from flask import request
  32. from re import compile
  33.  
  34. from flask_login import login_required, login_manager
  35.  
  36. from apis.nra import NraAPI
  37. from apis.orange import OrangeAPI
  38. from models import User
  39.  
  40. main = Blueprint('main', __name__)
  41.  
  42.  
  43. @login_manager.user_loader
  44. def load_user(user_id):
  45.     return User.get(user_id)
  46.  
  47.  
  48. @main.route('/login', methods=['GET', 'POST'])
  49. def login():
  50.     return render_template('login.html')
  51.  
  52.  
  53. @main.route('/', methods=['GET', 'POST'])
  54. @login_required
  55. def index():
  56.     """
  57.    Page principale du test_md5 d'éligibilitée, divisés en deux méthode GET et POST,
  58.    Cette page génère un formulaire, puis traite les informations en passant par l'API Orange.
  59.    @return: Retourne une vue sous forme de texte au format HTML
  60.    @rtype: str
  61.    """
  62.     if request.method == 'POST':
  63.         ndi = request.form['ndi']
  64.         regex = compile('^\d{10}$')
  65.         if regex.match(ndi) is not None:
  66.             study_type = request.form['study_type']
  67.             orange_api = OrangeAPI(app)
  68.             orange_api.connect()
  69.             eligibility = orange_api.get_eligibility(ndi, study_type, app.config["XDSL"])
  70.             if len(eligibility[0]) > 0:
  71.                 nra_api = NraAPI(app)
  72.                 infos = dict(nra_api.get_info(eligibility[1]))
  73.                 return render_template('result.html',
  74.                                        products=eligibility[0],
  75.                                        site=eligibility[1],
  76.                                        length=eligibility[2],
  77.                                        weakning=eligibility[3],
  78.                                        ndi=ndi,
  79.                                        TECHNOLOGIES_SORTING=app.config['TECHNOLOGIES_SORTING'],
  80.                                        zone=infos.get('zone', '?'),
  81.                                        code_insee=infos.get('code_insee', '?'),
  82.                                        city=infos.get('city', '?'),
  83.                                        department=infos.get('department', '?'),
  84.                                        region=infos.get('region', '?'))
  85.             else:
  86.                 return render_template('error.html', error=u'Impossible d\'étudier l\'éligibilité de la ligne.')
  87.         else:
  88.             return render_template('error.html', error=u'Le format du numéro de désignation est incorrect.')
  89.     else:
  90.         return render_template('form.html')
  91.  
  92.  
  93.  
  94.  
  95. __________________________________________________________
  96. # models.py
  97.  
  98.  
  99. # coding: utf-8
  100.  
  101. from eligibility_test import db
  102.  
  103.  
  104. class User(db.Model):
  105.     id = db.Column(db.Integer, primary_key=True)
  106.     username = db.Column(db.String(16), unique=True)
  107.     password = db.Column(db.String(32))
  108.     logs = db.relationship('Log', backref=db.backref('user'), lazy='dynamic')
  109.  
  110.     def __init__(self, username, password=None):
  111.         self.username = username
  112.         if password:
  113.             self.password = password
  114.         else:
  115.             self.gen_password(12)
  116.  
  117.     def __repr__(self):
  118.         return '<User %r>' % self.username
  119.  
  120.     def add(self):
  121.         db.session.add(self)
  122.         db.session.commit()
  123.  
  124.     def gen_password(self, length):
  125.         import random
  126.         alphanum = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
  127.         random_password = "".join([random.choice(alphanum) for i in range(length)])
  128.         self.password = random_password
  129.         return random_password
  130.  
  131.  
  132. class Log(db.Model):
  133.     id = db.Column(db.Integer, primary_key=True)
  134.  
  135.     def __init__(self):
  136.         pass
  137.  
  138.     def __repr__(self):
  139.         return '<Log %r>' % self.id
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement