Beispiel #1
0
 def issue_token(self, total_amount, issue_amount):
     self.push_action(
         'eosio.token', 'create',
         "'[ \"eosio\", \"%s\", 0, 0, 0]' -p eosio.token" %
         Asset(total_amount))
     self.push_action(
         'eosio.token', 'issue',
         "'[ \"eosio\", \"%s\", \"memo\" ]' -p eosio" % Asset(issue_amount))
def get_metals():
    return \
        [
            Asset(icon="icons/32x32/equitrader.png", name="Copper", ticker="HG:CMX", buy=r.randrange(100, 9999, 5), sell=r.randrange(100, 9999, 5)),
            Asset(icon="icons/32x32/expanse.png", name="Silver", ticker="XAG", buy=r.randrange(100, 9999, 5), sell=r.randrange(100, 9999, 5)),
            Asset(icon="icons/32x32/eztoken.png", name="Gold", ticker="GC:CMX", buy=r.randrange(100, 9999, 5), sell=r.randrange(100, 9999, 5)),
            Asset(icon="icons/32x32/hycon.png", name="Aluminium", ticker="ALI:CMX", buy=r.randrange(100, 9999, 5), sell=r.randrange(100, 9999, 5)),
        ]
Beispiel #3
0
 def post_sys_create(self, a, net, cpu, ram, creator='eosio'):
     cmd = self.teclos + ' --url %s system newaccount %s --transfer %s %s --stake-net \"%s\" --stake-cpu \"%s\" --buy-ram \"%s\"'
     net = Asset(net)
     cpu = Asset(cpu)
     ram = Asset(ram)
     run_retry(cmd % (self.host_address, creator, a.name, a.keypair.public,
                      net, cpu, ram))
     a.amount += cpu + net + ram
Beispiel #4
0
 def create_tip5_wallets_from_snapshot(self, path_to_csv, contract_account,
                                       min_tokens, max_tokens):
     try:
         with open(path_to_csv, 'r', newline='') as csvfile:
             reader = csv.DictReader(csvfile)
             for row in reader:
                 amt = randint(min_tokens, max_tokens)
                 self.create_allotment_tip5(contract_account,
                                            row['account_name'],
                                            Asset(amt, 'TTT', 2).__str__())
                 self.transferfrom_tip5(contract_account,
                                        row['account_name'],
                                        Asset(amt, 'TTT', 2).__str__())
     except Exception as e:
         raise e
Beispiel #5
0
def register_airtable():
    app.logger.info("register_airtable(): POST /register_airtable")
    app.logger.debug(f"{request.form=}")
    posted_asset = request.form.to_dict()
    if posted_asset:
        registrable_asset = Asset(
            title=posted_asset["title"],
            asin=posted_asset["asin"],
            url=posted_asset["url"],
            images=[{"url": posted_asset["image_url"]}],
            manufacture=posted_asset["manufacturer"],
            contributor=posted_asset["contributors"],
            product_group=posted_asset["product_group"],
            publication_date=0 if posted_asset["publication_date"] else 0,
            features=posted_asset["features"],
            default_position=posted_asset["default_positions"],
            current_position=posted_asset["current_positions"],
            note=posted_asset["note"],
            registrant_name=posted_asset["registrants_name"])
        AirtableClient().register_asset(registrable_asset)
        app.logger.info(f"Registration completed! {registrable_asset=}")
        return FlashMessage.show_with_redirect("Registration completed!", FlashCategories.INFO, url_for("index"))
    else:
        context_dict = {
            "product": session.get("asset", "")
        }
        app.logger.debug(f"{context_dict}=")
        return FlashMessage.show_with_render_template("Registration failed.", FlashCategories.ERROR,
                                                      "registration.html", **context_dict)
def calcIDAdjustment(Corp, eta=0.4):
    """
    Calculates the adjustment factors for the corporate and noncorporate debt
    and interest. 
    eta: retirement rate of existing debt
    """
    # Create Asset object
    asset1 = Asset(data1.btax_defaults, Corp)
    asset1.calc_all()
    # Get asset forecast
    forecast = asset1.get_forecast()
    # Create Debt object
    debt1 = Debt(data1.btax_defaults, forecast, corp=Corp)
    debt1.calc_all()
    # Get unscaled net interest deduction
    NID_gross = debt1.NID[38:54]
    # Get net interest deduction from historical IRS data
    if Corp:
        NID_irs = np.array(data1.debt_data_corp['NID_IRS'])[38:54]
    else:
        NID_irs = np.array(data1.debt_data_noncorp['ID_Scorp'][38:54] +
                           data1.debt_data_noncorp['ID_sp'][38:54] +
                           data1.debt_data_noncorp['ID_partner'][38:54])
    NID_scale = sum(NID_irs / NID_gross) / 16.
    return NID_scale
Beispiel #7
0
def load_assets (factors, data_path):
    """loads all factors files for all files that have close prices
    factors - list of string
    """
    assets_dict={}
    asset = None
    #load close prices
    for file in os.listdir(data_path+'close'):
        if(file.endswith('.csv')):
            file_path = os.path.join(data_path+'close', file)
            file_name=os.path.splitext(file)[0]
            if((os.stat(file_path).st_size != 0)):
                asset=Asset(file_name)
                assets_dict[file_name]=asset
                add_factor(asset, file_path, 'close')
    
    #load factors from factors list
    for factor_name in factors:
        for file in os.listdir(data_path+factor_name):
            if(file.endswith('.csv')):
                file_path = os.path.join(data_path+factor_name, file)
                file_name=os.path.splitext(file)[0]
                if(file_name in assets_dict):
                    asset=assets_dict[file_name]
                    add_factor(asset, file_path, factor_name)
    
    assets_list=list(assets_dict.values())            
    assets_list.sort(key=custom_key,reverse=False)
                    
    return assets_list
Beispiel #8
0
def create_portfolio(data):
    print("CREATING PORTFOLIO")
    pf = Portfolio()

    for index, row in data.iterrows():
        ticker = row['Verdipapir']
        amount = float(row['Antall'].replace(',', '.').replace(' ', ''))
        kurs = float(row['Kurs'].replace(',', '.').replace(' ', ''))
        vekslingskurs = float(row['Vekslingskurs'].replace(',', '.').replace(
            ' ', ''))
        transaksjonstype = row['Transaksjonstype']
        belop = float(row['Beløb'].replace(',', '.').replace(' ', ''))

        # Deposit and withdraw cash
        if transaksjonstype == 'INNSKUDD' or transaksjonstype == 'UTTAK INTERNET':
            if transaksjonstype == 'INNSKUDD':
                pf.deposit(belop)
            if transaksjonstype == 'UTTAK INTERNET':
                pf.withdraw(belop)

        if transaksjonstype == 'KJØPT' or transaksjonstype == 'SALG':
            a = Asset(ticker)
            pf.buy(a, amount,
                   (kurs * vekslingskurs)) if belop < 0 else pf.sell(
                       a, amount, (kurs * vekslingskurs))

    return pf
    def load_a_layer(self, day, df_inc):

        layer_assets_1 = ['120000053', '120000056','120000058','120000073']
        layer_assets_2 = ['MZ.FA0010', 'MZ.FA0050','MZ.FA0070']
        layer_assets = layer_assets_1 + layer_assets_2

        layer_assets = dict([(asset_id , Asset(asset_id)) for asset_id in layer_assets])
        layer_bounds = {}
        for asset in layer_assets.keys():
            layer_bounds[asset] = self.bound[asset]
        rp_allocate = RpAllocate('ALC.000001', layer_assets, self.index, self.lookback, bound = layer_bounds)
        
        layer_ws, df_alayer_inc = rp_allocate.allocate_day(day)

        df_inc['ALayer'] = df_alayer_inc
        df_inc_layer = df_inc[df_inc.columns.difference(layer_assets)]

        bound = []
        allocate_asset_ids = []
        for asset_id in df_inc_layer.columns:
            asset_bound = AssetBound.get_asset_day_bound(asset_id, day, self.bound).to_dict()
            if asset_bound['upper'] > 0:
                bound.append(asset_bound)
                # allocate_asset_ids.append(asset_id)

        return df_inc_layer, layer_ws, bound
Beispiel #10
0
def main():
    # Sanity checks
    # asset = Asset(0)
    # l = Loan(12, 0.01, 10000, asset)
    # for i in range(12):
    #     print l.interestDue(i), l.principalDue(i), l.balance(i)
    # vl = VariableRateLoan(12, 0.01, 10000, {0: 0.023, 5: 0.03, 10: 0.04}, asset)

    # handle the TypeError and log it
    try:
        l = Loan(12, 0.01, 10000, 'wrong asset')
    except TypeError:
        logging.exception(
            "TypeError is caught when trying to create a Loan type.")

    # tests for 4.2.4
    asset = Asset(20000)
    l = Loan(20, 0.02, 10000, asset)
    print "*** DEBUG level ***"
    logging.basicConfig(level=logging.DEBUG)
    l.balance(-1)  # should trigger one info log and one warn log

    print "*** ERROR level ***"
    logging.basicConfig(level=logging.ERROR)
    l.balance(-1)  # no any log
Beispiel #11
0
    def create_asset_objects(self):
        """
        Pulls asset details inputted by user into budget_report_input.xlsx and creates an Asset object for each row of
        asset details entered.

        :return: List of Asset objects that correspond to input entered by user into budget_report_input.xlsx
        """

        # Read asset details into dataframe
        df = pd.read_excel(self.budget_report_input_file_path, sheet_name="User Input")

        # Convert dataframe into dictionary
        #   Key: "df index"
        #   Value: ["model_num", "asset_description", "quantity", "health_auth", "site_code", "shop_code"]
        assets_dict = df.T.to_dict("list")

        # Iterate through assets_dict, create Asset object for each value, and append to assets list
        assets = []

        for asset, details in assets_dict.items():
            assets.append(Asset(details[0],  # model_num
                                details[1],  # asset_description
                                details[2],  # quantity
                                details[3],  # health_auth
                                details[4],  # site_code
                                details[5],  # shop_code
                                self.sites_cost_centre_dict))

        return assets
Beispiel #12
0
 def create_fund_account(self):
     a = self.account_factory.get_acc_obj('telosfundacc')
     self.account_factory.post_sys_create(a, (self.token_issue * 0.15) / 2,
                                          (self.token_issue * 0.15) / 2,
                                          1000.0000)
     BootStrapper.transfer(
         self.host_address, 'eosio', a.name, Asset(1000.0000),
         "Sending 15 percent stake and enough money to create new accounts")
Beispiel #13
0
 def get_currency_balance(self, account, symbol='TLOS'):
     try:
         body = {'code': 'eosio.token', 'account': account, 'symbol': symbol}
         response = self.api.chain.get_currency_balance(body=body, params={}, headers={})
         if response.status_code == 200 and len(response.body) > 0:
             return Asset.string_to_asset(response.body[0])
         return Asset(0, 'TTT')
     except ServerError as e:
         raise e
Beispiel #14
0
 def _build_assets(self):
     """
     + Description: build assets.
     + Input:
     -
     + Output:
     -
     """
     self.assets = {}
     for asset_id, asset_values in self.assets_elements.items():
         self.assets[asset_id] = Asset(asset_id, asset_values)
Beispiel #15
0
def wavelet(ctx, startdate, enddate, viewid, idx, wavenum, max_wave_num,
            wave_name):

    if idx is None:
        #idx = ['120000001', '120000002', '120000013', '120000014', '120000015', '120000080' ,'ERI000001', 'ERI000002']
        idx = ['120000001']
    for _id in idx:
        trade_dates = ATradeDate.trade_date()
        nav = Asset(_id).nav(reindex=trade_dates).fillna(method='pad').dropna()
        dates = nav.index[1000:]
        views = []
        for d in dates:
            _tmp_nav = nav[nav.index <= d]
            wave_nav = wavefilter(_tmp_nav,
                                  wavenum,
                                  wname=wave_name,
                                  maxlevel=max_wave_num)
            inc = wave_nav.pct_change().fillna(0.0).iloc[-120:]
            wave_diff_rolling = wave_nav.diff().rolling(5).mean()
            views.append(wave_diff_rolling[-1])
            #print(d, views[-1])
            print(_id, d, inc.mean(), inc.std())

        view_df = pd.DataFrame(views, index=dates, columns=['bl_view'])
        view_df[view_df > 0] = 1.0
        view_df[view_df < 0] = 0
        view_df.index.name = 'bl_date'
        view_df['globalid'] = viewid
        view_df['bl_index_id'] = _id
        view_df['created_at'] = datetime.now()
        view_df['updated_at'] = datetime.now()
        df_new = view_df.reset_index().set_index(
            ['globalid', 'bl_date', 'bl_index_id'])

        #print(df_new.head())

        db = database.connection('asset')
        metadata = MetaData(bind=db)
        t = Table('ra_bl_view', metadata, autoload=True)
        columns = [
            t.c.globalid,
            t.c.bl_date,
            t.c.bl_view,
            t.c.bl_index_id,
            t.c.created_at,
            t.c.updated_at,
        ]
        s = select(columns).where(t.c.globalid == viewid).where(
            t.c.bl_index_id == _id)
        df_old = pd.read_sql(s,
                             db,
                             index_col=['globalid', 'bl_date', 'bl_index_id'],
                             parse_dates=['bl_date'])
        database.batch(db, t, df_new, df_old, timestamp=False)
Beispiel #16
0
def main():
    print ( '========== Exercise 2.1.6 ==========')
    myAsset = Asset(10000)

    print ('Initial Value: {}'.format(myAsset.initialvalue))
    print ('Monthly Depreciation: {}'.format(myAsset.monthlyDepriciation()))
    print ('Annual Depreciation: {}'.format(myAsset.yearlyDepreciation()))
    myAsset.initalvalue = 12000
    print ('New Inital Value: {}'.format(myAsset.initialvalue))

    print(myAsset.currentvalue(8))
Beispiel #17
0
 def create_random_generator(self, num, min, max, base="acctname"):
     min = int(min)
     max = int(max)
     for _ in range(num):
         a = self.get_acc_obj(base + id_generator(), True)
         self.post_sys_create(a, randint(min, max), randint(min, max),
                              randint(min, max))
         toTransfer = Asset(randint(min, max))
         BootStrapper.transfer(self.host_address, 'eosio', a.name,
                               toTransfer, "Initial TLOS Liquid")
         a.amount += toTransfer
         yield a
    def get_appreciation_curve(value, appreciation_rate, mortgage):
        # calculate appreciation
        index = mortgage.amortization

        appreciation_array = []

        # create a time series for the amount the house appreciates
        for time in index:
            amount = (value * appreciation_rate) / 12
            transfer = Asset("appreciation", "home appreciation", amount)
            appreciation_array.append(transfer)

        return pd.Series(appreciation_array, index=index, name="appreciation")
Beispiel #19
0
    def test_asset(self):
        if 1:
            ast = TestAsset('test.asset')
            loc = ast.location()
            # self.tmpDirs = [loc]
            logger.info('  Created temp dir: %s', loc)
            ast.save()

            self.assertTrue(os.path.isdir(loc))

        if 1:
            ast = Asset('test.asset')
            self.assertTrue(isinstance(ast, TestAsset))
Beispiel #20
0
def main():
    a = Asset(1000)
    normal_loan = Loan(12, 0.3, 1000, a)
    memoizable_loan = MemoizedLoan(12, 0.3, 1000, a)

    print "First normal loan time cost:"
    normal_loan.interestDue(10)
    print "Second normal loan time cost:"
    normal_loan.interestDue(10)

    print "First memoizable loan time cost:"
    memoizable_loan.interestDue(10)
    print "Second memoizable loan time cost:"
    memoizable_loan.interestDue(10)
Beispiel #21
0
def get_portfolio():
    files = []
    raw_data = {}
    portfolio = Portfolio()

    for dirname, dirnames, filenames in os.walk('raw_data'):
        files = [os.path.join(dirname, filename) for filename in filenames]

    for file_name in files:
        # for every active
        with open(file_name) as csv_file:

            raw_data[file_name] = []
            line_counter = 0
            amount = Decimal(0)
            csv_reader = csv.reader(csv_file, delimiter=';')
            start_date = None
            end_date = None

            in_usd = True if file_name.startswith('raw_data/USD') else False

            for row in csv_reader:
                if line_counter == 0:
                    line_counter += 1
                elif line_counter == 1:
                    line_counter += 1

                    start_date = datetime.strptime(row[0], '%m/%d/%Y')
                    rate = Decimal(1) if in_usd else get_rate(
                        row[0],
                        currency_name=file_name.split('/', 1)[1].split('_',
                                                                       1)[0],
                        fake=True)
                    amount = Decimal(row[5].replace(',', '.')) * rate

                    raw_data[file_name].append((start_date, amount))
                else:
                    end_date = datetime.strptime(row[0], '%m/%d/%Y')
                    rate = Decimal(1) if in_usd else get_rate(
                        row[0],
                        currency_name=file_name.split('/', 1)[1].split('_',
                                                                       1)[0],
                        fake=True)
                    amount += Decimal(row[5].replace(',', '.')) * rate

                    raw_data[file_name].append((end_date, amount))
            portfolio.append(
                Asset(file_name, start_date, end_date, raw_data[file_name]))

    return portfolio
Beispiel #22
0
def create(spec):
    """Creates ImageSpec.
    :rtype: ImageSpec
    """
    image_type = spec.get('imageType', 'MOSAIC')
    if image_type == 'MOSAIC':
        return _createMosaic(spec)
    if image_type == 'CLASSIFICATION':
        return Classification(spec, create)
    if image_type == 'CHANGE_DETECTION':
        return ChangeDetection(spec, create)
    if image_type == 'ASSET':
        return Asset(spec)
    else:
        raise Exception('Unexpected image image_type: ' + str(image_type))
def get_bin_options():
    return  \
    [
        Asset(icon="icons/32x32/constellation.png", name="Binary USD/JPY", ticker="USDJPY", buy=r.randrange(100, 9999, 5), sell=r.randrange(100, 9999, 5), is_option=True),
        Asset(icon="icons/32x32/consensus.png", name="Binary USD/GBP", ticker="GBPUSD", buy=r.randrange(100, 9999, 5), sell=r.randrange(100, 9999, 5), is_option=True),
        Asset(icon="icons/32x32/chesscoin.png", name="Binary EUR/USD", ticker="EURUSD", buy=r.randrange(100, 9999, 5), sell=r.randrange(100, 9999, 5), is_option=True),
        Asset(icon="icons/32x32/centurion.png", name="Binary USD/NZD", ticker="NZDUSD", buy=r.randrange(100, 9999, 5), sell=r.randrange(100, 9999, 5), is_option=True),
        Asset(icon="icons/32x32/bunnycoin.png", name="Binary AUD/CHF", ticker="AUDCHF", buy=r.randrange(100, 9999, 5), sell=r.randrange(100, 9999, 5), is_option=True),
        Asset(icon="icons/32x32/callisto-network.png", name="Binary NZD/AUD", ticker="AUDNZD", buy=r.randrange(100, 9999, 5), sell=r.randrange(100, 9999, 5), is_option=True),
    ]
def get_otc_options():
    return \
        [
            Asset(icon="icons/32x32/coinpoker.png", name="OTC USD/JPY", ticker="USDJPY", buy=r.randrange(100, 9999, 5), sell=r.randrange(100, 9999, 5), is_option=True),
            Asset(icon="icons/32x32/cybervein.png", name="OTC USD/GBP", ticker="GBPUSD", buy=r.randrange(100, 9999, 5), sell=r.randrange(100, 9999, 5), is_option=True),
            Asset(icon="icons/32x32/daneel.png", name="OTC EUR/USD", ticker="EURUSD", buy=r.randrange(100, 9999, 5), sell=r.randrange(100, 9999, 5), is_option=True),
            Asset(icon="icons/32x32/deuscoin.png", name="OTC USD/NZD", ticker="NZDUSD", buy=r.randrange(100, 9999, 5), sell=r.randrange(100, 9999, 5), is_option=True),
            Asset(icon="icons/32x32/daxxcoin.png", name="OTC AUD/CHF", ticker="AUDCHF", buy=r.randrange(100, 9999, 5), sell=r.randrange(100, 9999, 5), is_option=True),
            Asset(icon="icons/32x32/darsek.png", name="OTC NZD/AUD", ticker="AUDNZD", buy=r.randrange(100, 9999, 5), sell=r.randrange(100, 9999, 5), is_option=True),
        ]
def get_forex():
    return \
        [
            Asset(icon="icons/32x32/edu-coin.png", name="USD/JPY", ticker="USDJPY", buy=r.randrange(100, 9999, 5), sell=r.randrange(100, 9999, 5)),
            Asset(icon="icons/32x32/embers.png", name="USD/GBP", ticker="GBPUSD", buy=r.randrange(100, 9999, 5), sell=r.randrange(100, 9999, 5)),
            Asset(icon="icons/32x32/ejoy.png", name="EUR/USD", ticker="EURUSD", buy=r.randrange(100, 9999, 5), sell=r.randrange(100, 9999, 5)),
            Asset(icon="icons/32x32/egretia.png", name="USD/NZD", ticker="NZDUSD", buy=r.randrange(100, 9999, 5), sell=r.randrange(100, 9999, 5)),
            Asset(icon="icons/32x32/eaglecoin.png", name="AUD/CHF", ticker="AUDCHF", buy=r.randrange(100, 9999, 5), sell=r.randrange(100, 9999, 5)),
            Asset(icon="icons/32x32/digital-money-bits.png", name="NZD/AUD", ticker="AUDNZD", buy=r.randrange(100, 9999, 5), sell=r.randrange(100, 9999, 5)),
        ]
def get_cryptos():
    return \
        [
            Asset(icon="icons/32x32/bitcoin.png", name="Bitcoin", ticker="BTC-USD", buy=r.randrange(100, 9999, 5), sell=r.randrange(100, 9999, 5)),
            Asset(icon="icons/32x32/ethereum.png", name="Ethereum", ticker="ETH-USD", buy=r.randrange(100, 9999, 5), sell=r.randrange(100, 9999, 5)),
            Asset(icon="icons/32x32/bitcoin.png", name="Chainlink", ticker="LINK-USD", buy=r.randrange(100, 9999, 5), sell=r.randrange(100, 9999, 5)),
            Asset(icon="icons/32x32/litecoin.png", name="Litecoin", ticker="LTC-USD", buy=r.randrange(100, 9999, 5), sell=r.randrange(100, 9999, 5)),
            Asset(icon="icons/32x32/bitcoincash.png", name="Bitcoin cash", ticker="BCH-USD", buy=r.randrange(100, 9999, 5), sell=r.randrange(100, 9999, 5)),
            Asset(icon="icons/32x32/ripple.png", name="Ripple", ticker="XRP-USD", buy=r.randrange(100, 9999, 5), sell=r.randrange(100, 9999, 5)),
        ]
def get_commodities():
    return \
        [
            Asset(icon="icons/32x32/igtoken.png", name="Apple", ticker="AAPL", buy=r.randrange(100, 9999, 5), sell=r.randrange(100, 9999, 5)),
            Asset(icon="icons/32x32/monero-classic.png", name="Adobe Systems,inc.", ticker="ADBE", buy=r.randrange(100, 9999, 5), sell=r.randrange(100, 9999, 5)),
            Asset(icon="icons/32x32/ors-group.png", name="Nvidia LLC", ticker="NVDA", buy=r.randrange(100, 9999, 5), sell=r.randrange(100, 9999, 5)),
            Asset(icon="icons/32x32/qwark.png", name="Dell Technologies", ticker="DELL", buy=r.randrange(100, 9999, 5), sell=r.randrange(100, 9999, 5)),
            Asset(icon="icons/32x32/rentledger.png", name="Amazon", ticker="AMZN", buy=r.randrange(100, 9999, 5), sell=r.randrange(100, 9999, 5)),
            Asset(icon="icons/32x32/reddcoin.png", name="Microsoft", ticker="MSFT", buy=r.randrange(100, 9999, 5), sell=r.randrange(100, 9999, 5)),
        ]
Beispiel #28
0
def my_form_post():
    if request.method == 'POST':
        if request.form['serial'] != "":
            name = request.form['name']
            serial = request.form['serial']
            manufacturer = request.form['manufacturer']
            print("hello")
            newasset = Asset(name, serial, manufacturer)
            message = str(newasset.get_asset_details())

            return jsonify(results=message)
        else:
            text = request.form['text']

            tx = asset.view_asset_by_tx(text)
            return jsonify(results=tx)
Beispiel #29
0
 def boxes(self):
     LOGGER.info('Converting...')
     convert = Convert(self.pdf_path)
     LOGGER.info('Processing %i images...' % len(convert.images))
     for image in convert.images:
         asset = Asset(image['path'])
         LOGGER.info('asset river counts, y=[%i], x=[%i]' %
                 (len(list(asset.river_y())), len(list(asset.river_x()))))
         grid = GridFinder(asset)
         grid.process()
         if grid.cells:
             LOGGER.info('Found %s cells', len(grid.cells))
             yield {
                 'boxes': grid.cells,
                 'meta': image
             }
         else:
             LOGGER.info('Found no cells')
Beispiel #30
0
def register_airtable():
    app.logger.info("register_airtable(): POST /register_airtable")
    app.logger.debug(f"{request.form=}")
    posted_asset = request.form.to_dict() if request.form else {}

    if not posted_asset:
        return FlashMessage.show_with_redirect(
            "Registration failed. Please try the procedure again from the beginning, sorry for the inconvenience.",
            FlashCategories.WARNING, url_for("index"))
    else:
        registrable_asset = Asset(
            title=posted_asset.get("title", None),
            asin=posted_asset.get("asin", None),
            url=posted_asset.get("url", None),
            images=[{
                "url": posted_asset.get("image_url", None)
            }],
            manufacture=posted_asset.get("manufacturer", None),
            contributor=posted_asset.get("contributors", None),
            product_group=posted_asset.get("product_group", None),
            publication_date=posted_asset.get("publication_date", None),
            features=posted_asset.get("features", None),
            default_position=posted_asset.get("default_positions", None),
            current_position=posted_asset.get("current_positions", None),
            note=posted_asset.get("note", None),
            registrant_name=posted_asset.get("registrants_name", None))

    try:
        AirtableClient().register_asset(registrable_asset)
        app.logger.info(f"Registration completed! {registrable_asset=}")
        return FlashMessage.show_with_redirect("Registration completed!",
                                               FlashCategories.INFO,
                                               url_for("index"))
    except requests.exceptions.HTTPError as he:
        app.logger.error(he)
        return FlashMessage.show_with_redirect(
            f"Registration failed. Please try the procedure again. Error message: {he}",
            FlashCategories.ERROR, url_for("registration"))
    except TypeError as te:
        app.logger.error(te)
        return FlashMessage.show_with_redirect(
            f"Registration failed. Please try the procedure again. Error message: {te}",
            FlashCategories.ERROR, url_for("registration"))