def clean(self): if self._errors: return self._errors if not self._errors: ip_version = self.cleaned_data.get('ip_version', '') prefix = int(self.cleaned_data.get('prefix', '')) if ip_version == "v4": if prefix not in range(33): self._errors['prefix'] = self.error_class( [environment_messages.get('invalid_prefix_ipv4')]) v4oct1 = self.cleaned_data.get('v4oct1', '') v4oct2 = self.cleaned_data.get('v4oct2', '') v4oct3 = self.cleaned_data.get('v4oct3', '') v4oct4 = self.cleaned_data.get('v4oct4', '') v4oct5 = self.cleaned_data.get('v4oct5', '') try: if int(v4oct5) > int(prefix): self._errors['prefix'] = self.error_class( [environment_messages.get('invalid_prefix')]) except Exception: pass self.cleaned_data['network_validate'] = v4oct1 + '.' + \ v4oct2 + '.' + v4oct3 + '.' + v4oct4 + '/' + v4oct5 else: if prefix not in range(129): self._errors['prefix'] = self.error_class( [environment_messages.get('invalid_prefix_ipv6')]) v6oct1 = self.cleaned_data.get('v6oct1', '') v6oct2 = self.cleaned_data.get('v6oct2', '') v6oct3 = self.cleaned_data.get('v6oct3', '') v6oct4 = self.cleaned_data.get('v6oct4', '') v6oct5 = self.cleaned_data.get('v6oct5', '') v6oct6 = self.cleaned_data.get('v6oct6', '') v6oct7 = self.cleaned_data.get('v6oct7', '') v6oct8 = self.cleaned_data.get('v6oct8', '') v6oct9 = self.cleaned_data.get('v6oct9', '') try: if int(v6oct9) > int(prefix): self._errors['prefix'] = self.error_class( [environment_messages.get('invalid_prefix')]) except Exception: pass self.cleaned_data['network_validate'] = v6oct1 + ':' + v6oct2 + ':' + v6oct3 + ':' + \ v6oct4 + ':' + v6oct5 + ':' + v6oct6 + ':' + \ v6oct7 + ':' + v6oct8 + '/' + v6oct9 return self.cleaned_data
def add_environment(request): """ Function to create a new environment. """ auth = AuthSession(request.session) client = auth.get_clientFactory() lists = list() try: if request.method == 'POST': vlan_range1 = request.POST.get('vlan_range', '') # range1 = vlan_range1.split('-') vlan_range2 = request.POST.get('vlan_range2', '') # range2 = vlan_range2.split('-') range1 = vlan_range1.split('-') if len(range1) > 1: range1_begin = int(range1[0]) range1_end = int(range1[1]) else: range1_begin = None range1_end = None range2 = vlan_range2.split('-') if len(range2) > 1: range2_begin = int(range2[0]) range2_end = int(range2[1]) else: range2_begin = range1_begin range2_end = range1_end env = { "grupo_l3": int(request.POST.get('fisic_env')), "ambiente_logico": int(request.POST.get('logic_env')), "divisao_dc": int(request.POST.get('router_env')), "min_num_vlan_1": range1_begin, "max_num_vlan_1": range1_end, "min_num_vlan_2": range2_begin, "max_num_vlan_2": range2_end, "default_vrf": int(request.POST.get('vrf')), "father_environment": int(request.POST.get('father_env')) \ if request.POST.get('father_env') else None, 'vxlan': True if request.POST.get('vxlan') else False } client.create_api_environment().create([env]) messages.add_message(request, messages.SUCCESS, environment_messages.get("success_insert")) return HttpResponseRedirect(reverse("environment.list")) except NetworkAPIClientError as e: logger.error(e) messages.add_message(request, messages.ERROR, e) except BaseException as e: logger.error(e) messages.add_message(request, messages.ERROR, e) return render_to_response(templates.ADD_ENVIRONMENT, lists, RequestContext(request))
def add_logic_environment(request): auth = AuthSession(request.session) client = auth.get_clientFactory() if request.method == 'POST': env = dict(name=request.POST.get('logicName')) client.create_api_environment_logic().create([env]) messages.add_message(request, messages.SUCCESS, environment_messages.get("success_insert")) return HttpResponseRedirect(reverse("environment.add"))
def add_configuration(request, id_environment): context = dict() try: auth = AuthSession(request.session) client = auth.get_clientFactory() net_type_list = client.create_tipo_rede().listar() form = IpConfigForm(net_type_list, request.POST or None) # Get user auth auth = AuthSession(request.session) environment_client = auth.get_clientFactory().create_ambiente() environment_dict = environment_client.buscar_por_id(id_environment) environment = environment_dict.get('ambiente') context["form"] = form context["action"] = reverse( 'environment.configuration.add', args=[id_environment]) context["environment"] = environment if form.is_valid(): network = form.cleaned_data['network_validate'] prefix = form.cleaned_data['prefix'] ip_version = form.cleaned_data['ip_version'] network_type = form.cleaned_data['net_type'] environment_client.configuration_save( id_environment, network, prefix, ip_version, network_type) messages.add_message(request, messages.SUCCESS, environment_messages.get( "success_configuration_insert")) context["form"] = IpConfigForm(net_type_list) except AmbienteNaoExisteError as e: messages.add_message(request, messages.ERROR, e) return redirect('environment.list') except InvalidParameterError as e: messages.add_message(request, messages.ERROR, e) except NetworkAPIClientError as e: logger.error(e) messages.add_message(request, messages.ERROR, e) except BaseException as e: logger.error(e) messages.add_message(request, messages.ERROR, e) return render_to_response(templates.ENVIRONMENT_CIDR, context, context_instance=RequestContext(request))
def remove_configuration(request, environment_id, configuration_id): try: auth = AuthSession(request.session) environment_client = auth.get_clientFactory().create_ambiente() environment_client.buscar_por_id(environment_id) environment_client.configuration_remove( environment_id, configuration_id) messages.add_message(request, messages.SUCCESS, environment_messages.get( "success_configuration_remove")) return redirect('environment.edit', environment_id) except NetworkAPIClientError, e: logger.error(e) messages.add_message(request, messages.ERROR, e)
def add_configuration(request, id_environment): try: auth = AuthSession(request.session) client = auth.get_clientFactory() net_type_list = client.create_tipo_rede().listar() context = dict() form = IpConfigForm(net_type_list, request.POST or None) # Get user auth auth = AuthSession(request.session) environment_client = auth.get_clientFactory().create_ambiente() environment_dict = environment_client.buscar_por_id(id_environment) environment = environment_dict.get('ambiente') context["form"] = form context["action"] = reverse('environment.configuration.add', args=[id_environment]) context["environment"] = environment if form.is_valid(): network = form.cleaned_data['network_validate'] prefix = form.cleaned_data['prefix'] ip_version = form.cleaned_data['ip_version'] network_type = form.cleaned_data['net_type'] environment_client.configuration_save(id_environment, network, prefix, ip_version, network_type) messages.add_message( request, messages.SUCCESS, environment_messages.get("success_configuration_insert")) context["form"] = IpConfigForm(net_type_list) except AmbienteNaoExisteError, e: messages.add_message(request, messages.ERROR, e) return redirect('environment.list')
def add_configuration(request, id_environment): try: auth = AuthSession(request.session) client = auth.get_clientFactory() net_type_list = client.create_tipo_rede().listar() context = dict() form = IpConfigForm(net_type_list, request.POST or None) # Get user auth auth = AuthSession(request.session) environment_client = auth.get_clientFactory().create_ambiente() environment_dict = environment_client.buscar_por_id(id_environment) environment = environment_dict.get('ambiente') context["form"] = form context["action"] = reverse( 'environment.configuration.add', args=[id_environment]) context["environment"] = environment if form.is_valid(): network = form.cleaned_data['network_validate'] prefix = form.cleaned_data['prefix'] ip_version = form.cleaned_data['ip_version'] network_type = form.cleaned_data['net_type'] environment_client.configuration_save( id_environment, network, prefix, ip_version, network_type) messages.add_message(request, messages.SUCCESS, environment_messages.get( "success_configuration_insert")) context["form"] = IpConfigForm(net_type_list) except AmbienteNaoExisteError, e: messages.add_message(request, messages.ERROR, e) return redirect('environment.list')
def remove_configuration(request, environment_id, configuration_id): try: auth = AuthSession(request.session) environment_client = auth.get_clientFactory().create_api_environment_cidr() environment_client.delete(cidr_id=[configuration_id]) messages.add_message(request, messages.SUCCESS, environment_messages.get("success_configuration_remove")) return redirect('environment.edit', environment_id) except NetworkAPIClientError as e: logger.error(e) messages.add_message(request, messages.ERROR, e) except BaseException as e: logger.error(e) messages.add_message(request, messages.ERROR, e) return redirect('environment.list')
def allocate_cidr(request, id_environment): context = dict() try: auth = AuthSession(request.session) client = auth.get_clientFactory() net_type_list = client.create_tipo_rede().listar() form = IpConfigForm(net_type_list, request.POST or None) environment = client.create_api_environment().get( [id_environment]).get('environments')[0] context["form"] = form context["action"] = reverse('environment.configuration.add', args=[id_environment]) context["environment"] = environment if request.method == 'POST': ip_version = request.POST.get('ip_version') if str(ip_version) == 'cidr_auto': v4 = request.POST.get('v4_auto') v6 = request.POST.get('v6_auto') network_type = request.POST.get('net_type') cidr = list() if int(v4): prefix_v4 = request.POST.get('prefixv4') if not prefix_v4: raise Exception( "Informe a máscara da subnet da redev4.") cidrv4 = dict(ip_version='v4', network_type=network_type, subnet_mask=prefix_v4, environment=int(id_environment)) cidr.append(cidrv4) if int(v6): prefix_v6 = request.POST.get('prefixv6') if not prefix_v6: raise Exception( "Informe a máscara da subnet da redev6.") cidrv6 = dict(ip_version='v6', network_type=network_type, subnet_mask=str(prefix_v6), environment=int(id_environment)) cidr.append(cidrv6) if not cidr: raise Exception("Escolha uma das opções abaixo.") client.create_api_environment_cidr().post(cidr) messages.add_message( request, messages.SUCCESS, environment_messages.get("success_configuration_insert")) elif form.is_valid(): network = form.cleaned_data['network_validate'] network_type = form.cleaned_data['net_type'] prefix = form.cleaned_data['prefix'] cidr = dict(ip_version=ip_version, network_type=int(network_type), subnet_mask=str(prefix), network=network, environment=int(id_environment)) client.create_api_environment_cidr().post([cidr]) messages.add_message( request, messages.SUCCESS, environment_messages.get("success_configuration_insert")) else: messages.add_message( request, messages.ERROR, environment_messages.get("invalid_parameters")) context["form"] = IpConfigForm(net_type_list) except AmbienteNaoExisteError as e: messages.add_message(request, messages.ERROR, e) return redirect('environment.list') except InvalidParameterError as e: messages.add_message(request, messages.ERROR, e) except NetworkAPIClientError as e: logger.error(e) messages.add_message(request, messages.ERROR, e) except Exception as e: logger.error(e) messages.add_message(request, messages.ERROR, e) return render_to_response(templates.ENVIRONMENT_CIDR, context, context_instance=RequestContext(request))
def remove_environment(request, environment_id=None): error_not_found = list() error_associated = list() have_errors = False auth = AuthSession(request.session) client = auth.get_clientFactory() if environment_id: env_id = int(environment_id) else: ids = request.POST.getlist('ids[]') env_id = ';'.join(str(id) for id in ids) try: client.create_api_environment().delete_environment(env_id) except DetailedEnvironmentError as e: # Detailed message for VLAN errors logger.error(e) have_errors = True messages.add_message(request, messages.ERROR, e) except AmbienteNaoExisteError as e: # Environment doesn't exist. logger.error(e) have_errors = True error_not_found.append(ids) except AmbienteError as e: # Environment associated to equipment and/or VLAN that # couldn't be removed. logger.error(e) have_errors = True error_associated.append(ids) except InvalidParameterError as e: # Environment id is null or invalid. logger.error(e) have_errors = True messages.add_message( request, messages.ERROR, environment_messages.get("invalid_id")) except DataBaseError as e: # NetworkAPI fail to access database. logger.error(e) have_errors = True messages.add_message(request, messages.ERROR, e) except XMLError as e: # NetworkAPI fail generating XML response. logger.error(e) have_errors = True messages.add_message(request, messages.ERROR, e) except Exception as e: # Other errors logger.error(e) have_errors = True messages.add_message(request, messages.ERROR, e) # Build not found message if len(error_not_found) > 0: msg = '' for id_error in error_not_found[0:-1]: msg = msg + id_error + ',' if len(error_not_found) > 1: msg = msg[:-1] + ' e ' + error_not_found[-1] else: msg = error_not_found[0] msg = environment_messages.get("env_not_found") % msg messages.add_message(request, messages.ERROR, msg) # Build associated error message if len(error_associated) > 0: msg = '' for id_error in error_associated[0:-1]: msg = msg + id_error + ',' if len(error_associated) > 1: msg = msg[:-1] + ' e ' + error_associated[-1] else: msg = error_associated[0] msg = environment_messages.get("env_associated") % msg messages.add_message(request, messages.ERROR, msg) # Success message if not have_errors: messages.add_message( request, messages.SUCCESS, environment_messages.get("success_delete_all")) return redirect('environment.list')
def insert_ambiente_logico(request): # If form was submited if request.method == 'POST': try: lists = dict() # Get User auth = AuthSession(request.session) client = auth.get_clientFactory() lists['ambientelogico_form'] = AmbienteLogicoForm() # Set data in form ambiente_logico_form = AmbienteLogicoForm(request.POST) id_env = request.POST['id_env'] # Validate if ambiente_logico_form.is_valid(): nome_ambiente_logico = ambiente_logico_form.cleaned_data[ 'nome'] # Business client.create_ambiente_logico().inserir( nome_ambiente_logico.upper()) messages.add_message( request, messages.SUCCESS, environment_messages.get("ambiente_log_sucess")) else: # If invalid, send all error messages in fields lists['ambientelogico_form'] = ambiente_logico_form except NetworkAPIClientError, e: logger.error(e) lists['ambientelogico_form'] = ambiente_logico_form messages.add_message(request, messages.ERROR, e) try: # Get all needs from NetworkAPI env_logic = client.create_ambiente_logico().listar() division_dc = client.create_divisao_dc().listar() group_l3 = client.create_grupo_l3().listar() filters = client.create_filter().list_all() try: templates = get_templates(auth.get_user(), True) except GITCommandError, e: logger.error(e) messages.add_message(request, messages.ERROR, e) templates = { 'ipv4': list(), 'ipv6': list() } ipv4 = templates.get("ipv4") ipv6 = templates.get("ipv6") envs = client.create_ambiente().listar().get('ambiente') vrfs = client.create_api_vrf().search()['vrfs'] # Forms env_form = AmbienteForm( env_logic, division_dc, group_l3, filters, ipv4, ipv6, envs, vrfs) div_form = DivisaoDCForm() gro_form = Grupol3Form() action = reverse("environment.form") # If id_env is set, still in edit if id_env: env = client.create_ambiente().buscar_por_id(id_env) env = env.get("ambiente") # Set Environment data initial = {"id_env": env.get("id"), "divisao": env.get("id_divisao"), "ambiente_logico": env.get("id_ambiente_logico"), "grupol3": env.get("id_grupo_l3"), "filter": env.get("id_filter"), "link": env.get("link")} env_form = AmbienteForm( env_logic, division_dc, group_l3, filters, ipv4, ipv6, envs, vrfs, initial=initial) div_form = DivisaoDCForm(initial={"id_env": id_env}) gro_form = Grupol3Form(initial={"id_env": id_env}) action = reverse("environment.edit", args=[id_env]) lists['ambiente'] = env_form lists['divisaodc_form'] = div_form lists['grupol3_form'] = gro_form lists['action'] = action return render_to_response(ENVIRONMENT_FORM, lists, context_instance=RequestContext(request))
def insert_ambiente(request): try: lists = dict() config_forms = list() # Get User auth = AuthSession(request.session) client = auth.get_clientFactory() # Get all needs from NetworkAPI env_logic = client.create_ambiente_logico().listar() division_dc = client.create_divisao_dc().listar() group_l3 = client.create_grupo_l3().listar() filters = client.create_filter().list_all() try: templates = get_templates(auth.get_user(), True) except GITCommandError, e: logger.error(e) messages.add_message(request, messages.ERROR, e) templates = { 'ipv4': list(), 'ipv6': list() } ipv4 = templates.get("ipv4") ipv6 = templates.get("ipv6") envs = client.create_ambiente().listar().get('ambiente') vrfs = client.create_api_vrf().search()['vrfs'] # Forms lists['ambiente'] = AmbienteForm( env_logic, division_dc, group_l3, filters, ipv4, ipv6, envs, vrfs) lists['divisaodc_form'] = DivisaoDCForm() lists['grupol3_form'] = Grupol3Form() lists['ambientelogico_form'] = AmbienteLogicoForm() lists['action'] = reverse("environment.form") # If form was submited if request.method == 'POST': # Set data in form ambiente_form = AmbienteForm( env_logic, division_dc, group_l3, filters, ipv4, ipv6, envs, vrfs, request.POST) # Return data to form in case of error lists['ambiente'] = ambiente_form # Validate if ambiente_form.is_valid(): divisao_dc = ambiente_form.cleaned_data['divisao'] ambiente_logico = ambiente_form.cleaned_data['ambiente_logico'] grupo_l3 = ambiente_form.cleaned_data['grupol3'] filter_ = ambiente_form.cleaned_data['filter'] link = ambiente_form.cleaned_data['link'] acl_path = ambiente_form.cleaned_data['acl_path'] vrf = ambiente_form.cleaned_data['vrf'] if str(vrf) == str(None): vrf = None father_environment = ambiente_form.cleaned_data['father_environment'] ipv4_template = ambiente_form.cleaned_data.get( 'ipv4_template', None) ipv6_template = ambiente_form.cleaned_data.get( 'ipv6_template', None) min_num_vlan_1 = ambiente_form.cleaned_data.get( 'min_num_vlan_1', None) max_num_vlan_1 = ambiente_form.cleaned_data.get( 'max_num_vlan_1', None) min_num_vlan_2 = ambiente_form.cleaned_data.get( 'min_num_vlan_2', None) max_num_vlan_2 = ambiente_form.cleaned_data.get( 'max_num_vlan_2', None) vrf_internal = dict(ambiente_form.fields['vrf'].choices)[int(vrf)] # Business dict_env = { "id": None, "grupo_l3": int(grupo_l3), "ambiente_logico": int(ambiente_logico), "divisao_dc": int(divisao_dc), "filter": int(filter_) if filter_ else None, "acl_path": acl_path, "ipv4_template": ipv4_template, "ipv6_template": ipv6_template, "link": link, "min_num_vlan_1": min_num_vlan_1, "max_num_vlan_1": max_num_vlan_1, "min_num_vlan_2": min_num_vlan_2, "max_num_vlan_2": max_num_vlan_2, "default_vrf": int(vrf), "father_environment": int(father_environment) if father_environment else None, 'vrf': vrf_internal } client.create_api_environment().create_environment(dict_env) messages.add_message( request, messages.SUCCESS, environment_messages.get("success_insert")) return redirect('environment.list') else: # If invalid, send all error messages in fields lists['ambiente'] = ambiente_form auth = AuthSession(request.session) client = auth.get_clientFactory() net_type_list = client.create_tipo_rede().listar() config_forms.append(IpConfigForm(net_type_list)) lists['config_forms'] = config_forms
# Environment doesn't exist. logger.error(e) have_errors = True error_not_found.append(id_env) except AmbienteError, e: # Environment associated to equipment and/or VLAN that # couldn't be removed. logger.error(e) have_errors = True error_associated.append(id_env) except InvalidParameterError, e: # Environment id is null or invalid. logger.error(e) have_errors = True messages.add_message( request, messages.ERROR, environment_messages.get("invalid_id")) except DataBaseError, e: # NetworkAPI fail to access database. logger.error(e) have_errors = True messages.add_message(request, messages.ERROR, e) except XMLError, e: # NetworkAPI fail generating XML response. logger.error(e) have_errors = True messages.add_message(request, messages.ERROR, e) except Exception, e: # Other errors logger.error(e) have_errors = True messages.add_message(request, messages.ERROR, e)
# Environment doesn't exist. logger.error(e) have_errors = True error_not_found.append(id_env) except AmbienteError, e: # Environment associated to equipment and/or VLAN that # couldn't be removed. logger.error(e) have_errors = True error_associated.append(id_env) except InvalidParameterError, e: # Environment id is null or invalid. logger.error(e) have_errors = True messages.add_message(request, messages.ERROR, environment_messages.get("invalid_id")) except DataBaseError, e: # NetworkAPI fail to access database. logger.error(e) have_errors = True messages.add_message(request, messages.ERROR, e) except XMLError, e: # NetworkAPI fail generating XML response. logger.error(e) have_errors = True messages.add_message(request, messages.ERROR, e) except Exception, e: # Other errors logger.error(e) have_errors = True messages.add_message(request, messages.ERROR, e)
def edit(request, id_environment): lists = dict() try: # Get User auth = AuthSession(request.session) client = auth.get_clientFactory() # Get all needs from NetworkAPI env_logic = client.create_ambiente_logico().listar() division_dc = client.create_divisao_dc().listar() group_l3 = client.create_grupo_l3().listar() filters = client.create_filter().list_all() cidr = client.create_api_environment_cidr().\ get_by_env(env_id=[id_environment]) lists['configurations_prefix'] = cidr.get('cidr') try: templates = get_templates(auth.get_user(), True) except GITCommandError as e: logger.error(e) messages.add_message(request, messages.ERROR, e) templates = { 'ipv4': list(), 'ipv6': list() } ipv4 = templates.get("ipv4") ipv6 = templates.get("ipv6") envs = client.create_ambiente().listar().get('ambiente') vrfs = client.create_api_vrf().search()['vrfs'] try: env = client.create_api_environment().get_environment(id_environment) env = env.get("environments")[0] except NetworkAPIClientError as e: logger.error(e) messages.add_message(request, messages.ERROR, e) return redirect('environment.list') lists['id_environment'] = env.get("id") # Set Environment data initial = { "id_env": env.get("id"), "divisao": env.get("divisao_dc"), "ambiente_logico": env.get("ambiente_logico"), "grupol3": env.get("grupo_l3"), "filter": env.get("filter"), "acl_path": env.get("acl_path"), "ipv4_template": env.get("ipv4_template"), "ipv6_template": env.get("ipv6_template"), "min_num_vlan_1": env.get("min_num_vlan_1"), "max_num_vlan_1": env.get("max_num_vlan_1"), "min_num_vlan_2": env.get("min_num_vlan_2"), "max_num_vlan_2": env.get("max_num_vlan_2"), 'link': env.get('link'), 'father_environment': env.get('father_environment'), 'vrf': env.get('default_vrf'), 'vxlan': 1 if env.get('vxlan') else 0 } env_form = AmbienteForm( env_logic, division_dc, group_l3, filters, ipv4, ipv6, envs, vrfs, initial=initial) # Forms lists['ambiente'] = env_form lists['vxlan'] = env.get('vxlan', False) lists['divisaodc_form'] = DivisaoDCForm( initial={"id_env": id_environment} ) lists['grupol3_form'] = Grupol3Form(initial={"id_env": id_environment}) lists['ambientelogico_form'] = AmbienteLogicoForm( initial={"id_env": id_environment}) lists['action'] = reverse("environment.edit", args=[id_environment]) # If form was submited if request.method == 'POST': # Set data in form ambiente_form = AmbienteForm( env_logic, division_dc, group_l3, filters, ipv4, ipv6, envs, vrfs, request.POST) # Return data to form in case of error lists['ambiente'] = ambiente_form vxlan = True if request.POST.get('is_vxlan') else False # Validate if ambiente_form.is_valid(): id_env = ambiente_form.cleaned_data['id_env'] divisao_dc = ambiente_form.cleaned_data['divisao'] ambiente_logico = ambiente_form.cleaned_data['ambiente_logico'] grupo_l3 = ambiente_form.cleaned_data['grupol3'] filter_ = ambiente_form.cleaned_data['filter'] link = ambiente_form.cleaned_data['link'] vrf = ambiente_form.cleaned_data['vrf'] acl_path = ambiente_form.cleaned_data['acl_path'] father_environment = ambiente_form.cleaned_data['father_environment'] ipv4_template = ambiente_form.cleaned_data.get( 'ipv4_template', None) ipv6_template = ambiente_form.cleaned_data.get( 'ipv6_template', None) min_num_vlan_1 = ambiente_form.cleaned_data.get( 'min_num_vlan_1', None) max_num_vlan_1 = ambiente_form.cleaned_data.get( 'max_num_vlan_1', None) min_num_vlan_2 = ambiente_form.cleaned_data.get( 'min_num_vlan_2', None) max_num_vlan_2 = ambiente_form.cleaned_data.get( 'max_num_vlan_2', None) vrf_internal = dict(ambiente_form.fields['vrf'].choices)[int(vrf)] # Business dict_env = { "id": int(id_env), "grupo_l3": int(grupo_l3), "ambiente_logico": int(ambiente_logico), "divisao_dc": int(divisao_dc), "filter": int(filter_) if filter_ else None, "acl_path": acl_path, "ipv4_template": ipv4_template, "ipv6_template": ipv6_template, "link": link, "min_num_vlan_1": min_num_vlan_1, "max_num_vlan_1": max_num_vlan_1, "min_num_vlan_2": min_num_vlan_2, "max_num_vlan_2": max_num_vlan_2, "default_vrf": int(vrf), "father_environment": int(father_environment) if father_environment else None, 'vrf': vrf_internal, 'vxlan': vxlan } client.create_api_environment().update_environment(dict_env, id_env) messages.add_message( request, messages.SUCCESS, environment_messages.get("success_edit")) return redirect('environment.list') else: # If invalid, send all error messages in fields lists['ambiente'] = ambiente_form except NetworkAPIClientError as e: logger.error(e) messages.add_message(request, messages.ERROR, e) return render_to_response(ENVIRONMENT_FORM, lists, context_instance=RequestContext(request))