Пример #1
0
 def logout(self, **kwargs):
     if 'transaction_key' in self.session:
         try:
             Transaction2.get(Key(encoded=self.session['transaction_key'])).delete()
         except:
             Transaction.get(Key(encoded=self.session['transaction_key'])).delete()
     self.users.logout()
     self.redirect('/')
Пример #2
0
    def _handler(self, expense_key, post=False):
        user = users.get_current_user()

        if user:
            instance = Transaction.get(expense_key)
            if instance.user != user:
                self.redirect(users.create_login_url(self.request.uri))

            if post:
                form = IncomeForm(user, instance=instance, data=self.request.POST)
                if form.is_valid():
                    transaction = form.save(commit=False)
                    transaction.account = transaction.customer.account
                    transaction.put()
                    self.redirect("/receitas/")

            form = IncomeForm(user, instance=instance)
            path = os.path.join(os.path.dirname(__file__), 'templates/income.html')
            self.response.out.write(template.render(path, {
                'form': form,
                'user': user,
                'logout_url': users.create_logout_url("/")
            }))
        else:
            self.redirect(users.create_login_url(self.request.uri))
Пример #3
0
def delete_transaction(id):
    # Get the token in the parameters
    params = request.get_json()
    paramsToken = params.get('token')

    # Check if the token exist
    try:
        token = Token.get(Token.token == paramsToken)
        if time.time() < token.expiration_date:
            transaction = Transaction.get(Transaction.id == id)
            if transaction.user_id == token.user_id:
                is_deleted = transaction.delete_instance()
                return str(is_deleted)
            else:
                return str(
                    'The token is not matching with the user_id of the specific transaction'
                )
        else:
            return str(
                'Your token is expired. Please delete this one, and create another one.'
            )
    except Exception as identifier:
        return jsonify({
            'error':
            'Token not found {message}'.format(message=identifier.message)
        }), 404
Пример #4
0
def check():
    SECONDS_LIMIT = 60
    #SECONDS_LIMIT = 5

    fail_hard = False
    fail_soft = False
    json = None
    number_complete = 0
    time_now = datetime.now()
    transaction = None

    transaction_id = request.args.get('transaction_id')
    transaction_id = int(transaction_id)

    try:
        transaction = Transaction.get(
            Transaction.transaction_id == transaction_id)
    except Transaction.DoesNotExist:
        return ('', 404)

    if transaction.gesture_one_status == 1:
        number_complete = 1
    elif transaction.gesture_one_status == 2:
        fail_soft = True
    elif transaction.gesture_one_status == 3:
        fail_hard = True

    if (transaction.gesture_two_status == 1) and (not fail_soft):
        number_complete = 2
    elif transaction.gesture_two_status == 2:
        fail_soft = True
    elif transaction.gesture_two_status == 3:
        fail_hard = True

    if (transaction.gesture_three_status == 1) and (not fail_soft):
        number_complete = 3
    elif transaction.gesture_three_status == 2:
        fail_soft = True
    elif transaction.gesture_three_status == 3:
        fail_hard = True

    if fail_hard:
        json = jsonify(number_complete=number_complete, status='FAIL:HARD')
    elif fail_soft:
        json = jsonify(number_complete=number_complete, status='FAIL:SOFT')
    elif (transaction.is_complete):
        transaction.delete_instance()

        json = jsonify(number_complete=3, status='PASS')
    elif (time_now -
          transaction.timestamp) <= timedelta(seconds=SECONDS_LIMIT):
        json = jsonify(number_complete=number_complete, status='WAIT')
    else:
        transaction.delete_instance()

        json = jsonify(status='FAIL:HARD')

    return json
	def	post(self):
		action = self.request.get('action', 'list')
		if action == 'list':
			self.sendTransactionList()		
		elif action == 'update':
			# add a new or update a transaction
			tkey = self.request.get('transaction', 'None')
			if tkey == 'None':
				transaction = Transaction()
				transaction.project = self.project
			else:
				transaction = Transaction.get(tkey)
				if transaction.project.key() != self.project.key():
					raise Exception("Project/Transaction mismatch")
			# update / set fields
			transaction.date = datetime.strptime(self.request.get('date', transaction.date.isoformat()), "%Y-%m-%d")
			transaction.source = Account.get(self.request.get('source', transaction.source and transaction.source.key()))
			transaction.dest = Account.get(self.request.get('dest', transaction.dest and transaction.dest.key()))
			transaction.ammount = float(self.request.get('ammount', str(transaction.ammount)).replace(',', '.'))
			transaction.check = self.request.get('check', 'False') == 'True'
			transaction.text = self.request.get('text', transaction.text)
			transaction.user = self.user
			# a None currency means we use the base currency!
			c = self.request.get('currency', transaction.currency and transaction.currency.key())
			transaction.currency = Currency.get(c) if c != "None" else None
			# exchange source and dest, if the amount is negative
			if transaction.ammount < 0:
				tmp_src = transaction.source
				transaction.source = transaction.dest
				transaction.dest = tmp_src
				transaction.ammount = -transaction.ammount	
			# put back into data store
			transaction.put()
			# retransmit all transactions
			self.sendTransactionList()
		elif action == 'delete':
			# add a new or update a transaction
			transaction = Transaction.get(self.request.get('transaction', 'None'))
			if transaction.project.key() != self.project.key():
				raise Exception("Project/Transaction mismatch")
			transaction.delete()
			# retransmit all transactions
			self.sendTransactionList()			
		else:
			raise Exception("Unknown action '%(action)s'!" % {'action':action})
Пример #6
0
    def get(self, expense_key):
        user = users.get_current_user()

        if user:
            instance = Transaction.get(expense_key)
            if instance.user == user:
                instance.delete()
            self.redirect("/receitas/")
        else:
            self.redirect(users.create_login_url(self.request.uri))
Пример #7
0
def one_transaction(id):
    try:
        # Build query to get transaction by URL id
        transaction = Transaction.get(Transaction.id == id)

        # Convert to dictionnary & send JSON to browser
        one_transaction = model_to_dict(transaction)
        return jsonify({ 'one_transaction': one_transaction }), 200

    # Catch error if request fails
    except Exception as error:
        print error

        # Send error to browser
        return jsonify({ 'error': 'Not found' }), 404
Пример #8
0
def validate():
    # only validate one at a time

    result = None

    json = request.get_json(force=True)

    current_gesture = json['current_gesture']
    gesture = json['gesture']
    transaction_id = json['transaction_id']

    transaction = Transaction.get(Transaction.transaction_id == transaction_id)

    if current_gesture == 1:
        if transaction.gesture_one == gesture:
            result = True
            transaction.gesture_one_status = 1
        elif transaction.gesture_one_status == 2:
            result = False
            transaction.gesture_one_status = 3
        else:
            result = False
            transaction.gesture_one_status = 2
    elif current_gesture == 2:
        if transaction.gesture_two == gesture:
            result = True
            transaction.gesture_two_status = 1
        elif transaction.gesture_two_status == 2:
            result = False
            transaction.gesture_two_status = 3
        else:
            result = False
            transaction.gesture_two_status = 2
    elif current_gesture == 3:
        if transaction.gesture_three == gesture:
            result = True
            transaction.gesture_three_status = 1
            transaction.is_complete = True
        elif transaction.gesture_three_status == 2:
            result = False
            transaction.gesture_three_status = 3
        else:
            result = False
            transaction.gesture_three_status = 2

    transaction.save()

    return jsonify(result=result)
Пример #9
0
def transactions_fetcher():
    truncate = lambda data, max: (data[:max - 3] + '...') if len(
        data) > max - 3 else data

    transactions_count = 0
    transactions = json.loads(request.form['transactions'])
    for transaction in transactions:
        try:
            # Getting fields
            attributes = {
                'user':
                g.user,
                'bank':
                Bank.get(name=transaction.get('bank')),
                'description':
                truncate(transaction.get('desc', ''), 256),
                'amount':
                float(transaction.get('amount', '0').replace(',', '.') or 0),
                'date':
                datetime.strptime(transaction.get('date'), '%d-%m-%Y')
                if transaction.get('date') else datetime.today()
            }
            # Fields validation
            if not attributes['description'] or not attributes['bank']:
                continue
            if attributes['date'] > datetime.today():
                attributes['date'] = datetime.today()
            # Trying to find a category
            category = Categorizer.find_category(attributes['description'])
            # Creating transaction
            db_transaction = Transaction.get(**attributes)
            if db_transaction is None:
                db_transaction = add_to_db(Transaction(), **attributes)
                transactions_count += 1
            # Finding or updating category
            if category is not None:
                db_transaction.category = category
                db_session.commit()
        except Exception as e:
            pass  # Skip this transaction

    return HttpResponse('Transactions fetched.', {'count': transactions_count},
                        status=200)
Пример #10
0
def transactions():
    # Retrieve user transactions
    if request.method == 'GET':
        transactions = Transaction.filter(user_id=g.user.user_id).order_by(
            Transaction.date.desc()).all()
        return make_response(to_json(transactions))

    elif request.method in ['PUT', 'POST']:
        data = request.get_json()
        # Allow to insert new transactions
        if request.method == 'PUT':
            try:
                attributes = get_transaction_attributes(data)
                transaction = add_to_db(Transaction(), **attributes)
                return HttpResponse(transaction.as_dict(), status=201)
            except Exception as e:
                return HttpErrorResponse(
                    e,
                    'Unable to add the transaction. Please try again later.',
                    status=400)

        # Allow to edit a transaction
        elif request.method == 'POST':
            transaction = Transaction.get(
                user_id=g.user.user_id, transaction_id=data['transaction_id'])
            if transaction is not None:
                try:
                    from endless import db_session
                    attributes = get_transaction_attributes(data)
                    set_attributes(transaction, **attributes)
                    db_session.commit()
                    return HttpResponse(transaction.as_dict(), status=201)
                except Exception as e:
                    return HttpErrorResponse(
                        e,
                        'Unable to add the transaction. Please try again later.',
                        status=400)
            else:
                return HttpResponse(
                    "Unable to edit the transaction. Please try again later.",
                    status=500)
 def transaction_with_id(self, transaction_id):
     return Transaction.get(Transaction.id == transaction_id)