mirror of
https://github.com/peeringdb/peeringdb.git
synced 2024-05-11 05:55:09 +00:00
IXF preview tool (#408)
This commit is contained in:
45
peeringdb_server/import_views.py
Normal file
45
peeringdb_server/import_views.py
Normal file
@@ -0,0 +1,45 @@
|
||||
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")
|
||||
Reference in New Issue
Block a user