Merge pull request #478 from pcoder/task/3484/email_refactoring
Task/3484/email refactoring
This commit is contained in:
commit
821f854fc9
23 changed files with 1413 additions and 904 deletions
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2017-09-02 03:08+0530\n"
|
"POT-Creation-Date: 2017-09-03 16:44+0000\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -102,8 +102,11 @@ msgstr ""
|
||||||
msgid "SUBMIT"
|
msgid "SUBMIT"
|
||||||
msgstr "ABSENDEN"
|
msgstr "ABSENDEN"
|
||||||
|
|
||||||
|
msgid "Your Data Center Light Team"
|
||||||
|
msgstr "Dein Data Center Light Team"
|
||||||
|
|
||||||
msgid "Thank you for your request."
|
msgid "Thank you for your request."
|
||||||
msgstr "Vielen Dank für Ihre Anfrage."
|
msgstr "Vielen Dank für Deine Anfrage."
|
||||||
|
|
||||||
msgid "You are one step away from being our beta tester!"
|
msgid "You are one step away from being our beta tester!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -125,47 +128,35 @@ msgstr ""
|
||||||
msgid "Thank you!"
|
msgid "Thank you!"
|
||||||
msgstr "Vielen Dank!"
|
msgstr "Vielen Dank!"
|
||||||
|
|
||||||
msgid "account activation"
|
msgid "Account Activation"
|
||||||
msgstr "Accountaktivierung"
|
msgstr "Account Aktivierung"
|
||||||
|
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\n"
|
"\n"
|
||||||
" You can activate your %(dcl_text)s account by <a href="
|
"You can activate your Data Center Light account by <a href=\"%(base_url)s"
|
||||||
"\"%(base_url)s%(activation_link)s\">clicking here</a>.<br/><br/>\n"
|
"%(activation_link)s\">clicking here</a>.<br/>\n"
|
||||||
" You can also copy and paste the following link into the "
|
"You can also copy and paste the following link into the address bar of your "
|
||||||
"address bar of your browser and follow the link in order to activate your "
|
"browser<br/>\n"
|
||||||
"datacenterlight account.<br/>\n"
|
"to activate your Data Center Light account.<br/>\n"
|
||||||
" %(base_url)s%(activation_link)s\n"
|
"%(base_url)s%(activation_link)s\n"
|
||||||
" "
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"\n"
|
"\n"
|
||||||
" <a href=\"%(base_url)s%(activation_link)s\">Klicke hier</a> "
|
"<a href=\"%(base_url)s%(activation_link)s\">Klicke hier</a> um deinen Data "
|
||||||
"um deinen %(dcl_text)s zu aktivieren.<br/><br/>\n"
|
"Center Light Account zu aktivieren oder kopiere den folgenden Link in die "
|
||||||
" Oder kopiere den folgenden Link in die Adressleiste deines "
|
"Adressleiste deines Browsers.<br/>\n"
|
||||||
"Browsers und folge dann dem Link um deinen %(dcl_text)s Account zu "
|
"%(base_url)s%(activation_link)s\n"
|
||||||
"aktivieren.<br/>\n"
|
|
||||||
" %(base_url)s%(activation_link)s\n"
|
|
||||||
" "
|
|
||||||
|
|
||||||
msgid "Your"
|
|
||||||
msgstr "Dein"
|
|
||||||
|
|
||||||
msgid "team"
|
|
||||||
msgstr "Team"
|
|
||||||
|
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\n"
|
"You can activate your Data Center Light account by clicking here.\n"
|
||||||
"Hi,\n"
|
"You can also copy and paste the following link into the address bar of your "
|
||||||
"\n"
|
"browser\n"
|
||||||
"You can activate your %(dcl_text)s account by clicking here %(base_url)s"
|
"to activate your Data Center Light account.\n"
|
||||||
"%(activation_link)s\n"
|
"%(base_url)s%(activation_link)s\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"\n"
|
"Klicke hier, um deinen Data Center Light Account zu aktivieren oder kopiere "
|
||||||
"Hallo,\n"
|
"den folgenden Link in die Adressleiste deines Browsers.\n"
|
||||||
"\n"
|
|
||||||
"Du kannst deinen %(dcl_text)s Account aktivieren, indem du hier klickst "
|
|
||||||
"%(base_url)s%(activation_link)s\n"
|
"%(base_url)s%(activation_link)s\n"
|
||||||
|
|
||||||
msgid "Home"
|
msgid "Home"
|
||||||
|
@ -481,6 +472,25 @@ msgstr "ist kein gültiger Name"
|
||||||
msgid "is not a proper email"
|
msgid "is not a proper email"
|
||||||
msgstr "ist keine gültige E-Mailadresse"
|
msgstr "ist keine gültige E-Mailadresse"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Hi,\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "You can activate your %(dcl_text)s account by clicking here %(base_url)s"
|
||||||
|
#~ "%(activation_link)s\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Hallo,\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Du kannst deinen %(dcl_text)s Account aktivieren, indem du hier klickst "
|
||||||
|
#~ "%(base_url)s%(activation_link)s\n"
|
||||||
|
|
||||||
|
#~ msgid "Your"
|
||||||
|
#~ msgstr "Dein"
|
||||||
|
|
||||||
|
#~ msgid "team"
|
||||||
|
#~ msgstr "Team"
|
||||||
|
|
||||||
#~ msgid "Questions?"
|
#~ msgid "Questions?"
|
||||||
#~ msgstr "Fragen?"
|
#~ msgstr "Fragen?"
|
||||||
|
|
||||||
|
|
BIN
datacenterlight/static/datacenterlight/img/dcl-email-bg.jpg
Normal file
BIN
datacenterlight/static/datacenterlight/img/dcl-email-bg.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.9 KiB |
|
@ -0,0 +1,176 @@
|
||||||
|
{% load static from staticfiles %}
|
||||||
|
{% load i18n %}
|
||||||
|
<!-- Inliner Build Version 4380b7741bb759d6cb997545f3add21ad48f010b -->
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml"
|
||||||
|
style="font-family: 'Lato', 'sans-serif' !important;">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<title>{{dcl_text}}</title>
|
||||||
|
</head>
|
||||||
|
<body bgcolor="#ffffff"
|
||||||
|
style="font-family: 'Lato', 'sans-serif' !important; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; width: 100% !important; height: 100%; color: white; margin: 0;">
|
||||||
|
<style type="text/css">
|
||||||
|
@media only screen and (max-width: 480px) {
|
||||||
|
table[class*="container-for-gmail-android"] {
|
||||||
|
min-width: 290px !important; width: 100% !important;
|
||||||
|
}
|
||||||
|
img[class="force-width-gmail"] {
|
||||||
|
display: none !important; width: 0 !important; height: 0 !important;
|
||||||
|
}
|
||||||
|
table[class="w320"] {
|
||||||
|
width: 320px !important;
|
||||||
|
}
|
||||||
|
td[class*="mobile-header-padding-left"] {
|
||||||
|
width: 160px !important; padding-left: 0 !important;
|
||||||
|
}
|
||||||
|
td[class*="mobile-header-padding-right"] {
|
||||||
|
width: 160px !important; padding-right: 0 !important;
|
||||||
|
}
|
||||||
|
td[class="header-lg"] {
|
||||||
|
font-size: 24px !important; padding-bottom: 5px !important;
|
||||||
|
}
|
||||||
|
td[class="content-padding"] {
|
||||||
|
padding: 5px 0 5px !important;
|
||||||
|
}
|
||||||
|
td[class="button"] {
|
||||||
|
padding: 5px 5px 30px !important;
|
||||||
|
}
|
||||||
|
td[class*="free-text"] {
|
||||||
|
padding: 10px 18px 30px !important;
|
||||||
|
}
|
||||||
|
td[class~="mobile-hide-img"] {
|
||||||
|
display: none !important; height: 0 !important; width: 0 !important; line-height: 0 !important;
|
||||||
|
}
|
||||||
|
td[class~="item"] {
|
||||||
|
width: 140px !important; vertical-align: top !important;
|
||||||
|
}
|
||||||
|
td[class~="quantity"] {
|
||||||
|
width: 50px !important;
|
||||||
|
}
|
||||||
|
td[class~="price"] {
|
||||||
|
width: 90px !important;
|
||||||
|
}
|
||||||
|
td[class="item-table"] {
|
||||||
|
padding: 30px 20px !important;
|
||||||
|
}
|
||||||
|
td[class="mini-container-left"] {
|
||||||
|
padding: 0 15px 15px !important; display: block !important; width: 290px !important;
|
||||||
|
}
|
||||||
|
td[class="mini-container-right"] {
|
||||||
|
padding: 0 15px 15px !important; display: block !important; width: 290px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<table align="center" cellpadding="0" cellspacing="0"
|
||||||
|
class="container-for-gmail-android" width="100%"
|
||||||
|
style="border-collapse: collapse !important; min-width: 600px; font-family: 'Lato', 'sans-serif' !important;">
|
||||||
|
<tr style="font-family: 'Lato', 'sans-serif' !important;">
|
||||||
|
<td align="left" valign="top" width="100%"
|
||||||
|
style="border-collapse: collapse; font-family: 'Lato', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #ffffff url(http://s3.amazonaws.com/swu-filepicker/4E687TRe69Ld95IDWyEg_bg_top_02.jpg) repeat-x;"
|
||||||
|
bgcolor="#ffffff">
|
||||||
|
<center style="font-family: 'Lato', 'sans-serif' !important;">
|
||||||
|
<table cellspacing="0" cellpadding="0" width="100%"
|
||||||
|
bgcolor="#ffffff"
|
||||||
|
background="{{base_url}}{% static 'datacenterlight/img/dcl-email-bg.jpg' %}"
|
||||||
|
style="border-collapse: collapse !important; font-family: 'Lato', 'sans-serif' !important; background: transparent;">
|
||||||
|
<tr style="font-family: 'Lato', 'sans-serif' !important;">
|
||||||
|
<td width="100%" height="80" valign="top"
|
||||||
|
style="text-align: center; vertical-align: middle; border-collapse: collapse; font-family: 'Lato', 'sans-serif' !important; font-size: 14px; color: #777777; line-height: 21px; background-color: #ffffff"
|
||||||
|
align="center">
|
||||||
|
<!--[if gte mso 9]>
|
||||||
|
<v:rect xmlns:v="urn:schemas-microsoft-com:vml"
|
||||||
|
fill="true" stroke="false"
|
||||||
|
style="mso-width-percent:1000;height:80px; v-text-anchor:middle;">
|
||||||
|
<v:fill type="tile"
|
||||||
|
src="{{base_url}}{% static 'datacenterlight/img/dcl-email-bg.jpg' %}"
|
||||||
|
color="#ffffff"/>
|
||||||
|
<v:textbox inset="0,0,0,0">
|
||||||
|
<![endif]-->
|
||||||
|
<center style="font-family: 'Lato', 'sans-serif' !important;">
|
||||||
|
<table cellpadding="0" cellspacing="0"
|
||||||
|
width="600" class="w320"
|
||||||
|
style="border-collapse: collapse !important; font-family: 'Lato', 'sans-serif' !important;">
|
||||||
|
<tr style="font-family: 'Lato', 'sans-serif' !important;">
|
||||||
|
<td class="pull-left mobile-header-padding-left"
|
||||||
|
style="vertical-align: middle; border-collapse: collapse; font-family: 'Lato', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: left; line-height: 21px; width: 290px; padding-left: 0px;"
|
||||||
|
align="left" valign="middle">
|
||||||
|
<a href="{{base_url}}"
|
||||||
|
style="font-family: 'Lato', 'sans-serif' !important; color: #676767; text-decoration: none !important;"><img
|
||||||
|
width="137"
|
||||||
|
src="{{base_url}}{% static 'datacenterlight/img/datacenterlight.png' %}"
|
||||||
|
alt="logo"
|
||||||
|
style="max-width: 600px; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic; font-family: 'Lato', 'sans-serif' !important; border: none;"></a>
|
||||||
|
</td>
|
||||||
|
<td class="pull-right mobile-header-padding-right"
|
||||||
|
style="color: #4d4d4d; border-collapse: collapse; font-family: 'Lato', 'sans-serif' !important; font-size: 14px; text-align: right; line-height: 21px; width: 290px; padding-left: 10px;"
|
||||||
|
align="right">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</center>
|
||||||
|
<!--[if gte mso 9]>
|
||||||
|
</v:textbox>
|
||||||
|
</v:rect>
|
||||||
|
<![endif]-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</center>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr style="font-family: 'Lato', 'sans-serif' !important;">
|
||||||
|
<td align="center" valign="top" width="100%"
|
||||||
|
style="border-collapse: collapse; font-family: 'Lato', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #ffffff; padding: 20px 0 5px;"
|
||||||
|
class="content-padding" bgcolor="#f7f7f7">
|
||||||
|
<center style="font-family: 'Lato', 'sans-serif' !important;">
|
||||||
|
<table cellspacing="0" cellpadding="0" width="600" class="w320"
|
||||||
|
style="border-collapse: collapse !important; font-family: 'Lato', 'sans-serif' !important;">
|
||||||
|
<tr style="font-family: 'Lato', 'sans-serif' !important;">
|
||||||
|
<td class="header-lg"
|
||||||
|
style="border-collapse: collapse; font-family: 'Lato', 'sans-serif' !important; font-size: 32px; color: #4d4d4d; text-align: left; line-height: normal; font-weight: 400; padding: 35px 5px 0px;"
|
||||||
|
align="center">
|
||||||
|
{% block email_head %}
|
||||||
|
{% endblock %}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr style="font-family: 'Lato', 'sans-serif' !important;">
|
||||||
|
<td class="free-text"
|
||||||
|
style="border-collapse: collapse; font-family: 'Lato', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: left; line-height: 21px; width: 100% !important; padding: 40px 5px 20px;"
|
||||||
|
align="center">
|
||||||
|
<p>
|
||||||
|
{% block email_body %}
|
||||||
|
{% endblock %}
|
||||||
|
</p></td>
|
||||||
|
</tr>
|
||||||
|
<tr style="font-family: 'Lato', 'sans-serif' !important;">
|
||||||
|
<td class="button"
|
||||||
|
style="border-collapse: collapse; font-family: 'Lato', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; padding: 0;"
|
||||||
|
align="center">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</center>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr style="font-family: 'Lato', 'sans-serif' !important;">
|
||||||
|
<td align="center" valign="top" width="100%"
|
||||||
|
style="height: 100px; border-collapse: collapse; font-family: 'Lato', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #ffffff;"
|
||||||
|
bgcolor="#ffffff">
|
||||||
|
<center style="font-family: 'Lato', 'sans-serif' !important;">
|
||||||
|
<table cellspacing="0" cellpadding="0" width="600" class="w320"
|
||||||
|
style="border-collapse: collapse !important; font-family: 'Lato', 'sans-serif' !important;">
|
||||||
|
<tr style="font-family: 'Lato', 'sans-serif' !important;">
|
||||||
|
<td style="border-collapse: collapse; font-family: 'Lato', 'sans-serif' !important; font-size: 14px; font-weight: 600; color: #7293de; padding: 25px 5px 0px;text-align: left; line-height: 21px;;"
|
||||||
|
align="left">{% trans 'Your Data Center Light Team' %}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</center>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
{% load static from staticfiles %}
|
||||||
|
{% load i18n %}
|
||||||
|
{% block email_head %}
|
||||||
|
{% endblock %}
|
||||||
|
{% block email_body %}
|
||||||
|
{% endblock %}
|
||||||
|
{% trans 'Your Data Center Light Team' %}
|
|
@ -74,7 +74,7 @@
|
||||||
<![endif]-->
|
<![endif]-->
|
||||||
<center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
<center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
||||||
<table cellpadding="0" cellspacing="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
<table cellpadding="0" cellspacing="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
||||||
<td class="pull-left mobile-header-padding-left" style="vertical-align: middle; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: left; line-height: 21px; width: 290px; padding-left: 10px;" align="left" valign="middle">
|
<td class="pull-left mobile-header-padding-left" style="vertical-align: middle; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: left; line-height: 21px; width: 290px; padding-left: 0px;" align="left" valign="middle">
|
||||||
<a href="{{base_url}}" style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; color: #676767; text-decoration: none !important;"><img width="137" src="{{base_url}}{% static 'datacenterlight/img/datacenterlight.png' %}" alt="logo" style="max-width: 600px; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; border: none;"></a>
|
<a href="{{base_url}}" style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; color: #676767; text-decoration: none !important;"><img width="137" src="{{base_url}}{% static 'datacenterlight/img/datacenterlight.png' %}" alt="logo" style="max-width: 600px; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; border: none;"></a>
|
||||||
</td>
|
</td>
|
||||||
<td class="pull-right mobile-header-padding-right" style="color: #4d4d4d; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; text-align: right; line-height: 21px; width: 290px; padding-left: 10px;" align="right">
|
<td class="pull-right mobile-header-padding-right" style="color: #4d4d4d; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; text-align: right; line-height: 21px; width: 290px; padding-left: 10px;" align="right">
|
||||||
|
@ -95,12 +95,12 @@
|
||||||
<center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
<center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
||||||
<table cellspacing="0" cellpadding="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
<table cellspacing="0" cellpadding="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
||||||
<td class="header-lg" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 32px; color: #4d4d4d; text-align: left; line-height: normal; font-weight: 400; padding: 35px 5 0;" align="center">
|
<td class="header-lg" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 32px; color: #4d4d4d; text-align: left; line-height: normal; font-weight: 400; padding: 35px 5px 0px;" align="center">
|
||||||
{% trans "Thank you for your request." %}
|
{% trans "Thank you for your request." %}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
||||||
<td class="free-text" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: left; line-height: 21px; width: 100% !important; padding: 40px 7px 20px;" align="center">
|
<td class="free-text" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: left; line-height: 21px; width: 100% !important; padding: 40px 5px 20px;" align="center">
|
||||||
<p>{% trans "You are one step away from being our beta tester!" %} <br/><br/>
|
<p>{% trans "You are one step away from being our beta tester!" %} <br/><br/>
|
||||||
{% trans "Currently we are running our tests to make sure everything runs perfectly." %}<br/>
|
{% trans "Currently we are running our tests to make sure everything runs perfectly." %}<br/>
|
||||||
{% trans "In the meantime, we would like to ask you a little patience<br/> until our team contacts you with beta access." %}<br/>
|
{% trans "In the meantime, we would like to ask you a little patience<br/> until our team contacts you with beta access." %}<br/>
|
||||||
|
@ -117,7 +117,7 @@
|
||||||
<td align="center" valign="top" width="100%" style="height: 100px; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #ffffff;" bgcolor="#ffffff">
|
<td align="center" valign="top" width="100%" style="height: 100px; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #ffffff;" bgcolor="#ffffff">
|
||||||
<center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
<center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
||||||
<table cellspacing="0" cellpadding="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
<table cellspacing="0" cellpadding="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
||||||
<td style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; font-weight: 600; color: #7293de; padding: 25px 9px 0px;text-align: left; line-height: 21px;;" align="left">Your data center light team<br style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
<td style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; font-weight: 600; color: #7293de; padding: 25px 5px 0px;text-align: left; line-height: 21px;;" align="left">Your data center light team<br style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
||||||
</td>
|
</td>
|
||||||
</tr></table>
|
</tr></table>
|
||||||
</center>
|
</center>
|
||||||
|
|
|
@ -73,7 +73,7 @@
|
||||||
<![endif]-->
|
<![endif]-->
|
||||||
<center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
<center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
||||||
<table cellpadding="0" cellspacing="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
<table cellpadding="0" cellspacing="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
||||||
<td class="pull-left mobile-header-padding-left" style="vertical-align: middle; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: left; line-height: 21px; width: 290px; padding-left: 10px;" align="left" valign="middle">
|
<td class="pull-left mobile-header-padding-left" style="vertical-align: middle; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: left; line-height: 21px; width: 290px; padding-left: 0px;" align="left" valign="middle">
|
||||||
<a href="{{base_url}}" style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; color: #676767; text-decoration: none !important;"><img width="137" src="{{base_url}}{% static 'datacenterlight/img/datacenterlight.png' %}" alt="logo" style="max-width: 600px; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; border: none;"></a>
|
<a href="{{base_url}}" style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; color: #676767; text-decoration: none !important;"><img width="137" src="{{base_url}}{% static 'datacenterlight/img/datacenterlight.png' %}" alt="logo" style="max-width: 600px; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; border: none;"></a>
|
||||||
</td>
|
</td>
|
||||||
<td class="pull-right mobile-header-padding-right" style="color: #4d4d4d; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; text-align: right; line-height: 21px; width: 290px; padding-left: 10px;" align="right">
|
<td class="pull-right mobile-header-padding-right" style="color: #4d4d4d; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; text-align: right; line-height: 21px; width: 290px; padding-left: 10px;" align="right">
|
||||||
|
@ -94,12 +94,12 @@
|
||||||
<center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
<center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
||||||
<table cellspacing="0" cellpadding="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
<table cellspacing="0" cellpadding="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
||||||
<td class="header-lg" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 32px; color: #4d4d4d; text-align: left; line-height: normal; font-weight: 400; padding: 35px 5 0;" align="center">
|
<td class="header-lg" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 32px; color: #4d4d4d; text-align: left; line-height: normal; font-weight: 400; padding: 35px 5px 0px;" align="center">
|
||||||
An user requested a beta access
|
An user requested a beta access
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
||||||
<td class="free-text" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: left; line-height: 21px; width: 100% !important; padding: 40px 7px 20px;" align="center">
|
<td class="free-text" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: left; line-height: 21px; width: 100% !important; padding: 40px 5px 20px;" align="center">
|
||||||
<p>User {{email}} requested beta access </p></td>
|
<p>User {{email}} requested beta access </p></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
||||||
|
@ -113,7 +113,7 @@
|
||||||
<td align="center" valign="top" width="100%" style="height: 100px; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #ffffff;" bgcolor="#ffffff">
|
<td align="center" valign="top" width="100%" style="height: 100px; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #ffffff;" bgcolor="#ffffff">
|
||||||
<center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
<center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
||||||
<table cellspacing="0" cellpadding="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
<table cellspacing="0" cellpadding="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
||||||
<td style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; font-weight: 600; color: #7293de; padding: 25px 9px 0px;text-align: left; line-height: 21px;;" align="left">Your data center light team<br style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
<td style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; font-weight: 600; color: #7293de; padding: 25px 5px 0px;text-align: left; line-height: 21px;;" align="left">Your data center light team<br style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
||||||
</td>
|
</td>
|
||||||
</tr></table>
|
</tr></table>
|
||||||
</center>
|
</center>
|
||||||
|
|
|
@ -73,7 +73,7 @@
|
||||||
<![endif]-->
|
<![endif]-->
|
||||||
<center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
<center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
||||||
<table cellpadding="0" cellspacing="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
<table cellpadding="0" cellspacing="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
||||||
<td class="pull-left mobile-header-padding-left" style="vertical-align: middle; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: left; line-height: 21px; width: 290px; padding-left: 10px;" align="left" valign="middle">
|
<td class="pull-left mobile-header-padding-left" style="vertical-align: middle; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: left; line-height: 21px; width: 290px; padding-left: 0px;" align="left" valign="middle">
|
||||||
<a href="{{base_url}}" style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; color: #676767; text-decoration: none !important;"><img width="137" src="{{base_url}}{% static 'datacenterlight/img/datacenterlight.png' %}" alt="logo" style="max-width: 600px; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; border: none;"></a>
|
<a href="{{base_url}}" style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; color: #676767; text-decoration: none !important;"><img width="137" src="{{base_url}}{% static 'datacenterlight/img/datacenterlight.png' %}" alt="logo" style="max-width: 600px; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; border: none;"></a>
|
||||||
</td>
|
</td>
|
||||||
<td class="pull-right mobile-header-padding-right" style="color: #4d4d4d; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; text-align: right; line-height: 21px; width: 290px; padding-left: 10px;" align="right">
|
<td class="pull-right mobile-header-padding-right" style="color: #4d4d4d; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; text-align: right; line-height: 21px; width: 290px; padding-left: 10px;" align="right">
|
||||||
|
@ -94,14 +94,14 @@
|
||||||
<center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
<center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
||||||
<table cellspacing="0" cellpadding="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
<table cellspacing="0" cellpadding="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
||||||
<td class="header-lg" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 32px; color: #4d4d4d; text-align: left; line-height: normal; font-weight: 400; padding: 35px 5 0;" align="center">
|
<td class="header-lg" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 32px; color: #4d4d4d; text-align: left; line-height: normal; font-weight: 400; padding: 35px 5px 0px;" align="center">
|
||||||
An user requested a beta access
|
An user requested a beta access
|
||||||
|
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
||||||
<td class="free-text" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: left; line-height: 21px; width: 100% !important; padding: 40px 7px 20px;" align="center">
|
<td class="free-text" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: left; line-height: 21px; width: 100% !important; padding: 40px 5px 20px;" align="center">
|
||||||
<p>User {{email}} requested beta access </p>
|
<p>User {{email}} requested beta access </p>
|
||||||
{% for vm in vms %}
|
{% for vm in vms %}
|
||||||
Type: {{vm.type}} - Amount: {{vm.amount}}
|
Type: {{vm.type}} - Amount: {{vm.amount}}
|
||||||
|
@ -119,7 +119,7 @@
|
||||||
<td align="center" valign="top" width="100%" style="height: 100px; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #ffffff;" bgcolor="#ffffff">
|
<td align="center" valign="top" width="100%" style="height: 100px; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #ffffff;" bgcolor="#ffffff">
|
||||||
<center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
<center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
||||||
<table cellspacing="0" cellpadding="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
<table cellspacing="0" cellpadding="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
||||||
<td style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; font-weight: 600; color: #7293de; padding: 25px 9px 0px;text-align: left; line-height: 21px;;" align="left">Your data center light team<br style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
<td style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; font-weight: 600; color: #7293de; padding: 25px 5px 0px;text-align: left; line-height: 21px;;" align="left">Your data center light team<br style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
||||||
</td>
|
</td>
|
||||||
</tr></table>
|
</tr></table>
|
||||||
</center>
|
</center>
|
||||||
|
|
|
@ -1,132 +1,14 @@
|
||||||
|
{% extends "datacenterlight/emails/base_email_datacenterlight.html" %}
|
||||||
{% load static from staticfiles %}
|
{% load static from staticfiles %}
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<!-- Inliner Build Version 4380b7741bb759d6cb997545f3add21ad48f010b -->
|
{% block email_head %}
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
{{dcl_text}} {% trans 'Account Activation' %}
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
{% endblock %}
|
||||||
<head>
|
{% block email_body %}
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
{% blocktrans %}
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
You can activate your Data Center Light account by <a href="{{base_url}}{{activation_link}}">clicking here</a>.<br/>
|
||||||
<title>{{dcl_text}}</title>
|
You can also copy and paste the following link into the address bar of your browser<br/>
|
||||||
</head>
|
to activate your Data Center Light account.<br/>
|
||||||
<body bgcolor="#ffffff" style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; width: 100% !important; height: 100%; color: white; margin: 0;">
|
{{base_url}}{{activation_link}}
|
||||||
<style type="text/css">
|
{% endblocktrans %}
|
||||||
@media only screen and (max-width: 480px) {
|
{% endblock %}
|
||||||
table[class*="container-for-gmail-android"] {
|
|
||||||
min-width: 290px !important; width: 100% !important;
|
|
||||||
}
|
|
||||||
img[class="force-width-gmail"] {
|
|
||||||
display: none !important; width: 0 !important; height: 0 !important;
|
|
||||||
}
|
|
||||||
table[class="w320"] {
|
|
||||||
width: 320px !important;
|
|
||||||
}
|
|
||||||
td[class*="mobile-header-padding-left"] {
|
|
||||||
width: 160px !important; padding-left: 0 !important;
|
|
||||||
}
|
|
||||||
td[class*="mobile-header-padding-right"] {
|
|
||||||
width: 160px !important; padding-right: 0 !important;
|
|
||||||
}
|
|
||||||
td[class="header-lg"] {
|
|
||||||
font-size: 24px !important; padding-bottom: 5px !important;
|
|
||||||
}
|
|
||||||
td[class="content-padding"] {
|
|
||||||
padding: 5px 0 5px !important;
|
|
||||||
}
|
|
||||||
td[class="button"] {
|
|
||||||
padding: 5px 5px 30px !important;
|
|
||||||
}
|
|
||||||
td[class*="free-text"] {
|
|
||||||
padding: 10px 18px 30px !important;
|
|
||||||
}
|
|
||||||
td[class~="mobile-hide-img"] {
|
|
||||||
display: none !important; height: 0 !important; width: 0 !important; line-height: 0 !important;
|
|
||||||
}
|
|
||||||
td[class~="item"] {
|
|
||||||
width: 140px !important; vertical-align: top !important;
|
|
||||||
}
|
|
||||||
td[class~="quantity"] {
|
|
||||||
width: 50px !important;
|
|
||||||
}
|
|
||||||
td[class~="price"] {
|
|
||||||
width: 90px !important;
|
|
||||||
}
|
|
||||||
td[class="item-table"] {
|
|
||||||
padding: 30px 20px !important;
|
|
||||||
}
|
|
||||||
td[class="mini-container-left"] {
|
|
||||||
padding: 0 15px 15px !important; display: block !important; width: 290px !important;
|
|
||||||
}
|
|
||||||
td[class="mini-container-right"] {
|
|
||||||
padding: 0 15px 15px !important; display: block !important; width: 290px !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<table align="center" cellpadding="0" cellspacing="0" class="container-for-gmail-android" width="100%" style="border-collapse: collapse !important; min-width: 600px; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td align="left" valign="top" width="100%" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #ffffff url(http://s3.amazonaws.com/swu-filepicker/4E687TRe69Ld95IDWyEg_bg_top_02.jpg) repeat-x;" bgcolor="#ffffff">
|
|
||||||
<center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<table cellspacing="0" cellpadding="0" width="100%" bgcolor="#ffffff" background="http://s3.amazonaws.com/swu-filepicker/4E687TRe69Ld95IDWyEg_bg_top_02.jpg" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; background: transparent;"><tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td width="100%" height="80" valign="top" style="text-align: center; vertical-align: middle; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; line-height: 21px; background-color: #ffffff" align="center">
|
|
||||||
<!--[if gte mso 9]>
|
|
||||||
<v:rect xmlns:v="urn:schemas-microsoft-com:vml" fill="true" stroke="false" style="mso-width-percent:1000;height:80px; v-text-anchor:middle;">
|
|
||||||
<v:fill type="tile" src="http://s3.amazonaws.com/swu-filepicker/4E687TRe69Ld95IDWyEg_bg_top_02.jpg" color="#ffffff" />
|
|
||||||
<v:textbox inset="0,0,0,0">
|
|
||||||
<![endif]-->
|
|
||||||
<center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<table cellpadding="0" cellspacing="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td class="pull-left mobile-header-padding-left" style="vertical-align: middle; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: left; line-height: 21px; width: 290px; padding-left: 10px;" align="left" valign="middle">
|
|
||||||
<a href="{{base_url}}" style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; color: #676767; text-decoration: none !important;"><img width="137" src="{{base_url}}{% static 'datacenterlight/img/datacenterlight.png' %}" alt="logo" style="max-width: 600px; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; border: none;"></a>
|
|
||||||
</td>
|
|
||||||
<td class="pull-right mobile-header-padding-right" style="color: #4d4d4d; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; text-align: right; line-height: 21px; width: 290px; padding-left: 10px;" align="right">
|
|
||||||
</td>
|
|
||||||
</tr></table>
|
|
||||||
</center>
|
|
||||||
<!--[if gte mso 9]>
|
|
||||||
</v:textbox>
|
|
||||||
</v:rect>
|
|
||||||
<![endif]-->
|
|
||||||
</td>
|
|
||||||
</tr></table>
|
|
||||||
</center>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td align="center" valign="top" width="100%" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #ffffff; padding: 20px 0 5px;" class="content-padding" bgcolor="#f7f7f7">
|
|
||||||
<center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<table cellspacing="0" cellpadding="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td class="header-lg" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 32px; color: #4d4d4d; text-align: left; line-height: normal; font-weight: 400; padding: 35px 5 0;" align="center">
|
|
||||||
{{dcl_text}} {% trans 'account activation' %}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td class="free-text" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: left; line-height: 21px; width: 100% !important; padding: 40px 7px 20px;" align="center">
|
|
||||||
<p>
|
|
||||||
{% blocktrans %}
|
|
||||||
You can activate your {{dcl_text}} account by <a href="{{base_url}}{{activation_link}}">clicking here</a>.<br/><br/>
|
|
||||||
You can also copy and paste the following link into the address bar of your browser and follow the link in order to activate your datacenterlight account.<br/>
|
|
||||||
{{base_url}}{{activation_link}}
|
|
||||||
{% endblocktrans %}
|
|
||||||
</p></td>
|
|
||||||
</tr>
|
|
||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td class="button" style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; padding: 0;" align="center"> </td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</center>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td align="center" valign="top" width="100%" style="height: 100px; border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #ffffff;" bgcolor="#ffffff">
|
|
||||||
<center style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<table cellspacing="0" cellpadding="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td style="border-collapse: collapse; font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; font-weight: 600; color: #7293de; padding: 25px 9px 0px;text-align: left; line-height: 21px;;" align="left">{% trans 'Your' %} {{dcl_text}} {% trans 'team' %}<br style="font-family: 'Raleway', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
</td>
|
|
||||||
</tr></table>
|
|
||||||
</center>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
{% load static from staticfiles %}
|
{% extends "datacenterlight/emails/base_email_datacenterlight.txt" %}
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
{{dcl_text}} {% trans 'account activation' %}
|
{% block email_head %}{{dcl_text}} {% trans 'Account Activation' %}{% endblock %}
|
||||||
|
{% block email_body %}
|
||||||
{% blocktrans %}
|
{% blocktrans %}You can activate your Data Center Light account by clicking here.
|
||||||
Hi,
|
You can also copy and paste the following link into the address bar of your browser
|
||||||
|
to activate your Data Center Light account.
|
||||||
You can activate your {{dcl_text}} account by clicking here {{base_url}}{{activation_link}}
|
{{base_url}}{{activation_link}}
|
||||||
{% endblocktrans %}
|
{% endblocktrans %}
|
||||||
|
{% endblock %}
|
||||||
{% trans 'Your' %} {{dcl_text}} {% trans 'team' %}
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2017-09-05 00:59+0530\n"
|
"POT-Creation-Date: 2017-09-09 06:04+0000\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -33,21 +33,6 @@ msgstr "Gebe deinem SSH-Key einen Name"
|
||||||
msgid "Key name"
|
msgid "Key name"
|
||||||
msgstr "Key-Name"
|
msgstr "Key-Name"
|
||||||
|
|
||||||
msgid "My Virtual Machines"
|
|
||||||
msgstr "Meine virtuellen Maschinen"
|
|
||||||
|
|
||||||
msgid "My Orders"
|
|
||||||
msgstr "Meine Bestellungen"
|
|
||||||
|
|
||||||
msgid "SSH Keys"
|
|
||||||
msgstr "SSH Key"
|
|
||||||
|
|
||||||
msgid "Notifications "
|
|
||||||
msgstr "Benachrichtigungen"
|
|
||||||
|
|
||||||
msgid "Logout"
|
|
||||||
msgstr "Abmelden"
|
|
||||||
|
|
||||||
msgid "All Rights Reserved"
|
msgid "All Rights Reserved"
|
||||||
msgstr "Alle Rechte vorbehalten"
|
msgstr "Alle Rechte vorbehalten"
|
||||||
|
|
||||||
|
@ -195,19 +180,109 @@ msgstr "Support / Kontakt"
|
||||||
|
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
|
"You have ordered a new virtual machine!\n"
|
||||||
|
"<br/>\n"
|
||||||
|
"Your order of [%(vm_name)s] has been charged.<br/><br/>\n"
|
||||||
|
"You can view your invoice by clicking the button below.<br/><br/>\n"
|
||||||
|
msgstr ""
|
||||||
|
"Du hast eine neue virtuelle Maschine bestellt!<br/>\n"
|
||||||
|
"Deine Bestellung von [%(vm_name)s] wurde erhoben.<br/><br/>\n"
|
||||||
|
"Um die Rechnung zu sehen, klicke auf den Button unten.<br/><br/>\n"
|
||||||
|
|
||||||
|
msgid "View Invoice"
|
||||||
|
msgstr "Zur Rechnung"
|
||||||
|
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"You have ordered a new virtual machine!\n"
|
||||||
|
"Your order of [%(vm_name)s] has been charged.\n"
|
||||||
|
"You can view your invoice here.\n"
|
||||||
|
msgstr ""
|
||||||
|
"Du hast eine neue virtuelle Maschine bestellt!\n"
|
||||||
|
"Deine Bestellung von [%(vm_name)s] wurde erhoben.\n"
|
||||||
|
"Um die Rechnung zu sehen, klicke hier.\n"
|
||||||
|
|
||||||
|
msgid "Password Reset"
|
||||||
|
msgstr "Passwort zurücksetzen"
|
||||||
|
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
"You're receiving this email because you requested a password reset for your "
|
"You're receiving this email because you requested a password reset for your "
|
||||||
"user account at %(site_name)s."
|
"user account at %(site_name)s.<br/>\n"
|
||||||
|
"Please go to the following page and choose a new password: %(base_url)s"
|
||||||
|
"%(password_reset_url)s<br/>\n"
|
||||||
|
"If you didn't request a new password, ignore this e-mail.<br/>\n"
|
||||||
|
"Thank you!\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
"Du erhälst diese E-Mail da du dein Passwort für deinen Account bei "
|
||||||
|
"%(site_name)s zurücksetzen möchtest.<br/>\n"
|
||||||
|
"Bitte folge diesem Link und wähle ein neues Passwort: %(base_url)s"
|
||||||
|
"%(password_reset_url)s Solltest du kein neues Passwort angefordert haben, "
|
||||||
|
"dann ignoriere diese E-Mail.<br/>\n"
|
||||||
|
"Dankeschön!\n"
|
||||||
|
|
||||||
msgid "Please go to the following page and choose a new password:"
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"You're receiving this email because you requested a password reset for your "
|
||||||
|
"user account at %(site_name)s.\n"
|
||||||
|
"Please go to the following page and choose a new password: %(base_url)s"
|
||||||
|
"%(password_reset_url)s\n"
|
||||||
|
"If you didn't request a new password, ignore this e-mail.\n"
|
||||||
|
"Thank you!\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Du erhälst diese E-Mail da du dein Passwort für deinen Account bei "
|
||||||
|
"%(site_name)s zurücksetzen möchtest.\n"
|
||||||
|
"Bitte folge diesem Link und wähle ein neues Passwort: %(base_url)s"
|
||||||
|
"%(password_reset_url)s Solltest du kein neues Passwort angefordert haben, "
|
||||||
|
"dann ignoriere diese E-Mail.\n"
|
||||||
|
"Dankeschön!\n"
|
||||||
|
|
||||||
msgid "Thanks for using our site!"
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"You're receiving this mail because your virtual machine [%(vm_name)s] has "
|
||||||
|
"been cancelled.<br/>\n"
|
||||||
|
"You can see your order status by clicking [my VM page] below.<br/>\n"
|
||||||
|
"If you want to order a new virtual machine, you can do it by clicking <a "
|
||||||
|
"href=\"%(base_url)s%(my_virtual_machines_url)s\">this link</a>.<br/>\n"
|
||||||
|
msgstr ""
|
||||||
|
"Du erhälst diese E-Mail, da deine virtuelle Maschine [%(vm_name)s] gekündigt "
|
||||||
|
"wurde.<br/>\n"
|
||||||
|
"Um deinen Auftragsstatus zu sehen, klicke auf die [my VM page] unten.<br/>\n"
|
||||||
|
"Falls du eine neue virtuelle Maschine bestellen möchtest, kannst du dies "
|
||||||
|
"tun, indem du <a href=\"%(base_url)s%(my_virtual_machines_url)s\">diesen "
|
||||||
|
"Link klickst</a>.<br/>\n"
|
||||||
|
|
||||||
|
msgid "My VM page"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The %(site_name)s team"
|
msgid ""
|
||||||
|
"You're receiving this mail because your virtual machine [%(vm_name)s] has "
|
||||||
|
"been cancelled.\n"
|
||||||
|
"You can see your order status by clicking here\n"
|
||||||
|
"%(base_url)s%(vm_order_url)s\n"
|
||||||
|
"If you want to order a new virtual machine, you can do it by clicking this "
|
||||||
|
"link.\n"
|
||||||
|
"%(base_url)s%(my_virtual_machines_url)s\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Du erhälst diese E-Mail, da deine virtuelle Maschine [%(vm_name)s] gekündigt "
|
||||||
|
"wurde.\n"
|
||||||
|
"Um deinen Auftragsstatus zu sehen, klicke hier.\n"
|
||||||
|
"%(base_url)s%(vm_order_url)s\n"
|
||||||
|
"Falls du eine neue virtuelle Maschine bestellen möchtest, kannst du dies "
|
||||||
|
"tun, indem du diesen Link klickst.\n"
|
||||||
|
"%(base_url)s%(my_virtual_machines_url)s\n"
|
||||||
|
|
||||||
|
msgid "Toggle navigation"
|
||||||
|
msgstr "Konfiguration"
|
||||||
|
|
||||||
|
msgid "Dashboard"
|
||||||
|
msgstr "Mein Dashboard"
|
||||||
|
|
||||||
|
msgid "Logout"
|
||||||
|
msgstr "Abmelden"
|
||||||
|
|
||||||
msgid "Don't have an account yet ? "
|
msgid "Don't have an account yet ? "
|
||||||
msgstr "Besitzt du kein Benutzerkonto?"
|
msgstr "Besitzt du kein Benutzerkonto?"
|
||||||
|
@ -365,12 +440,6 @@ msgstr ""
|
||||||
msgid "Type"
|
msgid "Type"
|
||||||
msgstr "Kartentyp"
|
msgstr "Kartentyp"
|
||||||
|
|
||||||
msgid "REMOVE CARD"
|
|
||||||
msgstr "KARTE ENTFERNEN"
|
|
||||||
|
|
||||||
msgid "EDIT CARD"
|
|
||||||
msgstr "BEARBEITEN"
|
|
||||||
|
|
||||||
msgid "No Credit Cards Added"
|
msgid "No Credit Cards Added"
|
||||||
msgstr "Es wurde keine Kreditkarte hinzugefügt"
|
msgstr "Es wurde keine Kreditkarte hinzugefügt"
|
||||||
|
|
||||||
|
@ -378,9 +447,8 @@ msgid ""
|
||||||
"We are using <a href=\"https://stripe.com\">Stripe</a> for payment and do "
|
"We are using <a href=\"https://stripe.com\">Stripe</a> for payment and do "
|
||||||
"not store your information in our database."
|
"not store your information in our database."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Wir nutzen <a href="
|
"Wir nutzen <a href=\"https://stripe.com\" target=\"_blank\">Stripe</a> für "
|
||||||
"\"https://stripe.com\" target=\"_blank\">Stripe</a> für die Bezahlung und "
|
"die Bezahlung und speichern keine Informationen in unserer Datenbank."
|
||||||
"speichern keine Informationen in unserer Datenbank."
|
|
||||||
|
|
||||||
msgid "Add your public SSH key"
|
msgid "Add your public SSH key"
|
||||||
msgstr "Füge deinen öffentlichen SSH-Key hinzu"
|
msgstr "Füge deinen öffentlichen SSH-Key hinzu"
|
||||||
|
@ -528,17 +596,59 @@ msgstr "Du kannst dich nun"
|
||||||
msgid "Sorry. Your request is invalid."
|
msgid "Sorry. Your request is invalid."
|
||||||
msgstr "Entschuldigung, deine Anfrage ist ungültig."
|
msgstr "Entschuldigung, deine Anfrage ist ungültig."
|
||||||
|
|
||||||
|
msgid "Password has been reset."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Password reset has not been successful."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "The reset password link is no longer valid."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Invalid credit card"
|
msgid "Invalid credit card"
|
||||||
msgstr "Ungültige Kreditkarte"
|
msgstr "Ungültige Kreditkarte"
|
||||||
|
|
||||||
|
#, python-format
|
||||||
|
msgid "Your New VM %(vm_name)s at Data Center Light"
|
||||||
|
msgstr "Deine neue VM %(vm_name)s bei Data Center Light"
|
||||||
|
|
||||||
msgid "Confirm Order"
|
msgid "Confirm Order"
|
||||||
msgstr "Bestellung Bestätigen"
|
msgstr "Bestellung Bestätigen"
|
||||||
|
|
||||||
|
msgid "In order to create a VM, you need to create/upload your SSH KEY first."
|
||||||
|
msgstr ""
|
||||||
|
"Um eine VM zu erstellen musst du zuerst einen SSH-Key erstellen / hochladen."
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"We could not find the requested VM. Please "
|
"We could not find the requested VM. Please "
|
||||||
"contact Data Center Light Support."
|
"contact Data Center Light Support."
|
||||||
msgstr "Kontaktiere den Data Center Light Support."
|
msgstr "Kontaktiere den Data Center Light Support."
|
||||||
|
|
||||||
|
msgid "Virtual Machine Cancellation"
|
||||||
|
msgstr "VM Kündigung"
|
||||||
|
|
||||||
|
#, python-format
|
||||||
|
msgid "VM %(VM_ID)s terminated successfully"
|
||||||
|
msgstr "VM %(VM_ID)s erfolgreich beendet"
|
||||||
|
|
||||||
|
#~ msgid "My Virtual Machines"
|
||||||
|
#~ msgstr "Meine virtuellen Maschinen"
|
||||||
|
|
||||||
|
#~ msgid "My Orders"
|
||||||
|
#~ msgstr "Meine Bestellungen"
|
||||||
|
|
||||||
|
#~ msgid "SSH Keys"
|
||||||
|
#~ msgstr "SSH Key"
|
||||||
|
|
||||||
|
#~ msgid "Notifications "
|
||||||
|
#~ msgstr "Benachrichtigungen"
|
||||||
|
|
||||||
|
#~ msgid "REMOVE CARD"
|
||||||
|
#~ msgstr "KARTE ENTFERNEN"
|
||||||
|
|
||||||
|
#~ msgid "EDIT CARD"
|
||||||
|
#~ msgstr "BEARBEITEN"
|
||||||
|
|
||||||
#~ msgid "Add a new Card."
|
#~ msgid "Add a new Card."
|
||||||
#~ msgstr "Neue Kreditkarte hinzufügen."
|
#~ msgstr "Neue Kreditkarte hinzufügen."
|
||||||
|
|
||||||
|
|
|
@ -1,140 +1,14 @@
|
||||||
{% load static from staticfiles %}
|
{% extends "datacenterlight/emails/base_email_datacenterlight.html" %}
|
||||||
<!-- Inliner Build Version 4380b7741bb759d6cb997545f3add21ad48f010b -->
|
{% load i18n %}
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
{% block email_head %}{{page_header}}{% endblock %}
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
{% block email_body %}
|
||||||
<head>
|
{% url 'hosting:orders' order.id as order_url %}
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
{% blocktrans with vm.name as vm_name %}You have ordered a new virtual machine!
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<br/>
|
||||||
<title>Oxygen Invoice</title>
|
Your order of [{{vm_name}}] has been charged.<br/><br/>
|
||||||
</head>
|
You can view your invoice by clicking the button below.<br/><br/>
|
||||||
<body bgcolor="#f7f7f7" style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; width: 100% !important; height: 100%; color: white; margin: 0;">
|
{% endblocktrans %}
|
||||||
<style type="text/css">
|
<div class="button" style="border-collapse: collapse; font-family: 'Lato', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; padding: 30px 0;" align="center">
|
||||||
@media only screen and (max-width: 480px) {
|
<a href="{{ base_url }}{{order_url}}" style="border-radius: 5px; color: #ffffff; display: inline-block; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; font-weight: regular; line-height: 45px; text-align: center; text-decoration: none !important; width: 155px; -webkit-text-size-adjust: none; mso-hide: all; background: #ff6f6f;">{% trans 'View Invoice' %}</a>
|
||||||
table[class*="container-for-gmail-android"] {
|
|
||||||
min-width: 290px !important; width: 100% !important;
|
|
||||||
}
|
|
||||||
img[class="force-width-gmail"] {
|
|
||||||
display: none !important; width: 0 !important; height: 0 !important;
|
|
||||||
}
|
|
||||||
table[class="w320"] {
|
|
||||||
width: 320px !important;
|
|
||||||
}
|
|
||||||
td[class*="mobile-header-padding-left"] {
|
|
||||||
width: 160px !important; padding-left: 0 !important;
|
|
||||||
}
|
|
||||||
td[class*="mobile-header-padding-right"] {
|
|
||||||
width: 160px !important; padding-right: 0 !important;
|
|
||||||
}
|
|
||||||
td[class="header-lg"] {
|
|
||||||
font-size: 24px !important; padding-bottom: 5px !important;
|
|
||||||
}
|
|
||||||
td[class="content-padding"] {
|
|
||||||
padding: 5px 0 5px !important;
|
|
||||||
}
|
|
||||||
td[class="button"] {
|
|
||||||
padding: 5px 5px 30px !important;
|
|
||||||
}
|
|
||||||
td[class*="free-text"] {
|
|
||||||
padding: 10px 18px 30px !important;
|
|
||||||
}
|
|
||||||
td[class~="mobile-hide-img"] {
|
|
||||||
display: none !important; height: 0 !important; width: 0 !important; line-height: 0 !important;
|
|
||||||
}
|
|
||||||
td[class~="item"] {
|
|
||||||
width: 140px !important; vertical-align: top !important;
|
|
||||||
}
|
|
||||||
td[class~="quantity"] {
|
|
||||||
width: 50px !important;
|
|
||||||
}
|
|
||||||
td[class~="price"] {
|
|
||||||
width: 90px !important;
|
|
||||||
}
|
|
||||||
td[class="item-table"] {
|
|
||||||
padding: 30px 20px !important;
|
|
||||||
}
|
|
||||||
td[class="mini-container-left"] {
|
|
||||||
padding: 0 15px 15px !important; display: block !important; width: 290px !important;
|
|
||||||
}
|
|
||||||
td[class="mini-container-right"] {
|
|
||||||
padding: 0 15px 15px !important; display: block !important; width: 290px !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<table align="center" cellpadding="0" cellspacing="0" class="container-for-gmail-android" width="100%" style="border-collapse: collapse !important; min-width: 600px; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td align="left" valign="top" width="100%" style="border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #ffffff url(http://s3.amazonaws.com/swu-filepicker/4E687TRe69Ld95IDWyEg_bg_top_02.jpg) repeat-x;" bgcolor="#ffffff">
|
|
||||||
<center style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<table cellspacing="0" cellpadding="0" width="100%" bgcolor="#ffffff" background="http://s3.amazonaws.com/swu-filepicker/4E687TRe69Ld95IDWyEg_bg_top_02.jpg" style="border-collapse: collapse !important; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; background: transparent;"><tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td width="100%" height="80" valign="top" style="text-align: center; vertical-align: middle; border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; line-height: 21px;" align="center">
|
|
||||||
<!--[if gte mso 9]>
|
|
||||||
<v:rect xmlns:v="urn:schemas-microsoft-com:vml" fill="true" stroke="false" style="mso-width-percent:1000;height:80px; v-text-anchor:middle;">
|
|
||||||
<v:fill type="tile" src="http://s3.amazonaws.com/swu-filepicker/4E687TRe69Ld95IDWyEg_bg_top_02.jpg" color="#ffffff" />
|
|
||||||
<v:textbox inset="0,0,0,0">
|
|
||||||
<![endif]-->
|
|
||||||
<center style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<table cellpadding="0" cellspacing="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td class="pull-left mobile-header-padding-left" style="vertical-align: middle; border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: left; line-height: 21px; width: 290px; padding-left: 10px;" align="left" valign="middle">
|
|
||||||
<a href="{{base_url}}" style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; color: #676767; text-decoration: none !important;"><img width="137" src="{{base_url}}{% static "hosting/img/logo_black.png" %}" alt="logo" style="max-width: 600px; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; border: none;"></a>
|
|
||||||
</td>
|
|
||||||
<td class="pull-right mobile-header-padding-right" style="color: #4d4d4d; border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; text-align: right; line-height: 21px; width: 290px; padding-left: 10px;" align="right">
|
|
||||||
</td>
|
|
||||||
</tr></table>
|
|
||||||
</center>
|
|
||||||
<!--[if gte mso 9]>
|
|
||||||
</v:textbox>
|
|
||||||
</v:rect>
|
|
||||||
<![endif]-->
|
|
||||||
</td>
|
|
||||||
</tr></table>
|
|
||||||
</center>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td align="center" valign="top" width="100%" style="border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #f7f7f7; padding: 20px 0 5px;" class="content-padding" bgcolor="#f7f7f7">
|
|
||||||
<center style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<table cellspacing="0" cellpadding="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td class="header-lg" style="border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 32px; color: #4d4d4d; text-align: center; line-height: normal; font-weight: 700; padding: 35px 0 0;" align="center">
|
|
||||||
You have booked a virtual machine!
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td class="free-text" style="border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; width: 100% !important; padding: 10px 60px 0px;" align="center">
|
|
||||||
Your virtual machine {{vm.name}} subscription has been charged,
|
|
||||||
<br/>
|
|
||||||
we are going to contact you as soon your virtual machine has been activated.
|
|
||||||
<br/>
|
|
||||||
You can view your invoice clicking on the button below.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td class="button" style="border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; padding: 30px 0;" align="center">
|
|
||||||
<div style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<!--[if mso]>
|
|
||||||
<v:roundrect xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w="urn:schemas-microsoft-com:office:word" href="http://" style="height:45px;v-text-anchor:middle;width:155px;" arcsize="15%" strokecolor="#ffffff" fillcolor="#ff6f6f">
|
|
||||||
<w:anchorlock/>
|
|
||||||
<center style="color:#ffffff;font-family:Helvetica, Arial, sans-serif;font-size:14px;font-weight:regular;">My Account</center>
|
|
||||||
</v:roundrect>
|
|
||||||
<![endif]--><a href="{{ base_url }}{% url 'hosting:orders' order.id %}" style="border-radius: 5px; color: #ffffff; display: inline-block; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; font-weight: regular; line-height: 45px; text-align: center; text-decoration: none !important; width: 155px; -webkit-text-size-adjust: none; mso-hide: all; background: #ff6f6f;">View Invoice</a>
|
|
||||||
</div>
|
</div>
|
||||||
</td>
|
{% endblock %}
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</center>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td align="center" valign="top" width="100%" style="height: 100px; border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #f7f7f7;" bgcolor="#f7f7f7">
|
|
||||||
<center style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<table cellspacing="0" cellpadding="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td style="border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; padding: 25px 0;" align="center">
|
|
||||||
<strong style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">ungleich</strong><br style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
</td>
|
|
||||||
</tr></table>
|
|
||||||
</center>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
||||||
|
|
|
@ -1,140 +1,11 @@
|
||||||
{% load static from staticfiles %}
|
{% extends "datacenterlight/emails/base_email_datacenterlight.txt" %}
|
||||||
<!-- Inliner Build Version 4380b7741bb759d6cb997545f3add21ad48f010b -->
|
{% load i18n %}
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
{% block email_head %}{{page_header}}{% endblock %}
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
{% block email_body %}
|
||||||
<head>
|
{% url 'hosting:orders' order.id as order_url %}
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
{% blocktrans with vm.name as vm_name %}You have ordered a new virtual machine!
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
Your order of [{{vm_name}}] has been charged.
|
||||||
<title>Oxygen Invoice</title>
|
You can view your invoice here.
|
||||||
</head>
|
{% endblocktrans %}
|
||||||
<body bgcolor="#f7f7f7" style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; width: 100% !important; height: 100%; color: white; margin: 0;">
|
{{ base_url }}{{order_url}}
|
||||||
<style type="text/css">
|
{% endblock %}
|
||||||
@media only screen and (max-width: 480px) {
|
|
||||||
table[class*="container-for-gmail-android"] {
|
|
||||||
min-width: 290px !important; width: 100% !important;
|
|
||||||
}
|
|
||||||
img[class="force-width-gmail"] {
|
|
||||||
display: none !important; width: 0 !important; height: 0 !important;
|
|
||||||
}
|
|
||||||
table[class="w320"] {
|
|
||||||
width: 320px !important;
|
|
||||||
}
|
|
||||||
td[class*="mobile-header-padding-left"] {
|
|
||||||
width: 160px !important; padding-left: 0 !important;
|
|
||||||
}
|
|
||||||
td[class*="mobile-header-padding-right"] {
|
|
||||||
width: 160px !important; padding-right: 0 !important;
|
|
||||||
}
|
|
||||||
td[class="header-lg"] {
|
|
||||||
font-size: 24px !important; padding-bottom: 5px !important;
|
|
||||||
}
|
|
||||||
td[class="content-padding"] {
|
|
||||||
padding: 5px 0 5px !important;
|
|
||||||
}
|
|
||||||
td[class="button"] {
|
|
||||||
padding: 5px 5px 30px !important;
|
|
||||||
}
|
|
||||||
td[class*="free-text"] {
|
|
||||||
padding: 10px 18px 30px !important;
|
|
||||||
}
|
|
||||||
td[class~="mobile-hide-img"] {
|
|
||||||
display: none !important; height: 0 !important; width: 0 !important; line-height: 0 !important;
|
|
||||||
}
|
|
||||||
td[class~="item"] {
|
|
||||||
width: 140px !important; vertical-align: top !important;
|
|
||||||
}
|
|
||||||
td[class~="quantity"] {
|
|
||||||
width: 50px !important;
|
|
||||||
}
|
|
||||||
td[class~="price"] {
|
|
||||||
width: 90px !important;
|
|
||||||
}
|
|
||||||
td[class="item-table"] {
|
|
||||||
padding: 30px 20px !important;
|
|
||||||
}
|
|
||||||
td[class="mini-container-left"] {
|
|
||||||
padding: 0 15px 15px !important; display: block !important; width: 290px !important;
|
|
||||||
}
|
|
||||||
td[class="mini-container-right"] {
|
|
||||||
padding: 0 15px 15px !important; display: block !important; width: 290px !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<table align="center" cellpadding="0" cellspacing="0" class="container-for-gmail-android" width="100%" style="border-collapse: collapse !important; min-width: 600px; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td align="left" valign="top" width="100%" style="border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #ffffff url(http://s3.amazonaws.com/swu-filepicker/4E687TRe69Ld95IDWyEg_bg_top_02.jpg) repeat-x;" bgcolor="#ffffff">
|
|
||||||
<center style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<table cellspacing="0" cellpadding="0" width="100%" bgcolor="#ffffff" background="http://s3.amazonaws.com/swu-filepicker/4E687TRe69Ld95IDWyEg_bg_top_02.jpg" style="border-collapse: collapse !important; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; background: transparent;"><tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td width="100%" height="80" valign="top" style="text-align: center; vertical-align: middle; border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; line-height: 21px;" align="center">
|
|
||||||
<!--[if gte mso 9]>
|
|
||||||
<v:rect xmlns:v="urn:schemas-microsoft-com:vml" fill="true" stroke="false" style="mso-width-percent:1000;height:80px; v-text-anchor:middle;">
|
|
||||||
<v:fill type="tile" src="http://s3.amazonaws.com/swu-filepicker/4E687TRe69Ld95IDWyEg_bg_top_02.jpg" color="#ffffff" />
|
|
||||||
<v:textbox inset="0,0,0,0">
|
|
||||||
<![endif]-->
|
|
||||||
<center style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<table cellpadding="0" cellspacing="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td class="pull-left mobile-header-padding-left" style="vertical-align: middle; border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: left; line-height: 21px; width: 290px; padding-left: 10px;" align="left" valign="middle">
|
|
||||||
<a href="{{base_url}}" style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; color: #676767; text-decoration: none !important;"><img width="137" src="{{base_url}}{% static "hosting/img/logo_black.png" %}" alt="logo" style="max-width: 600px; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; border: none;"></a>
|
|
||||||
</td>
|
|
||||||
<td class="pull-right mobile-header-padding-right" style="color: #4d4d4d; border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; text-align: right; line-height: 21px; width: 290px; padding-left: 10px;" align="right">
|
|
||||||
</td>
|
|
||||||
</tr></table>
|
|
||||||
</center>
|
|
||||||
<!--[if gte mso 9]>
|
|
||||||
</v:textbox>
|
|
||||||
</v:rect>
|
|
||||||
<![endif]-->
|
|
||||||
</td>
|
|
||||||
</tr></table>
|
|
||||||
</center>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td align="center" valign="top" width="100%" style="border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #f7f7f7; padding: 20px 0 5px;" class="content-padding" bgcolor="#f7f7f7">
|
|
||||||
<center style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<table cellspacing="0" cellpadding="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td class="header-lg" style="border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 32px; color: #4d4d4d; text-align: center; line-height: normal; font-weight: 700; padding: 35px 0 0;" align="center">
|
|
||||||
You have booked a virtual machine!
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td class="free-text" style="border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; width: 100% !important; padding: 10px 60px 0px;" align="center">
|
|
||||||
Your virtual machine {{vm.name}} subscription has been charged,
|
|
||||||
<br/>
|
|
||||||
we are going to contact you as soon your virtual machine has been activated.
|
|
||||||
<br/>
|
|
||||||
You can view your invoice clicking on the button below.
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td class="button" style="border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; padding: 30px 0;" align="center">
|
|
||||||
<div style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<!--[if mso]>
|
|
||||||
<v:roundrect xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w="urn:schemas-microsoft-com:office:word" href="http://" style="height:45px;v-text-anchor:middle;width:155px;" arcsize="15%" strokecolor="#ffffff" fillcolor="#ff6f6f">
|
|
||||||
<w:anchorlock/>
|
|
||||||
<center style="color:#ffffff;font-family:Helvetica, Arial, sans-serif;font-size:14px;font-weight:regular;">My Account</center>
|
|
||||||
</v:roundrect>
|
|
||||||
<![endif]--><a href="{{ base_url }}{% url 'hosting:orders' order.id %}" style="border-radius: 5px; color: #ffffff; display: inline-block; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; font-weight: regular; line-height: 45px; text-align: center; text-decoration: none !important; width: 155px; -webkit-text-size-adjust: none; mso-hide: all; background: #ff6f6f;">View Invoice</a>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</center>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td align="center" valign="top" width="100%" style="height: 100px; border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #f7f7f7;" bgcolor="#f7f7f7">
|
|
||||||
<center style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<table cellspacing="0" cellpadding="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td style="border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; padding: 25px 0;" align="center">
|
|
||||||
<strong style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">ungleich</strong><br style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
</td>
|
|
||||||
</tr></table>
|
|
||||||
</center>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,14 @@
|
||||||
{% load i18n %}{% autoescape off %}
|
{% extends "datacenterlight/emails/base_email_datacenterlight.html" %}
|
||||||
{% blocktrans %}You're receiving this email because you requested a password reset for your user account at {{ site_name }}.{% endblocktrans %}
|
{% load i18n %}
|
||||||
|
{% block email_head %}
|
||||||
{% trans "Please go to the following page and choose a new password:" %}
|
{% trans 'Password Reset' %}
|
||||||
{% block reset_link %}
|
{% endblock %}
|
||||||
{{ base_url }}{% url 'hosting:reset_password_confirm' uidb64=uid token=token %}
|
{% block email_body %}
|
||||||
{% endblock %}
|
{% url 'hosting:reset_password_confirm' uidb64=uid token=token as password_reset_url %}
|
||||||
|
{% blocktrans %}
|
||||||
{% trans "Thanks for using our site!" %}
|
You're receiving this email because you requested a password reset for your user account at {{site_name}}.<br/>
|
||||||
|
Please go to the following page and choose a new password: {{base_url}}{{ password_reset_url }}<br/>
|
||||||
{% blocktrans %}The {{ site_name }} team{% endblocktrans %}
|
If you didn't request a new password, ignore this e-mail.<br/>
|
||||||
|
Thank you!
|
||||||
{% endautoescape %}
|
{% endblocktrans %}
|
||||||
|
{% endblock %}
|
||||||
|
|
|
@ -1,13 +1,11 @@
|
||||||
{% load i18n %}{% autoescape off %}
|
{% extends "datacenterlight/emails/base_email_datacenterlight.txt" %}
|
||||||
{% blocktrans %}You're receiving this email because you requested a password reset for your user account at {{ site_name }}.{% endblocktrans %}
|
{% load i18n %}
|
||||||
|
{% block email_head %}{% trans 'Password Reset' %}{% endblock %}
|
||||||
{% trans "Please go to the following page and choose a new password:" %}
|
{% block email_body %}
|
||||||
{% block reset_link %}
|
{% url 'hosting:reset_password_confirm' uidb64=uid token=token as password_reset_url %}
|
||||||
{{ base_url }}{% url 'hosting:reset_password_confirm' uidb64=uid token=token %}
|
{% blocktrans %}You're receiving this email because you requested a password reset for your user account at {{site_name}}.
|
||||||
{% endblock %}
|
Please go to the following page and choose a new password: {{base_url}}{{ password_reset_url }}
|
||||||
|
If you didn't request a new password, ignore this e-mail.
|
||||||
{% trans "Thanks for using our site!" %}
|
Thank you!
|
||||||
|
{% endblocktrans %}
|
||||||
{% blocktrans %}The {{ site_name }} team{% endblocktrans %}
|
{% endblock %}
|
||||||
|
|
||||||
{% endautoescape %}
|
|
||||||
|
|
15
hosting/templates/hosting/emails/vm_canceled.html
Normal file
15
hosting/templates/hosting/emails/vm_canceled.html
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
{% extends "datacenterlight/emails/base_email_datacenterlight.html" %}
|
||||||
|
{% load i18n %}
|
||||||
|
{% block email_head %}{{page_header}}{% endblock %}
|
||||||
|
{% block email_body %}
|
||||||
|
{% url 'hosting:virtual_machines' as my_virtual_machines_url %}
|
||||||
|
{% url 'hosting:orders' as vm_orders_url %}
|
||||||
|
{% blocktrans with vm.name as vm_name %}You're receiving this mail because your virtual machine [{{vm_name}}] has been cancelled.<br/>
|
||||||
|
You can see your order status by clicking [my VM page] below.<br/>
|
||||||
|
If you want to order a new virtual machine, you can do it by clicking <a href="{{base_url}}{{my_virtual_machines_url}}">this link</a>.<br/>
|
||||||
|
{% endblocktrans %}
|
||||||
|
<div class="button" style="border-collapse: collapse; font-family: 'Lato', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; padding: 30px 0;" align="center">
|
||||||
|
<a href="{{ base_url }}{{vm_orders_url}}" style="border-radius: 5px; color: #ffffff; display: inline-block; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; font-weight: regular; line-height: 45px; text-align: center; text-decoration: none !important; width: 155px; -webkit-text-size-adjust: none; mso-hide: all; background: #ff6f6f;">{% trans 'My VM page' %}</a>
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
||||||
|
|
13
hosting/templates/hosting/emails/vm_canceled.txt
Normal file
13
hosting/templates/hosting/emails/vm_canceled.txt
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
{% extends "datacenterlight/emails/base_email_datacenterlight.txt" %}
|
||||||
|
{% load i18n %}
|
||||||
|
{% block email_head %}{{page_header}}{% endblock %}
|
||||||
|
{% block email_body %}
|
||||||
|
{% url 'hosting:virtual_machines' as my_virtual_machines_url %}
|
||||||
|
{% url 'hosting:orders' order.id as vm_order_url %}
|
||||||
|
{% blocktrans with vm.name as vm_name %}You're receiving this mail because your virtual machine [{{vm_name}}] has been cancelled.
|
||||||
|
You can see your order status by clicking here
|
||||||
|
{{base_url}}{{vm_order_url}}
|
||||||
|
If you want to order a new virtual machine, you can do it by clicking this link.
|
||||||
|
{{base_url}}{{my_virtual_machines_url}}
|
||||||
|
{% endblocktrans %}
|
||||||
|
{% endblock %}
|
|
@ -1,136 +0,0 @@
|
||||||
{% load static from staticfiles %}
|
|
||||||
<!-- Inliner Build Version 4380b7741bb759d6cb997545f3add21ad48f010b -->
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<head>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
<title>Oxygen Invoice</title>
|
|
||||||
</head>
|
|
||||||
<body bgcolor="#f7f7f7" style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; width: 100% !important; height: 100%; color: white; margin: 0;">
|
|
||||||
<style type="text/css">
|
|
||||||
@media only screen and (max-width: 480px) {
|
|
||||||
table[class*="container-for-gmail-android"] {
|
|
||||||
min-width: 290px !important; width: 100% !important;
|
|
||||||
}
|
|
||||||
img[class="force-width-gmail"] {
|
|
||||||
display: none !important; width: 0 !important; height: 0 !important;
|
|
||||||
}
|
|
||||||
table[class="w320"] {
|
|
||||||
width: 320px !important;
|
|
||||||
}
|
|
||||||
td[class*="mobile-header-padding-left"] {
|
|
||||||
width: 160px !important; padding-left: 0 !important;
|
|
||||||
}
|
|
||||||
td[class*="mobile-header-padding-right"] {
|
|
||||||
width: 160px !important; padding-right: 0 !important;
|
|
||||||
}
|
|
||||||
td[class="header-lg"] {
|
|
||||||
font-size: 24px !important; padding-bottom: 5px !important;
|
|
||||||
}
|
|
||||||
td[class="content-padding"] {
|
|
||||||
padding: 5px 0 5px !important;
|
|
||||||
}
|
|
||||||
td[class="button"] {
|
|
||||||
padding: 5px 5px 30px !important;
|
|
||||||
}
|
|
||||||
td[class*="free-text"] {
|
|
||||||
padding: 10px 18px 30px !important;
|
|
||||||
}
|
|
||||||
td[class~="mobile-hide-img"] {
|
|
||||||
display: none !important; height: 0 !important; width: 0 !important; line-height: 0 !important;
|
|
||||||
}
|
|
||||||
td[class~="item"] {
|
|
||||||
width: 140px !important; vertical-align: top !important;
|
|
||||||
}
|
|
||||||
td[class~="quantity"] {
|
|
||||||
width: 50px !important;
|
|
||||||
}
|
|
||||||
td[class~="price"] {
|
|
||||||
width: 90px !important;
|
|
||||||
}
|
|
||||||
td[class="item-table"] {
|
|
||||||
padding: 30px 20px !important;
|
|
||||||
}
|
|
||||||
td[class="mini-container-left"] {
|
|
||||||
padding: 0 15px 15px !important; display: block !important; width: 290px !important;
|
|
||||||
}
|
|
||||||
td[class="mini-container-right"] {
|
|
||||||
padding: 0 15px 15px !important; display: block !important; width: 290px !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<table align="center" cellpadding="0" cellspacing="0" class="container-for-gmail-android" width="100%" style="border-collapse: collapse !important; min-width: 600px; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td align="left" valign="top" width="100%" style="border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #f7f7f7 url(http://s3.amazonaws.com/swu-filepicker/4E687TRe69Ld95IDWyEg_bg_top_02.jpg) repeat-x;" bgcolor="#ffffff">
|
|
||||||
<center style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<table cellspacing="0" cellpadding="0" width="100%" bgcolor="#ffffff" background="http://s3.amazonaws.com/swu-filepicker/4E687TRe69Ld95IDWyEg_bg_top_02.jpg" style="border-collapse: collapse !important; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; background: transparent;"><tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td width="100%" height="80" valign="top" style="text-align: center; vertical-align: middle; border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; line-height: 21px;" align="center">
|
|
||||||
<!--[if gte mso 9]>
|
|
||||||
<v:rect xmlns:v="urn:schemas-microsoft-com:vml" fill="true" stroke="false" style="mso-width-percent:1000;height:80px; v-text-anchor:middle;">
|
|
||||||
<v:fill type="tile" src="http://s3.amazonaws.com/swu-filepicker/4E687TRe69Ld95IDWyEg_bg_top_02.jpg" color="#ffffff" />
|
|
||||||
<v:textbox inset="0,0,0,0">
|
|
||||||
<![endif]-->
|
|
||||||
<center style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<table cellpadding="0" cellspacing="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td class="pull-left mobile-header-padding-left" style="vertical-align: middle; border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: left; line-height: 21px; width: 290px; padding-left: 10px;" align="left" valign="middle">
|
|
||||||
<a href="{{base_url}}" style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; color: #676767; text-decoration: none !important;"><img width="137" src="{{base_url}}{% static "hosting/img/logo_black.png" %}" alt="logo" style="max-width: 600px; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; border: none;"></a>
|
|
||||||
</td>
|
|
||||||
<td class="pull-right mobile-header-padding-right" style="color: #4d4d4d; border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; text-align: right; line-height: 21px; width: 290px; padding-left: 10px;" align="right">
|
|
||||||
</td>
|
|
||||||
</tr></table>
|
|
||||||
</center>
|
|
||||||
<!--[if gte mso 9]>
|
|
||||||
</v:textbox>
|
|
||||||
</v:rect>
|
|
||||||
<![endif]-->
|
|
||||||
</td>
|
|
||||||
</tr></table>
|
|
||||||
</center>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td align="center" valign="top" width="100%" style="border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #f7f7f7; padding: 20px 0 5px;" class="content-padding" bgcolor="#f7f7f7">
|
|
||||||
<center style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<table cellspacing="0" cellpadding="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td class="header-lg" style="border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 32px; color: #4d4d4d; text-align: center; line-height: normal; font-weight: 700; padding: 35px 0 0;" align="center">
|
|
||||||
Your virtual machine {{vm.name}} status has been updated to {{vm.get_status_display}}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td class="free-text" style="border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; width: 100% !important; padding: 10px 60px 0px;" align="center">
|
|
||||||
You can manage your vm clicking on the button below
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td class="button" style="border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; padding: 30px 0;" align="center">
|
|
||||||
<div style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<!--[if mso]>
|
|
||||||
<v:roundrect xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w="urn:schemas-microsoft-com:office:word" href="http://" style="height:45px;v-text-anchor:middle;width:155px;" arcsize="15%" strokecolor="#ffffff" fillcolor="#ff6f6f">
|
|
||||||
<w:anchorlock/>
|
|
||||||
<center style="color:#ffffff;font-family:Helvetica, Arial, sans-serif;font-size:14px;font-weight:regular;">My Account</center>
|
|
||||||
</v:roundrect>
|
|
||||||
<![endif]--><a href="{{base_url}}{% url 'hosting:virtual_machines' vm.id %}" style="border-radius: 5px; color: #ffffff; display: inline-block; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; font-weight: regular; line-height: 45px; text-align: center; text-decoration: none !important; width: 155px; -webkit-text-size-adjust: none; mso-hide: all; background: #ff6f6f;">VM Dashboard</a>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</center>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td align="center" valign="top" width="100%" style="height: 100px; border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #f7f7f7;" bgcolor="#f7f7f7">
|
|
||||||
<center style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<table cellspacing="0" cellpadding="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td style="border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; padding: 25px 0;" align="center">
|
|
||||||
<strong style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">ungleich</strong><br style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
</td>
|
|
||||||
</tr></table>
|
|
||||||
</center>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
|
@ -1,136 +0,0 @@
|
||||||
{% load static from staticfiles %}
|
|
||||||
<!-- Inliner Build Version 4380b7741bb759d6cb997545f3add21ad48f010b -->
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<head>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
<title>Oxygen Invoice</title>
|
|
||||||
</head>
|
|
||||||
<body bgcolor="#f7f7f7" style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; width: 100% !important; height: 100%; color: white; margin: 0;">
|
|
||||||
<style type="text/css">
|
|
||||||
@media only screen and (max-width: 480px) {
|
|
||||||
table[class*="container-for-gmail-android"] {
|
|
||||||
min-width: 290px !important; width: 100% !important;
|
|
||||||
}
|
|
||||||
img[class="force-width-gmail"] {
|
|
||||||
display: none !important; width: 0 !important; height: 0 !important;
|
|
||||||
}
|
|
||||||
table[class="w320"] {
|
|
||||||
width: 320px !important;
|
|
||||||
}
|
|
||||||
td[class*="mobile-header-padding-left"] {
|
|
||||||
width: 160px !important; padding-left: 0 !important;
|
|
||||||
}
|
|
||||||
td[class*="mobile-header-padding-right"] {
|
|
||||||
width: 160px !important; padding-right: 0 !important;
|
|
||||||
}
|
|
||||||
td[class="header-lg"] {
|
|
||||||
font-size: 24px !important; padding-bottom: 5px !important;
|
|
||||||
}
|
|
||||||
td[class="content-padding"] {
|
|
||||||
padding: 5px 0 5px !important;
|
|
||||||
}
|
|
||||||
td[class="button"] {
|
|
||||||
padding: 5px 5px 30px !important;
|
|
||||||
}
|
|
||||||
td[class*="free-text"] {
|
|
||||||
padding: 10px 18px 30px !important;
|
|
||||||
}
|
|
||||||
td[class~="mobile-hide-img"] {
|
|
||||||
display: none !important; height: 0 !important; width: 0 !important; line-height: 0 !important;
|
|
||||||
}
|
|
||||||
td[class~="item"] {
|
|
||||||
width: 140px !important; vertical-align: top !important;
|
|
||||||
}
|
|
||||||
td[class~="quantity"] {
|
|
||||||
width: 50px !important;
|
|
||||||
}
|
|
||||||
td[class~="price"] {
|
|
||||||
width: 90px !important;
|
|
||||||
}
|
|
||||||
td[class="item-table"] {
|
|
||||||
padding: 30px 20px !important;
|
|
||||||
}
|
|
||||||
td[class="mini-container-left"] {
|
|
||||||
padding: 0 15px 15px !important; display: block !important; width: 290px !important;
|
|
||||||
}
|
|
||||||
td[class="mini-container-right"] {
|
|
||||||
padding: 0 15px 15px !important; display: block !important; width: 290px !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<table align="center" cellpadding="0" cellspacing="0" class="container-for-gmail-android" width="100%" style="border-collapse: collapse !important; min-width: 600px; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td align="left" valign="top" width="100%" style="border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #f7f7f7 url(http://s3.amazonaws.com/swu-filepicker/4E687TRe69Ld95IDWyEg_bg_top_02.jpg) repeat-x;" bgcolor="#ffffff">
|
|
||||||
<center style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<table cellspacing="0" cellpadding="0" width="100%" bgcolor="#ffffff" background="http://s3.amazonaws.com/swu-filepicker/4E687TRe69Ld95IDWyEg_bg_top_02.jpg" style="border-collapse: collapse !important; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; background: transparent;"><tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td width="100%" height="80" valign="top" style="text-align: center; vertical-align: middle; border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; line-height: 21px;" align="center">
|
|
||||||
<!--[if gte mso 9]>
|
|
||||||
<v:rect xmlns:v="urn:schemas-microsoft-com:vml" fill="true" stroke="false" style="mso-width-percent:1000;height:80px; v-text-anchor:middle;">
|
|
||||||
<v:fill type="tile" src="http://s3.amazonaws.com/swu-filepicker/4E687TRe69Ld95IDWyEg_bg_top_02.jpg" color="#ffffff" />
|
|
||||||
<v:textbox inset="0,0,0,0">
|
|
||||||
<![endif]-->
|
|
||||||
<center style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<table cellpadding="0" cellspacing="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td class="pull-left mobile-header-padding-left" style="vertical-align: middle; border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: left; line-height: 21px; width: 290px; padding-left: 10px;" align="left" valign="middle">
|
|
||||||
<a href="{{base_url}}" style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; color: #676767; text-decoration: none !important;"><img width="137" src="{{base_url}}{% static "hosting/img/logo_black.png" %}" alt="logo" style="max-width: 600px; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; border: none;"></a>
|
|
||||||
</td>
|
|
||||||
<td class="pull-right mobile-header-padding-right" style="color: #4d4d4d; border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; text-align: right; line-height: 21px; width: 290px; padding-left: 10px;" align="right">
|
|
||||||
</td>
|
|
||||||
</tr></table>
|
|
||||||
</center>
|
|
||||||
<!--[if gte mso 9]>
|
|
||||||
</v:textbox>
|
|
||||||
</v:rect>
|
|
||||||
<![endif]-->
|
|
||||||
</td>
|
|
||||||
</tr></table>
|
|
||||||
</center>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td align="center" valign="top" width="100%" style="border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #f7f7f7; padding: 20px 0 5px;" class="content-padding" bgcolor="#f7f7f7">
|
|
||||||
<center style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<table cellspacing="0" cellpadding="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td class="header-lg" style="border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 32px; color: #4d4d4d; text-align: center; line-height: normal; font-weight: 700; padding: 35px 0 0;" align="center">
|
|
||||||
Your virtual machine {{vm.name}} status has been updated to {{vm.get_status_display}}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td class="free-text" style="border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; width: 100% !important; padding: 10px 60px 0px;" align="center">
|
|
||||||
You can manage your vm clicking on the button below
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td class="button" style="border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; padding: 30px 0;" align="center">
|
|
||||||
<div style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<!--[if mso]>
|
|
||||||
<v:roundrect xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w="urn:schemas-microsoft-com:office:word" href="http://" style="height:45px;v-text-anchor:middle;width:155px;" arcsize="15%" strokecolor="#ffffff" fillcolor="#ff6f6f">
|
|
||||||
<w:anchorlock/>
|
|
||||||
<center style="color:#ffffff;font-family:Helvetica, Arial, sans-serif;font-size:14px;font-weight:regular;">My Account</center>
|
|
||||||
</v:roundrect>
|
|
||||||
<![endif]--><a href="{{base_url}}{% url 'hosting:virtual_machines' vm.id %}" style="border-radius: 5px; color: #ffffff; display: inline-block; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; font-weight: regular; line-height: 45px; text-align: center; text-decoration: none !important; width: 155px; -webkit-text-size-adjust: none; mso-hide: all; background: #ff6f6f;">VM Dashboard</a>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</center>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td align="center" valign="top" width="100%" style="height: 100px; border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #f7f7f7;" bgcolor="#f7f7f7">
|
|
||||||
<center style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<table cellspacing="0" cellpadding="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
<td style="border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; padding: 25px 0;" align="center">
|
|
||||||
<strong style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">ungleich</strong><br style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
|
|
||||||
</td>
|
|
||||||
</tr></table>
|
|
||||||
</center>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{% load staticfiles %}
|
{% load staticfiles %}
|
||||||
|
{% load i18n %}
|
||||||
<footer>
|
<footer>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
|
146
hosting/views.py
146
hosting/views.py
|
@ -1,40 +1,41 @@
|
||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
from django.core.files.base import ContentFile
|
|
||||||
|
|
||||||
from oca.pool import WrongNameError, WrongIdError
|
|
||||||
from django.shortcuts import render
|
|
||||||
from django.http import Http404
|
|
||||||
from django.core.urlresolvers import reverse_lazy, reverse
|
|
||||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
|
||||||
from django.views.generic import View, CreateView, FormView, ListView, DetailView, \
|
|
||||||
DeleteView, TemplateView, UpdateView
|
|
||||||
from django.http import HttpResponseRedirect
|
|
||||||
from django.contrib import messages
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.shortcuts import redirect
|
from django.contrib import messages
|
||||||
from django.utils.http import urlsafe_base64_decode
|
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||||
from django.contrib.auth.tokens import default_token_generator
|
from django.contrib.auth.tokens import default_token_generator
|
||||||
|
from django.core.files.base import ContentFile
|
||||||
from guardian.mixins import PermissionRequiredMixin
|
from django.core.urlresolvers import reverse_lazy, reverse
|
||||||
from stored_messages.settings import stored_messages_settings
|
from django.http import Http404
|
||||||
from stored_messages.models import Message
|
from django.http import HttpResponseRedirect
|
||||||
from stored_messages.api import mark_read
|
from django.shortcuts import redirect
|
||||||
|
from django.shortcuts import render
|
||||||
|
from django.utils.http import urlsafe_base64_decode
|
||||||
from django.utils.safestring import mark_safe
|
from django.utils.safestring import mark_safe
|
||||||
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
from django.views.generic import View, CreateView, FormView, ListView, \
|
||||||
|
DetailView, \
|
||||||
|
DeleteView, TemplateView, UpdateView
|
||||||
|
from guardian.mixins import PermissionRequiredMixin
|
||||||
|
from oca.pool import WrongNameError, WrongIdError
|
||||||
|
from stored_messages.api import mark_read
|
||||||
|
from stored_messages.models import Message
|
||||||
|
from stored_messages.settings import stored_messages_settings
|
||||||
|
|
||||||
from membership.models import CustomUser, StripeCustomer
|
from membership.models import CustomUser, StripeCustomer
|
||||||
from utils.stripe_utils import StripeUtils
|
|
||||||
from utils.forms import BillingAddressForm, PasswordResetRequestForm, UserBillingAddressForm
|
|
||||||
from utils.views import PasswordResetViewMixin, PasswordResetConfirmViewMixin, LoginViewMixin
|
|
||||||
from utils.mailer import BaseEmail
|
|
||||||
from .models import HostingOrder, HostingBill, HostingPlan, UserHostingKey
|
|
||||||
from .forms import HostingUserSignupForm, HostingUserLoginForm, UserHostingKeyForm, generate_ssh_key_name
|
|
||||||
from .mixins import ProcessVMSelectionMixin
|
|
||||||
|
|
||||||
from opennebula_api.models import OpenNebulaManager
|
from opennebula_api.models import OpenNebulaManager
|
||||||
from opennebula_api.serializers import VirtualMachineSerializer, \
|
from opennebula_api.serializers import VirtualMachineSerializer, \
|
||||||
VirtualMachineTemplateSerializer
|
VirtualMachineTemplateSerializer
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from utils.forms import BillingAddressForm, PasswordResetRequestForm, \
|
||||||
|
UserBillingAddressForm
|
||||||
|
from utils.mailer import BaseEmail
|
||||||
|
from utils.stripe_utils import StripeUtils
|
||||||
|
from utils.views import PasswordResetViewMixin, PasswordResetConfirmViewMixin, \
|
||||||
|
LoginViewMixin
|
||||||
|
from .forms import HostingUserSignupForm, HostingUserLoginForm, \
|
||||||
|
UserHostingKeyForm, generate_ssh_key_name
|
||||||
|
from .mixins import ProcessVMSelectionMixin
|
||||||
|
from .models import HostingOrder, HostingBill, HostingPlan, UserHostingKey
|
||||||
|
|
||||||
CONNECTION_ERROR = "Your VMs cannot be displayed at the moment due to a backend \
|
CONNECTION_ERROR = "Your VMs cannot be displayed at the moment due to a backend \
|
||||||
connection error. please try again in a few minutes."
|
connection error. please try again in a few minutes."
|
||||||
|
@ -296,12 +297,13 @@ class PasswordResetConfirmView(PasswordResetConfirmViewMixin):
|
||||||
|
|
||||||
form = self.form_class(request.POST)
|
form = self.form_class(request.POST)
|
||||||
|
|
||||||
if user is not None and default_token_generator.check_token(user, token):
|
if user is not None and default_token_generator.check_token(user,
|
||||||
|
token):
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
new_password = form.cleaned_data['new_password2']
|
new_password = form.cleaned_data['new_password2']
|
||||||
user.set_password(new_password)
|
user.set_password(new_password)
|
||||||
user.save()
|
user.save()
|
||||||
messages.success(request, 'Password has been reset.')
|
messages.success(request, _('Password has been reset.'))
|
||||||
|
|
||||||
# Change opennebula password
|
# Change opennebula password
|
||||||
opennebula_client.change_user_password(new_password)
|
opennebula_client.change_user_password(new_password)
|
||||||
|
@ -309,14 +311,15 @@ class PasswordResetConfirmView(PasswordResetConfirmViewMixin):
|
||||||
return self.form_valid(form)
|
return self.form_valid(form)
|
||||||
else:
|
else:
|
||||||
messages.error(
|
messages.error(
|
||||||
request, 'Password reset has not been successful.')
|
request, _('Password reset has not been successful.'))
|
||||||
form.add_error(None, 'Password reset has not been successful.')
|
form.add_error(None,
|
||||||
|
_('Password reset has not been successful.'))
|
||||||
return self.form_invalid(form)
|
return self.form_invalid(form)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
messages.error(
|
error_msg = _('The reset password link is no longer valid.')
|
||||||
request, 'The reset password link is no longer valid.')
|
messages.error(request, _(error_msg))
|
||||||
form.add_error(None, 'The reset password link is no longer valid.')
|
form.add_error(None, error_msg)
|
||||||
return self.form_invalid(form)
|
return self.form_invalid(form)
|
||||||
|
|
||||||
|
|
||||||
|
@ -397,7 +400,8 @@ class SSHKeyListView(LoginRequiredMixin, ListView):
|
||||||
def render_to_response(self, context, **response_kwargs):
|
def render_to_response(self, context, **response_kwargs):
|
||||||
if not self.queryset:
|
if not self.queryset:
|
||||||
return HttpResponseRedirect(reverse('hosting:choice_ssh_keys'))
|
return HttpResponseRedirect(reverse('hosting:choice_ssh_keys'))
|
||||||
return super(SSHKeyListView, self).render_to_response(context, **response_kwargs)
|
return super(SSHKeyListView, self).render_to_response(context,
|
||||||
|
**response_kwargs)
|
||||||
|
|
||||||
|
|
||||||
class SSHKeyChoiceView(LoginRequiredMixin, View):
|
class SSHKeyChoiceView(LoginRequiredMixin, View):
|
||||||
|
@ -622,8 +626,10 @@ class PaymentVMView(LoginRequiredMixin, FormView):
|
||||||
if not customer:
|
if not customer:
|
||||||
msg = _("Invalid credit card")
|
msg = _("Invalid credit card")
|
||||||
messages.add_message(
|
messages.add_message(
|
||||||
self.request, messages.ERROR, msg, extra_tags='make_charge_error')
|
self.request, messages.ERROR, msg,
|
||||||
return HttpResponseRedirect(reverse('hosting:payment') + '#payment_error')
|
extra_tags='make_charge_error')
|
||||||
|
return HttpResponseRedirect(
|
||||||
|
reverse('hosting:payment') + '#payment_error')
|
||||||
|
|
||||||
# Create Billing Address
|
# Create Billing Address
|
||||||
billing_address = form.save()
|
billing_address = form.save()
|
||||||
|
@ -637,8 +643,10 @@ class PaymentVMView(LoginRequiredMixin, FormView):
|
||||||
if not charge_response.get('response_object'):
|
if not charge_response.get('response_object'):
|
||||||
msg = charge_response.get('error')
|
msg = charge_response.get('error')
|
||||||
messages.add_message(
|
messages.add_message(
|
||||||
self.request, messages.ERROR, msg, extra_tags='make_charge_error')
|
self.request, messages.ERROR, msg,
|
||||||
return HttpResponseRedirect(reverse('hosting:payment') + '#payment_error')
|
extra_tags='make_charge_error')
|
||||||
|
return HttpResponseRedirect(
|
||||||
|
reverse('hosting:payment') + '#payment_error')
|
||||||
|
|
||||||
charge = charge_response.get('response_object')
|
charge = charge_response.get('response_object')
|
||||||
|
|
||||||
|
@ -646,7 +654,8 @@ class PaymentVMView(LoginRequiredMixin, FormView):
|
||||||
manager = OpenNebulaManager(email=owner.email,
|
manager = OpenNebulaManager(email=owner.email,
|
||||||
password=owner.password)
|
password=owner.password)
|
||||||
# Get user ssh key
|
# Get user ssh key
|
||||||
if not UserHostingKey.objects.filter(user=self.request.user).exists():
|
if not UserHostingKey.objects.filter(
|
||||||
|
user=self.request.user).exists():
|
||||||
context.update({
|
context.update({
|
||||||
'sshError': 'error',
|
'sshError': 'error',
|
||||||
'form': form
|
'form': form
|
||||||
|
@ -694,31 +703,37 @@ class PaymentVMView(LoginRequiredMixin, FormView):
|
||||||
|
|
||||||
vm = VirtualMachineSerializer(manager.get_vm(vm_id)).data
|
vm = VirtualMachineSerializer(manager.get_vm(vm_id)).data
|
||||||
|
|
||||||
# Send notification to ungleich as soon as VM has been booked
|
# Send notification to the user as soon as VM has been booked
|
||||||
context = {
|
context = {
|
||||||
'vm': vm,
|
'vm': vm,
|
||||||
'order': order,
|
'order': order,
|
||||||
'base_url': "{0}://{1}".format(request.scheme, request.get_host())
|
'base_url': "{0}://{1}".format(request.scheme,
|
||||||
|
request.get_host()),
|
||||||
|
'page_header': _(
|
||||||
|
'Your New VM %(vm_name)s at Data Center Light') % {
|
||||||
|
'vm_name': vm.get('name')}
|
||||||
}
|
}
|
||||||
email_data = {
|
email_data = {
|
||||||
'subject': 'New VM request',
|
'subject': context.get('page_header'),
|
||||||
'to': request.user.email,
|
'to': request.user.email,
|
||||||
'context': context,
|
'context': context,
|
||||||
'template_name': 'new_booked_vm',
|
'template_name': 'new_booked_vm',
|
||||||
'template_path': 'hosting/emails/'
|
'template_path': 'hosting/emails/',
|
||||||
|
'from_address': settings.DCL_SUPPORT_FROM_ADDRESS,
|
||||||
}
|
}
|
||||||
email = BaseEmail(**email_data)
|
email = BaseEmail(**email_data)
|
||||||
email.send()
|
email.send()
|
||||||
|
|
||||||
return HttpResponseRedirect(
|
return HttpResponseRedirect(
|
||||||
"{url}?{query_params}".format(url=reverse('hosting:orders', kwargs={'pk': order.id}),
|
"{url}?{query_params}".format(
|
||||||
|
url=reverse('hosting:orders', kwargs={'pk': order.id}),
|
||||||
query_params='page=payment'))
|
query_params='page=payment'))
|
||||||
else:
|
else:
|
||||||
return self.form_invalid(form)
|
return self.form_invalid(form)
|
||||||
|
|
||||||
|
|
||||||
class OrdersHostingDetailView(PermissionRequiredMixin, LoginRequiredMixin, DetailView):
|
class OrdersHostingDetailView(PermissionRequiredMixin, LoginRequiredMixin,
|
||||||
|
DetailView):
|
||||||
template_name = "hosting/order_detail.html"
|
template_name = "hosting/order_detail.html"
|
||||||
context_object_name = "order"
|
context_object_name = "order"
|
||||||
login_url = reverse_lazy('hosting:login')
|
login_url = reverse_lazy('hosting:login')
|
||||||
|
@ -748,7 +763,8 @@ class OrdersHostingDetailView(PermissionRequiredMixin, LoginRequiredMixin, Detai
|
||||||
context['error'] = 'WrongIdError'
|
context['error'] = 'WrongIdError'
|
||||||
except ConnectionRefusedError:
|
except ConnectionRefusedError:
|
||||||
messages.error(self.request,
|
messages.error(self.request,
|
||||||
'In order to create a VM, you need to create/upload your SSH KEY first.'
|
_(
|
||||||
|
'In order to create a VM, you need to create/upload your SSH KEY first.')
|
||||||
)
|
)
|
||||||
return context
|
return context
|
||||||
|
|
||||||
|
@ -816,7 +832,8 @@ class CreateVirtualMachinesView(LoginRequiredMixin, View):
|
||||||
if not UserHostingKey.objects.filter(user=self.request.user).exists():
|
if not UserHostingKey.objects.filter(user=self.request.user).exists():
|
||||||
messages.success(
|
messages.success(
|
||||||
request,
|
request,
|
||||||
'In order to create a VM, you need to create/upload your SSH KEY first.'
|
_(
|
||||||
|
'In order to create a VM, you need to create/upload your SSH KEY first.')
|
||||||
)
|
)
|
||||||
return HttpResponseRedirect(reverse('hosting:ssh_keys'))
|
return HttpResponseRedirect(reverse('hosting:ssh_keys'))
|
||||||
|
|
||||||
|
@ -826,7 +843,8 @@ class CreateVirtualMachinesView(LoginRequiredMixin, View):
|
||||||
configuration_options = HostingPlan.get_serialized_configs()
|
configuration_options = HostingPlan.get_serialized_configs()
|
||||||
|
|
||||||
context = {
|
context = {
|
||||||
'templates': VirtualMachineTemplateSerializer(templates, many=True).data,
|
'templates': VirtualMachineTemplateSerializer(templates,
|
||||||
|
many=True).data,
|
||||||
'configuration_options': configuration_options,
|
'configuration_options': configuration_options,
|
||||||
}
|
}
|
||||||
except:
|
except:
|
||||||
|
@ -897,7 +915,8 @@ class VirtualMachineView(LoginRequiredMixin, View):
|
||||||
serializer = VirtualMachineSerializer(vm)
|
serializer = VirtualMachineSerializer(vm)
|
||||||
context = {
|
context = {
|
||||||
'virtual_machine': serializer.data,
|
'virtual_machine': serializer.data,
|
||||||
'order': HostingOrder.objects.get(vm_id=serializer.data['vm_id'])
|
'order': HostingOrder.objects.get(
|
||||||
|
vm_id=serializer.data['vm_id'])
|
||||||
}
|
}
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
@ -914,7 +933,7 @@ class VirtualMachineView(LoginRequiredMixin, View):
|
||||||
email=owner.email,
|
email=owner.email,
|
||||||
password=owner.password
|
password=owner.password
|
||||||
)
|
)
|
||||||
|
vm_data = VirtualMachineSerializer(manager.get_vm(vm.id)).data
|
||||||
terminated = manager.delete_vm(
|
terminated = manager.delete_vm(
|
||||||
vm.id
|
vm.id
|
||||||
)
|
)
|
||||||
|
@ -925,30 +944,34 @@ class VirtualMachineView(LoginRequiredMixin, View):
|
||||||
'Error terminating VM %s' % (opennebula_vm_id)
|
'Error terminating VM %s' % (opennebula_vm_id)
|
||||||
)
|
)
|
||||||
return HttpResponseRedirect(self.get_success_url())
|
return HttpResponseRedirect(self.get_success_url())
|
||||||
|
|
||||||
context = {
|
context = {
|
||||||
'vm': vm,
|
'vm': vm_data,
|
||||||
'base_url': "{0}://{1}".format(self.request.scheme, self.request.get_host())
|
'base_url': "{0}://{1}".format(self.request.scheme,
|
||||||
|
self.request.get_host()),
|
||||||
|
'page_header': _('Virtual Machine Cancellation')
|
||||||
}
|
}
|
||||||
email_data = {
|
email_data = {
|
||||||
'subject': 'Virtual machine plan canceled',
|
'subject': context['page_header'],
|
||||||
'to': self.request.user.email,
|
'to': self.request.user.email,
|
||||||
'context': context,
|
'context': context,
|
||||||
'template_name': 'vm_status_changed',
|
'template_name': 'vm_canceled',
|
||||||
'template_path': 'hosting/emails/'
|
'template_path': 'hosting/emails/',
|
||||||
|
'from_address': settings.DCL_SUPPORT_FROM_ADDRESS,
|
||||||
}
|
}
|
||||||
email = BaseEmail(**email_data)
|
email = BaseEmail(**email_data)
|
||||||
email.send()
|
email.send()
|
||||||
|
|
||||||
messages.error(
|
messages.error(
|
||||||
request,
|
request,
|
||||||
'VM %s terminated successfully' % (opennebula_vm_id)
|
_('VM %(VM_ID)s terminated successfully') % {
|
||||||
|
'VM_ID': opennebula_vm_id}
|
||||||
)
|
)
|
||||||
|
|
||||||
return HttpResponseRedirect(self.get_success_url())
|
return HttpResponseRedirect(self.get_success_url())
|
||||||
|
|
||||||
|
|
||||||
class HostingBillListView(PermissionRequiredMixin, LoginRequiredMixin, ListView):
|
class HostingBillListView(PermissionRequiredMixin, LoginRequiredMixin,
|
||||||
|
ListView):
|
||||||
template_name = "hosting/bills.html"
|
template_name = "hosting/bills.html"
|
||||||
login_url = reverse_lazy('hosting:login')
|
login_url = reverse_lazy('hosting:login')
|
||||||
permission_required = ['view_hostingview']
|
permission_required = ['view_hostingview']
|
||||||
|
@ -958,7 +981,8 @@ class HostingBillListView(PermissionRequiredMixin, LoginRequiredMixin, ListView)
|
||||||
ordering = '-id'
|
ordering = '-id'
|
||||||
|
|
||||||
|
|
||||||
class HostingBillDetailView(PermissionRequiredMixin, LoginRequiredMixin, DetailView):
|
class HostingBillDetailView(PermissionRequiredMixin, LoginRequiredMixin,
|
||||||
|
DetailView):
|
||||||
template_name = "hosting/bill_detail.html"
|
template_name = "hosting/bill_detail.html"
|
||||||
login_url = reverse_lazy('hosting:login')
|
login_url = reverse_lazy('hosting:login')
|
||||||
permission_required = ['view_hostingview']
|
permission_required = ['view_hostingview']
|
||||||
|
|
|
@ -1,17 +1,19 @@
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from django.db import models
|
|
||||||
from django.utils.translation import ugettext_lazy as _
|
|
||||||
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, PermissionsMixin
|
|
||||||
from django.contrib.auth.hashers import make_password
|
|
||||||
from django.core.validators import RegexValidator
|
|
||||||
from django.contrib.sites.models import Site
|
|
||||||
from django.conf import settings
|
|
||||||
from django.utils.crypto import get_random_string
|
|
||||||
|
|
||||||
from utils.stripe_utils import StripeUtils
|
from django.conf import settings
|
||||||
from utils.mailer import DigitalGlarusRegistrationMailer
|
from django.contrib.auth.hashers import make_password
|
||||||
|
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, \
|
||||||
|
PermissionsMixin
|
||||||
|
from django.contrib.sites.models import Site
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
|
from django.core.validators import RegexValidator
|
||||||
|
from django.db import models
|
||||||
|
from django.utils.crypto import get_random_string
|
||||||
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
from utils.mailer import BaseEmail
|
from utils.mailer import BaseEmail
|
||||||
|
from utils.mailer import DigitalGlarusRegistrationMailer
|
||||||
|
from utils.stripe_utils import StripeUtils
|
||||||
|
|
||||||
REGISTRATION_MESSAGE = {'subject': "Validation mail",
|
REGISTRATION_MESSAGE = {'subject': "Validation mail",
|
||||||
'message': 'Please validate Your account under this link '
|
'message': 'Please validate Your account under this link '
|
||||||
|
@ -64,11 +66,13 @@ class CustomUser(AbstractBaseUser, PermissionsMixin):
|
||||||
email = models.EmailField(unique=True)
|
email = models.EmailField(unique=True)
|
||||||
|
|
||||||
validated = models.IntegerField(choices=VALIDATED_CHOICES, default=0)
|
validated = models.IntegerField(choices=VALIDATED_CHOICES, default=0)
|
||||||
validation_slug = models.CharField(db_index=True, unique=True, max_length=50)
|
validation_slug = models.CharField(db_index=True, unique=True,
|
||||||
|
max_length=50)
|
||||||
is_admin = models.BooleanField(
|
is_admin = models.BooleanField(
|
||||||
_('staff status'),
|
_('staff status'),
|
||||||
default=False,
|
default=False,
|
||||||
help_text=_('Designates whether the user can log into this admin site.'),
|
help_text=_(
|
||||||
|
'Designates whether the user can log into this admin site.'),
|
||||||
)
|
)
|
||||||
|
|
||||||
objects = MyUserManager()
|
objects = MyUserManager()
|
||||||
|
@ -77,28 +81,32 @@ class CustomUser(AbstractBaseUser, PermissionsMixin):
|
||||||
REQUIRED_FIELDS = ['name', 'password']
|
REQUIRED_FIELDS = ['name', 'password']
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def register(cls, name, password, email, app='digital_glarus', base_url=None, send_email=True):
|
def register(cls, name, password, email, app='digital_glarus',
|
||||||
|
base_url=None, send_email=True):
|
||||||
user = cls.objects.filter(email=email).first()
|
user = cls.objects.filter(email=email).first()
|
||||||
if not user:
|
if not user:
|
||||||
user = cls.objects.create_user(name=name, email=email, password=password)
|
user = cls.objects.create_user(name=name, email=email,
|
||||||
|
password=password)
|
||||||
if user:
|
if user:
|
||||||
if app == 'digital_glarus':
|
if app == 'digital_glarus':
|
||||||
dg = DigitalGlarusRegistrationMailer(user.validation_slug)
|
dg = DigitalGlarusRegistrationMailer(user.validation_slug)
|
||||||
dg.send_mail(to=user.email)
|
dg.send_mail(to=user.email)
|
||||||
elif app == 'dcl':
|
elif app == 'dcl':
|
||||||
dcl_text = settings.DCL_TEXT
|
dcl_text = settings.DCL_TEXT
|
||||||
# not used
|
|
||||||
# dcl_from_address = settings.DCL_SUPPORT_FROM_ADDRESS
|
|
||||||
user.is_active = False
|
user.is_active = False
|
||||||
|
|
||||||
if send_email is True:
|
if send_email is True:
|
||||||
email_data = {
|
email_data = {
|
||||||
'subject': str(_('Activate your ')) + dcl_text + str(_(' account')),
|
'subject': '{dcl_text} {account_activation}'.format(
|
||||||
|
dcl_text=dcl_text,
|
||||||
|
account_activation=_('Account Activation')
|
||||||
|
),
|
||||||
'from_address': settings.DCL_SUPPORT_FROM_ADDRESS,
|
'from_address': settings.DCL_SUPPORT_FROM_ADDRESS,
|
||||||
'to': user.email,
|
'to': user.email,
|
||||||
'context': {'base_url': base_url,
|
'context': {'base_url': base_url,
|
||||||
'activation_link': reverse('hosting:validate',
|
'activation_link': reverse(
|
||||||
kwargs={'validate_slug': user.validation_slug}),
|
'hosting:validate',
|
||||||
|
kwargs={
|
||||||
|
'validate_slug': user.validation_slug}),
|
||||||
'dcl_text': dcl_text
|
'dcl_text': dcl_text
|
||||||
},
|
},
|
||||||
'template_name': 'user_activation',
|
'template_name': 'user_activation',
|
||||||
|
@ -114,7 +122,8 @@ class CustomUser(AbstractBaseUser, PermissionsMixin):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_all_members(cls):
|
def get_all_members(cls):
|
||||||
return cls.objects.filter(stripecustomer__membershiporder__isnull=False)
|
return cls.objects.filter(
|
||||||
|
stripecustomer__membershiporder__isnull=False)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def validate_url(cls, validation_slug):
|
def validate_url(cls, validation_slug):
|
||||||
|
@ -204,9 +213,11 @@ class CreditCards(models.Model):
|
||||||
name = models.CharField(max_length=50)
|
name = models.CharField(max_length=50)
|
||||||
user_id = models.ForeignKey(CustomUser, on_delete=models.CASCADE)
|
user_id = models.ForeignKey(CustomUser, on_delete=models.CASCADE)
|
||||||
card_number = models.CharField(max_length=50)
|
card_number = models.CharField(max_length=50)
|
||||||
expiry_date = models.CharField(max_length=50, validators=[RegexValidator(r'\d{2}\/\d{4}', _(
|
expiry_date = models.CharField(max_length=50, validators=[
|
||||||
|
RegexValidator(r'\d{2}\/\d{4}', _(
|
||||||
'Use this pattern(MM/YYYY).'))])
|
'Use this pattern(MM/YYYY).'))])
|
||||||
ccv = models.CharField(max_length=4, validators=[RegexValidator(r'\d{3,4}', _('Wrong CCV number.'))])
|
ccv = models.CharField(max_length=4, validators=[
|
||||||
|
RegexValidator(r'\d{3,4}', _('Wrong CCV number.'))])
|
||||||
payment_type = models.CharField(max_length=5, default='N')
|
payment_type = models.CharField(max_length=5, default='N')
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
|
@ -221,7 +232,8 @@ class Calendar(models.Model):
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
if kwargs.get('datebooked'):
|
if kwargs.get('datebooked'):
|
||||||
user = kwargs.get('user')
|
user = kwargs.get('user')
|
||||||
kwargs['datebooked'] = datetime.strptime(kwargs.get('datebooked', ''), '%d,%m,%Y')
|
kwargs['datebooked'] = datetime.strptime(
|
||||||
|
kwargs.get('datebooked', ''), '%d,%m,%Y')
|
||||||
self.user_id = user.id
|
self.user_id = user.id
|
||||||
super(Calendar, self).__init__(*args, **kwargs)
|
super(Calendar, self).__init__(*args, **kwargs)
|
||||||
|
|
||||||
|
|
784
utils/locale/de/LC_MESSAGES/django.po
Normal file
784
utils/locale/de/LC_MESSAGES/django.po
Normal file
|
@ -0,0 +1,784 @@
|
||||||
|
# SOME DESCRIPTIVE TITLE.
|
||||||
|
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||||
|
# This file is distributed under the same license as the PACKAGE package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-09-02 11:50+0000\n"
|
||||||
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
"Language: \n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
|
msgid "Andorra"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "United Arab Emirates"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Afghanistan"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Antigua & Barbuda"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Anguilla"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Albania"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Armenia"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Netherlands Antilles"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Angola"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Antarctica"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Argentina"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "American Samoa"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Austria"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Australia"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Aruba"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Azerbaijan"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Bosnia and Herzegovina"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Barbados"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Bangladesh"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Belgium"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Burkina Faso"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Bulgaria"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Bahrain"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Burundi"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Benin"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Bermuda"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Brunei Darussalam"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Bolivia"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Brazil"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Bahama"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Bhutan"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Bouvet Island"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Botswana"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Belarus"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Belize"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Canada"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Cocos (Keeling) Islands"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Central African Republic"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Congo"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Switzerland"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Ivory Coast"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Cook Iislands"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Chile"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Cameroon"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "China"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Colombia"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Costa Rica"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Cuba"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Cape Verde"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Christmas Island"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Cyprus"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Czech Republic"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Germany"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Djibouti"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Denmark"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Dominica"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Dominican Republic"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Algeria"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Ecuador"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Estonia"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Egypt"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Western Sahara"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Eritrea"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Spain"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Ethiopia"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Finland"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Fiji"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Falkland Islands (Malvinas)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Micronesia"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Faroe Islands"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "France"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "France, Metropolitan"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Gabon"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "United Kingdom (Great Britain)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Grenada"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Georgia"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "French Guiana"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Ghana"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Gibraltar"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Greenland"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Gambia"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Guinea"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Guadeloupe"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Equatorial Guinea"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Greece"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "South Georgia and the South Sandwich Islands"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Guatemala"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Guam"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Guinea-Bissau"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Guyana"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Hong Kong"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Heard & McDonald Islands"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Honduras"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Croatia"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Haiti"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Hungary"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Indonesia"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Ireland"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Israel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "India"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "British Indian Ocean Territory"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Iraq"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Islamic Republic of Iran"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Iceland"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Italy"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Jamaica"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Jordan"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Japan"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Kenya"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Kyrgyzstan"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Cambodia"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Kiribati"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Comoros"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "St. Kitts and Nevis"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Korea, Democratic People's Republic of"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Korea, Republic of"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Kuwait"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Cayman Islands"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Kazakhstan"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Lao People's Democratic Republic"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Lebanon"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Saint Lucia"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Liechtenstein"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Sri Lanka"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Liberia"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Lesotho"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Lithuania"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Luxembourg"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Latvia"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Libyan Arab Jamahiriya"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Morocco"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Monaco"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Moldova, Republic of"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Madagascar"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Marshall Islands"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Mali"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Mongolia"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Myanmar"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Macau"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Northern Mariana Islands"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Martinique"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Mauritania"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Monserrat"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Malta"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Mauritius"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Maldives"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Malawi"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Mexico"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Malaysia"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Mozambique"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Namibia"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "New Caledonia"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Niger"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Norfolk Island"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Nigeria"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Nicaragua"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Netherlands"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Norway"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Nepal"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Nauru"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Niue"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "New Zealand"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Oman"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Panama"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Peru"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "French Polynesia"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Papua New Guinea"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Philippines"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Pakistan"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Poland"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "St. Pierre & Miquelon"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Pitcairn"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Puerto Rico"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Portugal"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Palau"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Paraguay"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Qatar"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Reunion"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Romania"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Russian Federation"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Rwanda"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Saudi Arabia"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Solomon Islands"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Seychelles"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Sudan"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Sweden"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Singapore"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "St. Helena"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Slovenia"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Svalbard & Jan Mayen Islands"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Slovakia"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Sierra Leone"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "San Marino"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Senegal"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Somalia"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Suriname"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Sao Tome & Principe"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "El Salvador"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Syrian Arab Republic"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Swaziland"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Turks & Caicos Islands"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Chad"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "French Southern Territories"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Togo"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Thailand"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Tajikistan"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Tokelau"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Turkmenistan"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Tunisia"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Tonga"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "East Timor"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Turkey"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Trinidad & Tobago"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Tuvalu"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Taiwan, Province of China"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Tanzania, United Republic of"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Ukraine"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Uganda"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "United States Minor Outlying Islands"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "United States of America"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Uruguay"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Uzbekistan"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Vatican City State (Holy See)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "St. Vincent & the Grenadines"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Venezuela"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "British Virgin Islands"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "United States Virgin Islands"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Viet Nam"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Vanuatu"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Wallis & Futuna Islands"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Samoa"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Yemen"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Mayotte"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Yugoslavia"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "South Africa"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Zambia"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Zaire"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Zimbabwe"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Unknown or unspecified country"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enter your name or company name"
|
||||||
|
msgstr "Geben Sie Ihren Namen oder der Ihrer Firma ein"
|
||||||
|
|
||||||
|
msgid "Cardholder Name"
|
||||||
|
msgstr "Name des Kartenbesitzer"
|
||||||
|
|
||||||
|
msgid "Street Address"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "City"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Postal Code"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Country"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Street Building"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Email"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Phone number"
|
||||||
|
msgstr "Telefon"
|
||||||
|
|
||||||
|
msgid "Message"
|
||||||
|
msgstr "Nachricht"
|
||||||
|
|
||||||
|
msgid "The link to reset your email has been sent to your email"
|
||||||
|
msgstr "Der Link zum Zur?cksetzen deines Passwortes wurde an deine E-Mail gesendet"
|
||||||
|
|
||||||
|
msgid "Password Reset"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Password has been reset."
|
||||||
|
msgstr "Das Passwort wurde zur?ckgesetzt."
|
||||||
|
|
||||||
|
msgid "Password reset has not been successful."
|
||||||
|
msgstr "Das Zur?cksetzen war nicht erfolgreich."
|
||||||
|
|
||||||
|
msgid "The reset password link is no longer valid."
|
||||||
|
msgstr "Der Link zum Zur?cksetzen deines Passwortes ist nicht l?nger g?ltig."
|
|
@ -1,15 +1,16 @@
|
||||||
from django.views.generic import FormView, CreateView
|
from django.conf import settings
|
||||||
from django.utils.http import urlsafe_base64_encode, urlsafe_base64_decode
|
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
from django.contrib.auth.tokens import default_token_generator
|
|
||||||
from django.utils.encoding import force_bytes
|
|
||||||
from django.http import HttpResponseRedirect
|
|
||||||
from django.contrib.auth import authenticate, login
|
from django.contrib.auth import authenticate, login
|
||||||
|
from django.contrib.auth.tokens import default_token_generator
|
||||||
|
from django.http import HttpResponseRedirect
|
||||||
|
from django.utils.encoding import force_bytes
|
||||||
|
from django.utils.http import urlsafe_base64_encode, urlsafe_base64_decode
|
||||||
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
from django.views.generic import FormView, CreateView
|
||||||
|
|
||||||
from membership.models import CustomUser
|
from membership.models import CustomUser
|
||||||
|
|
||||||
from .mailer import BaseEmail
|
|
||||||
from .forms import SetPasswordForm
|
from .forms import SetPasswordForm
|
||||||
|
from .mailer import BaseEmail
|
||||||
|
|
||||||
|
|
||||||
class SignupViewMixin(CreateView):
|
class SignupViewMixin(CreateView):
|
||||||
|
@ -17,8 +18,8 @@ class SignupViewMixin(CreateView):
|
||||||
success_url = None
|
success_url = None
|
||||||
|
|
||||||
def get_success_url(self):
|
def get_success_url(self):
|
||||||
|
next_url = self.request.POST.get('next') if self.request.POST.get(
|
||||||
next_url = self.request.POST.get('next') if self.request.POST.get('next')\
|
'next') \
|
||||||
else self.success_url
|
else self.success_url
|
||||||
|
|
||||||
return next_url
|
return next_url
|
||||||
|
@ -65,39 +66,37 @@ class LoginViewMixin(FormView):
|
||||||
class PasswordResetViewMixin(FormView):
|
class PasswordResetViewMixin(FormView):
|
||||||
# template_name = 'hosting/reset_password.html'
|
# template_name = 'hosting/reset_password.html'
|
||||||
# form_class = PasswordResetRequestForm
|
# form_class = PasswordResetRequestForm
|
||||||
success_message = "The link to reset your email has been sent to your email"
|
success_message = _(
|
||||||
|
"The link to reset your email has been sent to your email")
|
||||||
site = ''
|
site = ''
|
||||||
success_message = "Thank you! You will shortly receive a password reset mail from us"
|
|
||||||
# success_url = reverse_lazy('hosting:login')
|
|
||||||
|
|
||||||
def test_generate_email_context(self, user):
|
def test_generate_email_context(self, user):
|
||||||
context = {
|
context = {
|
||||||
'user': user,
|
'user': user,
|
||||||
'token': default_token_generator.make_token(user),
|
'token': default_token_generator.make_token(user),
|
||||||
'uid': urlsafe_base64_encode(force_bytes(user.pk)),
|
'uid': urlsafe_base64_encode(force_bytes(user.pk)),
|
||||||
'site_name': 'ungleich',
|
'site_name': 'ungleich' if self.site != 'dcl' else settings.DCL_TEXT,
|
||||||
'base_url': "{0}://{1}".format(self.request.scheme, self.request.get_host())
|
'base_url': "{0}://{1}".format(self.request.scheme,
|
||||||
|
self.request.get_host())
|
||||||
|
|
||||||
}
|
}
|
||||||
return context
|
return context
|
||||||
|
|
||||||
def form_valid(self, form):
|
def form_valid(self, form):
|
||||||
|
|
||||||
email = form.cleaned_data.get('email')
|
email = form.cleaned_data.get('email')
|
||||||
user = CustomUser.objects.get(email=email)
|
user = CustomUser.objects.get(email=email)
|
||||||
|
messages.add_message(self.request, messages.SUCCESS,
|
||||||
messages.add_message(self.request, messages.SUCCESS, self.success_message)
|
self.success_message)
|
||||||
|
|
||||||
context = self.test_generate_email_context(user)
|
context = self.test_generate_email_context(user)
|
||||||
email_data = {
|
email_data = {
|
||||||
'subject': 'Password Reset',
|
'subject': _('Password Reset'),
|
||||||
'to': email,
|
'to': email,
|
||||||
'context': context,
|
'context': context,
|
||||||
'template_name': 'password_reset_email',
|
'template_name': 'password_reset_email',
|
||||||
'template_path': self.template_email_path
|
'template_path': self.template_email_path
|
||||||
}
|
}
|
||||||
if self.site == 'dcl':
|
if self.site == 'dcl':
|
||||||
email_data['from_address'] = '(Data Center Light) Data Center Light Support <support@datacenterlight.ch>'
|
email_data['from_address'] = settings.DCL_SUPPORT_FROM_ADDRESS
|
||||||
email = BaseEmail(**email_data)
|
email = BaseEmail(**email_data)
|
||||||
email.send()
|
email.send()
|
||||||
|
|
||||||
|
@ -107,6 +106,7 @@ class PasswordResetViewMixin(FormView):
|
||||||
class PasswordResetConfirmViewMixin(FormView):
|
class PasswordResetConfirmViewMixin(FormView):
|
||||||
# template_name = 'hosting/confirm_reset_password.html'
|
# template_name = 'hosting/confirm_reset_password.html'
|
||||||
form_class = SetPasswordForm
|
form_class = SetPasswordForm
|
||||||
|
|
||||||
# success_url = reverse_lazy('hosting:login')
|
# success_url = reverse_lazy('hosting:login')
|
||||||
|
|
||||||
def post(self, request, uidb64=None, token=None, *arg, **kwargs):
|
def post(self, request, uidb64=None, token=None, *arg, **kwargs):
|
||||||
|
@ -118,19 +118,24 @@ class PasswordResetConfirmViewMixin(FormView):
|
||||||
|
|
||||||
form = self.form_class(request.POST)
|
form = self.form_class(request.POST)
|
||||||
|
|
||||||
if user is not None and default_token_generator.check_token(user, token):
|
if user is not None and default_token_generator.check_token(user,
|
||||||
|
token):
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
new_password = form.cleaned_data['new_password2']
|
new_password = form.cleaned_data['new_password2']
|
||||||
user.set_password(new_password)
|
user.set_password(new_password)
|
||||||
user.save()
|
user.save()
|
||||||
messages.success(request, 'Password has been reset.')
|
messages.success(request, _('Password has been reset.'))
|
||||||
return self.form_valid(form)
|
return self.form_valid(form)
|
||||||
else:
|
else:
|
||||||
messages.error(request, 'Password reset has not been successful.')
|
messages.error(request,
|
||||||
form.add_error(None, 'Password reset has not been successful.')
|
_('Password reset has not been successful.'))
|
||||||
|
form.add_error(None,
|
||||||
|
_('Password reset has not been successful.'))
|
||||||
return self.form_invalid(form)
|
return self.form_invalid(form)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
messages.error(request, 'The reset password link is no longer valid.')
|
messages.error(request,
|
||||||
form.add_error(None, 'The reset password link is no longer valid.')
|
_('The reset password link is no longer valid.'))
|
||||||
|
form.add_error(None,
|
||||||
|
_('The reset password link is no longer valid.'))
|
||||||
return self.form_invalid(form)
|
return self.form_invalid(form)
|
||||||
|
|
Loading…
Reference in a new issue