diff --git a/django_netjsonconfig/migrations/0019_cleanup_model_options.py b/django_netjsonconfig/migrations/0019_cleanup_model_options.py new file mode 100644 index 0000000..ab2a209 --- /dev/null +++ b/django_netjsonconfig/migrations/0019_cleanup_model_options.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.1 on 2017-02-08 13:15 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('django_netjsonconfig', '0018_openvpn_disabled_attr'), + ] + + operations = [ + migrations.AlterModelOptions( + name='template', + options={'verbose_name': 'template', 'verbose_name_plural': 'templates'}, + ), + migrations.AlterModelOptions( + name='vpn', + options={'verbose_name': 'VPN server', 'verbose_name_plural': 'VPN servers'}, + ), + migrations.AlterModelOptions( + name='vpnclient', + options={'verbose_name': 'VPN client', 'verbose_name_plural': 'VPN clients'}, + ), + migrations.AlterField( + model_name='config', + name='vpn', + field=models.ManyToManyField(blank=True, related_name='vpn_relations', through='django_netjsonconfig.VpnClient', to='django_netjsonconfig.Vpn'), + ), + ] diff --git a/django_netjsonconfig/migrations/0020_openvpn_resolv_retry.py b/django_netjsonconfig/migrations/0020_openvpn_resolv_retry.py new file mode 100644 index 0000000..1737301 --- /dev/null +++ b/django_netjsonconfig/migrations/0020_openvpn_resolv_retry.py @@ -0,0 +1,37 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models + + +def forward(apps, schema_editor): + """ + converts "resolv_retry" attribute to string format in OpenVPN configurations, + according to the change introduced in netjsonconfig 0.5.4 + (see https://github.com/openwisp/netjsonconfig/commit/904659962832b1cf097e34c4251a56e158a247ae) + TODO: delete this migration in future releases + """ + if not schema_editor.connection.alias == 'default': + return + Config = apps.get_model('django_netjsonconfig', 'Config') + Template = apps.get_model('django_netjsonconfig', 'Template') + Vpn = apps.get_model('django_netjsonconfig', 'Vpn') + for model in [Config, Template, Vpn]: + # find objects which have OpenVPN configurations containing the "resolv_retry" attribute + queryset = model.objects.filter(config__contains='"openvpn"')\ + .filter(config__contains='"resolv_retry"') + for obj in queryset: + for vpn in obj.config['openvpn']: + if 'resolv_retry' in vpn: + vpn['resolv_retry'] = 'infinite' if vpn['resolv_retry'] else '0' + obj.save() + + +class Migration(migrations.Migration): + dependencies = [ + ('django_netjsonconfig', '0019_cleanup_model_options'), + ] + + operations = [ + migrations.RunPython(forward, reverse_code=migrations.RunPython.noop), + ]