Advertisement
Guest User

view and forms

a guest
Feb 16th, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.32 KB | None | 0 0
  1. view.py
  2.  
  3. from django.shortcuts import render, redirect
  4. from django.contrib.auth.decorators import login_required
  5. from django.contrib import messages
  6. from .forms import ImageCreateForm
  7.  
  8.  
  9. @login_required
  10. def image_create(request):
  11. if request.method == 'POST':
  12. # form is sent
  13. form = ImageCreateForm(data=request.POST)
  14. if form.is_valid():
  15. # form data is valid
  16. cd = form.cleaned_data
  17. new_item = form.save(commit=False)
  18. # assign current user to the item
  19. new_item.user = request.user
  20. new_item.save()
  21. messages.success(request, 'Image added successfully')
  22. # redirect to new created item detail view
  23. return redirect(new_item.get_absolute_url())
  24. else:
  25. # build form with data provided by the bookmarklet via GET
  26. form = ImageCreateForm(data=request.GET)
  27. return render(request,
  28. 'images/image/create.html',
  29. {'section': 'images',
  30. 'form': form})
  31.  
  32. forms.py
  33.  
  34. from django import forms
  35. from .models import Image
  36. from urllib import request
  37. from django.core.files.base import ContentFile
  38. from django.utils.text import slugify
  39.  
  40. class ImageCreateForm(forms.ModelForm):
  41. class Meta:
  42. model = Image
  43. fields = ('title', 'url', 'description' )
  44. widgets = {
  45. 'url': forms.HiddenInput,
  46. }
  47. def clean_url(self):
  48. url = self.cleaned_data['url']
  49. valid_extensions = ['jpg', 'jpeg']
  50. extension = url.rsplit('.', 1)[1].lower()
  51. if extension not in valid_extensions:
  52. raise forms.ValidationError('The given URL does not'
  53. 'match valid image extensions.')
  54. return url
  55.  
  56. def save(self, force_insert=False, force_update=False, commit=True):
  57. image = super(ImageCreateForm, self).save(commit=False)
  58. image_url = self.cleaned_data['url']
  59. image_name = '{}.{}'.format(slugify(image.title),
  60. image_url.rsplit('.', 1)[1].lower())
  61. response = request.urlopen(image_url)
  62. image.image.save(image_name, ContentFile(response.read()), save=False)
  63. if commit:
  64. image.save()
  65. return image
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement