Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- view.py
- from django.shortcuts import render, redirect
- from django.contrib.auth.decorators import login_required
- from django.contrib import messages
- from .forms import ImageCreateForm
- @login_required
- def image_create(request):
- if request.method == 'POST':
- # form is sent
- form = ImageCreateForm(data=request.POST)
- if form.is_valid():
- # form data is valid
- cd = form.cleaned_data
- new_item = form.save(commit=False)
- # assign current user to the item
- new_item.user = request.user
- new_item.save()
- messages.success(request, 'Image added successfully')
- # redirect to new created item detail view
- return redirect(new_item.get_absolute_url())
- else:
- # build form with data provided by the bookmarklet via GET
- form = ImageCreateForm(data=request.GET)
- return render(request,
- 'images/image/create.html',
- {'section': 'images',
- 'form': form})
- forms.py
- from django import forms
- from .models import Image
- from urllib import request
- from django.core.files.base import ContentFile
- from django.utils.text import slugify
- class ImageCreateForm(forms.ModelForm):
- class Meta:
- model = Image
- fields = ('title', 'url', 'description' )
- widgets = {
- 'url': forms.HiddenInput,
- }
- def clean_url(self):
- url = self.cleaned_data['url']
- valid_extensions = ['jpg', 'jpeg']
- extension = url.rsplit('.', 1)[1].lower()
- if extension not in valid_extensions:
- raise forms.ValidationError('The given URL does not'
- 'match valid image extensions.')
- return url
- def save(self, force_insert=False, force_update=False, commit=True):
- image = super(ImageCreateForm, self).save(commit=False)
- image_url = self.cleaned_data['url']
- image_name = '{}.{}'.format(slugify(image.title),
- image_url.rsplit('.', 1)[1].lower())
- response = request.urlopen(image_url)
- image.image.save(image_name, ContentFile(response.read()), save=False)
- if commit:
- image.save()
- return image
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement