Exemplo n.º 1
0
def weekly_digest():
    today = datetime.date.today()
    in_forty_days = today + datetime.timedelta(days=40)

    from corehq.apps.accounting.interface import SubscriptionInterface
    request = HttpRequest()
    params = urlencode((
        ('report_filter_end_date_use_filter', 'on'),
        ('end_date_startdate', today.isoformat()),
        ('end_date_enddate', in_forty_days.isoformat()),
        ('active_status', 'Active'),
        (filters.TrialStatusFilter.slug, filters.TrialStatusFilter.NON_TRIAL),
    ))
    request.GET = QueryDict(params)
    request.couch_user = FakeUser(
        domain="hqadmin",
        username="******",
    )
    subs = SubscriptionInterface(request)
    subs.is_rendered_as_email = True

    email_context = {
        'today': today.isoformat(),
        'forty_days': in_forty_days.isoformat(),
    }
    email_content = render_to_string(
        'accounting/digest_email.html', email_context)
    email_content_plaintext = render_to_string(
        'accounting/digest_email.txt', email_context)

    format_dict = Format.FORMAT_DICT[Format.CSV]
    excel_attachment = {
        'title': 'Subscriptions_%(start)s_%(end)s.csv' % {
            'start': today.isoformat(),
            'end': in_forty_days.isoformat(),
        },
        'mimetype': format_dict['mimetype'],
        'file_obj': subs.excel_response,
    }
    from_email = "Dimagi Accounting <%s>" % settings.DEFAULT_FROM_EMAIL
    send_HTML_email(
        "Subscriptions ending in 40 Days from %s" % today.isoformat(),
        settings.INVOICING_CONTACT_EMAIL,
        email_content,
        email_from=from_email,
        text_content=email_content_plaintext,
        file_attachments=[excel_attachment],
    )

    logger.info(
        "[BILLING] Sent summary of ending subscriptions from %(today)s" % {
            'today': today.isoformat(),
        })
Exemplo n.º 2
0
def weekly_digest():
    today = datetime.date.today()
    in_forty_days = today + datetime.timedelta(days=40)

    from corehq.apps.accounting.interface import SubscriptionInterface
    request = HttpRequest()
    params = urlencode((
        ('report_filter_end_date_use_filter', 'on'),
        ('end_date_startdate', today.isoformat()),
        ('end_date_enddate', in_forty_days.isoformat()),
        ('active_status', 'Active'),
        (filters.TrialStatusFilter.slug, filters.TrialStatusFilter.NON_TRIAL),
    ))
    request.GET = QueryDict(params)
    request.couch_user = FakeUser(
        domain="hqadmin",
        username="******",
    )
    subs = SubscriptionInterface(request)
    subs.is_rendered_as_email = True

    email_context = {
        'today': today.isoformat(),
        'forty_days': in_forty_days.isoformat(),
    }
    email_content = render_to_string('accounting/digest_email.html',
                                     email_context)
    email_content_plaintext = render_to_string('accounting/digest_email.txt',
                                               email_context)

    format_dict = Format.FORMAT_DICT[Format.CSV]
    excel_attachment = {
        'title': 'Subscriptions_%(start)s_%(end)s.csv' % {
            'start': today.isoformat(),
            'end': in_forty_days.isoformat(),
        },
        'mimetype': format_dict['mimetype'],
        'file_obj': subs.excel_response,
    }
    from_email = "Dimagi Accounting <%s>" % settings.DEFAULT_FROM_EMAIL
    send_HTML_email(
        "Subscriptions ending in 40 Days from %s" % today.isoformat(),
        settings.INVOICING_CONTACT_EMAIL,
        email_content,
        email_from=from_email,
        text_content=email_content_plaintext,
        file_attachments=[excel_attachment],
    )

    logger.info(
        "[BILLING] Sent summary of ending subscriptions from %(today)s" % {
            'today': today.isoformat(),
        })
Exemplo n.º 3
0
 def post(self, request, *args, **kwargs):
     if self.async_response is not None:
         return self.async_response
     if 'set_subscription' in self.request.POST and self.subscription_form.is_valid(
     ):
         try:
             self.subscription_form.update_subscription()
             messages.success(request, "The subscription has been updated.")
         except Exception as e:
             messages.error(request,
                            "Could not update subscription due to: %s" % e)
         return HttpResponseRedirect(self.page_url)
     elif 'adjust' in self.request.POST and self.credit_form.is_valid():
         if self.credit_form.adjust_credit(web_user=request.user.username):
             return HttpResponseRedirect(self.page_url)
     elif ('cancel_subscription' in self.request.POST
           and self.cancel_form.is_valid()):
         self.cancel_subscription()
         messages.success(request, "The subscription has been cancelled.")
     elif SuppressSubscriptionForm.submit_kwarg in self.request.POST and self.suppress_form.is_valid(
     ):
         self.suppress_subscription()
         return HttpResponseRedirect(SubscriptionInterface.get_url())
     elif ('subscription_change_note' in self.request.POST
           and self.change_subscription_form.is_valid()):
         try:
             new_sub = self.change_subscription_form.change_subscription()
             return HttpResponseRedirect(
                 reverse(self.urlname, args=[new_sub.id]))
         except Exception as e:
             messages.error(request,
                            "Could not change subscription due to: %s" % e)
     return self.get(request, *args, **kwargs)
Exemplo n.º 4
0
 def post(self, request, *args, **kwargs):
     if self.async_response is not None:
         return self.async_response
     if 'set_subscription' in self.request.POST and self.subscription_form.is_valid():
         try:
             self.subscription_form.update_subscription()
             messages.success(request, "The subscription has been updated.")
         except Exception as e:
             messages.error(request,
                            "Could not update subscription due to: %s" % e)
         return HttpResponseRedirect(self.page_url)
     elif 'adjust' in self.request.POST and self.credit_form.is_valid():
         if self.credit_form.adjust_credit(web_user=request.user.username):
             return HttpResponseRedirect(self.page_url)
     elif ('cancel_subscription' in self.request.POST
           and self.cancel_form.is_valid()):
         self.cancel_subscription()
         messages.success(request, "The subscription has been cancelled.")
     elif SuppressSubscriptionForm.submit_kwarg in self.request.POST and self.suppress_form.is_valid():
         self.suppress_subscription()
         return HttpResponseRedirect(SubscriptionInterface.get_url())
     elif ('subscription_change_note' in self.request.POST
           and self.change_subscription_form.is_valid()
     ):
         try:
             new_sub = self.change_subscription_form.change_subscription()
             return HttpResponseRedirect(reverse(self.urlname, args=[new_sub.id]))
         except Exception as e:
             messages.error(request,
                            "Could not change subscription due to: %s" % e)
     return self.get(request, *args, **kwargs)
Exemplo n.º 5
0
 def parent_pages(self):
     return [{
         'title': SubscriptionInterface.name,
         'url': SubscriptionInterface.get_url(),
     }]
Exemplo n.º 6
0
 def parent_pages(self):
     return [{"title": SubscriptionInterface.name, "url": SubscriptionInterface.get_url()}]
Exemplo n.º 7
0
 def parent_pages(self):
     return [{
         'title': SubscriptionInterface.name,
         'url': SubscriptionInterface.get_url(),
     }]