2011-10-05 12:28:29 +02:00
|
|
|
#! /usr/bin/env python
|
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
#
|
|
|
|
# Copyright (C) 2011 Sebastian Pipping <sebastian@pipping.org>
|
|
|
|
# Licensed under GPL v3 or later
|
|
|
|
|
|
|
|
import freitagslib.network as net
|
2011-10-10 21:58:35 +02:00
|
|
|
from freitagslib.network import ITEM_ONLY, DEPOSIT_ONLY
|
2011-10-05 12:28:29 +02:00
|
|
|
|
|
|
|
|
|
|
|
class Command(object):
|
|
|
|
def difference(self):
|
|
|
|
return self._difference
|
|
|
|
|
|
|
|
|
|
|
|
class DepositCommand(Command):
|
|
|
|
def __init__(self, amount):
|
|
|
|
self._difference = amount
|
|
|
|
|
|
|
|
def run(self, user_name):
|
2011-10-05 16:40:15 +02:00
|
|
|
net.deposit(self._difference, net.DEPOSIT_CASH, user_name)
|
2011-10-05 12:28:29 +02:00
|
|
|
|
|
|
|
def label(self):
|
|
|
|
return '%.2f Euro einzahlen' % self._difference
|
|
|
|
|
|
|
|
|
2011-10-10 21:58:35 +02:00
|
|
|
class _ItemBasedCommand(Command):
|
2011-10-05 12:28:29 +02:00
|
|
|
def __init__(self, item):
|
2011-10-10 21:58:35 +02:00
|
|
|
self._item = item
|
|
|
|
|
|
|
|
def item(self):
|
|
|
|
return self._item
|
|
|
|
|
|
|
|
|
|
|
|
class BuyCommand(_ItemBasedCommand):
|
|
|
|
def __init__(self, item):
|
|
|
|
super(BuyCommand, self).__init__(item)
|
2011-10-10 04:40:45 +02:00
|
|
|
self._difference = -item.price
|
2011-10-10 07:33:13 +02:00
|
|
|
self._to_go = False ## TODO session state, instead?
|
2011-10-05 12:28:29 +02:00
|
|
|
|
|
|
|
def run(self, user_name):
|
2011-10-10 21:58:35 +02:00
|
|
|
net.buy_item(self._item.id, what_about_it=ITEM_ONLY, user_name=user_name)
|
2011-10-05 12:28:29 +02:00
|
|
|
|
|
|
|
def label(self):
|
2011-10-10 21:58:35 +02:00
|
|
|
return self._item.name
|
2011-10-10 07:33:13 +02:00
|
|
|
|
|
|
|
def is_to_go(self):
|
|
|
|
return self._to_go
|
|
|
|
|
|
|
|
def set_to_go(self, to_go):
|
|
|
|
self._to_go = to_go
|
|
|
|
|
|
|
|
def deposit(self):
|
2011-10-10 21:58:35 +02:00
|
|
|
return self._item.deposit
|
2011-10-10 07:33:13 +02:00
|
|
|
|
|
|
|
|
2011-10-10 21:58:35 +02:00
|
|
|
class ToGoCommand(_ItemBasedCommand):
|
|
|
|
def __init__(self, item):
|
|
|
|
super(ToGoCommand, self).__init__(item)
|
|
|
|
self._difference = -item.deposit
|
2011-10-10 07:33:13 +02:00
|
|
|
|
2011-10-10 21:58:35 +02:00
|
|
|
def run(self, user_name):
|
|
|
|
net.buy_item(self._item.id, what_about_it=DEPOSIT_ONLY, user_name=user_name)
|
2011-10-10 07:33:13 +02:00
|
|
|
|
|
|
|
def label(self):
|
2011-10-10 21:59:22 +02:00
|
|
|
return '%s Pfand' % self._item.name
|