Ejemplo n.º 1
0
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'))
Ejemplo n.º 2
0
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'))
Ejemplo n.º 3
0
 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()
Ejemplo n.º 4
0
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'))
Ejemplo n.º 5
0
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'))