Source code for shuup.admin.modules.service_providers.wizard_forms
# -*- coding: utf-8 -*-
# This file is part of Shuup.
#
# Copyright (c) 2012-2021, Shuup Commerce Inc. All rights reserved.
#
# This source code is licensed under the OSL-3.0 license found in the
# LICENSE file in the root directory of this source tree.
from __future__ import unicode_literals
from django import forms
from django.utils.translation import ugettext_lazy as _
from shuup.admin.forms import ShuupAdminForm
from shuup.core.models import (
CustomCarrier,
CustomPaymentProcessor,
PaymentMethod,
PaymentProcessor,
ShippingMethod,
TaxClass,
)
[docs]class ServiceWizardForm(ShuupAdminForm):
service_name = forms.CharField(label=_("Service name"), help_text=_("The name shown in the shop checkout process."))
def __init__(self, **kwargs):
self.provider = kwargs["instance"]
super(ServiceWizardForm, self).__init__(**kwargs)
[docs] def get_service(self):
if issubclass(self.provider.__class__, PaymentProcessor):
return self.get_payment_method()
return self.get_shipping_method()
[docs] def get_payment_method(self):
return PaymentMethod.objects.filter(payment_processor=self.provider).first() if self.provider else None
[docs] def get_shipping_method(self):
return ShippingMethod.objects.filter(carrier=self.provider).first() if self.provider else None
[docs] def save(self):
is_new = not self.instance.pk
provider = super(ServiceWizardForm, self).save()
provider.enabled = True
provider.save()
if is_new:
service_choice = self.get_service_choice(provider)
shop = self.request.shop
provider.create_service(
service_choice,
name=self.cleaned_data.get("service_name", service_choice.name),
description=self.cleaned_data.get("service_description", ""),
shop=shop,
tax_class=TaxClass.objects.first(),
enabled=True,
)
else:
service = self.get_service()
if service:
service.name = self.cleaned_data.get("service_name")
service.description = self.cleaned_data.get("service_description", "")
service.save()
return provider
[docs]class ManualShippingWizardForm(ServiceWizardForm):
service_description = forms.CharField(
label=_("Instructions"),
required=False,
widget=forms.Textarea,
help_text=_("Additional instructions shown in the shop checkout process."),
)
def __init__(self, **kwargs):
super(ManualShippingWizardForm, self).__init__(**kwargs)
if not self.provider:
return
service = self.get_shipping_method()
if not service:
return
self.fields["service_name"].initial = service.name
self.fields["service_description"].initial = service.description
[docs]class ManualPaymentWizardForm(ServiceWizardForm):
service_description = forms.CharField(
label=_("Instructions"),
required=False,
widget=forms.Textarea,
help_text=_("Additional instructions shown in the shop checkout process."),
)
def __init__(self, **kwargs):
super(ManualPaymentWizardForm, self).__init__(**kwargs)
if not self.provider:
return
service = self.get_payment_method()
if not service:
return
self.fields["service_name"].initial = service.name
self.fields["service_description"].initial = service.description