Advertisement
Guest User

Untitled

a guest
Jun 18th, 2018
203
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 11.23 KB | None | 0 0
  1. from flask import Flask, jsonify, json, request
  2. from flask.views import MethodView
  3. from flask_sqlalchemy import SQLAlchemy
  4. from flask_restful import Resource, Api
  5. from sqlalchemy import text
  6. from flask_cors import CORS
  7.  
  8. application = Flask(__name__)
  9. cors = CORS(application, resources={r"/api/*": {"origins": "*"}})
  10.  
  11. application.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://subdom2018:subdom2018@subdom2018.cfijc6ozllle.eu-central-1.rds.amazonaws.com:1433/subdom2018'
  12. application.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
  13. db = SQLAlchemy(application)
  14.  
  15. #################
  16. ### db models ###
  17. #################
  18.  
  19. class Users(db.Model):
  20.     __tablename_ = 'users'
  21.     id = db.Column('id', db.Integer, primary_key=True)
  22.     login = db.Column('login', db.Unicode)
  23.     password = db.Column('password', db.Unicode)
  24.     email = db.Column('email', db.Unicode)
  25.     last_login_date = db.Column('last_login_date', db.Date)
  26.     registration_date = db.Column('registration_date', db.Date)
  27.     subdomains = db.relationship('Subdomains', backref='user', lazy=True)
  28.     first_name = db.Column('first_name', db.Unicode)
  29.     last_name = db.Column('last_name', db.Unicode)
  30.  
  31.     def __init__(self, login, password, email, last_login_date, registration_date, subdomains, first_name, last_name):
  32.         self.login = login
  33.         self.password = password
  34.         self.email = email
  35.         self.last_login_date = last_login_date
  36.         self.registration_date = registration_date
  37.         self.subdomains = subdomains
  38.         self.first_name = first_name
  39.         self.last_name = last_name
  40.  
  41. class Subdomains(db.Model):
  42.     __tablename = 'subdomains'
  43.     id_domain = db.Column('id_domain', db.Integer, primary_key = True)
  44.     id_user = db.Column('id_user', db.Integer, db.ForeignKey('users.id'))
  45.     name = db.Column('name', db.Unicode)
  46.     at = db.Column('at', db.Unicode)
  47.     ip_address = db.Column('ip_address', db.Unicode)
  48.     purchase_date = db.Column('purchase_date', db.Date)
  49.     expiration_date = db.Column('expiration_date', db.Date)
  50.     status = db.Column('status', db.Unicode)
  51.  
  52.  
  53.     def __init__(self, id_user, name, at, ip_address, purchase_date, expiration_date, status):
  54.         self.id_user = id_user
  55.         self.name = name
  56.         self.at = at
  57.         self.ip_address = ip_address
  58.         self.purchase_date = purchase_date
  59.         self.expiration_date = expiration_date
  60.         self.status = status
  61.  
  62. class Address(db.Model):
  63.     __tablename = 'addresses'
  64.     id = db.Column('id', db.Integer, primary_key = True)
  65.     id_user = db.Column('id_user', db.Integer, db.ForeignKey('users.id'))
  66.     country = db.Column('country', db.Unicode)
  67.     state = db.Column('state', db.Unicode)
  68.     city = db.Column('city', db.Unicode)
  69.     street = db.Column('street', db.Unicode)
  70.     house_nr = db.Column('house_nr', db.Integer)
  71.     apartment_nr = db.Column('apartment_nr', db.Unicode)
  72.     postal_code = db.Column('postal_code', db.Integer)
  73.  
  74.     def __init__(self, id_user, country, state, city, street, house_nr, apartment_nr, postal_code):
  75.         self.id_user = id_user
  76.         self.country = country
  77.         self.state = state
  78.         self.city = city
  79.         self.street = street
  80.         self.house_nr = house_nr
  81.         self.apartment_nr = apartment_nr
  82.         self.postal_code = postal_code
  83.  
  84. ################
  85. ### API func ###
  86. ################
  87.  
  88. class API_Users(MethodView):
  89.     def get(self, user_id):
  90.         if user_id is None:
  91.             count = db.engine.execute("select count(id) from users")
  92.             count2 = count.fetchall()
  93.             count = count2[0][0]
  94.             result = db.engine.execute("select * from users")
  95.             row = result.fetchall()
  96.             list = []
  97.             for i in range(count):
  98.                 subdom_dict = {
  99.                     #'id' : row[i][0],
  100.                     'login' : row[i][1],
  101.                     #'password' : row[i][2],
  102.                     'email' : row[i][3],
  103.                     'last_login_date' : str(row[i][4]),
  104.                     'registration_date' : str(row[i][5])},
  105.                     'first_name' : row[i][6]
  106.                     'last_name' : row[i][7]
  107.                 list.append(subdom_dict)
  108.            
  109.             return json.dumps(list)
  110.  
  111.         else:
  112.             result = db.engine.execute("select * from users where id = '" + str(user_id) + "'")
  113.             row = result.fetchall()
  114.             subdom_dict = {
  115.                 'id' : row[0][0],
  116.                 'login' : row[0][1],
  117.                 'password' : row[0][2],
  118.                 'email' : row[0][3],
  119.                 'last_login_date' : str(row[0][4]),
  120.                 'registration_date' : str(row[0][5])}
  121.                 'first_name' : row[0][6]
  122.                 'last_name' : row[0][7]
  123.            
  124.             return json.dumps(subdom_dict)
  125.  
  126.     def post(self):
  127.         return str(request.get_json()['login'])
  128.  
  129.     def delete(self, user_id):
  130.         return 'delete user with id == ' + str(user_id)
  131.  
  132.     def put(self, user_id):
  133.         columns = request.get_json()['columns']
  134.         values = request.get_json()['values']
  135.         string = "UPDATE users SET "
  136.         for i in range (len(columns) - 1):
  137.             string = string \
  138.                     + str(columns[i]) \
  139.                     + " = '" + str(values[i]) \
  140.                     + "', "
  141.         string = string \
  142.                 + str(columns[len(columns) - 1]) \
  143.                 + " = '" + str(values[len(columns) - 1]) \
  144.                 + "' WHERE id = " \
  145.                 + str(user_id)
  146.         result = db.engine.execute(string)
  147.         return json.dumps({'message' : 'success'})
  148.  
  149. class API_Subdomains(MethodView):
  150.     def get(self,user_id):
  151.         if user_id is None:
  152.             count = db.engine.execute("select count(id_domain) from subdomains")
  153.             count2 = count.fetchall()
  154.             count = count2[0][0]
  155.             result = db.engine.execute("select * from subdomains")
  156.             row = result.fetchall()
  157.             list = []
  158.             for i in range(count):
  159.                 subdom_dict = {
  160.                     'id_domain' : row[i][0],
  161.                     'id_user' : row[i][1],
  162.                     'name' : row[i][2],
  163.                     'at' : row[i][3],
  164.                     'ip_address' : row[i][4],
  165.                     'purchase_date' : str(row[i][5]),
  166.                     'expiration_date' : str(row[i][6]),
  167.                     'status' : row[i][7]}
  168.                 list.append(subdom_dict)
  169.            
  170.             return json.dumps(list)
  171.  
  172.         else:
  173.             count = db.engine.execute("select count(id_domain) from subdomains WHERE id_user = '" + str(user_id) + "'")
  174.             count2 = count.fetchall()
  175.             count = count2[0][0]
  176.             result = db.engine.execute("select * from subdomains WHERE id_user = '" + str(user_id) + "'")
  177.             row = result.fetchall()
  178.             list = []
  179.             for i in range(count):
  180.                 subdom_dict = {
  181.                     'id_domain' : row[i][0],
  182.                     'id_user' : row[i][1],
  183.                     'name' : row[i][2],
  184.                     'at' : row[i][3],
  185.                     'ip_address' : row[i][4],
  186.                     'purchase_date' : str(row[i][5]),
  187.                     'expiration_date' : str(row[i][6]),
  188.                     'status' : row[i][7]}
  189.                 list.append(subdom_dict)
  190.            
  191.             return json.dumps(list)
  192.  
  193.     def post(self):
  194.         id_user = request.get_json()['id_user']
  195.         name = request.get_json()['name']
  196.         at = request.get_json()['at']
  197.         ip_address = request.get_json()['ip_address']
  198.         purchase_date = request.get_json()['purchase_date']
  199.         expiration_date = request.get_json()['expiration_date']
  200.  
  201.         new_subdom = Subdomains(id_user, name, at, ip_address, purchase_date, expiration_date, 'ACTIVE')
  202.         db.session.add(new_subdom)
  203.         db.session.commit()
  204.  
  205.         return json.dumps({'message' : 'success'})
  206.  
  207.     def put(self, subdomain_id):
  208.         columns = request.get_json()['columns']
  209.         values = request.get_json()['values']
  210.         string = "UPDATE subdomains SET "
  211.         for i in range (len(columns) - 1):
  212.             string = string \
  213.                     + str(columns[i]) \
  214.                     + " = '" + str(values[i]) \
  215.                     + "', "
  216.         string = string \
  217.                 + str(columns[len(columns) - 1]) \
  218.                 + " = '" + str(values[len(columns) - 1]) \
  219.                 + "' WHERE id_domain = " \
  220.                 + str(subdomain_id)
  221.         result = db.engine.execute(string)
  222.        
  223.         return json.dumps({'message' : 'success'})
  224.  
  225.  
  226. ##############
  227. ### routes ###
  228. ##############
  229. user_view = API_Users.as_view('user_api')
  230. subdom_view = API_Subdomains.as_view('sub_api')
  231. application.add_url_rule('/users/', defaults={'user_id':None},view_func=user_view, methods=['GET'])
  232. application.add_url_rule('/users/',view_func=user_view, methods=['POST'])
  233. application.add_url_rule('/users/<int:user_id>',view_func=user_view, methods=['GET','PUT','DELETE'])
  234. application.add_url_rule('/users/<int:user_id>/subdomains/', view_func=subdom_view, methods=['GET'])
  235. application.add_url_rule('/subdomains/', defaults={'user_id':None},view_func=subdom_view, methods=['GET'])
  236. application.add_url_rule('/subdomains/',view_func=subdom_view, methods=['POST'])
  237. application.add_url_rule('/subdomains/<int:subdomain_id>',view_func=subdom_view, methods=['PUT'])
  238.  
  239.  
  240. if __name__ == "__main__":
  241.     # Setting debug to True enables debug output. This line should be
  242.     # removed before deploying a production app.
  243.     application.debug = True
  244.     application.run()
  245.  
  246.  
  247.  
  248.  
  249.    
  250. '''
  251. def add_user(username):
  252.    update_this = Users.query.filter_by(email='Kaminarious@thunder.jp').first()
  253.    if update_this:
  254.        try:
  255.            update_this.login = username
  256.            db.session.commit()
  257.            return('successfully updated the login to ' + str(username) +'!')
  258.        except Exception as e:
  259.            print(e)
  260.    else:
  261.        new_user = Users(username, 'zappityzap', 'Kaminarious@thunder.jp')
  262.        try:
  263.            db.session.add(new_user)
  264.            db.session.commit()
  265.            return('successfully created new user!')
  266.        except Exception as e:
  267.            print(e)
  268. from flask import Flask, jsonify, render_template, url_for, request, session, redirect
  269. from flask_sqlalchemy import SQLAlchemy
  270. from flask_restful import Resource, Api
  271. app = Flask(__name__)
  272. app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://subdom2018:subdom2018@subdomdb.casm6gqak8bd.us-east-2.rds.amazonaws.com:5432/subdomdb'
  273. api = Api(app)
  274. db = SQLAlchemy(app)
  275. def application(environ, start_response):
  276.    path    = environ['PATH_INFO']
  277.    method  = environ['REQUEST_METHOD']
  278.    if method == 'GET':
  279.        try:
  280.            if path == '/':
  281.                response = 'index'
  282.            elif path == '/scheduled':
  283.                response = 'hewwo scheduleeee'
  284.        except (TypeError, ValueError):
  285.            response = 'Error retrieving request body for async work.'
  286.    else:
  287.        response = 'hewwo'
  288.    status = '200 OK'
  289.    headers = [('Content-type', 'text/html')]
  290.    start_response(status, headers)
  291.    return [response]
  292. if __name__ == '__main__':
  293.    app.run(host = '0.0.0.0')
  294. '''
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement