# Path: Server/jbox/models.py
# class Developer(UserMixin, db.Model):
# class Integration(db.Model):
# class GitHub(db.Model):
# class Channel(db.Model):
# class Authorization(db.Model):
#     def __repr__(self):
#     def verify_developer(self, platform_id):
#     def generate_confirmation_token(self, expiration=3600):
#     def confirm(token):
#     def insert_to_db(self):
# def developer_loader(platform, platform_id):
# def request_loader(request):
# def verify_developer(platform_or_token, platform_id):
#     def __repr__(self):
#     def insert_to_db(self):
#     def __repr__(self):
# def load_user(developer_id):
# def generate_dev_key():
# def generate_platform_id():
# def generate_integration_id():
# def generate_auth_token():
# 
# Path: Server/jbox/main/views.py
# def json_to_dict(x):
# def update_qq_api_request_data(data={}):
# def get_user_info():
# def login():
# def logout():
# def authorized():
# def get_qq_oauth_token():
# def index():
# def document():
# def guide():
# def application():
# def get_developer():


import os
import requests
import uuid
from flask import abort, Flask, json, jsonify, render_template, redirect, request, url_for, flash, session
from flask_httpauth import HTTPAuth
from flask_oauthlib.client import OAuth
from . import auth
from config import basedir
from ..models import db, Channel, Developer, Integration, Authorization, generate_integration_id, generate_auth_token
from ..main.views import update_qq_api_request_data, qq, json_to_dict

@auth.route('/manage/create_integration/<string:integration_id>/<string:token>/<string:channel>',
            methods=['GET', 'POST'])
def create_integration(integration_id, token, channel):
    integration = Integration.query.filter_by(integration_id=integration_id).first()
    developer = get_developer()
    if developer is None:
        return redirect(url_for('main.login'))
    channels = get_channel_list()
    dev_key = developer.dev_key
    return render_template('auth/create.html', **locals())


@auth.route('/manage/edit_integration/<string:integration_id>', methods=['GET', 'POST'])
def edit_integration(integration_id):
    developer = get_developer()
    if developer is None:
        return redirect(url_for('main.login'))
    integration = Integration.query.filter_by(integration_id=integration_id).first()
    channel = integration.channel.channel
    channels = get_channel_list()
    dev_key = developer.dev_key
    return render_template('auth/create.html', **locals())


@auth.route('/manage/edit_github_integration/<string:integration_id>', methods=['GET', 'POST'])
def edit_github_integration(integration_id):
    developer = get_developer()
    if developer is None:
        return redirect(url_for('main.login'))

# Path: Server/jbox/models.py
# class Developer(UserMixin, db.Model):
# class Integration(db.Model):
# class GitHub(db.Model):
# class Channel(db.Model):
# class Authorization(db.Model):
#     def __repr__(self):
#     def verify_developer(self, platform_id):
#     def generate_confirmation_token(self, expiration=3600):
#     def confirm(token):
#     def insert_to_db(self):
# def developer_loader(platform, platform_id):
# def request_loader(request):
# def verify_developer(platform_or_token, platform_id):
#     def __repr__(self):
#     def insert_to_db(self):
#     def __repr__(self):
# def load_user(developer_id):
# def generate_dev_key():
# def generate_platform_id():
# def generate_integration_id():
# def generate_auth_token():
# 
# Path: Server/jbox/main/views.py
# def json_to_dict(x):
# def update_qq_api_request_data(data={}):
# def get_user_info():
# def login():
# def logout():
# def authorized():
# def get_qq_oauth_token():
# def index():
# def document():
# def guide():
# def application():
# def get_developer():


# Path: Server/jbox/auth/views.py
import os
import requests
import uuid
from flask import abort, Flask, json, jsonify, render_template, redirect, request, url_for, flash, session
from flask_httpauth import HTTPAuth
from flask_oauthlib.client import OAuth
from . import auth
from config import basedir
from ..models import db, Channel, Developer, Integration, Authorization, generate_integration_id, generate_auth_token
from ..main.views import update_qq_api_request_data, qq, json_to_dict


@auth.route('/manage/create_integration/<string:integration_id>/<string:token>/<string:channel>',
            methods=['GET', 'POST'])
def create_integration(integration_id, token, channel):
    integration = Integration.query.filter_by(integration_id=integration_id).first()
    developer = get_developer()
    if developer is None:
        return redirect(url_for('main.login'))
    channels = get_channel_list()
    dev_key = developer.dev_key
    return render_template('auth/create.html', **locals())


@auth.route('/manage/edit_integration/<string:integration_id>', methods=['GET', 'POST'])
def edit_integration(integration_id):
    developer = get_developer()
    if developer is None:
        return redirect(url_for('main.login'))
    integration = Integration.query.filter_by(integration_id=integration_id).first()
    channel = integration.channel.channel
    channels = get_channel_list()
    dev_key = developer.dev_key
    return render_template('auth/create.html', **locals())


@auth.route('/manage/edit_github_integration/<string:integration_id>', methods=['GET', 'POST'])
def edit_github_integration(integration_id):
    developer = get_developer()
    if developer is None:
        return redirect(url_for('main.login'))

    integration = Integration.query.filter_by(integration_id=integration_id).first()