def edit_message_for_model(request, model, object_slug, thread_id, message_id, template='blmessage/form_message.html'): """ Edit message inside thread """ model = get_model(*model.split('.')) model_object = get_object_or_404(model, slug=object_slug, members=request.user) ctype = ContentType.objects.get_for_model(model_object) thread = get_object_or_404(Thread, pk=thread_id) if isinstance(model_object, Group): redirect_reverse = 'group-thread-detail' extra_context = {'group': model_object} elif isinstance(model_object, Project): redirect_reverse = 'project-thread-detail' extra_context = {'project': model_object} instance_data = Message.objects.get(pk=message_id, author=request.user) data = {'body': instance_data.body, } form = MessageForm(request.POST or None, instance=instance_data, initial=data) if request.method == "POST" and form.is_valid(): message = form.save(thread, request.user) message.create_activity(request.user, Activity.UPDATE) # Notification request.user.message_set.create(message=_("Your message has been updated")) return HttpResponseRedirect(reverse(redirect_reverse, kwargs={'object_slug': object_slug, 'thread_id': thread.id})) extra_context['form'] = form return direct_to_template(request, template=template, extra_context=extra_context)
def edit_message(request, thread_id, message_id): """ Edit selected message """ thread = get_object_or_404(Thread, pk=thread_id) form = MessageForm(request.POST or None, instance=message_id and Message.objects.get(pk=message_id, author=request.user)) if request.method == "POST" and form.is_valid(): message = form.save(thread, request.user) # Notification request.user.message_set.create(message=_("Your message has been updated")) return HttpResponseRedirect(reverse('message-detail', kwargs={'thread_id': thread.id})) return direct_to_template(request, template='blmessage/form_message.html', extra_context={'form': form})
def detail_for_model(request, model, object_slug, thread_id, template='blmessage/list_message_model.html'): model = get_model(*model.split('.')) ctype = ContentType.objects.get_for_model(model) model_object = get_object_or_404(model, slug__iexact=object_slug, members=request.user) if isinstance(model_object, Group): redirect_reverse = 'group-thread-detail' extra_context = {'group': model_object} elif isinstance(model_object, Project): redirect_reverse = 'project-thread-detail' extra_context = {'project': model_object} thread = get_object_or_404(Thread, pk=thread_id) thread.seen_by.add(request.user) thread.save() form = MessageForm(request.POST or None) if request.method == "POST" and form.is_valid(): message = form.save(thread, request.user) thread.create_activity(request.user, Activity.COMMENT) # Notification request.user.message_set.create(message=_("Your message has been posted")) return HttpResponseRedirect(reverse(redirect_reverse, kwargs = {'object_slug': object_slug, 'thread_id': thread_id })) extra_context['thread'] = thread extra_context['form'] = form return list_detail.object_list(request, queryset=thread.messages.all(), paginate_by=10, template_name=template, template_object_name='message', extra_context=extra_context)
def detail(request, thread_id): """ Detail page of the thread """ thread = get_object_or_404(Thread, pk=thread_id) model = thread.content_type.model_class() object = get_object_or_404(model, members=request.user, id=thread.object_id) form = MessageForm(request.POST or None) if request.method == "POST" and form.is_valid(): message = form.save(thread, request.user) message.create_activity(request.user, Activity.COMMENT) return HttpResponseRedirect(reverse('message-detail', kwargs = {'thread_id': thread_id })) return direct_to_template(request, template='blmessage/detail.html', extra_context={'thread': thread, 'form': form, 'object': object, 'model': model._meta.verbose_name})