# 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
    github = True
    return render_template('auth/new/post2channel.html', **locals())


@auth.route('/new/discourse/post_to_channel', methods=['GET'])
def post_to_channel_discourse():
    developer = get_developer()
    if developer is None:
        return redirect(url_for('main.login'))
    channels = get_channel_list()
    dev_key = developer.dev_key
    discourse = True
    return render_template('auth/new/post2channel.html', **locals())


@auth.route('/new/channel', methods=['GET'])
def new_channel():
    developer = get_developer()
    if developer is None:
        return redirect(url_for('main.login'))
    dev_key = developer.dev_key
    return render_template('auth/new/channel.html', **locals())


@auth.route('/upload/avatar/<dev_key>', methods=['POST'])
def upload_avatar(dev_key):
    if request.method == 'POST':
        file = request.files['file']
        if file and allowed_file(file.filename):
            developer = Developer.query.filter_by(dev_key=dev_key).first()

# 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

    github = True
    return render_template('auth/new/post2channel.html', **locals())


@auth.route('/new/discourse/post_to_channel', methods=['GET'])
def post_to_channel_discourse():
    developer = get_developer()
    if developer is None:
        return redirect(url_for('main.login'))
    channels = get_channel_list()
    dev_key = developer.dev_key
    discourse = True
    return render_template('auth/new/post2channel.html', **locals())


@auth.route('/new/channel', methods=['GET'])
def new_channel():
    developer = get_developer()
    if developer is None:
        return redirect(url_for('main.login'))
    dev_key = developer.dev_key
    return render_template('auth/new/channel.html', **locals())


@auth.route('/upload/avatar/<dev_key>', methods=['POST'])
def upload_avatar(dev_key):
    if request.method == 'POST':
        file = request.files['file']
        if file and allowed_file(file.filename):
            developer = Developer.query.filter_by(dev_key=dev_key).first()

            if developer is not None and developer.avatar is not None: