ibr1.py 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. #!/bin/env python
  2. from flask import Flask, request
  3. from flask_restful import Resource, Api
  4. from flask_sqlalchemy import SQLAlchemy
  5. app = Flask(__name__)
  6. app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+oursql://ibrweb:;gH8eE6vo@localhost/ibr'
  7. app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
  8. app.config['RESTFUL_JSON'] = { 'separators': ( ', ', ': '), 'indent': 2 }
  9. db = SQLAlchemy(app)
  10. class Candidate(db.Model):
  11. __tablename__ = 'candidate'
  12. __table_args__ = (
  13. db.Index('iStatus', 'status', 'ID'),
  14. db.Index('iCompanyStatusSubmittedOn', 'company', 'status', 'Submitted_On'),
  15. db.Index('iCompany', 'company', 'ID')
  16. )
  17. ID = db.Column(db.Integer, primary_key=True)
  18. company = db.Column(db.String(25), nullable=False, server_default=db.FetchedValue())
  19. passfail = db.Column(db.Integer, nullable=False, server_default=db.FetchedValue())
  20. status = db.Column(db.Integer, nullable=False, server_default=db.FetchedValue())
  21. First = db.Column(db.String(50), nullable=False, server_default=db.FetchedValue())
  22. Middle = db.Column(db.String(50), nullable=False, server_default=db.FetchedValue())
  23. Last = db.Column(db.String(90), nullable=False, index=True, server_default=db.FetchedValue())
  24. Aliases = db.Column(db.Text)
  25. SSN = db.Column(db.String(9), nullable=False, index=True, server_default=db.FetchedValue())
  26. SSNfound = db.Column(db.String(9), nullable=False, index=True, server_default=db.FetchedValue())
  27. DOB = db.Column(db.Date, nullable=False, server_default=db.FetchedValue())
  28. Phone = db.Column(db.String(25), nullable=False, server_default=db.FetchedValue())
  29. Address = db.Column(db.String(255), nullable=False, server_default=db.FetchedValue())
  30. City = db.Column(db.String(50), nullable=False, server_default=db.FetchedValue())
  31. County = db.Column(db.String(50), nullable=False, server_default=db.FetchedValue())
  32. State = db.Column(db.String(2), nullable=False, server_default=db.FetchedValue())
  33. ZipCode = db.Column(db.String(25), nullable=False, server_default=db.FetchedValue())
  34. PreviousAddresses = db.Column(db.Text)
  35. Comments = db.Column(db.Text)
  36. username = db.Column(db.String(25), nullable=False, server_default=db.FetchedValue())
  37. Submitter = db.Column(db.String(50), nullable=False, server_default=db.FetchedValue())
  38. Submitter_Phone = db.Column(db.String(35), nullable=False, server_default=db.FetchedValue())
  39. Submitter_company = db.Column(db.String(25), nullable=False, server_default=db.FetchedValue())
  40. cost = db.Column(db.Float, nullable=False, server_default=db.FetchedValue())
  41. order_name = db.Column(db.String(25), nullable=False, index=True, server_default=db.FetchedValue())
  42. completed = db.Column(db.DateTime, nullable=False, index=True, server_default=db.FetchedValue())
  43. Submitted_On = db.Column(db.DateTime, nullable=False, index=True, server_default=db.FetchedValue())
  44. Gender = db.Column(db.String(1), nullable=False, server_default=db.FetchedValue())
  45. lastfilename = db.Column(db.String(90))
  46. TIN = db.Column(db.String(9), nullable=False, server_default=db.FetchedValue())
  47. business = db.Column(db.String(50), nullable=False, server_default=db.FetchedValue())
  48. email = db.Column(db.String(75), nullable=False, server_default=db.FetchedValue())
  49. minimal = db.Column(db.Integer, nullable=False, index=True, server_default=db.FetchedValue())
  50. failmail = db.Column(db.Integer, nullable=False, index=True, server_default=db.FetchedValue())
  51. sendreport = db.Column(db.Integer, nullable=False, index=True, server_default=db.FetchedValue())
  52. clientpassthru = db.Column(db.String(50), nullable=False, server_default=db.FetchedValue())
  53. class Login(db.Model):
  54. __tablename__ = 'login'
  55. username = db.Column(db.String(25), primary_key=True, server_default=db.FetchedValue())
  56. password = db.Column(db.String(35))
  57. created = db.Column(db.DateTime)
  58. lastpw = db.Column(db.DateTime)
  59. lastlogin = db.Column(db.DateTime)
  60. email = db.Column(db.String(200), nullable=False, server_default=db.FetchedValue())
  61. company = db.Column(db.String(25), nullable=False, index=True, server_default=db.FetchedValue())
  62. dev = db.Column(db.Integer, nullable=False, server_default=db.FetchedValue())
  63. manager = db.Column(db.Integer, nullable=False, server_default=db.FetchedValue())
  64. admin = db.Column(db.Integer, nullable=False, server_default=db.FetchedValue())
  65. blind = db.Column(db.Integer, nullable=False, server_default=db.FetchedValue())
  66. badpwcount = db.Column(db.Integer, server_default=db.FetchedValue())
  67. t_zipcitycode = db.Table(
  68. 'zipcitycode',
  69. db.Column('zipcode', db.String(5), index=True),
  70. db.Column('city', db.String(50)),
  71. db.Column('state', db.String(2)),
  72. db.Column('county', db.String(50)),
  73. db.Column('percent', db.Integer),
  74. db.Column('fips', db.String(5)),
  75. db.Column('direction', db.String(50)),
  76. db.Column('federal', db.String(70)),
  77. db.Index('state', 'state', 'city')
  78. )
  79. class Zipcode(db.Model):
  80. __tablename__ = 'zipcode'
  81. zipcode = db.Column(db.String(5), primary_key=True, nullable=False, index=True, server_default=db.FetchedValue())
  82. state = db.Column(db.String(2), nullable=False, index=True, server_default=db.FetchedValue())
  83. county = db.Column(db.String(50), primary_key=True, nullable=False, server_default=db.FetchedValue())
  84. federal = db.Column(db.String(75), nullable=False, index=True, server_default=db.FetchedValue())
  85. percent = db.Column(db.Integer, nullable=False, server_default=db.FetchedValue())
  86. api = Api(app)
  87. def model_to_dict(model):
  88. """ Given a SQLAlchemy model, return a dictionary.
  89. This allows for the model to be easily jsonified.
  90. """
  91. data = {}
  92. for col in model.__table__.c.keys():
  93. # data[col] = getattr(c, col, None) # c[col]
  94. data[col] = str( getattr(model, col, None) ) # c[col]
  95. return data
  96. class IBRSimple(Resource):
  97. def get(self, todo_id):
  98. # Ok, lookup the id, and return the json
  99. c = Candidate.query.filter_by(ID=todo_id).first()
  100. return model_to_dict(c)
  101. # data = {}
  102. # for col in c.__table__.c.keys():
  103. # # data[col] = getattr(c, col, None) # c[col]
  104. # data[col] = str( getattr(c, col, None) ) # c[col]
  105. # return data
  106. # {'id': todo_id, 'stuff': True }
  107. api.add_resource(IBRSimple, '/<string:todo_id>')
  108. if __name__ == '__main__':
  109. app.run(port=8080,debug=True)