Fix up tag API endpoints, for #130.
parent
b8b637a629
commit
1af27988c1
109
snipts/api.py
109
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:
|
||||
|
|
5
urls.py
5
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())
|
||||
|
|
Loading…
Reference in New Issue