|
1
|
|
|
from babel.dates import format_date |
|
2
|
|
|
from django.core.urlresolvers import reverse |
|
3
|
|
|
from django.forms import ModelForm |
|
4
|
|
|
from django.utils.translation import ugettext_lazy as _ |
|
5
|
|
|
|
|
6
|
|
|
from reservable_pricing.models import PeriodPriceModifier |
|
7
|
|
|
from shoop.admin.toolbar import URLActionButton |
|
8
|
|
|
from shoop.admin.utils.picotable import Column, TextFilter |
|
9
|
|
|
from shoop.admin.utils.views import PicotableListView, CreateOrUpdateView |
|
10
|
|
|
from shoop.utils.i18n import get_current_babel_locale |
|
11
|
|
|
|
|
12
|
|
|
|
|
13
|
|
|
class PeriodPricingModifierListView(PicotableListView): |
|
14
|
|
|
model = PeriodPriceModifier |
|
15
|
|
|
columns = [ |
|
16
|
|
|
Column( |
|
17
|
|
|
"name", _("Name"), sort_field="product__translations__name", |
|
18
|
|
|
display="product__name", |
|
19
|
|
|
filter_config=TextFilter( |
|
20
|
|
|
filter_field="product__translations__name", |
|
21
|
|
|
placeholder=_("Filter by product...")) |
|
22
|
|
|
), |
|
23
|
|
|
Column("start_date", _("Start date"), sort_field="start_date", display="format_start_date"), |
|
24
|
|
|
Column("end_date", _("End date"), sort_field="end_date", display="format_end_date"), |
|
25
|
|
|
Column("modifier", _(u"Modifier"), sort_field="modifier"), |
|
26
|
|
|
] |
|
27
|
|
|
|
|
28
|
|
|
def format_start_date(self, instance, *args, **kwargs): |
|
29
|
|
|
return format_date(instance.start_date, locale=get_current_babel_locale()) |
|
30
|
|
|
|
|
31
|
|
|
def format_end_date(self, instance, *args, **kwargs): |
|
32
|
|
|
return format_date(instance.end_date, locale=get_current_babel_locale()) |
|
33
|
|
|
|
|
34
|
|
|
def get_toolbar(self): |
|
35
|
|
|
toolbar = super(PeriodPricingModifierListView, self).get_toolbar() |
|
36
|
|
|
toolbar.append(URLActionButton( |
|
37
|
|
|
text=_("New modifier"), |
|
38
|
|
|
icon="fa fa-money", |
|
39
|
|
|
url=reverse("reservable_pricing:modifiers.new"), |
|
40
|
|
|
)) |
|
41
|
|
|
return toolbar |
|
42
|
|
|
|
|
43
|
|
|
def get_object_url(self, instance): |
|
44
|
|
|
return reverse( |
|
45
|
|
|
"reservable_pricing:modifiers.edit", kwargs={"pk": instance.id}) |
|
46
|
|
|
|
|
47
|
|
|
|
|
48
|
|
|
class PeriodPriceModifierForm(ModelForm): |
|
49
|
|
|
class Meta: |
|
50
|
|
|
model = PeriodPriceModifier |
|
51
|
|
|
exclude = () |
|
52
|
|
|
|
|
53
|
|
|
|
|
54
|
|
|
class PeriodPricingModifierEditView(CreateOrUpdateView): |
|
55
|
|
|
model = PeriodPriceModifier |
|
56
|
|
|
template_name = "reservable_pricing/period_modifier_edit.jinja" |
|
57
|
|
|
context_object_name = "period_modifier" |
|
58
|
|
|
form_class = PeriodPriceModifierForm |
|
59
|
|
|
|