diff --git a/bt/api.py b/bt/api.py new file mode 100644 index 0000000000000000000000000000000000000000..6870737c760983ac2cba28736178ea9abd289ed4 --- /dev/null +++ b/bt/api.py @@ -0,0 +1,29 @@ +#from django.contrib.auth.models import User +from tastypie import fields +from tastypie.authorization import DjangoAuthorization +from tastypie.resources import ModelResource, ALL#, ALL_WITH_RELATIONS +from bt.models import Violation + + +#class UserResource(ModelResource): +# class Meta: +# queryset = User.objects.all() +# resource_name = 'auth/user' +# excludes = ['email', 'password', 'is_superuser'] + + +class APIResource(ModelResource): +# user = fields.ForeignKey(UserResource, 'user') + + class Meta: + queryset = Violation.objects.all() + list_allowed_methods = ['get', 'post'] + detail_allowed_methods = ['get', 'post', 'put', 'delete'] + resource_name = 'violations' + authorization = DjangoAuthorization() + filtering = { + 'country': ALL, + 'operator': ALL, + 'activationid': ALL, + } + diff --git a/bt/views.py b/bt/views.py index 6709124e937aaec7b79183ba23386232e7ab3cb9..8f1ddeb3002e2d26512029415072dfdcd647a67b 100644 --- a/bt/views.py +++ b/bt/views.py @@ -188,11 +188,12 @@ def add(request): 'violations': v_list }, context_instance=RequestContext(request)) -def ajax(request, country=None, operator=None): - if not operator: - return HttpResponse(json.dumps(sorted(list(set([x.operator for x in Violation.objects.filter(country=country,activationid='')]))))) - else: - return HttpResponse(json.dumps(sorted(list(set([x.contract for x in Violation.objects.filter(country=country,activationid='',operator=operator)]))))) +# XXX obsoleted by API +#def ajax(request, country=None, operator=None): +# if not operator: +# return HttpResponse(json.dumps(sorted(list(set([x.operator for x in Violation.objects.filter(country=country,activationid='')]))))) +# else: +# return HttpResponse(json.dumps(sorted(list(set([x.contract for x in Violation.objects.filter(country=country,activationid='',operator=operator)]))))) def index(request): v_list = Violation.objects.filter(activationid='',featuredcase__isnull=False).order_by('id').reverse()[:3] diff --git a/pip-requirements.txt b/pip-requirements.txt index ec92961af4901e1d9ae2516fd3f1eaba6e3f1243..a5bdb0df2df6f4490dc3da44508ad3211ebd4ec3 100644 --- a/pip-requirements.txt +++ b/pip-requirements.txt @@ -10,3 +10,4 @@ PIL>=1.1.7 flup>=1.0.3.dev-20110405 BeautifulSoup>=3.2.0 python-twitter==0.8.2 +django-tastypie diff --git a/settings.py b/settings.py index 2d1e4e289ecb9ca14a136103c39790d7adc4c07d..2a48aa2f77de5542621dfb42aad2c619d3bb6174 100644 --- a/settings.py +++ b/settings.py @@ -139,6 +139,7 @@ INSTALLED_APPS = ( 'django.contrib.admin', # Uncomment the next line to enable admin documentation: # 'django.contrib.admindocs', + 'tastypie', ) TEMPLATE_CONTEXT_PROCESSORS = ("django.contrib.auth.context_processors.auth", diff --git a/urls.py b/urls.py index 63c6ff65335b376d79a5df7b95d876f2580a1386..470bf380ab4648e8327e615d4522382c06414de5 100644 --- a/urls.py +++ b/urls.py @@ -5,6 +5,10 @@ from django.contrib import admin from bt import views as bt from bt.feeds import RssSiteNewsFeed, AtomSiteNewsFeed +from bt.api import APIResource + +api_resource = APIResource() + admin.autodiscover() @@ -12,7 +16,8 @@ urlpatterns = patterns('', (r'^$', bt.index), (r'^list/$', bt.list_violations), url(r'^list/(?P[^/]*)(/(?P[^/]*))?$', bt.filter_violations, name="filter"), - (r'^ajax/(?P[^/]*)(/(?P[^/]*))?$', bt.ajax), + #(r'^ajax/(?P[^/]*)(/(?P[^/]*))?$', bt.ajax), + (r'^api/', include(api_resource.urls)), (r'^add/$', bt.add), (r'^view/(?P[0-9]*)$', bt.view), (r'^attach/(?P[0-9]*)$', bt.get_attach),