diff --git a/snipts/api.py b/snipts/api.py index 0bcf364..d65eaa3 100644 --- a/snipts/api.py +++ b/snipts/api.py @@ -74,34 +74,6 @@ class PrivateSniptAuthorization(Authorization): def delete_detail(self, object_list, bundle): 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): def read_list(self, object_list, bundle): raise Unauthorized() @@ -202,38 +174,36 @@ class PublicUserResource(ModelResource): bundle.data['email_md5'] = hashlib.md5(bundle.obj.email.lower()).hexdigest() return bundle -# class PublicTagResource(ModelResource): -# class Meta: -# queryset = Tag.objects.filter(snipt__public=True) -# queryset = queryset.annotate(count=models.Count('taggit_taggeditem_items__id')) -# queryset = queryset.order_by('-count', 'name') -# resource_name = 'tag' -# fields = ['id', 'name',] -# allowed_methods = ['get'] -# max_limit = 200 -# cache = SimpleCache() +class PublicTagResource(ModelResource): + class Meta: + queryset = Tag.objects.filter() + queryset = queryset.annotate(count=models.Count('taggit_taggeditem_items__id')) + queryset = queryset.order_by('-count', 'name') + resource_name = 'tag' + fields = ['id', 'name',] + allowed_methods = ['get'] + max_limit = 200 + cache = SimpleCache() -# def build_filters(self, filters=None): -# if filters is None: -# filters = {} + def build_filters(self, filters=None): + if filters is None: + filters = {} -# orm_filters = super(PublicTagResource, self).build_filters(filters) + orm_filters = super(PublicTagResource, self).build_filters(filters) -# if 'q' in filters: -# orm_filters['slug'] = filters['q'] + if 'q' in filters: + orm_filters['slug'] = filters['q'] -# return orm_filters + return orm_filters -# def dehydrate(self, bundle): -# bundle.data['absolute_url'] = '/public/tag/%s/' % bundle.obj.slug -# bundle.data['snipts'] = '/api/public/snipt/?tag=%d' % bundle.obj.id -# bundle.data['count'] = bundle.obj.taggit_taggeditem_items.filter( -# snipt__public=True).count() -# return bundle + def dehydrate(self, bundle): + bundle.data['absolute_url'] = '/public/tag/%s/' % bundle.obj.slug + bundle.data['snipts'] = '/api/public/snipt/?tag=%d' % bundle.obj.id + return bundle class PublicSniptResource(ModelResource): 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: 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()] 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): user = fields.ForeignKey(PrivateUserResource, 'user', full=True) - # tags = fields.ToManyField(PrivateTagResource, 'tags', related_name='tag', full=True) tags_list = ListField() class Meta: diff --git a/urls.py b/urls.py index 5e7e6fb..0b1be45 100644 --- a/urls.py +++ b/urls.py @@ -7,7 +7,7 @@ from django.contrib import admin from snipts.api import (PublicSniptResource, PublicUserResource, PrivateSniptResource, PrivateFavoriteResource, PrivateUserProfileResource, - PrivateUserResource) + PrivateUserResource, PublicTagResource) from snipts.views import search from tastypie.api import Api from utils.views import SniptRegistrationView @@ -23,12 +23,11 @@ admin.autodiscover() public_api = Api(api_name='public') public_api.register(PublicSniptResource()) -# public_api.register(PublicTagResource()) +public_api.register(PublicTagResource()) public_api.register(PublicUserResource()) private_api = Api(api_name='private') private_api.register(PrivateSniptResource()) -# private_api.register(PrivateTagResource()) private_api.register(PrivateUserResource()) private_api.register(PrivateFavoriteResource()) private_api.register(PrivateUserProfileResource())