Working on public API
parent
27cf162939
commit
362dd50520
|
@ -36,6 +36,7 @@ TEMPLATE_LOADERS = (
|
||||||
'django.template.loaders.app_directories.load_template_source',
|
'django.template.loaders.app_directories.load_template_source',
|
||||||
)
|
)
|
||||||
MIDDLEWARE_CLASSES = (
|
MIDDLEWARE_CLASSES = (
|
||||||
|
'django.middleware.cache.CacheMiddleware',
|
||||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||||
'django.middleware.common.CommonMiddleware',
|
'django.middleware.common.CommonMiddleware',
|
||||||
'django.middleware.csrf.CsrfResponseMiddleware',
|
'django.middleware.csrf.CsrfResponseMiddleware',
|
||||||
|
|
|
@ -19,7 +19,7 @@ class SniptAdmin(admin.ModelAdmin):
|
||||||
admin.site.register(Snipt, SniptAdmin)
|
admin.site.register(Snipt, SniptAdmin)
|
||||||
|
|
||||||
class CommentAdmin(admin.ModelAdmin):
|
class CommentAdmin(admin.ModelAdmin):
|
||||||
readonly_fields = ('user', 'snipt',)
|
#readonly_fields = ('user', 'snipt',)
|
||||||
list_display = ('comment', 'user', 'snipt', 'created', 'modified',)
|
list_display = ('comment', 'user', 'snipt', 'created', 'modified',)
|
||||||
search_fields = ('comment', 'user__username',)
|
search_fields = ('comment', 'user__username',)
|
||||||
ordering = ('created',)
|
ordering = ('created',)
|
||||||
|
|
|
@ -1,8 +1,60 @@
|
||||||
from tastypie.resources import ModelResource
|
from tastypie.resources import ModelResource
|
||||||
from snipts.models import Snipt
|
from django.contrib.auth.models import User
|
||||||
|
from snipts.models import Comment, Snipt
|
||||||
|
from tastypie.cache import SimpleCache
|
||||||
|
from taggit.models import Tag
|
||||||
|
from tastypie import fields
|
||||||
|
|
||||||
|
class PublicUserResource(ModelResource):
|
||||||
class SniptResource(ModelResource):
|
|
||||||
class Meta:
|
class Meta:
|
||||||
queryset = Snipt.objects.all()
|
queryset = User.objects.all()
|
||||||
|
resource_name = 'user'
|
||||||
|
fields = ['username',]
|
||||||
|
cache = SimpleCache()
|
||||||
|
|
||||||
|
def dehydrate(self, bundle):
|
||||||
|
bundle.data['url'] = 'https://snipt.net/%s/' % bundle.obj.username
|
||||||
|
return bundle
|
||||||
|
|
||||||
|
class PublicCommentSniptResource(ModelResource):
|
||||||
|
class Meta:
|
||||||
|
queryset = Snipt.objects.filter(public=True).order_by('-created')
|
||||||
resource_name = 'snipt'
|
resource_name = 'snipt'
|
||||||
|
fields = ['id',]
|
||||||
|
cache = SimpleCache()
|
||||||
|
|
||||||
|
class PublicTagResource(ModelResource):
|
||||||
|
class Meta:
|
||||||
|
queryset = Tag.objects.all()
|
||||||
|
resource_name = 'tag'
|
||||||
|
fields = ['name', 'slug',]
|
||||||
|
cache = SimpleCache()
|
||||||
|
|
||||||
|
class PublicCommentResource(ModelResource):
|
||||||
|
user = fields.ForeignKey(PublicUserResource, 'user')
|
||||||
|
snipt = fields.ForeignKey(PublicCommentSniptResource, 'snipt')
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
queryset = Comment.objects.all()
|
||||||
|
resource_name = 'comment'
|
||||||
|
fields = ['user', 'snipt', 'comment', 'created', 'modified',]
|
||||||
|
cache = SimpleCache()
|
||||||
|
|
||||||
|
class PublicSniptResource(ModelResource):
|
||||||
|
user = fields.ForeignKey(PublicUserResource, 'user')
|
||||||
|
comments = fields.ToManyField(PublicCommentResource, 'comment_set',
|
||||||
|
related_name='comment')
|
||||||
|
tags = fields.ToManyField(PublicTagResource, 'tags', related_name='tag')
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
queryset = Snipt.objects.filter(public=True).order_by('-created')
|
||||||
|
resource_name = 'snipt'
|
||||||
|
fields = ['user', 'title', 'slug', 'tags', 'lexer', 'code', 'stylized',
|
||||||
|
'created', 'modified',]
|
||||||
|
cache = SimpleCache()
|
||||||
|
|
||||||
|
def dehydrate(self, bundle):
|
||||||
|
bundle.data['url'] = bundle.obj.get_absolute_url()
|
||||||
|
bundle.data['user_username'] = bundle.obj.user.username
|
||||||
|
bundle.data['user_url'] = 'https://snipt.net/%s/' % bundle.obj.user.username
|
||||||
|
return bundle
|
||||||
|
|
|
@ -33,6 +33,9 @@ class Snipt(models.Model):
|
||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
return self.title
|
return self.title
|
||||||
|
|
||||||
|
def get_absolute_url(self):
|
||||||
|
return "https://snipt.net/%s/%s/" % (self.user.username, self.slug)
|
||||||
|
|
||||||
class Comment(models.Model):
|
class Comment(models.Model):
|
||||||
"""A comment on a Snipt"""
|
"""A comment on a Snipt"""
|
||||||
|
|
||||||
|
@ -42,7 +45,7 @@ class Comment(models.Model):
|
||||||
comment = models.TextField()
|
comment = models.TextField()
|
||||||
|
|
||||||
# TODO Set auto_now_add back to True for production!
|
# TODO Set auto_now_add back to True for production!
|
||||||
created = models.DateTimeField(auto_now_add=False, editable=False)
|
created = models.DateTimeField(auto_now_add=True, editable=False)
|
||||||
modified = models.DateTimeField(auto_now=True, editable=False)
|
modified = models.DateTimeField(auto_now=True, editable=False)
|
||||||
|
|
||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
|
|
16
urls.py
16
urls.py
|
@ -1,15 +1,17 @@
|
||||||
|
from snipts.api import PublicCommentResource, PublicSniptResource, PublicUserResource, PublicTagResource
|
||||||
from django.views.generic.simple import direct_to_template
|
from django.views.generic.simple import direct_to_template
|
||||||
from django.conf.urls.defaults import *
|
from django.conf.urls.defaults import *
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
|
from tastypie.api import Api
|
||||||
|
from views import home
|
||||||
|
|
||||||
admin.autodiscover()
|
admin.autodiscover()
|
||||||
|
|
||||||
from views import home
|
public_api = Api(api_name='public')
|
||||||
|
public_api.register(PublicCommentResource())
|
||||||
from snipts.api import SniptResource
|
public_api.register(PublicUserResource())
|
||||||
|
public_api.register(PublicSniptResource())
|
||||||
snipt_resource = SniptResource()
|
public_api.register(PublicTagResource())
|
||||||
|
|
||||||
|
|
||||||
urlpatterns = patterns('',
|
urlpatterns = patterns('',
|
||||||
url(r'^admin/', include(admin.site.urls)),
|
url(r'^admin/', include(admin.site.urls)),
|
||||||
|
@ -18,7 +20,7 @@ urlpatterns = patterns('',
|
||||||
url(r'^404/$', direct_to_template, {'template': '404.html'}),
|
url(r'^404/$', direct_to_template, {'template': '404.html'}),
|
||||||
url(r'^500/$', direct_to_template, {'template': '500.html'}),
|
url(r'^500/$', direct_to_template, {'template': '500.html'}),
|
||||||
|
|
||||||
url(r'^api/', include(snipt_resource.urls)),
|
url(r'^api/', include(public_api.urls)),
|
||||||
|
|
||||||
url(r'^$', home),
|
url(r'^$', home),
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue