Coverage for benefits/enrollment_littlepay/migrations/0004_littlepayconfig.py: 63%
15 statements
« prev ^ index » next coverage.py v7.10.2, created at 2025-08-08 16:26 +0000
« prev ^ index » next coverage.py v7.10.2, created at 2025-08-08 16:26 +0000
1# Generated by Django 5.1.7 on 2025-07-14 09:21
3import benefits.core.models.common
4import benefits.secrets
5import django.db.models.deletion
6from django.db import migrations, models
9def migrate_littlepay_config(apps, schema_editor):
10 OldLittlepayConfig = apps.get_model("enrollment_littlepay", "OldLittlepayConfig")
11 LittlepayConfig = apps.get_model("enrollment_littlepay", "NewLittlepayConfig")
13 for old_config in OldLittlepayConfig.objects.all(): 13 ↛ 14line 13 didn't jump to line 14 because the loop on line 13 never started
14 new_config = LittlepayConfig.objects.create(
15 environment=old_config.environment,
16 agency_slug=old_config.agency_slug,
17 audience=old_config.audience,
18 client_id=old_config.client_id,
19 client_secret_name=old_config.client_secret_name,
20 )
22 if hasattr(old_config, "transitagency"):
23 new_config.transit_agency = old_config.transitagency
25 new_config.save()
28class Migration(migrations.Migration):
30 dependencies = [
31 ("core", "0054_transitprocessorconfig"),
32 ("enrollment_littlepay", "0003_rename_littlepayconfig_oldlittlepayconfig"),
33 ]
35 operations = [
36 migrations.CreateModel(
37 name="NewLittlepayConfig",
38 fields=[
39 (
40 "transitprocessorconfig_ptr",
41 models.OneToOneField(
42 auto_created=True,
43 on_delete=django.db.models.deletion.CASCADE,
44 parent_link=True,
45 primary_key=True,
46 serialize=False,
47 to="core.transitprocessorconfig",
48 ),
49 ),
50 (
51 "audience",
52 models.TextField(
53 blank=True,
54 default="",
55 help_text="This agency's audience value used to access the TransitProcessor's API.",
56 ),
57 ),
58 (
59 "client_id",
60 models.TextField(
61 blank=True,
62 default="",
63 help_text="This agency's client_id value used to access the TransitProcessor's API.",
64 ),
65 ),
66 (
67 "client_secret_name",
68 benefits.core.models.common.SecretNameField(
69 blank=True,
70 default="",
71 help_text="The name of the secret containing this agency's client_secret value used to access the TransitProcessor's API.", # noqa
72 max_length=127,
73 validators=[benefits.secrets.SecretNameValidator()],
74 ),
75 ),
76 ],
77 bases=("core.transitprocessorconfig",),
78 ),
79 migrations.RunPython(migrate_littlepay_config),
80 ]