Example #1
0
    def form_valid(self, form):
        email_outbox_message, task = super(EmailMessageSendView, self).form_valid(form)

        if is_ajax(self.request):
            return HttpResponse(anyjson.dumps({'task_id': task.id}), content_type='application/json')
        else:
            return HttpResponseRedirect(self.get_success_url())
Example #2
0
    def delete(self, request, *args, **kwargs):
        """
        Overloading super().delete to remove the related models and the instance itself.
        """
        self.object = self.get_object()

        # Check this contact isn't linked to a user in an admin group.
        if has_user_in_group(self.object, 'account_admin'):
            raise Http404()

        self.object.email_addresses.remove()
        self.object.addresses.remove()
        self.object.phone_numbers.remove()
        self.object.tags.remove()

        functions = Function.objects.filter(contact=self.object)
        functions.delete()

        # Show delete message
        messages.success(self.request, _('%s (Contact) has been deleted.') % self.object.full_name())

        self.object.delete()

        redirect_url = self.get_success_url()
        if is_ajax(request):
            response = anyjson.serialize({
                'error': False,
                'redirect_url': redirect_url
            })
            return HttpResponse(response, content_type='application/json')

        return redirect(redirect_url)
Example #3
0
    def get_form(self, form_class):
        """
        Instantiate formsets for non-ajax requests.
        """
        form = super(ModelFormSetViewMixin, self).get_form(form_class)

        if not is_ajax(self.request):
            for context_name, formset_class in self.formset_classes.items():
                model = self.formset_data[context_name]['model']
                prefix = self.formset_data[context_name]['prefix']

                queryset = model._default_manager.none()
                if hasattr(self, 'get_%s_queryset' % prefix) and callable(getattr(self, 'get_%s_queryset' % prefix)):
                    queryset = getattr(self, 'get_%s_queryset' % prefix)(form.instance)
                else:
                    try:
                        queryset = getattr(form.instance, self.formset_data[context_name]['related_name']).all()
                    except:
                        pass

                formset_instance = formset_class(self.request.POST or None, queryset=queryset, prefix=prefix)

                self.add_formset_instance(context_name, formset_instance)

        return super(ModelFormSetViewMixin, self).get_form(form_class)
Example #4
0
    def dispatch(self, request, *args, **kwargs):
        # Change form and template for ajax calls
        if is_ajax(request):
            self.form_class = CreateUpdateCaseForm
            self.template_name = 'cases/case_unarchive_form.html'

        return super(UpdateAndUnarchiveCaseView, self).dispatch(request, *args, **kwargs)
Example #5
0
    def form_valid(self, form):
        email_outbox_message = super(EmailMessageReplyOrForwardView, self).form_valid(form)

        task = self.send_message(email_outbox_message)

        success_url = self.get_success_url()

        # Send and archive was pressed.
        if task and form.data.get('archive', False) == 'true':
            # An email message is archived by removing the inbox label and the provided label of the current inbox.
            current_inbox = form.data.get('current_inbox', '')

            # Filter out labels an user should not manipulate.
            remove_labels = []
            if current_inbox and current_inbox not in settings.GMAIL_LABELS_DONT_MANIPULATE:
                remove_labels.append(current_inbox)

            # Archiving email should always remove the inbox label.
            if settings.GMAIL_LABEL_INBOX not in remove_labels:
                remove_labels.append(settings.GMAIL_LABEL_INBOX)

            email_message = EmailMessage.objects.get(pk=self.object.id)
            email_message._is_archived = True
            labels_to_remove = EmailLabel.objects.filter(label_id__in=remove_labels,
                                                         account=self.object.account)
            email_message.labels.remove(*labels_to_remove)
            reindex_email_message(email_message)
            add_and_remove_labels_for_message.delay(self.object.id, remove_labels=remove_labels)

        if is_ajax(self.request):
            return HttpResponse(anyjson.dumps({'task_id': task.id}), content_type='application/json')
        else:
            return HttpResponseRedirect(success_url)
Example #6
0
    def dispatch(self, request, *args, **kwargs):
        # Change form and template for ajax calls
        if is_ajax(request):
            self.form_class = CreateUpdateDealForm
            self.template_name = 'deals/deal_unarchive_form.html'

        return super(UpdateAndUnarchiveDealView, self).dispatch(request, *args, **kwargs)
Example #7
0
    def delete(self, request, *args, **kwargs):
        """
        Overloading super().delete to check if the user who tries to delete this entry is also the
        author.
        """
        self.object = self.get_object()

        # Check if this blog entry account is written by request.user
        if self.object.author != get_current_user():
            raise Http404()

        # Show delete message
        messages.success(self.request, _('Post deleted.'))

        self.object.delete()

        if is_ajax(request):
            do_redirect = True
            url = request.META.get('HTTP_REFERER', reverse('dashboard'))

            # Return response
            return HttpResponse(anyjson.serialize({
                'error': False,
                'redirect_url': url
            }), content_type='application/json')

        return redirect(request.META.get('HTTP_REFERER', reverse('dashboard')))
Example #8
0
    def delete(self, request, *args, **kwargs):
        """
        Overloading super().delete to remove the related models and the instance itself.
        """
        self.object = self.get_object()

        # Prevents deleting an account with users and checks if the account has a user that's linked to an admin group
        if self.object.user.exists() or has_user_in_group(self.object, 'account_admin'):
            raise Http404()

        self.object.email_addresses.remove()
        self.object.addresses.remove()
        self.object.phone_numbers.remove()
        self.object.tags.remove()

        functions = Function.objects.filter(account=self.object)
        functions.delete()

        # Show delete message
        messages.success(self.request, _('%s (Account) has been deleted.') % self.object.name)

        self.object.delete()

        # TODO: check for contacts and websites ..

        redirect_url = self.get_success_url()
        if is_ajax(request):
            response = anyjson.serialize({
                'error': False,
                'redirect_url': redirect_url
            })
            return HttpResponse(response, content_type='application/json')

        return redirect(redirect_url)
Example #9
0
    def formset_valid(self, formset):
        """
        This function is called when the formset is deemed valid.
        An email is sent to all email fields which are filled in.
        If the request is done via ajax give json back with a success message, otherwise
        redirect to the success url.
        """
        protocol = self.request.is_secure() and 'https' or 'http'
        date_string = date.today().strftime('%d%m%Y')

        # Get the current site or empty string
        try:
            current_site = Site.objects.get_current()
        except Site.DoesNotExist:
            current_site = ''

        for form in formset:
            if form in formset.deleted_forms:
                continue

            first_name = form.cleaned_data.get('first_name')

            email = form.cleaned_data.get('email')
            tenant_id = self.request.user.tenant_id
            hash = sha256('%s-%s-%s-%s' % (
                tenant_id,
                email,
                date_string,
                settings.SECRET_KEY
            )).hexdigest()
            invite_link = '%s://%s%s' % (protocol, current_site, reverse_lazy('invitation_accept', kwargs={
                'tenant_id': tenant_id,
                'first_name': first_name,
                'email': email,
                'date': date_string,
                'hash': hash,
            }))

            # Email to the user
            send_templated_mail(
                template_name='invitation',
                from_email=settings.DEFAULT_FROM_EMAIL,
                recipient_list=[form.cleaned_data['email']],
                context={
                    'current_site': current_site,
                    'full_name': self.request.user.full_name,
                    'name': first_name,
                    'invite_link': invite_link,
                }
            )

            post_intercom_event(event_name='invite-sent', user_id=self.request.user.id)

        if is_ajax(self.request):
            return HttpResponse(anyjson.serialize({
                'error': False,
                'html': _('The invitations were sent successfully'),
            }), content_type='application/json')
        return HttpResponseRedirect(self.get_success_url())
Example #10
0
    def dispatch(self, request, *args, **kwargs):
        """
        For AJAX calls, use a different form and template.
        """
        if is_ajax(request):
            self.template_name_suffix = '_form_ajax'

        return super(UpdateNoteView, self).dispatch(request, *args, **kwargs)
Example #11
0
    def dispatch(self, request, *args, **kwargs):
        """
        This is a copy from HistoryListViewMixin.
        """
        if is_ajax(request):
            self.template_name = 'utils/historylist.html'

        return super(DetailAccountView, self).dispatch(request, *args, **kwargs)
Example #12
0
    def dispatch(self, request, *args, **kwargs):
        """
        For AJAX calls, use a different form and template.
        """
        if is_ajax(request):
            self.template_name_suffix = '_form_ajax'

        return super(UpdateNoteView, self).dispatch(request, *args, **kwargs)
Example #13
0
    def formset_valid(self, formset):
        """
        This function is called when the formset is deemed valid.
        An email is sent to all email fields which are filled in.
        If the request is done via ajax give json back with a success message, otherwise
        redirect to the success url.
        """
        protocol = self.request.is_secure() and 'https' or 'http'
        date_string = date.today().strftime('%d%m%Y')

        # Get the current site or empty string
        try:
            current_site = Site.objects.get_current()
        except Site.DoesNotExist:
            current_site = ''

        for form in formset:
            if form in formset.deleted_forms:
                continue

            first_name = form.cleaned_data.get('first_name')

            email = form.cleaned_data.get('email')
            tenant_id = self.request.user.tenant_id
            hash = sha256('%s-%s-%s-%s' % (tenant_id, email, date_string,
                                           settings.SECRET_KEY)).hexdigest()
            invite_link = '%s://%s%s' % (protocol, current_site,
                                         reverse_lazy(
                                             'invitation_accept',
                                             kwargs={
                                                 'tenant_id': tenant_id,
                                                 'first_name': first_name,
                                                 'email': email,
                                                 'date': date_string,
                                                 'hash': hash,
                                             }))

            # E-mail to the user
            send_templated_mail(template_name='invitation',
                                from_email=settings.DEFAULT_FROM_EMAIL,
                                recipient_list=[form.cleaned_data['email']],
                                context={
                                    'current_site': current_site,
                                    'full_name':
                                    self.request.user.get_full_name(),
                                    'name': first_name,
                                    'invite_link': invite_link,
                                })

        if is_ajax(self.request):
            return HttpResponse(anyjson.serialize({
                'error':
                False,
                'html':
                _('The invitations were sent successfully'),
            }),
                                content_type='application/json')
        return HttpResponseRedirect(self.get_success_url())
Example #14
0
    def dispatch(self, request, *args, **kwargs):
        """
        For AJAX calls, use a different form and template.
        """
        if is_ajax(request):
            self.template_name_suffix = '_form_ajax'
            self.form_class = CreateCaseQuickbuttonForm

        return super(CreateCaseView, self).dispatch(request, *args, **kwargs)
Example #15
0
 def post(self, request, *args, **kwargs):
     if not is_ajax(request):
         if request.POST.get('submit-delete', None):
             pass  # TODO: get delete url
         if request.POST.get('submit-back', None):
             success_url = self.get_success_url()  # TODO: ask if the user is sure to cancel when the form has been changed
             return redirect(success_url) if isinstance(success_url, basestring) else success_url
     # continue for other options (add or save)
     return super(DeleteBackAddSaveFormViewMixin, self).post(request, *args, **kwargs)
Example #16
0
 def delete(self, request, *args, **kwargs):
     response = super(EmailTemplateDeleteView, self).delete(request, *args, **kwargs)
     messages.success(self.request, _('%s (Email template) has been deleted.' % self.object.name))
     if is_ajax(self.request):
         return HttpResponse(anyjson.serialize({
             'error': False,
             'redirect_url': self.get_success_url()
         }), content_type='application/json')
     return response
Example #17
0
def current_site(request):
    if is_ajax(request):
        return {}

    protocol = 'https' if request.is_secure() else 'http'
    domain = Site.objects.get_current().domain
    return {
        'SITE': '%s://%s' % (protocol, domain)
    }
Example #18
0
    def form_valid(self, form):
        email_outbox_message, task = super(EmailMessageSendView,
                                           self).form_valid(form)

        if is_ajax(self.request):
            return HttpResponse(anyjson.dumps({'task_id': task.id}),
                                content_type='application/json')
        else:
            return HttpResponseRedirect(self.get_success_url())
Example #19
0
    def dispatch(self, request, *args, **kwargs):
        """
        For AJAX calls, use a different form and template.
        """
        if is_ajax(request):
            self.template_name_suffix = '_form_ajax'
            self.form_class = CreateCaseQuickbuttonForm

        return super(CreateCaseView, self).dispatch(request, *args, **kwargs)
Example #20
0
    def form_invalid(self, form):
        response = self.render_to_response(self.get_context_data(form=form))
        if is_ajax(self.request):
            response = anyjson.serialize({
                'error': True,
                'html': response.rendered_content
            })
            return HttpResponse(response, content_type='application/json')

        return response
Example #21
0
    def form_invalid(self, form):
        response = self.render_to_response(self.get_context_data(form=form))
        if is_ajax(self.request):
            response = anyjson.serialize({
                'error': True,
                'html': response.rendered_content
            })
            return HttpResponse(response, content_type='application/json')

        return response
Example #22
0
def email(request):
    """
    Add extra context variables for email.
    """
    extra_context = {}
    if not is_ajax(request) and not request.user.is_anonymous():
        extra_context.update({'email_auth_update': email_auth_update(request.user)})
        # TODO: slow queries, temporary disable unread_emails
        # extra_context.update({'unread_emails': unread_emails(request.user)})
    return extra_context
Example #23
0
    def form_invalid(self, form):
        response = super(UpdateNoteView, self).form_invalid(form)
        if is_ajax(self.request):
            response = anyjson.serialize({
                'error': True,
                'html': response.rendered_content
            })
            return HttpResponse(response, content_type='application/json')

        return response
Example #24
0
    def form_invalid(self, form):
        response = super(UpdateNoteView, self).form_invalid(form)
        if is_ajax(self.request):
            response = anyjson.serialize({
                'error': True,
                'html': response.rendered_content
            })
            return HttpResponse(response, content_type='application/json')

        return response
Example #25
0
    def formset_valid(self, formset):
        """
        This function is called when the formset is deemed valid.
        An email is sent to all email fields which are filled in.
        If the request is done via ajax give json back with a success message, otherwise
        redirect to the success url.
        """
        self.protocol = self.request.is_secure() and 'https' or 'http'
        self.account = self.request.user.account
        self.b36accountpk = int_to_base36(self.account.pk)
        self.date = date.today().strftime('%d%m%Y')

        # Get the current site or empty string
        try:
            self.current_site = Site.objects.get_current()
        except Site.DoesNotExist:
            self.current_site = ''

        for form in formset:
            if form in formset.deleted_forms:
                continue

            first_name = form.cleaned_data.get('first_name')
            email = form.cleaned_data.get('email')
            if email: # check that the email is not empty
                self.hash = sha256('%s-%s-%s-%s' % (self.account.name, email, self.date, settings.SECRET_KEY)).hexdigest()
                self.invite_link = '%s://%s%s' % (self.protocol, self.current_site, reverse_lazy('invitation_accept', kwargs={
                    'account_name': self.account.name,
                    'first_name': first_name,
                    'email': email,
                    'date': self.date,
                    'aidb36': self.b36accountpk,
                    'hash': self.hash,
                }))

                # E-mail to the user
                send_templated_mail(
                    template_name='invitation',
                    from_email=settings.DEFAULT_FROM_EMAIL,
                    recipient_list=[form.cleaned_data['email']],
                    context={
                        'current_site': self.current_site,
                        'full_name': self.request.user.contact.full_name(),
                        'name': first_name,
                        'invite_link': self.invite_link,
                        'company_name': self.account.name,
                    }
                )

        if is_ajax(self.request):
            return HttpResponse(anyjson.serialize({
                'error': False,
                'html': _('The invitations were sent successfully'),
            }), content_type='application/json')
        return HttpResponseRedirect(self.get_success_url())
Example #26
0
    def get_context_data(self, **kwargs):
        """
        Provide an url to go back to.
        """
        kwargs = super(EmailAccountUpdateView, self).get_context_data(**kwargs)
        if not is_ajax(self.request):
            kwargs.update({
                'back_url': self.get_success_url(),
            })

        return kwargs
Example #27
0
    def get_context_data(self, **kwargs):
        """
        Provide an url to go back to.
        """
        kwargs = super(CreateUpdateAccountMixin, self).get_context_data(**kwargs)
        if not is_ajax(self.request):
            kwargs.update({
                'back_url': self.get_success_url(),
            })

        return kwargs
Example #28
0
    def get_context_data(self, **kwargs):
        """
        Provide an url to go back to.
        """
        kwargs = super(CreateUpdateCaseMixin, self).get_context_data(**kwargs)
        if not is_ajax(self.request):
            kwargs.update({
                'back_url': self.get_success_url(),
            })

        return kwargs
Example #29
0
    def form_invalid(self, form):
        """
        Overloading super().form_invalid to return a different response to ajax requests.
        """
        if is_ajax(self.request):
            context = RequestContext(self.request, self.get_context_data(form=form))
            return HttpResponse(anyjson.serialize({
                'error': True,
                'html': render_to_string(self.template_name, context_instance=context)
            }), content_type='application/json')

        return super(AddAccountView, self).form_invalid(form)
Example #30
0
    def form_valid(self, form):
        email_message = super(EmailMessageDraftView, self).form_valid(form)

        if form.data.get('send_draft', False) == 'true':
            task = self.send_message(email_message)
        else:
            task = self.draft_message(email_message)

        if is_ajax(self.request):
            return HttpResponse(anyjson.dumps({'task_id': task.id}), content_type='application/json')
        else:
            return HttpResponseRedirect(self.get_success_url())
Example #31
0
    def dispatch(self, request, *args, **kwargs):
        """
        Overloading super().dispatch to change the template to be rendered for ajax requests.
        """
        # Change form and template for ajax calls or create formset instances for the normal form
        self.is_ajax = False
        if is_ajax(request):
            self.is_ajax = True
            self.form_class = AddAccountQuickbuttonForm
            self.template_name = 'accounts/account_form_ajax.html'

        return super(AddAccountView, self).dispatch(request, *args, **kwargs)
Example #32
0
 def formset_invalid(self, formset):
     """
     This function is called when the formset didn't pass validation.
     If the request is done via ajax, send back a json object with the error set to true and
     the form rendered into a string.
     """
     if is_ajax(self.request):
         context = RequestContext(self.request, self.get_context_data(formset=formset))
         return HttpResponse(anyjson.serialize({
             'error': True,
             'html': render_to_string(self.form_template_name, context)
         }), content_type='application/json')
     return self.render_to_response(self.get_context_data(formset=formset))
Example #33
0
    def form_valid(self, form):
        email_message = super(EmailMessageDraftView, self).form_valid(form)

        if form.data.get('send_draft', False) == 'true':
            task = self.send_message(email_message)
        else:
            task = self.draft_message(email_message)

        if is_ajax(self.request):
            return HttpResponse(anyjson.dumps({'task_id': task.id}),
                                content_type='application/json')
        else:
            return HttpResponseRedirect(self.get_success_url())
Example #34
0
    def form_valid(self, form):
        email_outbox_message = super(EmailMessageReplyOrForwardView, self).form_valid(form)

        task = self.send_message(email_outbox_message)

        # Send and archive was pressed, so start an archive task
        if task and form.data.get('archive', False) == 'true':
            archive_email_message.apply_async(args=(self.object.id,))

        if is_ajax(self.request):
            return HttpResponse(anyjson.dumps({'task_id': task.id}), content_type='application/json')
        else:
            return HttpResponseRedirect(self.get_success_url())
Example #35
0
    def dispatch(self, request, *args, **kwargs):
        """
        Overloading super().dispatch to change the template to be rendered for ajax requests.
        """
        # Change form and template for ajax calls or create formset instances for the normal form
        self.reply_to = None
        if kwargs.get('pk'):
            self.reply_to = get_object_or_404(BlogEntry, pk=kwargs.get('pk'))

        if is_ajax(request):
            self.template_name_suffix = '_form_ajax'
        
        return super(AddBlogEntryView, self).dispatch(request, *args, **kwargs)
Example #36
0
    def get_context_data(self, **kwargs):
        """
        Pass all formsets to the context.
        """
        kwargs = super(ModelFormSetViewMixin, self).get_context_data(**kwargs)
        if not is_ajax(self.request):  # filter formsets from ajax requests
            if not 'formsets' in kwargs:
                kwargs['formsets'] = SortedDict()

            for context_name, instance in self.formsets.items():
                kwargs['formsets'][context_name] = {'instance': instance, 'label': self.formset_data[context_name]['label'], 'template': self.formset_data[context_name]['template']}

        return kwargs
Example #37
0
    def dispatch(self, request, *args, **kwargs):
        """
        # Check if it is an DataTables AJAX call and redirect request.
        """
        self.request = request
        self.args = args
        self.kwargs = kwargs

        # Get app_name from url.
        self._app_name = resolve(request.path).app_name

        if is_ajax(request) and request.GET.get('sEcho', False):
            return self.get_ajax(request)

        return super(DataTablesListView, self).dispatch(request, *args, **kwargs)
Example #38
0
    def form_valid(self, form):
        email_outbox_message = super(EmailMessageReplyOrForwardView,
                                     self).form_valid(form)

        task = self.send_message(email_outbox_message)

        # Send and archive was pressed, so start an archive task
        if task and form.data.get('archive', False) == 'true':
            archive_email_message.apply_async(args=(self.object.id, ))

        if is_ajax(self.request):
            return HttpResponse(anyjson.dumps({'task_id': task.id}),
                                content_type='application/json')
        else:
            return HttpResponseRedirect(self.get_success_url())
Example #39
0
 def delete(self, request, *args, **kwargs):
     response = super(EmailTemplateDeleteView,
                      self).delete(request, *args, **kwargs)
     messages.success(
         self.request,
         _('%s (Email template) has been deleted.' % self.object.name))
     if is_ajax(self.request):
         return HttpResponse(anyjson.serialize({
             'error':
             False,
             'redirect_url':
             self.get_success_url()
         }),
                             content_type='application/json')
     return response
Example #40
0
    def delete(self, request, *args, **kwargs):
        self.object = self.get_object()
        self.object.delete()

        # Show delete message
        message = _('The note was successfully deleted.')
        messages.success(self.request, message)

        if is_ajax(self.request):
            response = anyjson.serialize({
                'error': False,
                'redirect_url': self.get_success_url()
            })
            return HttpResponse(response, content_type='application/json')

        return HttpResponseRedirect(self.get_success_url())
Example #41
0
    def delete(self, request, *args, **kwargs):
        self.object = self.get_object()
        self.object.delete()

        # Show delete message
        message = _('The note was successfully deleted.')
        messages.success(self.request, message)

        if is_ajax(self.request):
            response = anyjson.serialize({
                'error': False,
                'redirect_url': self.get_success_url()
            })
            return HttpResponse(response, content_type='application/json')

        return HttpResponseRedirect(self.get_success_url())
Example #42
0
    def form_valid(self, form):
        # Saves the instance
        response = super(UpdateNoteView, self).form_valid(form)

        # Show save message
        message = _('Note has been updated.')
        messages.success(self.request, message)

        if is_ajax(self.request):
            response = anyjson.serialize({
                'error': False,
                'redirect_url': self.get_success_url()
            })
            return HttpResponse(response, content_type='application/json')

        return response
Example #43
0
    def form_valid(self, form):
        # Saves the instance
        response = super(UpdateNoteView, self).form_valid(form)

        # Show save message
        message = _('Note has been updated.')
        messages.success(self.request, message)

        if is_ajax(self.request):
            response = anyjson.serialize({
                'error': False,
                'redirect_url': self.get_success_url()
            })
            return HttpResponse(response, content_type='application/json')

        return response
Example #44
0
    def delete(self, request, *args, **kwargs):
        self.object = self.get_object()
        self.object.delete()

        # Show delete message
        messages.success(self.request, _('%s (Case) has been deleted.') % self.object.subject)

        redirect_url = self.get_success_url()
        if is_ajax(request):
            response = anyjson.serialize({
                'error': False,
                'redirect_url': redirect_url
            })
            return HttpResponse(response, content_type='application/json')

        return HttpResponseRedirect(redirect_url)
Example #45
0
 def formset_invalid(self, formset):
     """
     This function is called when the formset didn't pass validation.
     If the request is done via ajax, send back a json object with the error set to true and
     the form rendered into a string.
     """
     if is_ajax(self.request):
         context = RequestContext(self.request,
                                  self.get_context_data(formset=formset))
         return HttpResponse(anyjson.serialize({
             'error':
             True,
             'html':
             render_to_string(self.form_template_name, context)
         }),
                             content_type='application/json')
     return self.render_to_response(self.get_context_data(formset=formset))
Example #46
0
    def form_valid(self, form):
        # Saves the instance
        response = super(CreateDealView, self).form_valid(form)

        # Show save message
        message = _('%s (Deal) has been created.') % self.object.name
        messages.success(self.request, message)

        if is_ajax(self.request):
            # Reload when user is in the deal list
            response = anyjson.serialize({
                'error': False,
                'redirect_url': self.get_success_url()^M
            })
            return HttpResponse(response, content_type='application/json')

        return response
Example #47
0
    def form_valid(self, form):
        # Saves the instance
        response = super(CreateCaseView, self).form_valid(form)

        # Show save message
        message = _('%s (Case) has been created.') % self.object.subject
        messages.success(self.request, message)

        if is_ajax(self.request):
            # Reload when user is in the case list
            redirect_url = None
            parse_result = urlparse(self.request.META['HTTP_REFERER'])
            if parse_result.path == reverse('case_list'):
                redirect_url = '%s?order_by=7&sort_order=desc' % reverse('case_list')

            response = anyjson.serialize({
                'error': False,
                'redirect_url': redirect_url
            })
            return HttpResponse(response, content_type='application/json')

        return response
Example #48
0
    def form_valid(self, form):
        """
        When adding a blogentry, try to automatically save the author and object being replied to.
        """
        blogentry = form.save(commit=False)
        blogentry.author = self.request.user

        if self.reply_to:
            blogentry.reply_to = self.reply_to

        blogentry.save()

        # Show success message
        messages.success(self.request, _('Post successful.'))

        if is_ajax(self.request):
            response = anyjson.serialize({
                'error': False,
                'redirect_url': reverse('dashboard')
            })
            return HttpResponse(response, content_type='application/json')

        return super(AddBlogEntryView, self).form_valid(form)
Example #49
0
    def form_valid(self, form):
        email_outbox_message = super(EmailMessageReplyOrForwardView,
                                     self).form_valid(form)

        task = self.send_message(email_outbox_message)

        success_url = self.get_success_url()

        # Send and archive was pressed.
        if task and form.data.get('archive', False) == 'true':
            # An email message is archived by removing the inbox label and the provided label of the current inbox.
            current_inbox = form.data.get('current_inbox', '')

            # Filter out labels an user should not manipulate.
            remove_labels = []
            if current_inbox and current_inbox not in settings.GMAIL_LABELS_DONT_MANIPULATE:
                remove_labels.append(current_inbox)

            # Archiving email should always remove the inbox label.
            if settings.GMAIL_LABEL_INBOX not in remove_labels:
                remove_labels.append(settings.GMAIL_LABEL_INBOX)

            email_message = EmailMessage.objects.get(pk=self.object.id)
            email_message._is_archived = True
            labels_to_remove = EmailLabel.objects.filter(
                label_id__in=remove_labels, account=self.object.account)
            email_message.labels.remove(*labels_to_remove)
            reindex_email_message(email_message)
            add_and_remove_labels_for_message.delay(
                self.object.id, remove_labels=remove_labels)

        if is_ajax(self.request):
            return HttpResponse(anyjson.dumps({'task_id': task.id}),
                                content_type='application/json')
        else:
            return HttpResponseRedirect(success_url)
Example #50
0
    def get(self, request, *args, **kwargs):
        if not is_ajax(request):
            self.template_name = 'form.html'

        return super(EmailAccountUpdateView, self).get(request, *args,
                                                       **kwargs)