from django.http import JsonResponse, HttpResponse from django_nepkit.utils import ( get_districts_by_province, get_municipalities_by_district, ) from django_nepkit.conf import nepkit_settings def _render_options(data, placeholder): """Internal helper to render list of options as HTML.""" options = [f''] for item in data: options.append(f'') return HttpResponse("\n".join(options)) def district_list_view(request): province = request.GET.get("province") # Fallback: take the first non-internal parameter as province if not province: for key, value in request.GET.items(): if key not in ["ne", "en", "html"] and value: province = value break if not province: return JsonResponse([], safe=False) default_lang = nepkit_settings.DEFAULT_LANGUAGE ne_param = request.GET.get("ne") ne = ne_param.lower() == "true" if ne_param else default_lang == "ne" en_param = request.GET.get("en") en = en_param.lower() == "true" if en_param else not ne as_html = ( request.GET.get("html", "false").lower() == "true" or request.headers.get("HX-Request") == "true" ) data = get_districts_by_province(province, ne=ne, en=en) if as_html: placeholder = "जिल्ला छान्नुहोस्" if ne else "Select District" return _render_options(data, placeholder) return JsonResponse(data, safe=False) def municipality_list_view(request): district = request.GET.get("district") # Fallback: take the first non-internal parameter as district if not district: for key, value in request.GET.items(): if key not in ["ne", "en", "html"] and value: district = value break if not district: return JsonResponse([], safe=False) default_lang = nepkit_settings.DEFAULT_LANGUAGE ne_param = request.GET.get("ne") ne = ne_param.lower() == "true" if ne_param else default_lang == "ne" en_param = request.GET.get("en") en = en_param.lower() == "true" if en_param else not ne as_html = ( request.GET.get("html", "false").lower() == "true" or request.headers.get("HX-Request") == "true" ) data = get_municipalities_by_district(district, ne=ne, en=en) if as_html: placeholder = "नगरपालिका छान्नुहोस्" if ne else "Select Municipality" return _render_options(data, placeholder) return JsonResponse(data, safe=False)