forked from uncloud/uncloud
102 lines
3.1 KiB
Python
102 lines
3.1 KiB
Python
from django.contrib import admin
|
|
from django.template.response import TemplateResponse
|
|
from django.urls import path
|
|
from django.shortcuts import render
|
|
|
|
from hardcopy import bytestring_to_pdf
|
|
from django.core.files.temp import NamedTemporaryFile
|
|
from django.http import FileResponse
|
|
from django.template.loader import render_to_string
|
|
|
|
from uncloud_pay.models import *
|
|
|
|
class BillRecordInline(admin.TabularInline):
|
|
model = BillRecord
|
|
|
|
class RecurringPeriodInline(admin.TabularInline):
|
|
model = ProductToRecurringPeriod
|
|
|
|
class ProductAdmin(admin.ModelAdmin):
|
|
inlines = [ RecurringPeriodInline ]
|
|
|
|
# class BillAdmin(admin.ModelAdmin):
|
|
# inlines = [ BillRecordInline ]
|
|
|
|
# def get_urls(self):
|
|
# """
|
|
# Create URLs for PDF view
|
|
# """
|
|
|
|
# info = "%s_%s" % (self.model._meta.app_label, self.model._meta.model_name)
|
|
# pat = lambda regex, fn: url(regex, self.admin_site.admin_view(fn), name='%s_%s' % (info, fn.__name__))
|
|
|
|
# url_patterns = [
|
|
# pat(r'^([0-9]+)/as_pdf/$', self.as_pdf),
|
|
# pat(r'^([0-9]+)/as_html/$', self.as_html),
|
|
# ] + super().get_urls()
|
|
|
|
# return url_patterns
|
|
|
|
# def as_pdf(self, request, object_id):
|
|
# bill = self.get_object(request, object_id=object_id)
|
|
# print(bill)
|
|
|
|
# if bill is None:
|
|
# raise self._get_404_exception(object_id)
|
|
|
|
# output_file = NamedTemporaryFile()
|
|
# bill_html = render_to_string(
|
|
# "uncloud_pay/bill.html.j2",
|
|
# {
|
|
# 'bill': bill,
|
|
# 'bill_records': bill.bill_records.all()
|
|
# }
|
|
# )
|
|
|
|
# bytestring_to_pdf(bill_html.encode('utf-8'), output_file)
|
|
# response = FileResponse(output_file, content_type="application/pdf")
|
|
# response['Content-Disposition'] = f'filename="bill_{bill}.pdf"'
|
|
|
|
# return response
|
|
|
|
# def as_html(self, request, object_id):
|
|
# bill = self.get_object(request, object_id=object_id)
|
|
|
|
# if bill is None:
|
|
# raise self._get_404_exception(object_id)
|
|
|
|
# return render(request, 'uncloud_pay/bill.html.j2',
|
|
# {'bill': bill,
|
|
# 'bill_records': bill.bill_records.all()
|
|
# })
|
|
|
|
|
|
# bill_html = render_to_string("bill.html.j2", {'bill': bill,
|
|
# 'bill_records': bill.bill_records.all()
|
|
# })
|
|
|
|
# bytestring_to_pdf(bill_html.encode('utf-8'), output_file)
|
|
# response = FileResponse(output_file, content_type="application/pdf")
|
|
|
|
# response['Content-Disposition'] = f'filename="bill_{bill}.pdf"'
|
|
|
|
# return HttpResponse(template.render(context, request))
|
|
# return response
|
|
|
|
|
|
#admin.site.register(Bill, BillAdmin)
|
|
admin.site.register(Product, ProductAdmin)
|
|
|
|
for m in [
|
|
BillingAddress,
|
|
Order,
|
|
BillRecord,
|
|
Payment,
|
|
ProductToRecurringPeriod,
|
|
RecurringPeriod,
|
|
StripeCreditCard,
|
|
StripeCustomer,
|
|
PricingPlan,
|
|
VATRate
|
|
]:
|
|
admin.site.register(m)
|