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('/')
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))
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
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})
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))
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
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)
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)
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)