Skip to content
Snippets Groups Projects
Commit 60056904 authored by Nik | Klampfradler's avatar Nik | Klampfradler Committed by Tom Teichler
Browse files

Add migration for payment provider preferences

parent b805c615
No related branches found
No related tags found
1 merge request!15Update dependency django-payments to v1
Pipeline #60603 canceled
# Generated by Django 3.2.12 on 2022-03-19 22:21
import warnings
import django.core.validators
from django.db import migrations, models
import localflavor.generic.models
def configure_clients(apps, schema_editor):
db_alias = schema_editor.connection.alias
Client = apps.get_model("tezor", "Client")
SitePreferenceModel = apps.get_model("core", "SitePreferenceModel")
fields = ["sofort_api_id", "sofort_api_key", "sofort_project_id", "paypal_client_id", "paypal_secret", "paypal_capture", "pledge_enabled", "sdd_creditor", "sdd_creditor_identifier"]
values = {}
for field in fields:
try:
pref = SitePreferenceModel.objects.using(db_alias).get(section="payments", name=field)
except SitePreferenceModel.DoesNotExist:
continue
value = pref.raw_value
if value == "True":
value = True
elif value == "False":
value = False
values[field] = value
if not "enabled" in field:
provider = field.split("_")[0]
values[f"{provider}_enabled"] = True
for variant in ("sdd", "pledge", "paypal", "sofort"):
if values.get(f"{variant}_enabled", False):
for field in Client._meta.fields:
if field.name.startswith(f"{variant}_") and values.get(field.name, "") == "":
values[f"{variant}_enabled"] = False
warnings.warn(f"Payment variant {variant} enabled but {field.name} not configured!")
Client.objects.update(**values)
class Migration(migrations.Migration):
dependencies = [
('tezor', '0006_invoice_constraints'),
]
operations = [
migrations.AddField(
model_name='client',
name='paypal_capture',
field=models.BooleanField(default=False, verbose_name='Use PayPal Authorize & Capture'),
),
migrations.AddField(
model_name='client',
name='paypal_client_id',
field=models.CharField(blank=True, max_length=255, verbose_name='PayPal client ID'),
),
migrations.AddField(
model_name='client',
name='paypal_enabled',
field=models.BooleanField(default=False, verbose_name='PayPal enabled'),
),
migrations.AddField(
model_name='client',
name='paypal_secret',
field=models.CharField(blank=True, max_length=255, verbose_name='PayPal secret'),
),
migrations.AddField(
model_name='client',
name='pledge_enabled',
field=models.BooleanField(default=False, verbose_name='Pledge enabled'),
),
migrations.AddField(
model_name='client',
name='sdd_bic',
field=localflavor.generic.models.BICField(blank=True, max_length=11, verbose_name='BIC/SWIFT code of bank'),
),
migrations.AddField(
model_name='client',
name='sdd_creditor',
field=models.CharField(blank=True, max_length=255, verbose_name='SEPA Direct Debit - Creditor name'),
),
migrations.AddField(
model_name='client',
name='sdd_creditor_identifier',
field=models.CharField(blank=True, max_length=35, validators=[django.core.validators.RegexValidator('^[A-Z]{2}[0-9]{2}[A-Z0-9]{1,31}$')], verbose_name='SEPA Direct Debit - Creditor identifier'),
),
migrations.AddField(
model_name='client',
name='sdd_enabled',
field=models.BooleanField(default=False, verbose_name='Debit enabled'),
),
migrations.AddField(
model_name='client',
name='sdd_iban',
field=localflavor.generic.models.IBANField(blank=True, include_countries=None, max_length=34, use_nordea_extensions=False, verbose_name='IBAN of bank account'),
),
migrations.AddField(
model_name='client',
name='sofort_api_id',
field=models.CharField(blank=True, max_length=255, verbose_name='Sofort / Klarna API ID'),
),
migrations.AddField(
model_name='client',
name='sofort_api_key',
field=models.CharField(blank=True, max_length=255, verbose_name='Sofort / Klarna API key'),
),
migrations.AddField(
model_name='client',
name='sofort_enabled',
field=models.BooleanField(default=False, verbose_name='Sofort / Klarna enabled'),
),
migrations.AddField(
model_name='client',
name='sofort_project_id',
field=models.CharField(blank=True, max_length=255, verbose_name='Sofort / Klarna Project ID'),
),
migrations.AddConstraint(
model_name='client',
constraint=models.CheckConstraint(check=models.Q(models.Q(('sofort_enabled', True), models.Q(('sofort_api_id', ''), _negated=True), models.Q(('sofort_api_key', ''), _negated=True), models.Q(('sofort_project_id', ''), _negated=True)), ('sofort_enabled', False), _connector='OR'), name='sofort_enabled_configured'),
),
migrations.AddConstraint(
model_name='client',
constraint=models.CheckConstraint(check=models.Q(models.Q(('sdd_enabled', True), models.Q(('sdd_creditor', ''), _negated=True), models.Q(('sdd_creditor_identifier', ''), _negated=True), models.Q(('sdd_iban', ''), _negated=True), models.Q(('sdd_bic', ''), _negated=True)), ('sdd_enabled', False), _connector='OR'), name='sdd_enabled_configured'),
),
migrations.AddConstraint(
model_name='client',
constraint=models.CheckConstraint(check=models.Q(models.Q(('paypal_enabled', True), models.Q(('paypal_client_id', ''), _negated=True), models.Q(('paypal_secret', ''), _negated=True)), ('paypal_enabled', False), _connector='OR'), name='paypal_enabled_configured'),
),
migrations.RunPython(configure_clients),
]
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment