From 0dbc3afe0cf46f9dd09439e88d4292901e5c69cd Mon Sep 17 00:00:00 2001 From: Őry Máté <ory.mate@cloud.bme.hu> Date: Wed, 12 Nov 2014 13:05:08 +0100 Subject: [PATCH] network: fix ipv6 conversion --- circle/firewall/models.py | 2 ++ circle/network/views.py | 16 ++++++++-------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/circle/firewall/models.py b/circle/firewall/models.py index 321b2e6..29fcb35 100644 --- a/circle/firewall/models.py +++ b/circle/firewall/models.py @@ -414,6 +414,8 @@ class Vlan(AclBase, models.Model): def convert_ipv4_to_ipv6(self, ipv4): """Convert IPv4 address string to IPv6 address string.""" + if isinstance(ipv4, basestring): + ipv4 = IPAddress(ipv4, 4) nums = {ascii_letters[i]: int(ipv4.words[i]) for i in range(4)} return IPAddress(self.ipv6_template % nums) diff --git a/circle/network/views.py b/circle/network/views.py index fd7596c..698139f 100644 --- a/circle/network/views.py +++ b/circle/network/views.py @@ -444,19 +444,19 @@ class HostCreate(LoginRequiredMixin, SuperuserRequiredMixin, def _get_ajax(self, *args, **kwargs): GET = self.request.GET result = {} - if "vlan" in GET: - vlan = get_object_or_404(Vlan.objects, pk=GET["vlan"]) + vlan = get_object_or_404(Vlan.objects, pk=GET.get("vlan", "")) + if "ipv4" in GET: + try: + result["ipv6"] = vlan.convert_ipv4_to_ipv6(GET["ipv4"]) + except: + result["ipv6"] = "" + else: try: result.update(vlan.get_new_address()) except ValidationError: result["ipv4"] = "" result["ipv6"] = "" - if "ipv4" in GET: - try: - result["ipv6"] = vlan.convert_ipv4_to_ipv6(GET["ipv4"]) - except: - result["ipv6"] = "" - return JsonResponse({k: unicode(result[k] or "") for k in result}) + return JsonResponse({k: unicode(result[k] or "") for k in result}) def get(self, *args, **kwargs): if self.request.is_ajax(): -- libgit2 0.26.0