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(), })
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(), })
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)
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)
def parent_pages(self): return [{ 'title': SubscriptionInterface.name, 'url': SubscriptionInterface.get_url(), }]
def parent_pages(self): return [{"title": SubscriptionInterface.name, "url": SubscriptionInterface.get_url()}]
def parent_pages(self): return [{ 'title': SubscriptionInterface.name, 'url': SubscriptionInterface.get_url(), }]