mirror of
https://github.com/pinry/pinry.git
synced 2025-11-14 17:05:50 +01:00
Rewrite new_pin into a Class Based View
This commit is contained in:
@@ -1,15 +1,15 @@
|
|||||||
from django import forms
|
from django import forms
|
||||||
|
|
||||||
from taggit.forms import TagField
|
|
||||||
|
|
||||||
from .models import Pin
|
from .models import Pin
|
||||||
|
|
||||||
|
|
||||||
class PinForm(forms.Form):
|
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)
|
||||||
description = forms.CharField(label='Description', required=False, widget=forms.Textarea)
|
|
||||||
tags = TagField()
|
class Meta:
|
||||||
|
model = Pin
|
||||||
|
fields = ['url', 'description', 'tags']
|
||||||
|
|
||||||
def check_if_image(self, data):
|
def check_if_image(self, data):
|
||||||
# Test file type
|
# Test file type
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
from django.conf.urls import patterns, url
|
from django.conf.urls import patterns, url
|
||||||
|
|
||||||
|
from .views import RecentPins
|
||||||
|
from .views import NewPin
|
||||||
|
|
||||||
|
|
||||||
urlpatterns = patterns('pinry.pins.views',
|
urlpatterns = patterns('pinry.pins.views',
|
||||||
url(r'^$', 'recent_pins', name='recent-pins'),
|
url(r'^$', RecentPins.as_view(), name='recent-pins'),
|
||||||
url(r'^tag/.+/$', 'recent_pins', name='tag'),
|
url(r'^tag/.+/$', RecentPins.as_view(), name='tag'),
|
||||||
url(r'^new-pin/$', 'new_pin', name='new-pin'),
|
url(r'^new-pin/$', NewPin.as_view(), name='new-pin'),
|
||||||
url(r'^delete-pin/(?P<pin_id>\d+)/$', 'delete_pin', name='delete-pin'),
|
url(r'^delete-pin/(?P<pin_id>\d+)/$', 'delete_pin', name='delete-pin'),
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,33 +1,34 @@
|
|||||||
from django.template.response import TemplateResponse
|
|
||||||
from django.http import HttpResponseRedirect
|
from django.http import HttpResponseRedirect
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
|
from django.utils.functional import lazy
|
||||||
|
from django.views.generic.base import TemplateView
|
||||||
|
from django.views.generic import CreateView
|
||||||
|
|
||||||
from .forms import PinForm
|
from .forms import PinForm
|
||||||
from .models import Pin
|
from .models import Pin
|
||||||
|
|
||||||
|
|
||||||
def recent_pins(request):
|
reverse_lazy = lambda name=None, *args : lazy(reverse, str)(name, args=args)
|
||||||
return TemplateResponse(request, 'pins/recent_pins.html', None)
|
|
||||||
|
|
||||||
|
|
||||||
def new_pin(request):
|
class RecentPins(TemplateView):
|
||||||
if request.method == 'POST':
|
template_name = 'pins/recent_pins.html'
|
||||||
form = PinForm(request.POST, request.FILES)
|
|
||||||
if form.is_valid():
|
|
||||||
pin = Pin.objects.create(url=form.cleaned_data['url'], submitter=request.user,
|
class NewPin(CreateView):
|
||||||
description=form.cleaned_data['description'])
|
model = Pin
|
||||||
pin.tags.add(*form.cleaned_data['tags'])
|
form_class = PinForm
|
||||||
messages.success(request, 'New pin successfully added.')
|
success_url = reverse_lazy('pins:recent-pins')
|
||||||
return HttpResponseRedirect(reverse('pins:recent-pins'))
|
|
||||||
else:
|
def form_valid(self, form):
|
||||||
messages.error(request, 'Pin did not pass validation!')
|
form.instance.submitter = self.request.user
|
||||||
else:
|
messages.success(self.request, 'New pin successfully added.')
|
||||||
form = PinForm()
|
return super(NewPin, self).form_valid(form)
|
||||||
context = {
|
|
||||||
'form': form,
|
def form_invalid(self, form):
|
||||||
}
|
messages.error(self.request, 'Pin did not pass validation!')
|
||||||
return TemplateResponse(request, 'pins/new_pin.html', context)
|
return super(NewPin, self).form_invalid(form)
|
||||||
|
|
||||||
|
|
||||||
def delete_pin(request, pin_id):
|
def delete_pin(request, pin_id):
|
||||||
|
|||||||
Reference in New Issue
Block a user