code: def delete(request, message_id, success_url=None):
      
      user = request.user
      now = timezone.now()
      message = get_object_or_404(Message, id=message_id)
      deleted = False
      if success_url is None:
          success_url = reverse('messages_inbox')
      if 'next' in request.GET:
          success_url = request.GET['next']
      if message.sender == user:
          message.sender_deleted_at = now
          deleted = True
      if message.recipient == user:
          message.recipient_deleted_at = now
          deleted = True
      if deleted:
          message.save()
          messages.info(request, _(u"Message successfully deleted."))
          if notification:
              notification.send([user], "messages_deleted", {'message': message,})
          return HttpResponseRedirect(success_url)
      raise Http404
docs: Marks a message as deleted by sender or recipient. The message is not
      really removed from the database, because two users must delete a message
      before it's save to remove it completely.
      A cron-job should prune the database and remove old messages which are
      deleted by both users.
      As a side effect, this makes it easy to implement a trash with undelete.
  
      You can pass ?next=/foo/bar/ via the url to redirect the user to a different
      page (e.g. `/foo/bar/`) than ``success_url`` after deletion of the message.