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…
	
	Add table
		Add a link
		
	
		Reference in a new issue