Пример #1
0
def new_mission():
    form = NewMissionForm()
    if form.validate_on_submit():
        the_other_user = UserBasic.query.filter_by(username=form.participant.data).first()
        if(form.mission_type.data == 'pk'):
            mission = Mission(mission_type=form.mission_type.data, level=form.level.data, start_date=form.start_date.data, prize=form.prize.data, end_date=form.end_date.data, users=[current_user, the_other_user])
        elif(form.mission_type.data == 'gift'):
            mission = Mission(mission_type=form.mission_type.data, level=form.level.data, start_date=form.start_date.data, prize=form.prize.data, end_date=form.end_date.data, users=[the_other_user])
        

        if form.mission_type.data == 'pk':
            t = Transaction(transaction_type='new_mission', value=-form.prize.data, user=current_user, transaction_comment='PK with '+the_other_user.username)
            db.session.add(t)
            db.session.commit()
            flash('New transaction updated!')

            t = Transaction(transaction_type='new_mission', value=-form.prize.data, user=the_other_user, transaction_comment='PK with '+current_user.username)
            db.session.add(t)
            db.session.commit()
            flash('New transaction updated!')

        elif form.mission_type.data == 'gift':
            t = Transaction(transaction_type='gift', value=-form.prize.data, user=current_user, transaction_comment='Gift to '+the_other_user.username)
            db.session.add(t)
            db.session.commit()
            flash('New transaction updated!')
            
        db.session.add(mission)
        db.session.commit()
        flash('New mission added!')
        return redirect(url_for('mission.my_mission'))
    return render_template("mission/new_mission.html", form=form)
Пример #2
0
def api_view(request, user):
    try:
        data = json.loads(request.data.decode('utf-8'))
    except json.JSONDecodeError:
        return bad_json()

    # validate fields
    if 'model' not in data:
        return bad_request("No `model` prodivded in request")
    model = data['model']

    if 'n' in data:
        try:
            n = int(data['n'])
        except ValueError:
            return bad_request("Value given for `n` is not valid: " +
                               str(data['n']))
        if n < 1:
            return bad_request("Value given for `n` is less than 1")
    else:
        n = 1

    if 'refresh' in data:
        refresh = data['refresh']
        if type(refresh) is not bool:
            return bad_request("Value given for `refresh` is not valid: " +
                               str(refresh))
    else:
        refresh = True

    # do transaction
    record = json.dumps({'model': model, 'n': n})
    last_trans = Transaction.query.filter_by(request=record, user=user).first()

    if refresh or last_trans is None:
        # TODO deal with bad model
        data_out, cost = jg.generate(model, n)
        response = json.dumps(data_out)
        transaction = Transaction(user=user,
                                  cost=cost,
                                  request=record,
                                  response=response,
                                  time=datetime.now())
    else:
        response = last_trans.response
        transaction = Transaction(user=user,
                                  cost=last_trans.cost,
                                  request=record,
                                  response=last_trans.response,
                                  time=datetime.now())

    db.session.add(transaction)
    db.session.commit()

    return response
Пример #3
0
def test_seed():
    user_list = [User(email='*****@*****.**'), User(email='*****@*****.**')]
    transaction_list = [
        Transaction(date=date(2019, 1, 12),
                    buy_currency='BTC',
                    buy_amount=1.1,
                    sell_currency='USD',
                    sell_amount=1000,
                    user_id=1),
        Transaction(date=date(2019, 3, 12),
                    buy_currency='USD',
                    buy_amount=600.0,
                    sell_currency='BTC',
                    sell_amount=0.7,
                    user_id=1),
        Transaction(date=date(2019, 5, 20),
                    buy_currency='ETH',
                    buy_amount=5.0,
                    sell_currency='USD',
                    sell_amount=1200.0,
                    user_id=1),
        Transaction(date=date(2019, 5, 20),
                    buy_currency='ETH',
                    buy_amount=5.0,
                    sell_currency='USD',
                    sell_amount=1200.0,
                    user_id=2)
    ]
    currency_list = [
        Currency(cd='USD', name='United States Dollar', asset_type='fiat'),
        Currency(cd='GBP', name='British Pound', asset_type='fiat'),
        Currency(cd='BTC', name='Bitcoin', asset_type='crypto'),
        Currency(cd='LTC', name='Litecoin', asset_type='crypto'),
        Currency(cd='ETH', name='Ethereum', asset_type='crypto')
    ]

    curr_dt = datetime.today()
    last_month = curr_dt + timedelta(days=-30)
    price_list = [
        Price(ts=last_month,
              buy_currency='BTC',
              sell_currency='USD',
              rate=10000),
        Price(ts=curr_dt, buy_currency='BTC', sell_currency='USD', rate=15000),
        Price(ts=last_month, buy_currency='ETH', sell_currency='USD',
              rate=100),
        Price(ts=curr_dt, buy_currency='ETH', sell_currency='USD', rate=200),
        Price(ts=last_month, buy_currency='USD', sell_currency='USD', rate=1),
        Price(ts=curr_dt, buy_currency='USD', sell_currency='USD', rate=1)
    ]

    drop_create_tables(3, 5)
    add_records(user_list, transaction_list, currency_list, price_list)
Пример #4
0
def seed_transactions():

    x1 = Transaction(
        group_id=1,
        payer_id=1,
        paid_amount=111,
        description="Butterbeer round one!",
        expense_date="2020-09-05 09:45:28",
        completed=False,
        updated_at="2020-09-05 09:45:28",
    )

    db.session.add(x1)

    x2 = Transaction(
        group_id=2,
        payer_id=2,
        paid_amount=222,
        description="Butterbeer round 2!",
        expense_date="2020-09-05 09:45:28",
        completed=False,
        updated_at="2020-09-05 09:45:28",
    )

    db.session.add(x2)

    x3 = Transaction(
        group_id=1,
        payer_id=3,
        paid_amount=333,
        description="New Owl",
        expense_date="2020-09-05 09:45:28",
        completed=False,
        updated_at="2020-09-05 09:45:28",
    )

    db.session.add(x3)

    x4 = Transaction(
        group_id=2,
        payer_id=1,
        paid_amount=444,
        description="Broomstick",
        expense_date="2020-09-05 09:45:28",
        completed=False,
        updated_at="2020-09-05 09:45:28",
    )

    db.session.add(x4)

    db.session.commit()
Пример #5
0
def purchase(username):
    user = UserProfile.query.filter_by(username=username)
    if user is not None:
        user = user.first()
        coin_name = request.form['coin_name'] or None
        coin_conversion_rate = float(request.form['coin_conversion_rate'])
        purchase_amount = float(request.form['purchase_amount'])
        if purchase_amount <= user.balance:
            number_of_coins = purchase_amount / coin_conversion_rate
            coin_investment_instance = None
            for coin in user.coin_investments:
                if coin.coin_name == coin_name:
                    coin_investment_instance = coin
                    break
            if coin_investment_instance is None:
                coin_investment_instance = Investment(user_id=user.id, coin_name=coin_name,
                                                      number_of_coins=number_of_coins, total_price=purchase_amount)
            else:
                coin_investment_instance.number_of_coins += number_of_coins
                coin_investment_instance.total_price += purchase_amount
            db.session.add(coin_investment_instance)
            db.session.commit()
            transaction = Transaction(investment_id=coin_investment_instance.id, coin_name=coin_name,
                                      number_of_coins=number_of_coins, total_price=purchase_amount)
            db.session.add(transaction)
            db.session.commit()
            user.balance -= purchase_amount
            db.session.add(user)
            db.session.commit()
            return redirect(url_for('investments.dashboard', username=user.username))
        else:
            flash("Insufficient balance.")
            return redirect(url_for('investments.checkprice', username=user.username))
    else:
        return render_template('404_error')
Пример #6
0
def add_transaction(account_id):
	account = Account.query.get(account_id)
	form = AddTransactionForm()
	form.category.choices = build_user_category_array(current_user)

	if form.validate_on_submit():
		if form.transaction_type.data=='Expense':
			amount = decimal.Decimal(0.00) - form.amount.data
		elif form.transaction_type.data=='Income':
			amount = form.amount.data

		tr = Transaction(transaction_name=form.transaction_name.data, \
			user_id=current_user.user_id, account_id=account_id, \
			amount=amount, note=form.note.data, category_id=int(form.category.data))
		if form.recurring.data=='True':
			tr.recurring = True
			tr.recurring_delay = Transaction.set_recurring_delay(form.how_often.data)
			tr.recurring_enddate = Transaction.set_recurring_enddate(form.enddate.data)
		
		account.account_networth += amount

		db.session.add(tr)
		db.session.commit()
		flash("{} succesfully added".format(tr))
		return redirect(url_for('main.account', account_id=account_id))


	return render_template('main/add_transaction.html', form=form, user_id=current_user.user_id)
Пример #7
0
def transactions(account_id):
    account = Account.query.filter_by(id=account_id).first_or_404()
    form = AddTransactionForm()

    print("account_id from URL:" + account_id)
    if form.validate_on_submit():
        print("account_id" + account_id)
        print("amount" + str(form.amount.data))
        print("description" + form.description.data)
        print("credit" + str(form.credit.data))
        print("debit" + str(form.debit.data))

        transaction = Transaction(account=account,
                                  description=form.description.data,
                                  amount=form.amount.data)

        if form.credit.data:
            transaction.type = TransactionType.CREDIT.value
            account.balance = account.balance + decimal.Decimal(
                form.amount.data)
        else:
            transaction.type = TransactionType.DEBIT.value
            account.balance = account.balance - decimal.Decimal(
                form.amount.data)

        db.session.add(transaction)
        db.session.commit()

    return render_template('transactions.html', account=account, form=form)
Пример #8
0
def monitor():
    form = NewPhysioLogForm()
    form_bank = NewTransactionForm()
    if form.validate_on_submit():
        user_to_add = UserBasic.query.filter_by(
            username=form.username.data).first()
        log = PhysioLog(physio_type=form.physio_type.data,
                        value=form.value.data,
                        user=user_to_add,
                        physio_verify='physician')
        if (current_user.mission is not None):
            log.mission = current_user.mission
        db.session.add(log)
        db.session.commit()
        flash('New physiological log added!')
        return redirect(url_for('monitor.monitor'))

    if form.validate_on_submit():
        user_to_add = UserBasic.query.filter_by(
            username=form.username.data).first()
        t = Transaction(transaction_type=form.transaction_type.data,
                        value=form.value.data,
                        user=current_user)
        db.session.add(t)
        db.session.commit()
        flash('New transaction updated!')
        return redirect(url_for('monitor.monitor'))

    user_monitor = UserBasic.query.filter(UserBasic.mission != None).all()

    return render_template('monitor/monitor.html',
                           form=form,
                           form_bank=form_bank,
                           user_monitor=user_monitor)
Пример #9
0
    def addTransaction(self, trade, tradeCount, assetSymbol):
        asset = Asset.objects.get(symbol=assetSymbol)
        portfolioAssetMapping = PortfolioAssetMapping.objects.get(asset=asset)
        timestamp = "2016-01-06"

        initialCount = portfolioAssetMapping.currentCount
        finalCount = initialCount
        if trade == "buy":
            finalCount = initialCount + tradeCount
        if trade == "sell":
            finalCount = initialCount - tradeCount

        portfolioAssetMapping.currentCount = finalCount

        assetInfo = Share(assetSymbol)
        price = finalCount * float(assetInfo.get_price())
        transaction = Transaction(mapping=portfolioAssetMapping,
                                  trade=trade,
                                  timestamp=timestamp,
                                  initialCount=initialCount,
                                  finalCount=finalCount,
                                  tradeCount=tradeCount,
                                  price=price)
        transaction.save()
        portfolioAssetMapping.save()
def transactions():
    body = request.get_json()
    user_id = body.get('user_id')
    fiat_id = body.get('fiat_id')
    coin_id = body.get('coin_id')
    coinamt = body.get('coinamt')
    fiatprice = body.get('fiatprice')
    purchase = body.get('purchase')
    coinamt = round(coinamt, 8)
    date = datetime.datetime.now()
    vault = Vault.query.filter_by(user_id=user_id).first()
    vault = vault.to_dict()
    coin = VaultCoin.query.filter_by(vault_id=vault['id']).filter_by(
        coin_id=coin_id).first()
    if purchase == True:
        coin.amount = coin.amount + coinamt
        db.session.commit()
    else:
        if (coin.amount < coinamt):
            return {'errors': ['Insufficient tokens']}
        coin.amount = coin.amount - coinamt
        db.session.commit()
    new_transfer = Transaction(user_id=user_id,
                               fiat_id=fiat_id,
                               coin_id=coin_id,
                               coinamt=coinamt,
                               fiatprice=fiatprice,
                               purchase=purchase,
                               date=date)
    db.session.add(new_transfer)
    db.session.commit()
    new_transfer = new_transfer.to_dict()
    return new_transfer
Пример #11
0
def upload():
    form = UploadForm()
    if form.validate_on_submit():
        f = form.csv_file.data
        account_holder = f.readline().decode()
        df = pd.read_csv(f, skiprows=0, index_col=False).fillna(0.0)
        account_holder = account_holder.split(':')[1][:14].strip()
        df['Transaction Date'] = pd.to_datetime(df['Transaction Date'])
        df['Posting Date'] = pd.to_datetime(df['Posting Date'])
        df.columns = [x.lower().replace(' ', '_') for x in df.columns]
        df['account_holder'] = account_holder

        for idx, row in df.iterrows():
            t = Transaction(**row.to_dict())
            t_duplicate = Transaction.query.filter_by(
                transaction_date=t.transaction_date,
                posting_date=t.posting_date,
                description=t.description,
                debits=t.debits,
                credits=t.credits,
                balance=t.balance,
                account_holder=t.account_holder).first()

            if t_duplicate == None:
                db.session.add(t)

        db.session.commit()
        return redirect(url_for('index'))

    return render_template('upload.html', form=form)
Пример #12
0
def create_transaction():
    data = request.get_json() or {}
    if 'sender' not in data or not isinstance(data['sender'], int):
        return bad_request('Sender must not be empty or incorrect value')
    sender = User.query.get_or_404(data['sender'])
    if token_auth.current_user().id != sender.id:
        abort(403)
    if 'recipient' not in data or data['recipient'] == sender.email or \
            not User.query.filter_by(email=data['recipient']).first():
        return bad_request('You can not transfer yourself or empty value')
    if 'transfer_amount' not in data or not isinstance(data['transfer_amount'], (float, int)) or \
            data['transfer_amount'] <= 0.:
        return bad_request('Incorrect value of transfer amount')
    recipient = User.query.filter_by(email=data['recipient']).first()
    sender.bill = sender.bill - float(data['transfer_amount'])
    transfer_amount_base = float(
        data['transfer_amount']) / sender.currency_user.rate
    recipient_bill = recipient.bill / recipient.currency_user.rate
    transaction = Transaction(sender=sender.id,
                              recipient=recipient.email,
                              transfer_amount_base=transfer_amount_base,
                              sender_rate=sender.currency_user.rate)
    recipient.bill = (recipient_bill +
                      transfer_amount_base) * recipient.currency_user.rate
    db.session.add(transaction)
    db.session.commit()
    return jsonify(transaction.to_dict())
Пример #13
0
def expense():
    if request.method == "POST":
        try:
            transactionId = int(request.form.get('transactionId'))
            description = str(request.form.get('description'))
            amount = float(request.form.get('amount'))
        except:
            return "الرجاء التأكد من تعبئة النموذج صحيحاَ"

        if None or False in (transactionId, description, amount):
            return "الرجاء التأكد من تعبئة النموذج صحيحاَ"

        currentTime = datetime.now()
        newTransaction = Transaction(transaction_Id=transactionId,
                                     client_Id=CASH_CLIENT_ID,
                                     description=description,
                                     total=amount,
                                     paid=amount,
                                     type_Id="E",
                                     type_name="مصروفات",
                                     date=currentTime)
        db.session.add(newTransaction)

        # db.execute("INSERT INTO cash (transactionId, clientId, amount, typeId, type_name, date)"
        #           + "VALUES ((?), 1, (?), (?), (?), (?))", [transactionId, -amount, "E", "مصروفات", currTime])

        cashClient = Client.query.get(CASH_CLIENT_ID)
        cashClient.client_balance -= amount
        db.session.commit()
        return "/expense"
    else:
        return render_template('expense.html',
                               transactionId=getNextTransactionId())
Пример #14
0
def transfer_balance(transfer_details, user):
    user.balance = user.balance - transfer_details["amount"]
    transaction = Transaction(user_id=user.id,
                              timestamp=datetime.now(pytz.utc),
                              amount=(transfer_details["amount"] * -1))
    db.session.add(transaction)
    db.session.commit()
Пример #15
0
def process_transactions(data_db,
                         block_height,
                         pubkeyhash_version,
                         checksum_value,
                         client=None):
    if client == None:
        client = get_active_rpc_client()

    try:
        block = client.getblock('{}'.format(block_height), 4)
    except Exception as e:
        log.debug(e)
        return

    for pos_in_block, tx in enumerate(block['tx']):
        try:
            tx_relevant = process_inputs_and_outputs(data_db, tx,
                                                     pubkeyhash_version,
                                                     checksum_value)

        except Exception as e:
            log.debug(e)
            return

        # add only relevant TXs to the database.
        if tx_relevant:
            Transaction.create_if_not_exists(
                data_db,
                Transaction(txid=tx['txid'],
                            pos_in_block=pos_in_block,
                            block=unhexlify(block['hash'])))
Пример #16
0
def add_balance(user, amount):
    user.balance = user.balance + amount
    transaction = Transaction(user_id=user.id,
                              timestamp=datetime.now(pytz.utc),
                              amount=amount)
    db.session.add(transaction)
    db.session.commit()
Пример #17
0
def top_up():
    """Top up the user's balance and redirect to the last page."""
    if not (current_user.is_admin or current_user.is_bartender):
        flash("You don't have the rights to access this page.", 'danger')
        return redirect(url_for('main.dashboard'))

    username = request.args.get('username', 'none', type=str)
    user = User.query.filter_by(username=username).first_or_404()

    amount = request.form.get('amount', 0, type=float)

    if amount <= 0:
        flash('Please enter a strictly positive value.', 'warning')
        return redirect(request.referrer)

    user = User.query.filter_by(username=username).first_or_404()
    user.balance += amount

    transaction = Transaction(client_id=user.id,
                              barman=current_user.username,
                              date=datetime.datetime.utcnow(),
                              type='Top up',
                              balance_change=amount)
    db.session.add(transaction)
    db.session.commit()

    flash(
        'You added ' + str(amount) + '€ to ' + user.first_name + ' ' +
        user.last_name + "'s account. " +
        render_template('_revert_button.html.j2', transaction=transaction),
        'primary')
    return redirect(request.referrer)
Пример #18
0
    def generate_fake_users(self, count):

        for _ in range(count):
            fake_user = forgery_py.internet.user_name(True)

            User(email=forgery_py.internet.email_address(),
                 username=fake_user,
                 password='******').save()

            fake_account = Account(name=forgery_py.name.company_name(),
                                   number=1234,
                                   currency=forgery_py.currency.code(),
                                   balance=2000,
                                   holder=fake_user).save()

        fake_date = datetime(2018, 1, 1).date()
        fake_amount = -100
        ttype_name = TransactionType.query.filter_by(id=1).first().ttype
        for _ in range(24):
            fake_date = fake_date + timedelta(days=15)
            fake_amount = fake_amount - 10
            Transaction(date=fake_date,
                        amount=fake_amount,
                        type=ttype_name,
                        description='fake groceries',
                        category='Household',
                        subcategory='Groceries',
                        tag='Routine',
                        status=True,
                        accountid=fake_account.id,
                        payee='').save()
Пример #19
0
def sell():
    """Sell shares of stock"""
    symbol = request.form.get('symbol')
    price = request.form.get('price')
    shares = int(request.form.get('shares'))

    # get the number of shares associated with this symbol
    stock = db.session.query(Transaction.symbol_id, func.sum(
        Transaction.shares).label("sum")).join(Symbol, Symbol.id == Transaction.symbol_id).filter(Transaction.user_id == session.get('user_id'), Symbol.symbol == symbol).first()
    # return an error if the user doesn't have enough shares or the input is not a positive integer
    if stock.sum < shares or shares < 0:
        return apology('NOT ENOUGH SHARES', 403)

    # update the number of shares in the transactions table
    else:
        transaction = Transaction(user_id=session.get('user_id'), symbol_id=stock.symbol_id, shares=-shares, price=price)
        db.session.add(transaction)

    # update user's cash
    transaction_value = float(price) * float(shares)
    user = User.query.filter_by(id=session.get('user_id')).first()
    user.cash += transaction_value

    db.session.commit()

    flash('You successfully sold {} shares of {}'.format(
        shares, symbol))
    return redirect('/')
Пример #20
0
def create_test_transaction(
    user_id,
    title='Test Transaction',
    date=datetime.now(),
    amount=100.00,
    description='Test Description',
    income=False,
    is_recurring=False,
    freq=None,
    interval=None,
    count=None,
    until=None,
):
    t = Transaction(
        user_id=user_id,
        title=title,
        date=date,
        income=income,
        is_recurring=is_recurring,
        freq=freq,
        interval=interval,
        count=count,
        until=until,
    )
    t.set_amount(amount)
    if is_recurring:
        t.set_recurring(None)
    db.session.add(t)
    db.session.commit()
    return Transaction.query.filter_by(id=t.id).first()
Пример #21
0
def seed_transactions():

    demo = Transaction(type=-500, coin_id=3, price=50, quantity=10, wallet_id=2)

    db.session.add(demo)

    db.session.commit()
Пример #22
0
def __create_transactions(full_phone_number, request_data):
    '''
    Creates a transaction when passing through transaction information, including a date

    When the transaction is created, it is stored with a specific date. However, when it is
    retrieved, it is retrieved with all other transactions with the same month and year
    '''

    try:
        # Loads the request body
        # and checks whether all information is present
        if ('transactions' not in request_data):
            current_app.logger.error(
                'request body not formatted correctly, body is missing required parameters: {0}'
                .format(request_data))
            return error_response(400)

        # Gets the identity of the JWT
        # and gets the user from the DB
        author = User.query.filter(
            User.full_phone_number == full_phone_number).first()

        # Gets the list of transactions
        # And creates transactions for that User
        transactions_list = request_data['transactions']
        for item in transactions_list:
            # Makes sure that the data is formatted correctly
            if ('name' not in item or 'category' not in item
                    or 'price' not in item or 'createdAt' not in item):
                current_app.logger.error(
                    'transaction not formatted correctly, missing required parameters: {0}'
                    .format(item))
                return error_response(400)

            # Creates the new Transaction
            # and attaches the author to it
            transaction = Transaction()
            transaction.from_dict(item, author=author)

            # Logs that the user is being added to the database and then adds to the database
            # We will commit later once everything has been processed correctly
            db.session.add(transaction)
            current_app.logger.info(
                'added transaction {0} {1} to the database session'.format(
                    transaction.category, transaction.name))

        # Commits the user to the database and logs that is has been commited
        db.session.commit()
        current_app.logger.info(
            'commited transactions to the database session')

        # Returns the response with status code 201 to indicate the user has been created
        return error_response(201)
    except Exception as e:
        # Logs the exception that has been raised and rolls back all the changes made
        current_app.logger.fatal(str(e))
        db.session.rollback()
        # Returns a 500 response (Internal Server Error)
        return error_response(500)
Пример #23
0
def get_employer_by_filter(req):
    try:
        trans = Transaction()
        employer = trans.query(Employer).all()

        return ('ok', '', [e.to_dict() for e in employer])
    except Exception as e:
        return ('err', e.__class__.__name__, [])
Пример #24
0
def confirm_sell(username):
    user = UserProfile.query.filter_by(username=username)
    if user is not None:
        user = user.first()
        with open('app/investments/coins.json') as f:
            supported_currencies = json.load(f)

        coin_conversion_rate = float(request.form['coin_conversion_rate'])
        sell_amount = float(request.form['sell_amount'])
        print(coin_conversion_rate)
        print(sell_amount)

        coin_name = None
        coins_list = []
        for curr in supported_currencies:
            coins_list.append(curr['id'])
        prices = cg.get_price(ids=coins_list, vs_currencies='usd')
        for curr in supported_currencies:
            curr['price'] = prices[curr['id']]['usd']

        print(prices)
        for coin in supported_currencies:
            if coin['price'] == coin_conversion_rate:
                coin_name = coin['id']
                break

        if coin_name is None or coin_conversion_rate is None or sell_amount is None:
            return redirect(url_for('investments.sell', username=user.username))
        number_of_coins = sell_amount / coin_conversion_rate
        coin_investment_instance = None
        for coin in user.coin_investments:
            if coin.coin_name == coin_name:
                coin_investment_instance = coin
                break
        success = False
        if coin_investment_instance is None:
            flash("You don't have any holdings of this coin.")
        else:
            if coin_investment_instance.number_of_coins * prices[coin_investment_instance.coin_name][
                'usd'] >= sell_amount:
                coin_investment_instance.number_of_coins -= number_of_coins
                coin_investment_instance.total_price -= sell_amount
                db.session.add(coin_investment_instance)
                db.session.commit()
                transaction = Transaction(investment_id=coin_investment_instance.id, coin_name=coin_name,
                                          number_of_coins=number_of_coins, total_price=sell_amount)
                db.session.add(transaction)
                if coin_investment_instance.number_of_coins <= 0:
                    db.session.delete(coin_investment_instance)
                db.session.commit()
                user.balance += sell_amount
                db.session.add(user)
                db.session.commit()
                success = True
        return render_template('confirm_sell.html', success=success)
    else:
        return render_template('404_error')
Пример #25
0
def delete_employer_by_id(id_):
    try:
        trans = Transaction()
        n = trans.query(Employer).filter(Employer.id == id_).delete()
        trans.commit()

        return ('ok', '', n)
    except Exception as e:
        return ('err', e.__class__.__name__, 0)
Пример #26
0
def get_employer_by_id(id_):
    try:
        trans = Transaction()
        employer = trans.query(Employer).get(id_)

        return ('ok', '', [employer.to_dict()])
    except AttributeError as e:
        return ('ok', e.__class__.__name__, [])
    except Exception as e:
        return ('err', e.__class__.__name__, [])
Пример #27
0
 def form_valid(self, form):
     ret = super(TopUpFormView, self).form_valid(form)
     t = Transaction(user=form.cleaned_data['user'],
                     amount=form.cleaned_data['amount'])
     t.save()
     messages.success(
         self.request,
         "{}€ have been added to your balance. You now have {}€ available".
         format(form.cleaned_data['amount'],
                form.cleaned_data['user'].profile.balance))
     return ret
Пример #28
0
 def post(self, request):
     user_profile = UserProfile.objects.get(badge=request.POST.get('badge'))
     user = user_profile.user
     item = Item.objects.get(code=request.POST.get('code'))
     sale = Sale(user=user)
     sale.save()
     sl = SaleLine(quantity=1, item=item, sale=sale)
     sl.save()
     t = Transaction(user=user, amount=-sale.total)
     t.save()
     return HttpResponse()
Пример #29
0
 def test_adding_transactions(self):
     t1 = Transaction(book_id=1,
                      borrower_id=1,
                      date_created=datetime.datetime(2019, 5, 26),
                      startdate=datetime.datetime(2019, 4, 16),
                      enddate=datetime.datetime(2019, 3, 30),
                      status="open")
     db.session.add(t1)
     db.session.commit()
     numtrans = Transaction.query.all()
     self.assertEqual(len(numtrans), 1)
Пример #30
0
def update_employer(id_, req):
    try:
        trans = Transaction()
        n = trans.query(Employer).filter(Employer.id == id_).update(req)
        trans.commit()

        return ('ok', '', n)
    except IntegrityError as e:
        return ('err', e.__class__.__name__, 0)
    except Exception as e:
        return ('err', e.__class__.__name__, 0)