|
1
|
|
|
import datetime |
|
2
|
|
|
|
|
3
|
|
|
from django.utils.translation import ugettext |
|
4
|
|
|
|
|
5
|
|
|
from shoop.core.models import OrderLineType |
|
6
|
|
|
from shoop.notify import Event, Variable |
|
7
|
|
|
from shoop.notify.typology import Email, Language, Model, Phone, Text, Decimal, Integer, URL |
|
8
|
|
|
from shoop.utils.dates import parse_date |
|
9
|
|
|
|
|
10
|
|
|
|
|
11
|
|
|
class ReservationsOrderReceived(Event): |
|
12
|
|
|
identifier = "reservations_order_received" |
|
13
|
|
|
|
|
14
|
|
|
order = Variable("Order", type=Model("shoop.Order")) |
|
15
|
|
|
order_id = Variable("Order ID", type=Integer) |
|
16
|
|
|
order_details = Variable("Order Details", type=Text) |
|
17
|
|
|
order_url = Variable("Order URL", type=URL) |
|
18
|
|
|
customer_email = Variable("Customer Email", type=Email) |
|
19
|
|
|
customer_phone = Variable("Customer Phone", type=Phone) |
|
20
|
|
|
customer_name = Variable("Customer Name", type=Text) |
|
21
|
|
|
language = Variable("Language", type=Language) |
|
22
|
|
|
additional_notes = Variable("Additional Notes", type=Text) |
|
23
|
|
|
total_sum = Variable("Total Sum", type=Decimal) |
|
24
|
|
|
|
|
25
|
|
|
|
|
26
|
|
|
def get_order_details(order): |
|
27
|
|
|
details = [] |
|
28
|
|
|
for line in order.lines.filter(type=OrderLineType.PRODUCT): |
|
29
|
|
|
details.append("%s" % line.text) |
|
30
|
|
|
if line.product.type.identifier == "reservable": |
|
31
|
|
|
start = parse_date(line.extra_data["reservation_start"]) |
|
32
|
|
|
end = start + datetime.timedelta(days=int(line.quantity)) |
|
33
|
|
|
details.append(ugettext(" {nights} nights, {persons} persons, {start} - {end}".format( |
|
34
|
|
|
nights=int(line.quantity), persons=line.extra_data["persons"], start=start, end=end) |
|
35
|
|
|
)) |
|
36
|
|
|
return "\n".join(details) |
|
37
|
|
|
|