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-12 05:51:04 +02:00
|
|
|
from freitagslib.network import ITEM_ONLY, DEPOSIT_ONLY, ITEM_AND_DEPOSIT
|
2011-10-05 12:28:29 +02:00
|
|
|
|
|
|
|
|
2011-10-12 05:51:04 +02:00
|
|
|
class DepositCommand(object):
|
2011-10-05 12:28:29 +02:00
|
|
|
def __init__(self, amount):
|
|
|
|
self._difference = amount
|
|
|
|
|
2011-10-12 05:51:04 +02:00
|
|
|
def difference(self):
|
2011-10-13 19:08:00 +02:00
|
|
|
return self._difference
|
2011-10-12 05:51:04 +02:00
|
|
|
|
2011-10-05 12:28:29 +02:00
|
|
|
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-12 05:51:04 +02:00
|
|
|
class BuyCommand(object):
|
2011-10-05 12:28:29 +02:00
|
|
|
def __init__(self, item):
|
2011-10-10 21:58:35 +02:00
|
|
|
self._item = item
|
2011-10-12 05:51:04 +02:00
|
|
|
self._commodity = True
|
|
|
|
self._deposit = False
|
|
|
|
|
|
|
|
def _what_to_buy(self):
|
|
|
|
if self._deposit and self._commodity:
|
|
|
|
return ITEM_AND_DEPOSIT
|
|
|
|
elif self._deposit:
|
|
|
|
return DEPOSIT_ONLY
|
|
|
|
elif self._commodity:
|
|
|
|
return ITEM_ONLY
|
|
|
|
else:
|
|
|
|
raise ValueError("BuyCommand in illegal state")
|
2011-10-10 21:58:35 +02:00
|
|
|
|
2011-10-12 05:51:04 +02:00
|
|
|
def difference(self):
|
|
|
|
if self._deposit and self._commodity:
|
|
|
|
return -(self._item.price + self._item.deposit)
|
|
|
|
elif self._deposit:
|
|
|
|
return -(self._item.deposit)
|
|
|
|
elif self._commodity:
|
|
|
|
return -(self._item.price)
|
|
|
|
else:
|
|
|
|
raise ValueError("BuyCommand in illegal state")
|
2011-10-05 12:28:29 +02:00
|
|
|
|
|
|
|
def run(self, user_name):
|
2011-10-12 05:51:04 +02:00
|
|
|
net.buy_item(self._item.id, what_about_it=self._what_to_buy(), user_name=user_name)
|
2011-10-05 12:28:29 +02:00
|
|
|
|
2011-10-12 05:51:04 +02:00
|
|
|
def item_name(self):
|
2011-10-10 21:58:35 +02:00
|
|
|
return self._item.name
|
2011-10-10 07:33:13 +02:00
|
|
|
|
2011-10-12 05:51:04 +02:00
|
|
|
def commodity_label(self):
|
2011-10-15 04:17:22 +02:00
|
|
|
if self._deposit or self.deposit_value() <= 0:
|
2011-10-12 05:51:04 +02:00
|
|
|
return self._item.name
|
|
|
|
else:
|
|
|
|
return "%s (exkl. Pfand)" % self._item.name
|
2011-10-10 07:33:13 +02:00
|
|
|
|
2011-10-12 05:51:04 +02:00
|
|
|
def deposit_label(self):
|
|
|
|
return '%s Pfand' % self._item.name
|
2011-10-10 07:33:13 +02:00
|
|
|
|
2011-10-12 05:51:04 +02:00
|
|
|
def includes_commodity(self):
|
|
|
|
return self._commodity
|
2011-10-10 07:33:13 +02:00
|
|
|
|
2011-10-12 05:51:04 +02:00
|
|
|
def includes_deposit(self):
|
|
|
|
return self._deposit
|
2011-10-10 07:33:13 +02:00
|
|
|
|
2011-10-12 05:51:04 +02:00
|
|
|
def include_commodity(self, commodity):
|
|
|
|
self._commodity = commodity
|
2011-10-10 07:33:13 +02:00
|
|
|
|
2011-10-12 05:51:04 +02:00
|
|
|
def include_deposit(self, deposit):
|
|
|
|
self._deposit = deposit
|
2011-10-10 07:33:13 +02:00
|
|
|
|
2011-10-12 05:51:04 +02:00
|
|
|
def commodity_value(self):
|
|
|
|
return self._item.price
|
|
|
|
|
|
|
|
def deposit_value(self):
|
|
|
|
return self._item.deposit
|