Taggit implemented.

This commit is contained in:
Isaac Bythewood
2012-09-28 04:42:13 +00:00
parent 7df00ebd48
commit 230a6e959f
7 changed files with 37 additions and 1 deletions

View File

@@ -9,6 +9,8 @@ from pinry.pins.models import Pin
class PinResource(ModelResource): # pylint: disable-msg=R0904 class PinResource(ModelResource): # pylint: disable-msg=R0904
tags = fields.ListField()
class Meta: class Meta:
queryset = Pin.objects.all() queryset = Pin.objects.all()
resource_name = 'pin' resource_name = 'pin'
@@ -17,6 +19,24 @@ class PinResource(ModelResource): # pylint: disable-msg=R0904
'published': ['gt'], 'published': ['gt'],
} }
def build_filters(self, filters=None):
if filters is None:
filters = {}
orm_filters = super(PinResource, self).build_filters(filters)
if 'tag' in filters:
orm_filters['tags__name__in'] = filters['tag'].split(',')
return orm_filters
def dehydrate_tags(self, bundle):
return map(str, bundle.obj.tags.all())
def save_m2m(self, bundle):
tags = bundle.data.get('tags', [])
bundle.obj.tags.set(*tags)
return super(PinResource, self).save_m2m(bundle)
class UserResource(ModelResource): class UserResource(ModelResource):
class Meta: class Meta:

View File

@@ -68,7 +68,14 @@ $(window).ready(function () {
html += '<a class="fancybox" rel="pins" href="'+image.image+'">'; html += '<a class="fancybox" rel="pins" href="'+image.image+'">';
html += '<img src="'+image.thumbnail+'" width="200" >'; html += '<img src="'+image.thumbnail+'" width="200" >';
html += '</a>'; html += '</a>';
html += '<p>'+image.description+'</p>'; if (image.description) html += '<p>'+image.description+'</p>';
if (image.tags) {
html += '<p>';
for (tag in image.tags) {
html += image.tags[tag] + ', ';
}
html += '</p>';
}
html += '</div>'; html += '</div>';
} }

View File

@@ -1,11 +1,14 @@
from django import forms from django import forms
from taggit.forms import TagField
from .models import Pin from .models import Pin
class PinForm(forms.ModelForm): class PinForm(forms.ModelForm):
url = forms.CharField(label='URL', required=False) url = forms.CharField(label='URL', required=False)
image = forms.ImageField(label='or Upload', required=False) image = forms.ImageField(label='or Upload', required=False)
tags = TagField()
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
@@ -14,6 +17,7 @@ class PinForm(forms.ModelForm):
'url', 'url',
'image', 'image',
'description', 'description',
'tags',
) )

View File

@@ -3,6 +3,7 @@ from django.core.files import File
from django.core.files.temp import NamedTemporaryFile from django.core.files.temp import NamedTemporaryFile
from django.contrib.auth.models import User from django.contrib.auth.models import User
from taggit.managers import TaggableManager
import urllib2 import urllib2
import os import os
from PIL import Image from PIL import Image
@@ -15,6 +16,7 @@ class Pin(models.Model):
image = models.ImageField(upload_to='pins/pin/originals/') image = models.ImageField(upload_to='pins/pin/originals/')
thumbnail = models.ImageField(upload_to='pins/pin/thumbnails/') thumbnail = models.ImageField(upload_to='pins/pin/thumbnails/')
published = models.DateTimeField(auto_now_add=True) published = models.DateTimeField(auto_now_add=True)
tags = TaggableManager()
def __unicode__(self): def __unicode__(self):

View File

@@ -20,6 +20,7 @@ def new_pin(request):
pin = form.save(commit=False) pin = form.save(commit=False)
pin.submitter = request.user pin.submitter = request.user
pin.save() pin.save()
form.save_m2m()
messages.success(request, 'New pin successfully added.') messages.success(request, 'New pin successfully added.')
return HttpResponseRedirect(reverse('pins:recent-pins')) return HttpResponseRedirect(reverse('pins:recent-pins'))
else: else:

View File

@@ -74,6 +74,7 @@ INSTALLED_APPS = (
'django.contrib.staticfiles', 'django.contrib.staticfiles',
'south', 'south',
'compressor', 'compressor',
'taggit',
'pinry.vendor', 'pinry.vendor',
'pinry.core', 'pinry.core',
'pinry.pins', 'pinry.pins',

View File

@@ -5,4 +5,5 @@ django-tastypie==0.9.11
django_compressor==1.2 django_compressor==1.2
cssmin==0.1.4 cssmin==0.1.4
jsmin==2.0.2 jsmin==2.0.2
-e git://github.com/hcarvalhoalves/django-taggit.git@e0f9642d7b94c8e6c0feb520d96bb6ae4d78a4d0#egg=django-taggit