Fix up tag API endpoints, for #130.

master
Nick Sergeant 2014-05-26 17:28:13 -04:00
parent b8b637a629
commit 1af27988c1
2 changed files with 24 additions and 90 deletions

View File

@ -74,34 +74,6 @@ class PrivateSniptAuthorization(Authorization):
def delete_detail(self, object_list, bundle): def delete_detail(self, object_list, bundle):
return bundle.obj.user == bundle.request.user return bundle.obj.user == bundle.request.user
class PrivateTagAuthorization(Authorization):
def read_list(self, object_list, bundle):
object_list = object_list.filter(snipt__user=bundle.request.user)
object_list = object_list.annotate(count=models.Count('taggit_taggeditem_items__id'))
object_list = object_list.order_by('-count', 'name')
return object_list
def read_detail(self, object_list, bundle):
raise Unauthorized()
def create_list(self, object_list, bundle):
raise Unauthorized()
def create_detail(self, object_list, bundle):
raise Unauthorized()
def update_list(self, object_list, bundle):
raise Unauthorized()
def update_detail(self, object_list, bundle):
raise Unauthorized()
def delete_list(self, object_list, bundle):
raise Unauthorized()
def delete_detail(self, object_list, bundle):
raise Unauthorized()
class PrivateUserProfileAuthorization(Authorization): class PrivateUserProfileAuthorization(Authorization):
def read_list(self, object_list, bundle): def read_list(self, object_list, bundle):
raise Unauthorized() raise Unauthorized()
@ -202,38 +174,36 @@ class PublicUserResource(ModelResource):
bundle.data['email_md5'] = hashlib.md5(bundle.obj.email.lower()).hexdigest() bundle.data['email_md5'] = hashlib.md5(bundle.obj.email.lower()).hexdigest()
return bundle return bundle
# class PublicTagResource(ModelResource): class PublicTagResource(ModelResource):
# class Meta: class Meta:
# queryset = Tag.objects.filter(snipt__public=True) queryset = Tag.objects.filter()
# queryset = queryset.annotate(count=models.Count('taggit_taggeditem_items__id')) queryset = queryset.annotate(count=models.Count('taggit_taggeditem_items__id'))
# queryset = queryset.order_by('-count', 'name') queryset = queryset.order_by('-count', 'name')
# resource_name = 'tag' resource_name = 'tag'
# fields = ['id', 'name',] fields = ['id', 'name',]
# allowed_methods = ['get'] allowed_methods = ['get']
# max_limit = 200 max_limit = 200
# cache = SimpleCache() cache = SimpleCache()
# def build_filters(self, filters=None): def build_filters(self, filters=None):
# if filters is None: if filters is None:
# filters = {} filters = {}
# orm_filters = super(PublicTagResource, self).build_filters(filters) orm_filters = super(PublicTagResource, self).build_filters(filters)
# if 'q' in filters: if 'q' in filters:
# orm_filters['slug'] = filters['q'] orm_filters['slug'] = filters['q']
# return orm_filters return orm_filters
# def dehydrate(self, bundle): def dehydrate(self, bundle):
# bundle.data['absolute_url'] = '/public/tag/%s/' % bundle.obj.slug bundle.data['absolute_url'] = '/public/tag/%s/' % bundle.obj.slug
# bundle.data['snipts'] = '/api/public/snipt/?tag=%d' % bundle.obj.id bundle.data['snipts'] = '/api/public/snipt/?tag=%d' % bundle.obj.id
# bundle.data['count'] = bundle.obj.taggit_taggeditem_items.filter( return bundle
# snipt__public=True).count()
# return bundle
class PublicSniptResource(ModelResource): class PublicSniptResource(ModelResource):
user = fields.ForeignKey(PublicUserResource, 'user', full=True) user = fields.ForeignKey(PublicUserResource, 'user', full=True)
# tags = fields.ToManyField(PublicTagResource, 'tags', related_name='tag', full=True) tags = fields.ToManyField(PublicTagResource, 'tags', related_name='tag', full=True)
class Meta: class Meta:
queryset = Snipt.objects.filter(public=True).order_by('-created') queryset = Snipt.objects.filter(public=True).order_by('-created')
@ -317,43 +287,8 @@ class PrivateUserResource(ModelResource):
Snipt.objects.filter(user=bundle.obj).values('lexer').distinct()] Snipt.objects.filter(user=bundle.obj).values('lexer').distinct()]
return bundle return bundle
# class PrivateTagResource(ModelResource):
# class Meta:
# queryset = Tag.objects.all()
# resource_name = 'tag'
# fields = ['id', 'name',]
# allowed_methods = ['get']
# authentication = ApiKeyAuthentication()
# authorization = PrivateTagAuthorization()
# always_return_data = True
# max_limit = 200
# cache = SimpleCache()
# def build_filters(self, filters=None):
# if filters is None:
# filters = {}
# orm_filters = super(PrivateTagResource, self).build_filters(filters)
# if 'q' in filters:
# orm_filters['slug'] = filters['q']
# return orm_filters
# def dehydrate(self, bundle):
# bundle.data['absolute_url'] = '/%s/tag/%s/' % (bundle.request.user.username,
# bundle.obj.slug)
# bundle.data['snipts'] = '/api/private/snipt/?tag=%d' % bundle.obj.id
# bundle.data['count'] = bundle.obj.taggit_taggeditem_items.filter(
# snipt__user=bundle.request.user
# ).count()
# return bundle
class PrivateSniptResource(ModelResource): class PrivateSniptResource(ModelResource):
user = fields.ForeignKey(PrivateUserResource, 'user', full=True) user = fields.ForeignKey(PrivateUserResource, 'user', full=True)
# tags = fields.ToManyField(PrivateTagResource, 'tags', related_name='tag', full=True)
tags_list = ListField() tags_list = ListField()
class Meta: class Meta:

View File

@ -7,7 +7,7 @@ from django.contrib import admin
from snipts.api import (PublicSniptResource, from snipts.api import (PublicSniptResource,
PublicUserResource, PrivateSniptResource, PublicUserResource, PrivateSniptResource,
PrivateFavoriteResource, PrivateUserProfileResource, PrivateFavoriteResource, PrivateUserProfileResource,
PrivateUserResource) PrivateUserResource, PublicTagResource)
from snipts.views import search from snipts.views import search
from tastypie.api import Api from tastypie.api import Api
from utils.views import SniptRegistrationView from utils.views import SniptRegistrationView
@ -23,12 +23,11 @@ admin.autodiscover()
public_api = Api(api_name='public') public_api = Api(api_name='public')
public_api.register(PublicSniptResource()) public_api.register(PublicSniptResource())
# public_api.register(PublicTagResource()) public_api.register(PublicTagResource())
public_api.register(PublicUserResource()) public_api.register(PublicUserResource())
private_api = Api(api_name='private') private_api = Api(api_name='private')
private_api.register(PrivateSniptResource()) private_api.register(PrivateSniptResource())
# private_api.register(PrivateTagResource())
private_api.register(PrivateUserResource()) private_api.register(PrivateUserResource())
private_api.register(PrivateFavoriteResource()) private_api.register(PrivateFavoriteResource())
private_api.register(PrivateUserProfileResource()) private_api.register(PrivateUserProfileResource())