def submit_payment(): pform = PaymentForm() pform.uid.choices = User.get_uids() if not pform.validate_on_submit(): flash('Payment invalid.') return redirect(url_for('coffee.admin')) uid = pform.uid.data # prevent inaccurate input parsing (see # https://docs.python.org/3.6/tutorial/floatingpoint.html) amount = int(round(float(pform.amount.data) * 100)) user = User.objects.get(id=uid) transaction = Transaction(user=user, diff=amount, description='{} payment from {}'.format( euros(amount), user.name)) transaction.save() if user.email: msg = EmailMessage() msg['Subject'] = f'[Kaffeeministerium] Einzahlung von {euros(amount)}' msg['From'] = app.config['MAIL_DEFAULT_SENDER'] msg['To'] = user.email msg.set_content( render_template('mail/payment', amount=amount, balance=user.balance, minister_name=app.config['MAIL_MINISTER_NAME'])) flash('Mail sent to user {}'.format(user.name)) if not app.config['DEBUG']: s = getMailServer() s.send_message(msg) else: print(u'Sending mail \n{}'.format(msg.as_string())) return redirect(url_for('coffee.admin'))
def submit_payment(): pform = PaymentForm() pform.uid.choices = User.get_uids() if not pform.validate_on_submit(): flash('Payment invalid.') return redirect(url_for('coffee.admin')) uid = pform.uid.data amount = float(pform.amount.data) * 100 user = User.objects.get(id=uid) transaction = Transaction(user=user, diff=amount, description='{} payment from {}'.format( euros(amount), user.name)) transaction.save() if user.email: msg = Message('[Kaffeeministerium] Einzahlung von {}'.format( euros(amount))) msg.charset = 'utf-8' msg.add_recipient(user.email) msg.body = render_template('mail/payment', amount=amount, balance=user.balance) flash('Mail sent to user {}'.format(user.name)) if not app.config['DEBUG']: mail.send(msg) else: print(u'Sending mail \n{}'.format(msg.as_string())) return redirect(url_for('coffee.admin'))
def setUp(self): testuser = User(username='******', email='*****@*****.**') testuser.save() self.testuser = testuser User(username='******', email='*****@*****.**', admin=True).save() testpayment = Transaction(diff=1000, user=testuser) testpayment.save() testexpense = Transaction(diff=-500) testexpense.save() testcons = Consumption(units=1, price_per_unit=50, user=testuser) testcons.save() self.app = coffee.app.test_client()
def administrate_expenses(): eform = ExpenseForm() if not eform.validate_on_submit(): for field, errors in eform.errors.items(): for error in errors: flash(u'Error in the %s field - %s' % (getattr(eform, field).label.text, error)) return redirect(url_for('coffee.admin')) description = eform.description.data amount = eform.amount.data date = (eform.date.data if eform.date.data != '' else datetime.utcnow()) t = Transaction(diff=100 * amount, date=date, description=description) t.save() flash('Transaction stored.') return redirect(url_for('coffee.admin'))
def administrate_expenses(): eform = ExpenseForm() if not eform.validate_on_submit(): for field, errors in eform.errors.items(): for error in errors: flash(u'Error in the %s field - %s' % (getattr(eform, field).label.text, error)) return redirect(url_for('coffee.admin')) description = eform.description.data # prevent inaccurate input parsing (see # https://docs.python.org/3.6/tutorial/floatingpoint.html) amount = int(round(float(eform.amount.data * 100))) date = (eform.date.data if eform.date.data != '' else datetime.utcnow()) t = Transaction(diff=amount, date=date, description=description) t.save() flash('Transaction stored.') return redirect(url_for('coffee.admin'))