|
11 | 11 | from django.shortcuts import render, get_object_or_404 |
12 | 12 | from django.urls import reverse |
13 | 13 | from django.utils.decorators import method_decorator |
| 14 | +from django.views.decorators.csrf import csrf_exempt |
14 | 15 | from django.views.decorators.gzip import gzip_page |
15 | 16 | from django.views.generic.detail import DetailView |
16 | 17 |
|
|
21 | 22 |
|
22 | 23 | import debug # pyflakes:ignore |
23 | 24 |
|
24 | | -from ietf.person.models import Person |
| 25 | +from ietf.person.models import Person, Email |
25 | 26 | from ietf.api import _api_list |
26 | 27 | from ietf.api.serializer import JsonExportMixin |
| 28 | +from ietf.utils.decorators import require_api_key |
| 29 | +from ietf.ietfauth.utils import role_required |
| 30 | + |
27 | 31 |
|
28 | 32 | def top_level(request): |
29 | 33 | available_resources = {} |
@@ -73,3 +77,23 @@ def get(self, request): |
73 | 77 | 'user', 'user__communitylist', ] |
74 | 78 | return self.json_view(request, filter={'id':person.id}, expand=expand) |
75 | 79 |
|
| 80 | + |
| 81 | +@method_decorator((csrf_exempt, require_api_key, role_required('Secretariat')), name='dispatch') |
| 82 | +class GenericPersonExportView(DetailView, JsonExportMixin): |
| 83 | + model = Person |
| 84 | + |
| 85 | + def err(self, code, text): |
| 86 | + return HttpResponse(text, status=code, content_type='text/plain') |
| 87 | + |
| 88 | + def post(self, request): |
| 89 | + if 'email' not in request.POST: |
| 90 | + return self.err(400, "Missing email parameter") |
| 91 | + email_address = request.POST.get('email') |
| 92 | + try: |
| 93 | + email = Email.objects.get(address=email_address) |
| 94 | + except Email.DoesNotExist: |
| 95 | + return self.err(404, "Email not found '%s'" % (email_address, )) |
| 96 | + person = email.person |
| 97 | + expand = ['user'] |
| 98 | + return self.json_view(request, filter={'id': person.id}, expand=expand) |
| 99 | + |
0 commit comments