blob: ea12043060072b6272d7410f0808781c36cbd561 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
from django.shortcuts import get_object_or_404
from django.http import HttpResponse, Http404, HttpResponseForbidden
from django.conf import settings
from django.views.decorators.csrf import csrf_exempt
from functools import wraps
from django.utils.decorators import available_attrs
import json
from models import CommitFest
def api_authenticate(view_func):
def _wrapped_view(request, *args, **kwargs):
if not request.META['REMOTE_ADDR'] in settings.API_AUTH:
return HttpResponseForbidden('Access Denied')
if not request.META.get('HTTP_X_API_AUTH', '') == settings.API_AUTH[request.META['REMOTE_ADDR']]:
return HttpResponseForbidden('Access Denied')
return view_func(request, *args, **kwargs)
return wraps(view_func, assigned=available_attrs(view_func))(_wrapped_view)
@api_authenticate
def active_commitfests(request):
cfs = list(CommitFest.objects.filter(status=CommitFest.STATUS_INPROGRESS))
if not cfs:
cfs = CommitFest.objects.filter(status=CommitFest.STATUS_OPEN).order_by('-id')[:1]
res = [
{'id': c.id, 'name': c.name, 'status': c.statusstring, 'numstatus': c.status} for c in cfs
]
return HttpResponse(json.dumps(res),
content_type='application/json')
|