1
0
mirror of https://github.com/peeringdb/peeringdb.git synced 2024-05-11 05:55:09 +00:00
Files
peeringdb-peeringdb/peeringdb_server/import_views.py
Stefan Pratter 3bf31a6de7 Gh 408 Review
2019-02-15 17:46:40 +00:00

46 lines
1.3 KiB
Python

import json
from django.http import JsonResponse, HttpResponse
from django.conf import settings
from django.utils.translation import ugettext_lazy as _
from django_namespace_perms.util import has_perms
from ratelimit.decorators import ratelimit, is_ratelimited
from peeringdb_server import ixf
from peeringdb_server.models import IXLan
RATELIMITS = settings.RATELIMITS
@ratelimit(key="ip", rate=RATELIMITS["view_import_ixlan_ixf_preview"])
def view_import_ixlan_ixf_preview(request, ixlan_id):
# check if request was blocked by rate limiting
was_limited = getattr(request, "limited", False)
if was_limited:
return JsonResponse({
"non_field_errors": [
_("Please wait a bit before requesting " \
"another ixf import preview.")
]
}, status=400)
try:
ixlan = IXLan.objects.get(id=ixlan_id)
except IXLan.DoesNotExist:
return JsonResponse({
"non_field_errors": [_("Ixlan not found")]
}, status=404)
if not has_perms(request.user, ixlan, "update"):
return JsonResponse({
"non_field_errors": [_("Permission denied")]
}, status=403)
importer = ixf.Importer()
importer.update(ixlan, save=False)
return HttpResponse(
json.dumps(importer.log, indent=2), content_type="application/json")