예제 #1
0
 def clean(self):
     asin = asin_from_url(self.cleaned_data['url'])
     
     try:
         self.cleaned_data['resource'] = self.amazon.item_lookup(asin)
     except:
         exc_class, exc, tb = sys.exc_info()
         raise forms.ValidationError('Error looking up item, "%s"' % exc)
     
     return self.cleaned_data
예제 #2
0
 def add_view(self, request):
     form = ResourceForm(request.POST or None)
     if request.method == 'POST':
         if form.is_valid():
             url = form.cleaned_data['url']
             asin = asin_from_url(url)
             amazon_item = amazon_client.item_lookup(asin)
             media_type, _ = MediaType.objects.get_or_create(
                 title=amazon_item['productgroup'])
             resource = Resource.objects.create(
                 asin=asin,
                 title=amazon_item['title'],
                 author=amazon_item['author'],
                 media_type=media_type,
                 pub_date=amazon_item['publicationdate'],
                 pages=amazon_item['numberofpages'] or 0,
             )
             
             img_url = amazon_item['image']
             if img_url:
                 img_name, extension = img_url.rsplit('.', 1)
                 # download the image and store it in memory
                 image_data, _ = urllib.urlretrieve(img_url)
                 
                 resource.cover_image.save(
                     '%s.%s' % (slugify(resource.title)[:30], extension),
                     File(open(image_data))
                 )
                 
                 # resize the newly created image
                 image_resize(
                     resource.cover_image.path,
                     resource.cover_image.path,
                     THUMB_WIDTH,
                     THUMB_HEIGHT)
                 
                 resource.save()
                         
             return HttpResponseRedirect(reverse("admin:amazon_resources_resource_change", args=[resource.pk]))
     return render_to_response('admin/amazon_resources/add_amazon_resource.html',
             {'title': 'Add a resource', 'form': form},
             context_instance=RequestContext(request))
예제 #3
0
 def clean_url(self):
     url = self.cleaned_data.get('url')
     if asin_from_url(url):
         return url
     else:
         raise forms.ValidationError('Could not determine ASIN from url')