Merge branch 'master' into 8393/show-SCA
This commit is contained in:
commit
e522ac0f61
4 changed files with 30 additions and 21 deletions
|
@ -1,3 +1,6 @@
|
||||||
|
2.13: 2020-12-02
|
||||||
|
* 8654: Fix 500 error on invoices list for the user contact+devuanhosting.com@virus.media (MR!742)
|
||||||
|
* 8593: Escape user's ssh key in xml-rpc call to create VM (MR!741)
|
||||||
2.12.1: 2020-07-21
|
2.12.1: 2020-07-21
|
||||||
* 8307: Introduce "Exclude vat calculations" for Generic Products (MR!740)
|
* 8307: Introduce "Exclude vat calculations" for Generic Products (MR!740)
|
||||||
* Change DE VAT rate to 16% from 19% (MR!739)
|
* Change DE VAT rate to 16% from 19% (MR!739)
|
||||||
|
|
|
@ -72,25 +72,29 @@ def get_line_item_from_hosting_order_charge(hosting_order_id):
|
||||||
:param hosting_order_id: the HostingOrder id
|
:param hosting_order_id: the HostingOrder id
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
hosting_order = HostingOrder.objects.get(id = hosting_order_id)
|
try:
|
||||||
if hosting_order.stripe_charge_id:
|
hosting_order = HostingOrder.objects.get(id = hosting_order_id)
|
||||||
return mark_safe("""
|
if hosting_order.stripe_charge_id:
|
||||||
<td class="xs-td-inline">{product_name}</td>
|
return mark_safe("""
|
||||||
<td class="xs-td-inline">{created_at}</td>
|
<td class="xs-td-inline">{product_name}</td>
|
||||||
<td class="xs-td-inline">{total}</td>
|
<td class="xs-td-inline">{created_at}</td>
|
||||||
<td class="text-right last-td">
|
<td class="xs-td-inline">{total}</td>
|
||||||
<a class="btn btn-order-detail" href="{receipt_url}" target="_blank">{see_invoice_text}</a>
|
<td class="text-right last-td">
|
||||||
</td>
|
<a class="btn btn-order-detail" href="{receipt_url}" target="_blank">{see_invoice_text}</a>
|
||||||
""".format(
|
</td>
|
||||||
product_name=hosting_order.generic_product.product_name.capitalize(),
|
""".format(
|
||||||
created_at=hosting_order.created_at.strftime('%Y-%m-%d'),
|
product_name=hosting_order.generic_product.product_name.capitalize(),
|
||||||
total='%.2f' % (hosting_order.price),
|
created_at=hosting_order.created_at.strftime('%Y-%m-%d'),
|
||||||
receipt_url=reverse('hosting:orders',
|
total='%.2f' % (hosting_order.price),
|
||||||
kwargs={'pk': hosting_order.id}),
|
receipt_url=reverse('hosting:orders',
|
||||||
|
kwargs={'pk': hosting_order.id}),
|
||||||
|
|
||||||
see_invoice_text=_("See Invoice")
|
see_invoice_text=_("See Invoice")
|
||||||
))
|
))
|
||||||
else:
|
else:
|
||||||
|
return ""
|
||||||
|
except Exception as ex:
|
||||||
|
logger.error("Error %s" % str(ex))
|
||||||
return ""
|
return ""
|
||||||
|
|
||||||
|
|
||||||
|
@ -110,7 +114,7 @@ def get_line_item_from_stripe_invoice(invoice):
|
||||||
plan_name = ""
|
plan_name = ""
|
||||||
for line_data in invoice["lines"]["data"]:
|
for line_data in invoice["lines"]["data"]:
|
||||||
if is_first:
|
if is_first:
|
||||||
plan_name = line_data.plan.name
|
plan_name = line_data.plan.name if line_data.plan is not None else ""
|
||||||
start_date = line_data.period.start
|
start_date = line_data.period.start
|
||||||
end_date = line_data.period.end
|
end_date = line_data.period.end
|
||||||
is_first = False
|
is_first = False
|
||||||
|
|
|
@ -2,6 +2,7 @@ import datetime
|
||||||
import logging
|
import logging
|
||||||
import subprocess
|
import subprocess
|
||||||
import tempfile
|
import tempfile
|
||||||
|
import xml
|
||||||
|
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
@ -207,7 +208,7 @@ class UserHostingKeyForm(forms.ModelForm):
|
||||||
logger.debug(
|
logger.debug(
|
||||||
"Not a correct ssh format {error}".format(error=str(cpe)))
|
"Not a correct ssh format {error}".format(error=str(cpe)))
|
||||||
raise forms.ValidationError(KEY_ERROR_MESSAGE)
|
raise forms.ValidationError(KEY_ERROR_MESSAGE)
|
||||||
return openssh_pubkey_str
|
return xml.sax.saxutils.escape(openssh_pubkey_str)
|
||||||
|
|
||||||
def clean_name(self):
|
def clean_name(self):
|
||||||
INVALID_NAME_MESSAGE = _("Comma not accepted in the name of the key")
|
INVALID_NAME_MESSAGE = _("Comma not accepted in the name of the key")
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import logging
|
import logging
|
||||||
import uuid
|
import uuid
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
from urllib.parse import quote
|
||||||
from time import sleep
|
from time import sleep
|
||||||
|
|
||||||
import stripe
|
import stripe
|
||||||
|
@ -1313,7 +1314,7 @@ class InvoiceListView(LoginRequiredMixin, TemplateView):
|
||||||
if ('user_email' in self.request.GET
|
if ('user_email' in self.request.GET
|
||||||
and self.request.user.email == settings.ADMIN_EMAIL):
|
and self.request.user.email == settings.ADMIN_EMAIL):
|
||||||
user_email = self.request.GET['user_email']
|
user_email = self.request.GET['user_email']
|
||||||
context['user_email'] = user_email
|
context['user_email'] = '%s' % quote(user_email)
|
||||||
logger.debug(
|
logger.debug(
|
||||||
"user_email = {}".format(user_email)
|
"user_email = {}".format(user_email)
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in a new issue