import sys, unittest import logic_bank_utils.util as logic_bank_utils from datetime import datetime from decimal import Decimal (did_fix_path, sys_env_info) = \ logic_bank_utils.add_python_path(project_dir="LogicBank", my_file=__file__) if __name__ == '__main__': print("\nStarted from cmd line - launch unittest and exit\n") sys.argv = [sys.argv[0]] unittest.main(module="examples.nw.tests.test_update_employee_salary") exit(0) else: print("Started from unittest: " + __name__) from examples.nw import tests tests.copy_gold_over_db() import examples.nw.db.models as models from examples.nw.logic import session, engine # opens db, activates rules <-- # activate rules: LogicBank.activate(session=session, activator=declare_logic) from logic_bank.util import prt print("\n" + sys_env_info + "\n\n") class Test(unittest.TestCase):
from decimal import Decimal import logic_bank_utils.util as logic_bank_utils (did_fix_path, sys_env_info) = \ logic_bank_utils.add_python_path(project_dir="payment_allocation_graphene", my_file=__file__) print("\n" + did_fix_path + "\n\n" + sys_env_info + "\n\n") def setup_db(): """ copy db/database-gold.sqlite3 over db/database.sqlite3""" import os from shutil import copyfile from logic_bank.util import prt print("\n" + prt("restoring database-gold\n")) basedir = os.path.abspath(os.path.dirname(__file__)) basedir = os.path.dirname(basedir) print("\n********************************\n" " IMPORTANT - create database.sqlite3 from database-gold.sqlite3 in " + basedir + "/payment_allocation/db/\n" + " - from -- " + prt("") + "\n********************************") db_loc = os.path.join(basedir, "database.sqlite3") db_source = os.path.join(basedir, "database-gold.sqlite3") copyfile(src=db_source, dst=db_loc) setup_db()
""" import sys from typing import TypedDict import logic_bank_utils.util as logic_bank_utils import safrs from logic_bank.logic_bank import LogicBank from logic_bank.exec_row_logic.logic_row import LogicRow from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import Session from api import expose_api_models, expose_services from logic import logic_bank (did_fix_path, sys_env_info) = \ logic_bank_utils.add_python_path(project_dir="api_logic_server", my_file=__file__) from flask import render_template, request, jsonify, Flask from safrs import ValidationError, SAFRSBase def setup_logging(): # Initialize Logging import logging import sys logic_logger = logging.getLogger( 'logic_logger') # for debugging user logic logic_logger.setLevel(logging.DEBUG) handler = logging.StreamHandler(sys.stdout) handler.setLevel(logging.DEBUG)
import logging import os import subprocess import sys from pathlib import Path import json import sqlalchemy from logic_bank_utils import util as logic_bank_utils from logic_bank.rule_bank import rule_bank_withdraw from logic_bank.rule_type.parent_check import ParentCheck (did_fix_path, sys_env_info) = \ logic_bank_utils.add_python_path(project_dir="ApiLogicServer", my_file=__file__) print("\n" + did_fix_path + "\n\n" + sys_env_info + "\n\n") class DotDict(dict): """dot.notation access to dictionary attributes""" # thanks: https://stackoverflow.com/questions/2352181/how-to-use-a-dot-to-access-members-of-dictionary/28463329 __getattr__ = dict.get __setattr__ = dict.__setitem__ __delattr__ = dict.__delitem__ def setup_logging(): logic_logger = logging.getLogger( 'logic_logger') # for debugging user logic logic_logger.setLevel(logging.DEBUG)
#!/usr/bin/env python3 """ ApiLogicServer v 1.03.01 $ python3 api_logic_server_run.py [Listener-IP] This will run the example on http://Listener-Ip:5000 """ import sys import logic_bank_utils.util as logic_bank_utils (did_fix_path, sys_env_info) = \ logic_bank_utils.add_python_path(project_dir="replace_project_name", my_file=__file__) from flask import render_template, request, jsonify from safrs import ValidationError import api as app # database opened here # address where the api will be hosted, change this if you're not running the app on localhost! host = sys.argv[1] if sys.argv[ 1:] else "localhost" # 127.0.0.1 check in swagger or your lient what is used you wight need cors support app = app.create_app(host=host) @app.route('/hello_world') def hello_world(): # test it with: http://localhost:5000/hello_world?user=ApiLogicServer """ This is inserted to illustrate that APIs not limited to database objects, but are extensible.