from flask import Blueprint from models.contract import GetAllContracts from utils.db_utils import requires_db from utils.doc_utils import BlueprintDocumentation from utils.utils import success_response, error_response, log_kv, LOG_DEBUG, LOG_ERROR from models.claim import Location from models.contract import GetAllContractsByProximity, GetAllTradableContracts, GetProximityContracts, \ TradableTokenResponse, GET_CONTRACT_DOC_EXPLORE from routes import load_with_schema explore_bp = Blueprint('explore', __name__) explore_docs = BlueprintDocumentation(explore_bp, 'Explore') url_prefix = '/explore' @explore_bp.route(url_prefix + '/contracts', defaults={'keyword': None, 'include_nearby': 1}, methods=['GET']) @explore_bp.route(url_prefix + '/contracts/keyword=<string:keyword>', defaults={'include_nearby': 1}, methods=['GET']) @explore_bp.route(url_prefix + '/contracts/include_nearby=<int:include_nearby>', defaults={'keyword': None}, methods=['GET']) @explore_bp.route(url_prefix + '/contracts/keyword=<string:keyword>&include_nearby=<int:include_nearby>', methods=['GET']) @requires_db @explore_docs.document(url_prefix + '/contracts', 'GET', """ Get's all contracts for the explore page. """, output_schema=GET_CONTRACT_DOC_EXPLORE) @explore_docs.document(url_prefix + '/contracts/keyword=<string:keyword>', 'GET', """
from flask import Blueprint, g from flask_restful import Resource, Api from ether.geth_keeper import GethException from models.collector import CreateCollectorRequest, GetCollectorByUsername, GetCollectorByCID, GetCollection, \ CollectorInfoRequest from models.collector import create_collector from routes import load_with_schema, requires_geth from utils.db_utils import requires_db from utils.doc_utils import BlueprintDocumentation from utils.utils import success_response, error_response, log_kv, LOG_INFO, LOG_ERROR, LOG_WARNING from utils.verify_utils import generate_jwt, verify_collector_jwt collector_bp = Blueprint('collector', __name__) collector_docs = BlueprintDocumentation(collector_bp, 'Collector') url_prefix = '/collector' @collector_bp.route(url_prefix + '/username=<string:username>', methods=['GET']) @requires_db @collector_docs.document( url_prefix + '/username=<string:username>', 'GET', """ Method to retrieve collector information by username """, url_params={'username': '******'}) def get_collector_by_username(username): collector = GetCollectorByUsername().execute_n_fetchone( {'username': username}, close_connection=True)
from flask import Blueprint, g from utils.doc_utils import BlueprintDocumentation from utils.utils import success_response, log_kv, LOG_INFO from utils.verify_utils import verify_issuer_jwt, verify_collector_jwt ping = Blueprint('ping', __name__) ping_docs = BlueprintDocumentation(ping, 'Ping') url_prefix = '/ping' @ping.route(url_prefix, methods=['GET']) @ping_docs.document(url_prefix, 'GET', """ Method to test connectivity to server. """) def pings(): log_kv(LOG_INFO, {'message': 'ping called pong respond'}) return success_response("pong") @ping.route(url_prefix+'_issuer_a', methods=['GET']) @verify_issuer_jwt @ping_docs.document(url_prefix+'_issuer_a', 'GET', """ Ping that requires collector verification. """, req_i_jwt=True) def issuer_a_ping(): log_kv(LOG_INFO, {'message': 'authorized issuer ping called', 'issuer_id': g.issuer_info['i_id']}) return success_response("pong for i_id:{}".format(g.issuer_info['i_id']))
from flask import Blueprint, g from ether.geth_keeper import GethException from models.claim import ClaimRequest, GetTokenInfo, GetAvailableToken, SetToken, ClaimQRCodeRequest,\ GetSingleAvailToken from models.contract import TokenStatus from models.constraints import validate_uni_code_constraints, validate_time_constraints, validate_location_constraints from routes import load_with_schema, requires_geth from utils.db_utils import requires_db from utils.doc_utils import BlueprintDocumentation from utils.utils import success_response, error_response, log_kv, LOG_INFO, LOG_ERROR from utils.verify_utils import verify_collector_jwt claim_bp = Blueprint('claim', __name__) claim_docs = BlueprintDocumentation(claim_bp, 'Claim') url_prefix = '/claim' @claim_bp.route(url_prefix + '/qr_code', methods=['POST']) @requires_db @requires_geth @load_with_schema(ClaimQRCodeRequest) @verify_collector_jwt @claim_docs.document(url_prefix + '/qr_code', 'POST', """ Method to claim a token of of an issued contract from a qr_code. """, input_schema=ClaimQRCodeRequest, req_c_jwt=True,
from flask import Blueprint, g, render_template from utils.doc_utils import BlueprintDocumentation from utils.verify_utils import verify_issuer_jwt from utils.utils import error_response, success_response from utils.db_utils import requires_db from models.constraints import get_all_constraints analytics_bp = Blueprint('analytics', __name__) analytics_docs = BlueprintDocumentation(analytics_bp, 'Analytics') url_prefix = '/analytics' @analytics_bp.route(url_prefix + "/tok_sum", methods=['GET']) @verify_issuer_jwt @requires_db def summary(): data = g.sesh.execute( """ select contracts.*, (select count(*) from tokens where tokens.con_id = contracts.con_id and status = 'S') as num_claimed from contracts where contracts.i_id = :desired_id;""", { 'desired_id': g.issuer_info['i_id'] }).fetchall() bar_values = [] bar_labels = [] for r in data: bar_values.append(100 * r['num_claimed'] / r['num_created']) bar_labels.append(r['name']) return render_template('bar_chart.html', title='Tokens Claimed',
from flask import Blueprint from flask import render_template from utils.doc_utils import BlueprintDocumentation frontend_bp = Blueprint('frontend', __name__) frontend_docs = BlueprintDocumentation(frontend_bp, 'Frontend') dir = "www/" @frontend_bp.route("/index") @frontend_bp.route("/") def index(): return render_template(dir + "index.html") @frontend_bp.route("/home") def home(): return render_template(dir + "home.html") @frontend_bp.route("/creation") def creation(): return render_template(dir + "creation.html") @frontend_bp.route("/explore") def explore(): return render_template(dir + "explore.html")
from flask import Blueprint from models.collector import LoginCollectorRequest, GetCollectorLoginDetails from models.issuer import LoginIssuerRequest, GetIssuerLoginDetails from routes import load_with_schema from utils.db_utils import requires_db from utils.doc_utils import BlueprintDocumentation from utils.utils import success_response, error_response, log_kv, LOG_WARNING, LOG_DEBUG, LOG_INFO from utils.verify_utils import generate_jwt login_bp = Blueprint('login', __name__) login_docs = BlueprintDocumentation(login_bp, 'Login') url_prefix = '/login' @login_bp.route(url_prefix + '/collector', methods=['POST']) @load_with_schema(LoginCollectorRequest) @requires_db @login_docs.document(url_prefix + '/collector', 'POST', """ This method verifies collector creds and generates a JWT if successful verification takes place. """, input_schema=LoginCollectorRequest, error_codes={'420': 'Failed authorization.'}) def get_collector_jwt(data): # Gather up login details. login_deets = GetCollectorLoginDetails().execute_n_fetchone( binds=data, close_connection=True) if login_deets is None: log_kv(
from ether.geth_keeper import GethException from models.constraints import get_all_constraints from models.contract import ContractRequest, GetContractByConID, GetContractByName, \ GetContractsByIssuerID, process_constraints, insert_bulk_tokens, GetContractResponse, UpdateQRCODE, GetAllQRCodes, \ DoesContractHaveQRCode, GetMetaDataByConID from models.issuer import GetIssuerInfo from routes import requires_geth from utils.db_utils import requires_db from utils.doc_utils import BlueprintDocumentation from utils.image_utils import save_file, serve_file, save_qrcode, Folders, save_json_data, get_qr_code_root_dir,\ get_qr_code_zip_dir from utils.utils import success_response, error_response, log_kv, LOG_WARNING, LOG_INFO, LOG_ERROR, LOG_DEBUG from utils.verify_utils import verify_issuer_jwt, generate_jwt contract_bp = Blueprint('contract', __name__) contract_docs = BlueprintDocumentation(contract_bp, 'Contract') url_prefix = '/contract' MAX_TOKEN_LIMIT = 1000 class Contract(Resource): @verify_issuer_jwt @requires_db @requires_geth @contract_docs.document( url_prefix + " ", 'POST', """ Method to start a request to issue a new token on the eth network. This will also create all new tokens associated with the method. This method requires a multipart form. The three
from flask import Blueprint, g from flask_restful import Resource, Api from ether.geth_keeper import GethException from models.issuer import CreateIssuerRequest, GetIssuerByIID, GetIssuerByUsername, create_issuer from routes import load_with_schema, requires_geth from utils.db_utils import requires_db from utils.doc_utils import BlueprintDocumentation from utils.utils import success_response, error_response, log_kv, LOG_INFO, LOG_ERROR, LOG_WARNING from utils.verify_utils import verify_issuer_jwt, generate_jwt issuer_bp = Blueprint('issuer', __name__) issuer_docs = BlueprintDocumentation(issuer_bp, 'Issuer') url_prefix = '/issuer' @issuer_bp.route(url_prefix + '/username=<string:username>', methods=['GET']) @requires_db @issuer_docs.document(url_prefix + '/username=<string:username>', 'GET', """ Gets issuer information by username """) def get_issuer_by_username(username): """ This method retrieves issuer data for the given username. :param username: username of issuer to retrieve. :return: """ issuer = GetIssuerByUsername().execute_n_fetchone({'username': username}, close_connection=True) if issuer: log_kv(LOG_INFO, {
from flask_restful import Resource, Api from models.collector import GetCollectorByCID from utils.doc_utils import BlueprintDocumentation from utils.verify_utils import verify_collector_jwt from utils.db_utils import requires_db from utils.utils import success_response, error_response, log_kv, LOG_ERROR from routes import load_with_schema, requires_geth from models.contract import GetContractByConID, UpdateTokenStatus, TokenStatus from models.issuer import GetIssuerByIID from models.transfer import ExternalTransfer transfer_bp = Blueprint('transfer', __name__) transfer_docs = BlueprintDocumentation(transfer_bp, 'Transfer') url_prefix = '/transfer' class Transfer(Resource): @requires_db @requires_geth @transfer_bp.route(url_prefix) @transfer_docs.document( url_prefix, 'POST', """ This method performs a transfer to an external account outside of the token environment. """, req_c_jwt=True, error_codes={423: "Couldn't perform external token transfer."})
from flask_restful import Resource, Api from utils.doc_utils import BlueprintDocumentation from utils.utils import success_response, error_response, log_kv, LOG_INFO, LOG_ERROR from utils.db_utils import requires_db from utils.verify_utils import verify_collector_jwt from ether.geth_keeper import GethException from routes import load_with_schema, requires_geth from models.trade import TradeRequest, DeleteTradeRequest, TradeResponseRequest, GetTradeByTRID, UpdateTradeStatus, \ TradeStatus, GetTradeItems, InvalidateTradeRequests, GetActiveTradeRequests, GetUntradables, \ create_trade_request, check_trade_item_ownership, check_active_trade_item, is_valid_trade_items, \ validate_offer_and_trade, GetTokenInfo, TradeResponse, GetTraderInfo from models.collector import GetCollectorByCID trade_bp = Blueprint('trade', __name__) trade_docs = BlueprintDocumentation(trade_bp, 'Trade') url_prefix = '/trade' class Trade(Resource): @load_with_schema(TradeRequest, dump=True) @requires_db @requires_geth @verify_collector_jwt @trade_docs.document(url_prefix, 'POST', """ Method to issue trade request. """, input_schema=TradeRequest, req_c_jwt=True, error_codes={'42': "Untradable tokens in the trade offer.", '67': "Collector doesn't have ownership of tokens in the trade.",