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')