Skip to content

Commit

Permalink
Factorized views
Browse files Browse the repository at this point in the history
  • Loading branch information
gpichot committed Aug 19, 2015
1 parent 0e58bf4 commit 0571752
Showing 1 changed file with 34 additions and 55 deletions.
89 changes: 34 additions & 55 deletions paiji2_shoutbox/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,80 +28,59 @@ def get_queryset(self):
)


class NoteCreateView(generic.CreateView):
model = Note
fields = ('message', )
message_create = _(
"""Your note has been added to the board, """
"""it will be displayed in a moment"""
)
template_name = 'shoutbox/message/form.html'

def form_valid(self, form):
form.instance.author = self.request.user
return super(NoteCreateView, self).form_valid(form)
class MessageRedirect(object):
message_success = None

def get_success_url(self):
messages.success(
self.request,
self.message_create,
)
if self.message_success is not None:
messages.success(
self.request,
self.message_success,
)
success_url = self.request.POST.get('next', None)
if success_url is not None:
return success_url
else:
return reverse(settings.REDIRECT_URL)


# TODO: factorize check
class NoteEditView(generic.UpdateView):
model = Note
fields = ('message', )
template_name = 'shoutbox/message/form.html'

class OwnershipCheck(object):
def dispatch(self, request, *args, **kwargs):
""" Making sure that only authors can update notes """
obj = self.get_object()
if obj.author != self.request.user:
return HttpResponseNotFound(
_('Rezo is not hacked. You don\'t have the permission xD')
)
return super(NoteEditView, self).dispatch(request, *args, **kwargs)
return super(OwnershipCheck, self).dispatch(request, *args, **kwargs)

def get_success_url(self):
messages.success(
self.request,
_('Your note has been updated, it will be refreshed in a moment'),
)
success_url = self.request.POST.get('next', None)
if success_url is not None:
return success_url
else:
return reverse(settings.REDIRECT_URL)

class NoteCreateView(MessageRedirect, generic.CreateView):
model = Note
fields = ('message', )
message_success = _(
"""Your note has been added to the board, """
"""it will be displayed in a moment"""
)
template_name = 'shoutbox/message/form.html'

def form_valid(self, form):
form.instance.author = self.request.user
return super(NoteCreateView, self).form_valid(form)


class NoteDeleteView(generic.DeleteView):
class NoteEditView(MessageRedirect, OwnershipCheck, generic.UpdateView):
model = Note
template_name = 'shoutbox/note_confirm_delete.html'
fields = ('message', )
template_name = 'shoutbox/message/form.html'
message_success = _(
'Your note has been updated, it will be refreshed in a moment'
)

def dispatch(self, request, *args, **kwargs):
""" Making sure that only authors can update notes """
obj = self.get_object()
if obj.author != self.request.user:
return HttpResponseNotFound(
_('Rezo is not hacked. You don\'t have the permission xD')
)
return super(NoteDeleteView, self).dispatch(
request, *args, **kwargs
)

def get_success_url(self):
messages.success(
self.request,
_('Your note has been removed, it will be refreshed in a moment'),
)
success_url = self.request.POST.get('next', None)
if success_url is not None:
return success_url
else:
return reverse(settings.REDIRECT_URL)
class NoteDeleteView(MessageRedirect, OwnershipCheck, generic.DeleteView):
model = Note
template_name = 'shoutbox/note_confirm_delete.html'
message_success = _(
'Your note has been removed, it will be refreshed in a moment'
)

0 comments on commit 0571752

Please sign in to comment.