Merged upstream master into task/3772/hosting_billing_monthly_subscription
This commit is contained in:
		
				commit
				
					
						c1a8689199
					
				
			
		
					 43 changed files with 1921 additions and 980 deletions
				
			
		
							
								
								
									
										11
									
								
								Changelog
									
										
									
									
									
								
							
							
						
						
									
										11
									
								
								Changelog
									
										
									
									
									
								
							|  | @ -1,3 +1,14 @@ | |||
| 1.2.2: 2017-09-08 | ||||
|     * #3704: [hosting] Added my settings page | ||||
|     * #3771: [datacenterlight] Fixed the inconsistency in navbar style in billing page and onward | ||||
|     * #3769: [datacenterlight] Fixed EN dashboard url redirecting to the wrong page | ||||
|     * #3775: [hosting] Made the dashboard as the default start page for hosting app | ||||
|     * #3779: [hosting] Changed signup validation and activation page navbar transparent | ||||
|     * #3759: [hosting] Made the navbar style consistent to the dcl navbar and changed font weight from 300 to 400 for mobile navbar text | ||||
|     * #3644: [datacenterlight] Added a login button on landing | ||||
|     * #3659: [hosting] Changed hosting navbar design | ||||
| 1.2.1: 2017-09-06 | ||||
|     * #3757: [datacenterlight] Added /l route for linkedin | ||||
| 1.2: 2017-09-01 | ||||
|     * #3703: [hosting] Added a new dashboard | ||||
|     * #3717: [datacenterlight, hosting] Changed warning color for box | ||||
|  |  | |||
|  | @ -8,7 +8,7 @@ msgid "" | |||
| msgstr "" | ||||
| "Project-Id-Version: PACKAGE VERSION\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" | ||||
| "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | ||||
| "Language-Team: LANGUAGE <LL@li.org>\n" | ||||
|  | @ -102,8 +102,11 @@ msgstr "" | |||
| msgid "SUBMIT" | ||||
| msgstr "ABSENDEN" | ||||
| 
 | ||||
| msgid "Your Data Center Light Team" | ||||
| msgstr "Dein Data Center Light Team" | ||||
| 
 | ||||
| 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!" | ||||
| msgstr "" | ||||
|  | @ -125,47 +128,35 @@ msgstr "" | |||
| msgid "Thank you!" | ||||
| msgstr "Vielen Dank!" | ||||
| 
 | ||||
| msgid "account activation" | ||||
| msgstr "Accountaktivierung" | ||||
| msgid "Account Activation" | ||||
| msgstr "Account Aktivierung" | ||||
| 
 | ||||
| #, python-format | ||||
| msgid "" | ||||
| "\n" | ||||
| "                You can activate your %(dcl_text)s account by <a href=" | ||||
| "\"%(base_url)s%(activation_link)s\">clicking here</a>.<br/><br/>\n" | ||||
| "                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/>\n" | ||||
| "                %(base_url)s%(activation_link)s\n" | ||||
| "                " | ||||
| "You can activate your Data Center Light account by <a href=\"%(base_url)s" | ||||
| "%(activation_link)s\">clicking here</a>.<br/>\n" | ||||
| "You can also copy and paste the following link into the address bar of your " | ||||
| "browser<br/>\n" | ||||
| "to activate your Data Center Light account.<br/>\n" | ||||
| "%(base_url)s%(activation_link)s\n" | ||||
| msgstr "" | ||||
| "\n" | ||||
| "                <a href=\"%(base_url)s%(activation_link)s\">Klicke hier</a> " | ||||
| "um deinen %(dcl_text)s zu aktivieren.<br/><br/>\n" | ||||
| "                Oder kopiere den folgenden Link in die Adressleiste deines " | ||||
| "Browsers und folge dann dem Link um deinen %(dcl_text)s Account zu " | ||||
| "aktivieren.<br/>\n" | ||||
| "                %(base_url)s%(activation_link)s\n" | ||||
| "                " | ||||
| 
 | ||||
| msgid "Your" | ||||
| msgstr "Dein" | ||||
| 
 | ||||
| msgid "team" | ||||
| msgstr "Team" | ||||
| "<a href=\"%(base_url)s%(activation_link)s\">Klicke hier</a> um deinen Data " | ||||
| "Center Light Account zu aktivieren oder kopiere den folgenden Link in die " | ||||
| "Adressleiste deines Browsers.<br/>\n" | ||||
| "%(base_url)s%(activation_link)s\n" | ||||
| 
 | ||||
| #, python-format | ||||
| msgid "" | ||||
| "\n" | ||||
| "Hi,\n" | ||||
| "\n" | ||||
| "You can activate your %(dcl_text)s account by clicking here %(base_url)s" | ||||
| "%(activation_link)s\n" | ||||
| "You can activate your Data Center Light account by clicking here.\n" | ||||
| "You can also copy and paste the following link into the address bar of your " | ||||
| "browser\n" | ||||
| "to activate your Data Center Light account.\n" | ||||
| "%(base_url)s%(activation_link)s\n" | ||||
| msgstr "" | ||||
| "\n" | ||||
| "Hallo,\n" | ||||
| "\n" | ||||
| "Du kannst deinen %(dcl_text)s Account aktivieren, indem du hier klickst " | ||||
| "Klicke hier, um deinen Data Center Light Account zu aktivieren oder kopiere " | ||||
| "den folgenden Link in die Adressleiste deines Browsers.\n" | ||||
| "%(base_url)s%(activation_link)s\n" | ||||
| 
 | ||||
| msgid "Home" | ||||
|  | @ -344,8 +335,8 @@ msgstr "Rechnungsadresse" | |||
| msgid "Payment Method:" | ||||
| msgstr "Bezahlmethode" | ||||
| 
 | ||||
| msgid "ending" | ||||
| msgstr "endend" | ||||
| msgid "ending in" | ||||
| msgstr "endend in" | ||||
| 
 | ||||
| msgid "Order summary" | ||||
| msgstr "Bestellungsübersicht" | ||||
|  | @ -481,6 +472,25 @@ msgstr "ist kein gültiger Name" | |||
| msgid "is not a proper email" | ||||
| 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?" | ||||
| #~ msgstr "Fragen?" | ||||
| 
 | ||||
|  |  | |||
|  | @ -122,7 +122,7 @@ button, input, optgroup, select, textarea { | |||
| 
 | ||||
| .navbar-default { | ||||
|     background: #fff; | ||||
|     border: none; | ||||
|     /* border: none; */ | ||||
|     padding: 5px; | ||||
| } | ||||
| 
 | ||||
|  | @ -143,15 +143,19 @@ button, input, optgroup, select, textarea { | |||
| 
 | ||||
| .navbar-default .navbar-nav>li>a { | ||||
|     cursor: pointer; | ||||
|     /*font-family: 'Lato-Light', sans-serif;*/ | ||||
|     font-weight: 300; | ||||
|     font-weight: 400; | ||||
| } | ||||
| 
 | ||||
| .navbar-transparent .navbar-nav>li>a { | ||||
|     color: #fff; | ||||
|     cursor: pointer; | ||||
|     /*font-family: 'Lato-Light', sans-serif;*/ | ||||
|     font-weight: 300; | ||||
| } | ||||
| 
 | ||||
| @media (min-width: 768px) { | ||||
|     .navbar-default .navbar-nav>li>a, | ||||
|     .navbar-transparent .navbar-nav>li>a { | ||||
|         font-weight: 300; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| .navbar-transparent .navbar-nav>li>a:hover { | ||||
|  | @ -924,7 +928,7 @@ tech-sub-sec h2 { | |||
|     border: 1px solid #fff; | ||||
|     -webkit-box-shadow: -8px 13px 31px -8px rgba(77, 77, 77, 1); | ||||
|     -moz-box-shadow: -8px 13px 31px -8px rgba(77, 77, 77, 1); | ||||
|     box-shadow: -8px 13px 31px -8px rgba(77, 77, 77, 1); | ||||
|     box-shadow: -8px 14px 20px -5px rgba(77, 77, 77, 0.5); | ||||
|     display: none; | ||||
|     text-align: center; | ||||
|     border-radius: 4px !important; | ||||
|  | @ -976,8 +980,12 @@ tech-sub-sec h2 { | |||
| 
 | ||||
| .dropdown-menu>li>a { | ||||
|     font-size: 13px; | ||||
|     font-weight: 300; | ||||
|     /*font-family: 'Lato-Light', sans-serif;*/ | ||||
| } | ||||
| 
 | ||||
| @media (min-width: 768px) { | ||||
|     .dropdown-menu>li>a { | ||||
|         font-weight: 300; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| .navbar-default .navbar-nav>.active>a, | ||||
|  |  | |||
							
								
								
									
										
											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]--> | ||||
|               <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"> | ||||
| <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> | ||||
|                     </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"> | ||||
|  | @ -95,12 +95,12 @@ | |||
|       <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"> | ||||
| <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." %} | ||||
|             </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"> | ||||
| <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/>  | ||||
|                {% 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/> | ||||
|  | @ -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"> | ||||
|       <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">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> | ||||
|           </tr></table> | ||||
| </center> | ||||
|  |  | |||
|  | @ -73,7 +73,7 @@ | |||
|             <![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"> | ||||
| <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> | ||||
|                     </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"> | ||||
|  | @ -94,12 +94,12 @@ | |||
|       <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"> | ||||
| <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 | ||||
|             </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"> | ||||
| <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> | ||||
|           </tr> | ||||
| <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"> | ||||
|       <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">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> | ||||
|           </tr></table> | ||||
| </center> | ||||
|  |  | |||
|  | @ -73,7 +73,7 @@ | |||
|             <![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"> | ||||
| <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> | ||||
|                     </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"> | ||||
|  | @ -94,14 +94,14 @@ | |||
|       <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"> | ||||
| <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 | ||||
| 
 | ||||
| 
 | ||||
|             </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"> | ||||
| <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> | ||||
|              {% for vm in vms %} | ||||
|                 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"> | ||||
|       <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">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> | ||||
|           </tr></table> | ||||
| </center> | ||||
|  |  | |||
|  | @ -1,132 +1,14 @@ | |||
| {% extends "datacenterlight/emails/base_email_datacenterlight.html" %} | ||||
| {% 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: 'Raleway', '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>{{dcl_text}}</title> | ||||
| </head> | ||||
| <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;"> | ||||
| <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: '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> | ||||
| 
 | ||||
| {% block email_head %} | ||||
| {{dcl_text}} {% trans 'Account Activation' %} | ||||
| {% endblock %} | ||||
| {% block email_body %} | ||||
| {% blocktrans %} | ||||
| You can activate your Data Center Light account by <a href="{{base_url}}{{activation_link}}">clicking here</a>.<br/> | ||||
| You can also copy and paste the following link into the address bar of your browser<br/> | ||||
| to activate your Data Center Light account.<br/> | ||||
| {{base_url}}{{activation_link}} | ||||
| {% endblocktrans %} | ||||
| {% endblock %} | ||||
|  |  | |||
|  | @ -1,11 +1,10 @@ | |||
| {% load static from staticfiles %} | ||||
| {% extends "datacenterlight/emails/base_email_datacenterlight.txt" %} | ||||
| {% load i18n %} | ||||
| {{dcl_text}} {% trans 'account activation' %} | ||||
| 
 | ||||
| {% blocktrans %} | ||||
| Hi, | ||||
| 
 | ||||
| You can activate your {{dcl_text}} account by clicking here {{base_url}}{{activation_link}} | ||||
| {% block email_head %}{{dcl_text}} {% trans 'Account Activation' %}{% endblock %} | ||||
| {% block email_body %} | ||||
| {% blocktrans %}You can activate your Data Center Light account by clicking here. | ||||
| You can also copy and paste the following link into the address bar of your browser | ||||
| to activate your Data Center Light account. | ||||
| {{base_url}}{{activation_link}} | ||||
| {% endblocktrans %} | ||||
| 
 | ||||
| {% trans 'Your' %} {{dcl_text}} {% trans 'team' %} | ||||
| {% endblock %} | ||||
|  |  | |||
|  | @ -1,10 +1,12 @@ | |||
| {% load staticfiles i18n%} {% load custom_tags %} {% get_current_language as LANGUAGE_CODE %} | ||||
| {% load staticfiles i18n%} | ||||
| {% load custom_tags %} | ||||
| {% get_current_language as LANGUAGE_CODE %} | ||||
| <nav class="navbar navbar-default navbar-fixed-top topnav"> | ||||
|     <div class="topnav"> | ||||
|         <!-- Brand and toggle get grouped for better mobile display --> | ||||
|         <div class="navbar-header"> | ||||
|             <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> | ||||
|                 <span class="sr-only">Toggle navigation</span> | ||||
|                 <span class="sr-only">{% trans "Toggle navigation" %}</span> | ||||
|                 <span class="icon-bar"></span> | ||||
|                 <span class="icon-bar"></span> | ||||
|                 <span class="icon-bar"></span> | ||||
|  | @ -34,6 +36,15 @@ | |||
|                     <a class="on-hover-border" href="{% change_lang 'de' %}">Deutsch  <i class="fa fa-globe" aria-hidden="true"></i></a> {% else %} | ||||
|                     <a class="on-hover-border" href="{% change_lang 'en-us' %}">English  <i class="fa fa-globe" aria-hidden="true"></i></a> {% endif %} | ||||
|                 </li> | ||||
|                 {% if not request.user.is_authenticated %} | ||||
|                     <li> | ||||
|                         <a href="{% url 'hosting:login' %}">{% trans "Login" %}  <span class="fa fa-sign-in"></span></a> | ||||
|                     </li> | ||||
|                 {% else %} | ||||
|                     <li> | ||||
|                         <a href="{% url 'hosting:dashboard' %}">{% trans "Dashboard" %}</a> | ||||
|                     </li> | ||||
|                 {% endif %} | ||||
|                 {% comment %} | ||||
|                 <!-- to be used when more than one option for language --> | ||||
|                 <li class="nav-language"> | ||||
|  |  | |||
|  | @ -50,7 +50,7 @@ | |||
|                         <div class="col-xs-6"> | ||||
|                             <address> | ||||
|                                 <strong>{% trans "Payment Method:"%}</strong><br> | ||||
|                                     {{cc_brand}} {% trans "ending" %} **** {{cc_last4}}<br> | ||||
|                                     {{cc_brand}} {% trans "ending in" %} **** {{cc_last4}}<br> | ||||
|                                     {{request.session.user.email}} | ||||
|                             </address> | ||||
|                         </div> | ||||
|  |  | |||
|  | @ -7,9 +7,10 @@ from .views import IndexView, BetaProgramView, LandingProgramView, \ | |||
| 
 | ||||
| urlpatterns = [ | ||||
|     url(r'^$', IndexView.as_view(), name='index'), | ||||
|     url(r'^t$', IndexView.as_view(), name='index_t'), | ||||
|     url(r'^g$', IndexView.as_view(), name='index_g'), | ||||
|     url(r'^f$', IndexView.as_view(), name='index_f'), | ||||
|     url(r'^t/$', IndexView.as_view(), name='index_t'), | ||||
|     url(r'^g/$', IndexView.as_view(), name='index_g'), | ||||
|     url(r'^f/$', IndexView.as_view(), name='index_f'), | ||||
|     url(r'^l/$', IndexView.as_view(), name='index_l'), | ||||
|     url(r'^whydatacenterlight/?$', WhyDataCenterLightView.as_view(), | ||||
|         name='whydatacenterlight'), | ||||
|     url(r'^beta-program/?$', BetaProgramView.as_view(), name='beta'), | ||||
|  |  | |||
|  | @ -12,42 +12,54 @@ from django.views.generic import RedirectView | |||
| from django.core.urlresolvers import reverse_lazy | ||||
| import debug_toolbar | ||||
| 
 | ||||
| urlpatterns = [url(r'^index.html$', LandingView.as_view()), | ||||
|                url(r'^hosting/', include('hosting.urls', namespace="hosting")), | ||||
|                url(r'^open_api/', include('opennebula_api.urls', | ||||
|                                           namespace='opennebula_api')), | ||||
|                url(r'^railshosting/', RailsHostingView.as_view(), name="rails.hosting"), | ||||
|                url(r'^nodehosting/', NodeJSHostingView.as_view(), name="node.hosting"), | ||||
|                url(r'^djangohosting/', DjangoHostingView.as_view(), name="django.hosting"), | ||||
|                url(r'^nosystemd/', include('nosystemd.urls', namespace="nosystemd")), | ||||
|                url(r'^taggit_autosuggest/', include('taggit_autosuggest.urls')), | ||||
|                url(r'^jsi18n/(?P<packages>\S+?)/$', | ||||
|                    i18n.javascript_catalog), | ||||
|                ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) | ||||
| urlpatterns = [ | ||||
|     url(r'^index.html$', LandingView.as_view()), | ||||
|     url(r'^open_api/', include('opennebula_api.urls', | ||||
|                                namespace='opennebula_api')), | ||||
|     url(r'^railshosting/', RailsHostingView.as_view(), | ||||
|         name="rails.hosting"), | ||||
|     url(r'^nodehosting/', NodeJSHostingView.as_view(), | ||||
|         name="node.hosting"), | ||||
|     url(r'^djangohosting/', DjangoHostingView.as_view(), | ||||
|         name="django.hosting"), | ||||
|     url(r'^nosystemd/', include('nosystemd.urls', namespace="nosystemd")), | ||||
|     url(r'^taggit_autosuggest/', include('taggit_autosuggest.urls')), | ||||
|     url(r'^jsi18n/(?P<packages>\S+?)/$', | ||||
|         i18n.javascript_catalog), | ||||
| ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) | ||||
| 
 | ||||
| urlpatterns += i18n_patterns( | ||||
|     url(r'^hosting/', include('hosting.urls', namespace="hosting")), | ||||
| ) | ||||
| 
 | ||||
| # note the django CMS URLs included via i18n_patterns | ||||
| urlpatterns += i18n_patterns( | ||||
|                              url(r'^$', LandingView.as_view()), | ||||
|                              url(r'^admin/', include(admin.site.urls)), | ||||
|                              url(r'^datacenterlight/', include('datacenterlight.urls', namespace="datacenterlight")), | ||||
|                              url(r'^hosting/', RedirectView.as_view( | ||||
|                                  url=reverse_lazy('hosting:login')), name='redirect_hosting_login'), | ||||
|                              url(r'^alplora/', include('alplora.urls', namespace="alplora")), | ||||
|                              url(r'^membership/', include(membership_urls)), | ||||
|                              url(r'^digitalglarus/', include('digitalglarus.urls', | ||||
|                                                              namespace="digitalglarus")), | ||||
|                              # url(r'^blog/', include('ungleich.urls', namespace='ungleich')), | ||||
|                              url(r'^', | ||||
|                                  include('ungleich_page.urls', namespace='ungleich_page'), | ||||
|                                  name='ungleich_page'), | ||||
|                              url(r'^blog/', include('ungleich.urls', namespace='ungleich')), | ||||
|                              url(r'^', include('cms.urls')) | ||||
|                              ) | ||||
|     url(r'^$', LandingView.as_view()), | ||||
|     url(r'^admin/', include(admin.site.urls)), | ||||
|     url(r'^datacenterlight/', | ||||
|         include('datacenterlight.urls', namespace="datacenterlight")), | ||||
|     url(r'^hosting/', RedirectView.as_view( | ||||
|         url=reverse_lazy('hosting:login')), name='redirect_hosting_login'), | ||||
|     url(r'^alplora/', include('alplora.urls', namespace="alplora")), | ||||
|     url(r'^membership/', include(membership_urls)), | ||||
|     url(r'^digitalglarus/', include('digitalglarus.urls', | ||||
|                                     namespace="digitalglarus")), | ||||
|     # url(r'^blog/', include('ungleich.urls', namespace='ungleich')), | ||||
|     url(r'^', | ||||
|         include('ungleich_page.urls', | ||||
|                 namespace='ungleich_page'), | ||||
|         name='ungleich_page'), | ||||
|     url(r'^blog/', include('ungleich.urls', | ||||
|                            namespace='ungleich')), | ||||
|     url(r'^', include('cms.urls')) | ||||
| ) | ||||
| 
 | ||||
| urlpatterns += [ | ||||
|                         url(r'^media/(?P<path>.*)$', | ||||
|                             static_view.serve, { | ||||
|                                 'document_root': settings.MEDIA_ROOT, | ||||
|                             }), | ||||
|                         ] | ||||
|     url(r'^media/(?P<path>.*)$', | ||||
|         static_view.serve, { | ||||
|             'document_root': settings.MEDIA_ROOT, | ||||
|         }), | ||||
| ] | ||||
| 
 | ||||
| if settings.DEBUG: | ||||
|     urlpatterns += [url(r'^__debug__/', include(debug_toolbar.urls))] | ||||
|  |  | |||
|  | @ -8,7 +8,7 @@ msgid "" | |||
| msgstr "" | ||||
| "Project-Id-Version: PACKAGE VERSION\n" | ||||
| "Report-Msgid-Bugs-To: \n" | ||||
| "POT-Creation-Date: 2017-09-02 03:08+0530\n" | ||||
| "POT-Creation-Date: 2017-09-09 06:04+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" | ||||
|  | @ -33,21 +33,6 @@ msgstr "Gebe deinem SSH-Key einen Name" | |||
| msgid "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" | ||||
| msgstr "Alle Rechte vorbehalten" | ||||
| 
 | ||||
|  | @ -195,19 +180,109 @@ msgstr "Support / Kontakt" | |||
| 
 | ||||
| #, python-format | ||||
| 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 " | ||||
| "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 "" | ||||
| "\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 "" | ||||
| "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 "" | ||||
| 
 | ||||
| #, 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 "" | ||||
| "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 ? " | ||||
| msgstr "Besitzt du kein Benutzerkonto?" | ||||
|  | @ -356,6 +431,25 @@ msgstr "Deine Kreditkartennummer" | |||
| msgid "Reset your password" | ||||
| msgstr "Passwort zurücksetzen" | ||||
| 
 | ||||
| msgid "UPDATE" | ||||
| msgstr "" | ||||
| 
 | ||||
| msgid "Last" | ||||
| msgstr "" | ||||
| 
 | ||||
| msgid "Type" | ||||
| msgstr "Kartentyp" | ||||
| 
 | ||||
| msgid "No Credit Cards Added" | ||||
| msgstr "Es wurde keine Kreditkarte hinzugefügt" | ||||
| 
 | ||||
| msgid "" | ||||
| "We are using <a href=\"https://stripe.com\">Stripe</a> for payment and do " | ||||
| "not store your information in our database." | ||||
| msgstr "" | ||||
| "Wir nutzen <a href=\"https://stripe.com\" target=\"_blank\">Stripe</a> für " | ||||
| "die Bezahlung und speichern keine Informationen in unserer Datenbank." | ||||
| 
 | ||||
| msgid "Add your public SSH key" | ||||
| msgstr "Füge deinen öffentlichen SSH-Key hinzu" | ||||
| 
 | ||||
|  | @ -502,17 +596,65 @@ msgstr "Du kannst dich nun" | |||
| msgid "Sorry. Your request is invalid." | ||||
| 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" | ||||
| 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" | ||||
| 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 "" | ||||
| "We could not find the requested VM. Please                            " | ||||
| "contact 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." | ||||
| #~ msgstr "Neue Kreditkarte hinzufügen." | ||||
| 
 | ||||
| #~ msgid "You are not making any payment here." | ||||
| #~ msgstr "Es wird noch keine Bezahlung vorgenommen" | ||||
| 
 | ||||
| #~ msgid "Your SSH Keys" | ||||
| #~ msgstr "Deine SSH Keys" | ||||
| 
 | ||||
|  |  | |||
|  | @ -5,13 +5,18 @@ | |||
| } | ||||
| 
 | ||||
| .dashboard-container { | ||||
|   padding-top:70px; | ||||
|   padding-top: 80px; | ||||
|   padding-bottom: 70px; | ||||
|   width: 90%; | ||||
|   margin: 0 auto; | ||||
|   max-width: 768px; | ||||
| } | ||||
| 
 | ||||
| .dashboard-container.wide { | ||||
|   padding-top: 90px; | ||||
|   max-width: 980px; | ||||
| } | ||||
| 
 | ||||
| .content-dashboard{ | ||||
| 	min-height: calc(100vh - 70px); | ||||
| 	width: 80%; | ||||
|  | @ -241,6 +246,113 @@ | |||
|   transform: translate(-50%,-50%); | ||||
| } | ||||
| 
 | ||||
| .settings-container { | ||||
|   padding: 8px; | ||||
| } | ||||
| 
 | ||||
| .settings-container h4 { | ||||
|   margin-bottom: 15px; | ||||
|   color: #333; | ||||
|   font-size: 14px; | ||||
| } | ||||
| 
 | ||||
| .settings-container .card-expiry-element, | ||||
| .settings-container .card-cvc-element { | ||||
|   padding: 0 15px; | ||||
| } | ||||
| .settings-container .card-cvc-element .my-input, | ||||
| .settings-container .card-cvc-element label { | ||||
|   padding-left: 0; | ||||
| } | ||||
| 
 | ||||
| .settings-container .stripe-payment-btn { | ||||
|   float: none; | ||||
|   position: static; | ||||
| } | ||||
| 
 | ||||
| .settings-container h3 { | ||||
|   font-weight: bold; | ||||
| } | ||||
| 
 | ||||
| .settings-container hr { | ||||
|   margin-top: 15px; | ||||
| } | ||||
| 
 | ||||
| .settings-container .credit-card-details { | ||||
|   padding-bottom: 15px; | ||||
|   border-bottom: 1px solid #eee; | ||||
| } | ||||
| 
 | ||||
| .settings-container .credit-card-details h5 { | ||||
|   font-weight: bold; | ||||
|   font-size: 16px; | ||||
| } | ||||
| 
 | ||||
| .credit-card-form { | ||||
|   max-width: 360px; | ||||
| } | ||||
| 
 | ||||
| .btn-wide { | ||||
|   min-width: 100px; | ||||
| } | ||||
| 
 | ||||
| .caps-link { | ||||
|   font-weight: 600; | ||||
|   color: #8da4c0; | ||||
|   fill: #8da4c0; | ||||
|   padding: 8px 0; | ||||
|   display: block; | ||||
| } | ||||
| .caps-link:hover, | ||||
| .caps-link:focus, | ||||
| .caps-link:active { | ||||
|   color: #627388; | ||||
|   fill: #627388; | ||||
|   text-decoration: none; | ||||
| } | ||||
| 
 | ||||
| .settings-container .credit-card-details-opt { | ||||
|   padding-top: 15px; | ||||
| } | ||||
| 
 | ||||
| .caps-link .svg-img { | ||||
|   margin-right: 5px; | ||||
|   height: 13px; | ||||
|   position: relative; | ||||
|   top: 1px; | ||||
|   vertical-align: baseline; | ||||
| } | ||||
| 
 | ||||
| .settings-container .caps-link { | ||||
|   font-size: 13px; | ||||
|   letter-spacing: 1.1px; | ||||
| } | ||||
| 
 | ||||
| .settings-container .btn-vm-contact { | ||||
|   font-weight: 600; | ||||
|   font-size: 13px; | ||||
|   /* padding: 4px 15px; */ | ||||
| } | ||||
| 
 | ||||
| .btn-wide { | ||||
| 	min-width: 100px; | ||||
| } | ||||
| 
 | ||||
| .no-cards { | ||||
|   text-align: center; | ||||
|   color: #999; | ||||
|   padding: 15px; | ||||
|   background: rgba(0,0,0,0.02); | ||||
|   display: flex; | ||||
|   flex-direction: column; | ||||
|   height: 230px; | ||||
|   justify-content: center; | ||||
| } | ||||
| 
 | ||||
| .no-cards h4 { | ||||
|   font-size: 24px; | ||||
| } | ||||
| 
 | ||||
| .no-cards a { | ||||
|   color: #7ca3d0; | ||||
| } | ||||
|  | @ -34,7 +34,8 @@ h6 { | |||
| 
 | ||||
| .navbar-default { | ||||
|     background: #fff; | ||||
|     box-shadow: 0 3px 3px -2px hsla(0,0%,78%,.72); | ||||
|     /* box-shadow: 0 3px 3px -2px hsla(0,0%,78%,.72); */ | ||||
|     padding: 5px; | ||||
| } | ||||
| 
 | ||||
| .navbar-default .navbar-header { | ||||
|  | @ -78,13 +79,20 @@ h6 { | |||
|     left: 0 !important; | ||||
|     min-width: 155px; | ||||
|     margin-left: 15px; | ||||
|     padding: 5px !important; | ||||
|     padding: 0 5px 8px !important; | ||||
| } | ||||
| @media(min-width: 768px) { | ||||
|     .navbar-right .highlights-dropdown .dropdown-menu { | ||||
|         border: 1px solid #fff; | ||||
|     .navbar-default .navbar-nav>li>a, | ||||
|     .navbar-right .highlights-dropdown .dropdown-menu > li > a { | ||||
|         font-weight: 300; | ||||
|     } | ||||
|     .navbar-right .highlights-dropdown .dropdown-menu:before { | ||||
|     .navbar-right .highlights-dropdown .dropdown-menu { | ||||
|         box-shadow: 0 2px 5px 0 rgba(0,0,0,0.02); | ||||
|         border-width: 0 0 1px 0; | ||||
|         border-color: #e7e7e7; | ||||
|         box-shadow: -8px 14px 20px -5px rgba(77, 77, 77, 0.5); | ||||
|     } | ||||
| /*     .navbar-right .highlights-dropdown .dropdown-menu:before { | ||||
|         content: ''; | ||||
|         display: block; | ||||
|         height: 1px; | ||||
|  | @ -93,13 +101,12 @@ h6 { | |||
|         top: -1px; | ||||
|         left: -1px; | ||||
|         right: -1px; | ||||
|     } | ||||
|     } */ | ||||
| } | ||||
| .navbar-right .highlights-dropdown .dropdown-menu > li > a{ | ||||
|     font-size: 13px; | ||||
|     font-weight: 300; | ||||
|     font-family: 'Lato', sans-serif; | ||||
|     padding: 1px 10px !important; | ||||
|     padding: 1px 10px 1px 18px !important; | ||||
|     background: transparent; | ||||
|     color: #333; | ||||
| } | ||||
|  | @ -608,6 +615,7 @@ a.unlink:hover { | |||
|     border: 1px solid #a1a1a1; | ||||
|     border-radius: 3px; | ||||
|     padding: 5px; | ||||
|     margin-bottom: 15px; | ||||
| } | ||||
| .card-warning-error { | ||||
|     border: 1px solid #EB4D5C; | ||||
|  | @ -765,12 +773,12 @@ a.unlink:hover { | |||
| 
 | ||||
| @media (min-width: 768px) { | ||||
|     .dcl-billing { | ||||
|         padding-right: 50px; | ||||
|         padding-right: 65px; | ||||
|         border-right: 1px solid #eee; | ||||
|     } | ||||
| 
 | ||||
|     .dcl-creditcard { | ||||
|         padding-left: 50px; | ||||
|         padding-left: 65px; | ||||
|     } | ||||
| 
 | ||||
|     .tbl-tot { | ||||
|  |  | |||
|  | @ -446,6 +446,11 @@ | |||
|   width: 34px; | ||||
|   vertical-align: middle; | ||||
| } | ||||
| .dashboard-title-thin .un-icon.wide { | ||||
|   height: 38px; | ||||
|   width: 38px; | ||||
|   margin-top: -6px; | ||||
| } | ||||
| 
 | ||||
| .dashboard-subtitle { | ||||
|   font-weight: 300; | ||||
|  | @ -533,6 +538,11 @@ | |||
|     width: 22px; | ||||
|     margin-top: -3px; | ||||
|   } | ||||
|   .dashboard-title-thin .un-icon.wide { | ||||
|     height: 25px; | ||||
|     width: 25px; | ||||
|     margin-top: -5px; | ||||
|   } | ||||
|   .dashboard-subtitle p { | ||||
|     width: 200px; | ||||
|   } | ||||
|  |  | |||
							
								
								
									
										7
									
								
								hosting/static/hosting/img/delete.svg
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								hosting/static/hosting/img/delete.svg
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,7 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <!-- Svg Vector Icons : http://www.onlinewebfonts.com/icon --> | ||||
| <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> | ||||
| <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 1000 1000" enable-background="new 0 0 1000 1000" xml:space="preserve"> | ||||
| <metadata> Svg Vector Icons : http://www.onlinewebfonts.com/icon </metadata> | ||||
| <g><path d="M185,150h630c19.3,0,35-15.7,35-35s-15.7-35-35-35H605c0-38.7-31.3-70-70-70h-70c-38.7,0-70,31.3-70,70H185c-19.3,0-35,15.7-35,35S165.7,150,185,150z"/><path d="M885,220h-69.9c-0.1,0-0.3,0-0.4,0H395.1c0,0-0.1,0-0.1,0H185.3c-0.1,0-0.2,0-0.3,0h-70c-19.3,0-35,15.7-35,35c0,19.3,15.7,35,35,35h39.9l100.5,670.2C258,977.3,272.7,990,290,990h139.9c0,0,0,0,0,0c0,0,0,0,0,0h140c0,0,0,0,0,0c0,0,0,0,0,0H710c17.3,0,32-12.7,34.6-29.8L845.1,290H885c19.3,0,35-15.7,35-35C920,235.7,904.3,220,885,220z M463.3,920l-31.5-630h136.4l-31.5,630H463.3z M225.6,290h136.1l31.5,630h-73.1L225.6,290z M679.9,920h-73.1l31.5-630h136.1L679.9,920z"/></g> | ||||
| </svg> | ||||
| After Width: | Height: | Size: 1.1 KiB | 
|  | @ -73,7 +73,6 @@ $( document ).ready(function() { | |||
|      * Replace all SVG images with inline SVG | ||||
|      */ | ||||
|     $('.svg-img').each(function() { | ||||
|         console.log('asa') | ||||
|         var $img = $(this); | ||||
|         var imgID = $img.attr('id'); | ||||
|         var imgClass = $img.attr('class'); | ||||
|  |  | |||
|  | @ -25,6 +25,8 @@ | |||
|     <link href="{% static 'hosting/css/commons.css' %}" rel="stylesheet"> | ||||
|     <link href="{% static 'hosting/css/virtual-machine.css' %}" rel="stylesheet"> | ||||
|     <link href="{% static 'hosting/css/dashboard.css' %}" rel="stylesheet"> | ||||
|     {% block css_extra %} | ||||
|     {% endblock css_extra %} | ||||
| 
 | ||||
|     <!-- Custom Fonts --> | ||||
|     <link href='//fonts.googleapis.com/css?family=Raleway' rel='stylesheet' type='text/css'> | ||||
|  | @ -51,61 +53,7 @@ | |||
| 
 | ||||
| 
 | ||||
|     {% block navbar %} | ||||
| 
 | ||||
|         <!-- Navigation --> | ||||
| 
 | ||||
|         <nav class="navbar navbar-default  navbar-fixed-top topnav" role="navigation"> | ||||
|             <div class="container topnav"> | ||||
|                 <!-- Brand and toggle get grouped for better mobile display --> | ||||
|                 <div class="navbar-header"> | ||||
|                     {% if request.user.is_authenticated %} | ||||
|                         <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> | ||||
|                             <span class="sr-only">Toggle navigation</span> | ||||
|                             <span class="icon-bar"></span> | ||||
|                             <span class="icon-bar"></span> | ||||
|                             <span class="icon-bar"></span> | ||||
|                         </button> | ||||
|                     {% endif %} | ||||
|                     <a class="navbar-brand topnav" href="{% if site_url %}{{site_url}}{% else %}{{ request.session.hosting_url}}{% endif %}"><img src="{% static 'datacenterlight/img/logo_black.svg' %}"></a> | ||||
|                 </div> | ||||
|                 {% if request.user.is_authenticated %} | ||||
|                 <!-- Collect the nav links, forms, and other content for toggling --> | ||||
|                 <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> | ||||
|                     <ul class="nav navbar-nav navbar-right"> | ||||
|                         <li> | ||||
|                             <a href="{% url 'hosting:virtual_machines' %}"> | ||||
|                                 <i class="fa fa-server" aria-hidden="true"></i> {% trans "My Virtual Machines"%} | ||||
|                             </a> | ||||
|                         </li> | ||||
|                         <li> | ||||
|                             <a href="{% url 'hosting:orders' %}"> | ||||
|                                 <i class="fa fa-credit-card"></i> {% trans "My Orders"%} | ||||
|                             </a> | ||||
|                         </li> | ||||
|                         <li class="dropdown"> | ||||
|                           <a class="dropdown-toggle" role="button" data-toggle="dropdown" href="#"> | ||||
|                             <i class="glyphicon glyphicon-user"></i> {{request.user.name}} <span class="caret"></span></a> | ||||
|                           <ul id="g-account-menu" class="dropdown-menu" role="menu"> | ||||
|                             <li> | ||||
|                                 <a href="{% url 'hosting:ssh_keys' %}"> | ||||
|                                     <i class="fa fa-key"></i> {% trans "SSH Keys" %} | ||||
|                                 </a> | ||||
|                             </li> | ||||
|                             <li> | ||||
|                                 <a href="{% url 'hosting:notifications' %}"> | ||||
|                                     <i class="fa fa-bell"></i> {% trans "Notifications "%} | ||||
|                                 </a> | ||||
|                             </li> | ||||
|                             <li><a href="{% url 'hosting:logout' %}"><i class="glyphicon glyphicon-lock"></i>{% trans "Logout"%} </a></li> | ||||
|                           </ul> | ||||
|                         </li> | ||||
|                     </ul> | ||||
|                 </div> | ||||
|                 {% endif %} | ||||
|                 <!-- /.navbar-collapse --> | ||||
|             </div> | ||||
|             <!-- /.container --> | ||||
|         </nav> | ||||
|         {% include "hosting/includes/_navbar_user.html" %} | ||||
|     {% endblock navbar %} | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
|  | @ -32,7 +32,7 @@ | |||
|                         <img class="svg-img" src="{% static 'hosting/img/billing.svg' %}"> | ||||
|                     </div> | ||||
|                 </a> | ||||
|                 <a href="" class="hosting-dashboard-item"> | ||||
|                 <a href="{% url 'hosting:settings' %}" class="hosting-dashboard-item"> | ||||
|                     <h2>{% trans "My Settings" %}</h2> | ||||
|                     <div class="hosting-dashboard-image"> | ||||
|                         <img class="svg-img" src="{% static 'hosting/img/dashboard_settings.svg' %}"> | ||||
|  |  | |||
|  | @ -1,140 +1,14 @@ | |||
| {% 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: #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> | ||||
| {% extends "datacenterlight/emails/base_email_datacenterlight.html" %} | ||||
| {% load i18n %} | ||||
| {% block email_head %}{{page_header}}{% endblock %} | ||||
| {% block email_body %} | ||||
| {% url 'hosting:orders' order.id as order_url %} | ||||
| {% blocktrans with vm.name as vm_name %}You have ordered a new virtual machine! | ||||
| <br/> | ||||
| Your order of [{{vm_name}}] has been charged.<br/><br/> | ||||
| You can view your invoice by clicking the button below.<br/><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 }}{{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> | ||||
| </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> | ||||
| 
 | ||||
| {% endblock %} | ||||
|  |  | |||
|  | @ -1,140 +1,11 @@ | |||
| {% 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: #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> | ||||
| 
 | ||||
| {% extends "datacenterlight/emails/base_email_datacenterlight.txt" %} | ||||
| {% load i18n %} | ||||
| {% block email_head %}{{page_header}}{% endblock %} | ||||
| {% block email_body %} | ||||
| {% url 'hosting:orders' order.id as order_url %} | ||||
| {% blocktrans with vm.name as vm_name %}You have ordered a new virtual machine! | ||||
| Your order of [{{vm_name}}] has been charged. | ||||
| You can view your invoice here. | ||||
| {% endblocktrans %} | ||||
| {{ base_url }}{{order_url}} | ||||
| {% endblock %} | ||||
|  |  | |||
|  | @ -1,13 +1,14 @@ | |||
| {% load i18n %}{% autoescape off %} | ||||
| {% blocktrans %}You're receiving this email because you requested a password reset for your user account at {{ site_name }}.{% endblocktrans %} | ||||
| 
 | ||||
| {% trans "Please go to the following page and choose a new password:" %} | ||||
|     {% block reset_link %} | ||||
|         {{ base_url }}{% url 'hosting:reset_password_confirm' uidb64=uid token=token %}  | ||||
|     {% endblock %} | ||||
| 
 | ||||
| {% trans "Thanks for using our site!" %} | ||||
| 
 | ||||
| {% blocktrans %}The {{ site_name }} team{% endblocktrans %} | ||||
| 
 | ||||
| {% endautoescape %} | ||||
| {% extends "datacenterlight/emails/base_email_datacenterlight.html" %} | ||||
| {% load i18n %} | ||||
| {% block email_head %} | ||||
| {% trans 'Password Reset' %} | ||||
| {% endblock %} | ||||
| {% block email_body %} | ||||
| {% url 'hosting:reset_password_confirm' uidb64=uid token=token as password_reset_url %} | ||||
| {% blocktrans %} | ||||
| 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/> | ||||
| If you didn't request a new password, ignore this e-mail.<br/> | ||||
| Thank you! | ||||
| {% endblocktrans %} | ||||
| {% endblock %} | ||||
|  |  | |||
|  | @ -1,13 +1,11 @@ | |||
| {% load i18n %}{% autoescape off %} | ||||
| {% blocktrans %}You're receiving this email because you requested a password reset for your user account at {{ site_name }}.{% endblocktrans %} | ||||
| 
 | ||||
| {% trans "Please go to the following page and choose a new password:" %} | ||||
|     {% block reset_link %} | ||||
|         {{ base_url }}{% url 'hosting:reset_password_confirm' uidb64=uid token=token %}  | ||||
|     {% endblock %} | ||||
| 
 | ||||
| {% trans "Thanks for using our site!" %} | ||||
| 
 | ||||
| {% blocktrans %}The {{ site_name }} team{% endblocktrans %} | ||||
| 
 | ||||
| {% endautoescape %} | ||||
| {% extends "datacenterlight/emails/base_email_datacenterlight.txt" %} | ||||
| {% load i18n %} | ||||
| {% block email_head %}{% trans 'Password Reset' %}{% endblock %} | ||||
| {% block email_body %} | ||||
| {% url 'hosting:reset_password_confirm' uidb64=uid token=token as password_reset_url %} | ||||
| {% blocktrans %}You're receiving this email because you requested a password reset for your user account at {{site_name}}. | ||||
| 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. | ||||
| Thank you! | ||||
| {% endblocktrans %} | ||||
| {% endblock %} | ||||
|  |  | |||
							
								
								
									
										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 i18n %} | ||||
| <footer> | ||||
|     <div class="container"> | ||||
|         <div class="row"> | ||||
|  |  | |||
|  | @ -1,10 +1,10 @@ | |||
| {% load static i18n %} | ||||
| 
 | ||||
| <nav class="navbar navbar-default  topnav navbar-transparent" role="navigation"> | ||||
|     <div class="container topnav"> | ||||
|     <div class="topnav"> | ||||
|         <!-- Brand and toggle get grouped for better mobile display --> | ||||
|         <div class="navbar-header"> | ||||
|             <a id="logoWhite" class="navbar-brand topnav" href="{% if site_url %}{{site_url}}{% else %}{{ request.session.hosting_url}}{% endif %}"><img src="{% static 'datacenterlight/img/logo_white.svg' %}"></a> | ||||
|             <a id="logoWhite" class="navbar-brand topnav" href="{% url 'datacenterlight:index' %}"><img src="{% static 'datacenterlight/img/logo_white.svg' %}"></a> | ||||
|         </div> | ||||
|     </div> | ||||
|     <!-- /.container --> | ||||
|  |  | |||
							
								
								
									
										52
									
								
								hosting/templates/hosting/includes/_navbar_user.html
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								hosting/templates/hosting/includes/_navbar_user.html
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,52 @@ | |||
| {% load staticfiles %} | ||||
| {% load i18n %} | ||||
| {% load custom_tags %} | ||||
| 
 | ||||
| <!-- Navigation --> | ||||
| 
 | ||||
| <nav class="navbar navbar-default navbar-fixed-top topnav" role="navigation"> | ||||
|     <div class="topnav"> | ||||
|         <!-- Brand and toggle get grouped for better mobile display --> | ||||
|         <div class="navbar-header"> | ||||
|             {% if request.user.is_authenticated %} | ||||
|                 <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> | ||||
|                     <span class="sr-only">{% trans "Toggle navigation" %}</span> | ||||
|                     <span class="icon-bar"></span> | ||||
|                     <span class="icon-bar"></span> | ||||
|                     <span class="icon-bar"></span> | ||||
|                 </button> | ||||
|             {% endif %} | ||||
|             <a class="navbar-brand topnav" href="{% url 'datacenterlight:index' %}"><img src="{% static 'datacenterlight/img/logo_black.svg' %}"></a> | ||||
|         </div> | ||||
|         {% if request.user.is_authenticated %} | ||||
|         <!-- Collect the nav links, forms, and other content for toggling --> | ||||
|         <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> | ||||
|             <ul class="nav navbar-nav navbar-right"> | ||||
|                 <li> | ||||
|                     <a href="{% url 'hosting:dashboard' %}"> | ||||
|                         <i class="fa fa-fw fa-server" aria-hidden="true"></i>  {% trans "Dashboard"%} | ||||
|                     </a> | ||||
|                 </li> | ||||
|                 <li class="dropdown highlights-dropdown"> | ||||
|                     <a class="dropdown-toggle" role="button" data-toggle="dropdown" href="#"> | ||||
|                         <i class="fa fa-fw fa-user"></i>  {{request.user.name}} <span class="fa fa-fw fa-caret-down"></span> | ||||
|                     </a> | ||||
|                     <ul id="g-account-menu" class="dropdown-menu" role="menu"> | ||||
|                         <li><a href="{% url 'hosting:logout' %}">{% trans "Logout"%}</a></li> | ||||
|                     </ul> | ||||
|                 </li> | ||||
|                 <li> | ||||
|                     {% get_current_language as LANGUAGE_CODE %} | ||||
|                     {% if LANGUAGE_CODE == 'en-us'%} | ||||
|                         <a href="{% change_lang 'de' %}"><i class="fa fa-fw fa-globe" aria-hidden="true"></i>  Deutsch</a> | ||||
|                     {% else %} | ||||
|                         <a href="{% change_lang 'en-us' %}"><i class="fa fa-fw fa-globe" aria-hidden="true"></i>  English</a> | ||||
|                     {% endif %} | ||||
|                 </li> | ||||
|             </ul> | ||||
|         </div> | ||||
|         {% endif %} | ||||
|         <!-- /.navbar-collapse --> | ||||
|     </div> | ||||
|     <!-- /.container --> | ||||
| </nav> | ||||
|  | @ -1,9 +1,12 @@ | |||
| {% extends "hosting/base_short.html" %} | ||||
| {% load staticfiles bootstrap3 i18n %} | ||||
| 
 | ||||
| {% block css_extra %} | ||||
|     <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/paymentfont/1.1.2/css/paymentfont.min.css"/> | ||||
| {% endblock css_extra %} | ||||
| 
 | ||||
| {% block content %} | ||||
| <!-- Credit card form --> | ||||
| <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/paymentfont/1.1.2/css/paymentfont.min.css"/> | ||||
| <div class="dcl-order-container"> | ||||
|     <div class="payment-container"> | ||||
|         <div class="row"> | ||||
|  |  | |||
							
								
								
									
										149
									
								
								hosting/templates/hosting/settings.html
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										149
									
								
								hosting/templates/hosting/settings.html
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,149 @@ | |||
| {% extends "hosting/base_short.html" %} | ||||
| {% load staticfiles bootstrap3 i18n %} | ||||
| 
 | ||||
| {% block css_extra %} | ||||
|     <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/paymentfont/1.1.2/css/paymentfont.min.css"/> | ||||
| {% endblock css_extra %} | ||||
| 
 | ||||
| {% block content %} | ||||
|     <div class="dashboard-container wide"> | ||||
|         <div class="dashboard-container-head"> | ||||
|             <h1 class="dashboard-title-thin"><img src="{% static 'hosting/img/dashboard_settings.svg' %}" class="un-icon wide"> {% trans "My Settings" %}</h1> | ||||
|         </div> | ||||
|         <!-- Credit card form --> | ||||
|         <div class="settings-container"> | ||||
|             <div class="row"> | ||||
|                 <div class="col-sm-5 col-md-6  billing dcl-billing"> | ||||
|                     <h3>{%trans "Billing Address"%}</h3> | ||||
|                     <hr> | ||||
|                     <form role="form" id="billing-form" method="post" action="" novalidate> | ||||
|                         {% for field in form %} | ||||
|                             {% csrf_token %} | ||||
|                             {% bootstrap_field field show_label=False type='fields' bound_css_class='' %} | ||||
|                         {% endfor %} | ||||
|                         <div class="form-group text-right"> | ||||
|                             <button type="submit" class="btn btn-vm-contact btn-wide">{% trans "UPDATE" %}</button> | ||||
|                         </div> | ||||
|                     </form> | ||||
|                 </div> | ||||
|                 <div class="col-sm-7 col-md-6 creditcard-box dcl-creditcard"> | ||||
|                     <h3>{%trans "Credit Card"%}</h3> | ||||
|                     <hr> | ||||
|                     <div> | ||||
|                         {% if credit_card_data.last4 %} | ||||
|                             <div class="credit-card-details"> | ||||
|                                 <h5 class="billing-head">{% trans "Credit Card" %}</h5> | ||||
|                                 <h5 class="membership-lead">{% trans "Last" %} 4: *****{{credit_card_data.last4}}</h5> | ||||
|                                 <h5 class="membership-lead">{% trans "Type" %}: {{credit_card_data.cc_brand}}</h5> | ||||
|                                 {% comment %} | ||||
|                                 <div class="credit-card-details-opt"> | ||||
|                                     <div class="row"> | ||||
|                                         <div class="col-xs-6"> | ||||
|                                             <a class="caps-link" href=""><img src="{% static 'hosting/img/delete.svg' %}" class="svg-img">{% trans "REMOVE CARD" %}</a> | ||||
|                                         </div> | ||||
|                                         <div class="col-xs-6 text-right"> | ||||
|                                             <a class="btn btn-vm-contact" href="">{% trans "EDIT CARD" %}</a> | ||||
|                                         </div> | ||||
|                                     </div> | ||||
|                                 </div> | ||||
|                                 {% endcomment %} | ||||
|                             </div> | ||||
|                         {% else %} | ||||
|                             <div class="no-cards"> | ||||
|                                 <h4>{% trans "No Credit Cards Added" %}</h4> | ||||
|                                 <p>{% blocktrans %}We are using <a href="https://stripe.com">Stripe</a> for payment and do not store your information in our database.{% endblocktrans %}</p> | ||||
|                             </div> | ||||
| 
 | ||||
|                             {% comment %} | ||||
|                                 <h4>{% trans "Add a new Card." %}</h4> | ||||
|                                 <p style="margin-bottom: 15px;"> | ||||
|                                     {% blocktrans %}Please fill in your credit card information below. We are using <a href="https://stripe.com" target="_blank">Stripe</a> for payment and do not store your information in our database.{% endblocktrans %} | ||||
|                                 </p> | ||||
|                                 <form action="" id="payment-form-new" class="credit-card-form" method="POST"> | ||||
|                                     <input type="hidden" name="token"/> | ||||
|                                     <div class="credit-card-goup"> | ||||
|                                        <div class="card-element card-number-element"> | ||||
|                                            <label>{%trans "Card Number" %}</label> | ||||
|                                            <div id="card-number-element" class="field my-input"></div> | ||||
|                                        </div> | ||||
|                                        <div class="row"> | ||||
|                                            <div class="col-xs-6 col-sm-4 card-element card-expiry-element"> | ||||
|                                                <label>{%trans "Expiry Date" %}</label> | ||||
|                                                <div id="card-expiry-element" class="field my-input"></div> | ||||
|                                            </div> | ||||
|                                            <div class="col-xs-6 col-sm-4 col-sm-offset-4 card-element card-cvc-element"> | ||||
|                                                <label>{%trans "CVC" %}</label> | ||||
|                                                <div id="card-cvc-element" class="field my-input"></div> | ||||
|                                            </div> | ||||
|                                        </div> | ||||
|                                        <div class="card-element brand"> | ||||
|                                            <label>{%trans "Card Type" %}</label> | ||||
|                                            <i class="pf pf-credit-card" id="brand-icon"></i> | ||||
|                                        </div> | ||||
|                                     </div> | ||||
|                                     <div id="card-errors" role="alert"></div> | ||||
|                                     <div> | ||||
|                                         {% if not messages and not form.non_field_errors %} | ||||
|                                             <p class="card-warning-content"> | ||||
|                                                 {% blocktrans %}You are not making any payment here.{% endblocktrans %} | ||||
|                                             </p> | ||||
|                                         {% endif %} | ||||
|                                         <div id='payment_error'> | ||||
|                                             {% for message in messages %} | ||||
|                                                 {% if 'failed_payment' or 'make_charge_error' in message.tags %} | ||||
|                                                  <ul class="list-unstyled"><li> | ||||
|                                                      <p class="card-warning-content card-warning-error">{{ message|safe }}</p> | ||||
|                                                 </li></ul> | ||||
|                                                 {% endif %} | ||||
|                                             {% endfor %} | ||||
| 
 | ||||
|                                             {% for error in form.non_field_errors %} | ||||
|                                                 <p class="card-warning-content card-warning-error"> | ||||
|                                                     {{ error|escape }} | ||||
|                                                 </p> | ||||
|                                             {% endfor %} | ||||
|                                         </div> | ||||
|                                         <div class="row"> | ||||
|                                             <div class="col-xs-6 col-xs-offset-6 text-right"> | ||||
|                                                 <button class="btn btn-success stripe-payment-btn" type="submit">{%trans "Submit" %} | ||||
|                                                 </button> | ||||
|                                             </div> | ||||
|                                         </div> | ||||
|                                     </div> | ||||
| 
 | ||||
|                                     <div style="display:none;"> | ||||
|                                         <p class="payment-errors"></p> | ||||
|                                     </div> | ||||
|                                 </form> | ||||
|                             {% endcomment %} | ||||
|                         {% endif %} | ||||
|                     </div> | ||||
|                 </div> | ||||
|             </div> | ||||
|         </div> | ||||
|     </div> | ||||
| 
 | ||||
|     {% comment %} | ||||
|     <!-- stripe key data --> | ||||
|     {% if stripe_key %} | ||||
|         {% get_current_language as LANGUAGE_CODE %} | ||||
|         <script type="text/javascript"> | ||||
|             window.processing_text = '{%trans "Processing" %}'; | ||||
|             window.enter_your_card_text = '{%trans "Enter your credit card number" %}'; | ||||
| 
 | ||||
|             (function () { | ||||
|                 window.stripeKey = "{{stripe_key}}"; | ||||
|                 window.current_lan = "{{LANGUAGE_CODE}}"; | ||||
|             })(); | ||||
|         </script> | ||||
|     {%endif%} | ||||
| 
 | ||||
|     {% if credit_card_data.last4 and credit_card_data.cc_brand %} | ||||
|         <script type="text/javascript"> | ||||
|             (function () { | ||||
|                 window.hasCreditcard = true; | ||||
|             })(); | ||||
|         </script> | ||||
|     {%endif%} | ||||
|     {% endcomment %} | ||||
| {%endblock%} | ||||
|  | @ -1,6 +1,10 @@ | |||
| {% extends "hosting/base_short.html" %} | ||||
| {% load staticfiles bootstrap3 i18n %} | ||||
| 
 | ||||
| {% block navbar %} | ||||
|     {% include  'hosting/includes/_navbar_transparent.html' %} | ||||
| {% endblock navbar %} | ||||
| 
 | ||||
| {% block content %} | ||||
| <div class="auth-container"> | ||||
|    <div class="auth-bg"></div> | ||||
|  |  | |||
|  | @ -1,6 +1,5 @@ | |||
| from django.conf.urls import url | ||||
| from django.contrib.auth import views as auth_views | ||||
| 
 | ||||
| from .views import ( | ||||
|     DjangoHostingView, RailsHostingView, PaymentVMView, NodeJSHostingView, | ||||
|     LoginView, SignupView, SignupValidateView, SignupValidatedView, IndexView, | ||||
|  | @ -9,7 +8,9 @@ from .views import ( | |||
|     MarkAsReadNotificationView, PasswordResetView, PasswordResetConfirmView, | ||||
|     HostingPricingView, CreateVirtualMachinesView, HostingBillListView, | ||||
|     HostingBillDetailView, SSHKeyDeleteView, SSHKeyCreateView, SSHKeyListView, | ||||
|     SSHKeyChoiceView, DashboardView) | ||||
|     SSHKeyChoiceView, DashboardView, SettingsView) | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| urlpatterns = [ | ||||
|     url(r'index/?$', IndexView.as_view(), name='index'), | ||||
|  | @ -19,6 +20,7 @@ urlpatterns = [ | |||
|     url(r'rails/?$', RailsHostingView.as_view(), name='railshosting'), | ||||
|     url(r'pricing/?$', HostingPricingView.as_view(), name='pricing'), | ||||
|     url(r'payment/?$', PaymentVMView.as_view(), name='payment'), | ||||
|     url(r'settings/?$', SettingsView.as_view(), name='settings'), | ||||
|     url(r'orders/?$', OrdersHostingListView.as_view(), name='orders'), | ||||
|     url(r'order-confirmation/?$', OrdersHostingDetailView.as_view(), | ||||
|         name='order-confirmation'), | ||||
|  |  | |||
							
								
								
									
										121
									
								
								hosting/views.py
									
										
									
									
									
								
							
							
						
						
									
										121
									
								
								hosting/views.py
									
										
									
									
									
								
							|  | @ -6,8 +6,17 @@ from django.contrib.auth.mixins import LoginRequiredMixin | |||
| from django.contrib.auth.tokens import default_token_generator | ||||
| from django.core.files.base import ContentFile | ||||
| from django.core.urlresolvers import reverse_lazy, reverse | ||||
| 
 | ||||
| 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.shortcuts import redirect | ||||
| from django.shortcuts import render | ||||
| from django.utils.http import urlsafe_base64_decode | ||||
|  | @ -16,18 +25,32 @@ from django.utils.translation import ugettext_lazy as _ | |||
| from django.views.generic import View, CreateView, FormView, ListView, \ | ||||
|     DetailView, \ | ||||
|     DeleteView, TemplateView, UpdateView | ||||
| from django.contrib.auth.tokens import default_token_generator | ||||
| 
 | ||||
| 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 stored_messages.models import Message | ||||
| from stored_messages.api import mark_read | ||||
| from django.utils.safestring import mark_safe | ||||
| 
 | ||||
| from datacenterlight.tasks import create_vm_task | ||||
| 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.serializers import VirtualMachineSerializer, \ | ||||
|     VirtualMachineTemplateSerializer | ||||
| from utils.forms import BillingAddressForm, PasswordResetRequestForm | ||||
| from utils.forms import BillingAddressForm, PasswordResetRequestForm, \ | ||||
|     UserBillingAddressForm | ||||
| from utils.mailer import BaseEmail | ||||
| from utils.stripe_utils import StripeUtils | ||||
| from utils.views import PasswordResetViewMixin, PasswordResetConfirmViewMixin, \ | ||||
|  | @ -191,7 +214,7 @@ class IndexView(View): | |||
| class LoginView(LoginViewMixin): | ||||
|     template_name = "hosting/login.html" | ||||
|     form_class = HostingUserLoginForm | ||||
|     success_url = reverse_lazy('hosting:virtual_machines') | ||||
|     success_url = reverse_lazy('hosting:dashboard') | ||||
| 
 | ||||
| 
 | ||||
| class SignupView(CreateView): | ||||
|  | @ -303,7 +326,7 @@ class PasswordResetConfirmView(PasswordResetConfirmViewMixin): | |||
|                 new_password = form.cleaned_data['new_password2'] | ||||
|                 user.set_password(new_password) | ||||
|                 user.save() | ||||
|                 messages.success(request, 'Password has been reset.') | ||||
|                 messages.success(request, _('Password has been reset.')) | ||||
| 
 | ||||
|                 # Change opennebula password | ||||
|                 opennebula_client.change_user_password(new_password) | ||||
|  | @ -311,14 +334,15 @@ class PasswordResetConfirmView(PasswordResetConfirmViewMixin): | |||
|                 return self.form_valid(form) | ||||
|             else: | ||||
|                 messages.error( | ||||
|                     request, 'Password reset has not been successful.') | ||||
|                 form.add_error(None, 'Password reset has not been successful.') | ||||
|                     request, _('Password reset has not been successful.')) | ||||
|                 form.add_error(None, | ||||
|                                _('Password reset has not been successful.')) | ||||
|                 return self.form_invalid(form) | ||||
| 
 | ||||
|         else: | ||||
|             messages.error( | ||||
|                 request, 'The reset password link is no longer valid.') | ||||
|             form.add_error(None, 'The reset password link is no longer valid.') | ||||
|             error_msg = _('The reset password link is no longer valid.') | ||||
|             messages.error(request, _(error_msg)) | ||||
|             form.add_error(None, error_msg) | ||||
|             return self.form_invalid(form) | ||||
| 
 | ||||
| 
 | ||||
|  | @ -490,6 +514,57 @@ class SSHKeyCreateView(LoginRequiredMixin, FormView): | |||
|             return self.form_invalid(form) | ||||
| 
 | ||||
| 
 | ||||
| class SettingsView(LoginRequiredMixin, FormView): | ||||
|     template_name = "hosting/settings.html" | ||||
|     login_url = reverse_lazy('hosting:login') | ||||
|     form_class = BillingAddressForm | ||||
| 
 | ||||
|     def get_form(self, form_class): | ||||
|         """ | ||||
|         Check if the user already saved contact details. If so, then show | ||||
|         the form populated with those details, to let user change them. | ||||
|         """ | ||||
|         return form_class( | ||||
|             instance=self.request.user.billing_addresses.first(), | ||||
|             **self.get_form_kwargs()) | ||||
| 
 | ||||
|     def get_context_data(self, **kwargs): | ||||
|         context = super(SettingsView, self).get_context_data(**kwargs) | ||||
|         # Get user | ||||
|         user = self.request.user | ||||
|         # Get user last order | ||||
|         last_hosting_order = HostingOrder.objects.filter( | ||||
|             customer__user=user).last() | ||||
|         # If user has already an hosting order, get the credit card data from | ||||
|         # it | ||||
|         if last_hosting_order: | ||||
|             credit_card_data = last_hosting_order.get_cc_data() | ||||
|             context.update({ | ||||
|                 'credit_card_data': credit_card_data if credit_card_data else None, | ||||
|             }) | ||||
|         context.update({ | ||||
|             'stripe_key': settings.STRIPE_API_PUBLIC_KEY | ||||
|         }) | ||||
| 
 | ||||
|         return context | ||||
| 
 | ||||
|     def post(self, request, *args, **kwargs): | ||||
|         form = self.get_form() | ||||
|         if form.is_valid(): | ||||
|             billing_address_data = form.cleaned_data | ||||
|             billing_address_data.update({ | ||||
|                 'user': self.request.user.id | ||||
|             }) | ||||
|             billing_address_user_form = UserBillingAddressForm( | ||||
|                 instance=self.request.user.billing_addresses.first(), | ||||
|                 data=billing_address_data) | ||||
|             billing_address_user_form.save() | ||||
|             return self.render_to_response(self.get_context_data()) | ||||
|         else: | ||||
|             billing_address_data = form.cleaned_data | ||||
|             return self.form_invalid(form) | ||||
| 
 | ||||
| 
 | ||||
| class PaymentVMView(LoginRequiredMixin, FormView): | ||||
|     template_name = 'hosting/payment.html' | ||||
|     login_url = reverse_lazy('hosting:login') | ||||
|  | @ -559,9 +634,12 @@ class PaymentVMView(LoginRequiredMixin, FormView): | |||
|             customer = StripeCustomer.get_or_create(email=owner.email, | ||||
|                                                     token=token) | ||||
|             if not customer: | ||||
|                 form.add_error("__all__", _("Invalid credit card")) | ||||
|                 return self.render_to_response( | ||||
|                     self.get_context_data(form=form)) | ||||
|                 msg = _("Invalid credit card") | ||||
|                 messages.add_message( | ||||
|                     self.request, messages.ERROR, msg, | ||||
|                     extra_tags='make_charge_error') | ||||
|                 return HttpResponseRedirect( | ||||
|                     reverse('hosting:payment') + '#payment_error') | ||||
| 
 | ||||
|             # Create Billing Address | ||||
|             billing_address = form.save() | ||||
|  | @ -776,7 +854,8 @@ class CreateVirtualMachinesView(LoginRequiredMixin, View): | |||
|         if not UserHostingKey.objects.filter(user=self.request.user).exists(): | ||||
|             messages.success( | ||||
|                 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')) | ||||
| 
 | ||||
|  | @ -876,7 +955,7 @@ class VirtualMachineView(LoginRequiredMixin, View): | |||
|             email=owner.email, | ||||
|             password=owner.password | ||||
|         ) | ||||
| 
 | ||||
|         vm_data = VirtualMachineSerializer(manager.get_vm(vm.id)).data | ||||
|         terminated = manager.delete_vm( | ||||
|             vm.id | ||||
|         ) | ||||
|  | @ -887,25 +966,27 @@ class VirtualMachineView(LoginRequiredMixin, View): | |||
|                 'Error terminating VM %s' % (opennebula_vm_id) | ||||
|             ) | ||||
|             return HttpResponseRedirect(self.get_success_url()) | ||||
| 
 | ||||
|         context = { | ||||
|             'vm': vm, | ||||
|             'vm': vm_data, | ||||
|             'base_url': "{0}://{1}".format(self.request.scheme, | ||||
|                                            self.request.get_host()) | ||||
|                                            self.request.get_host()), | ||||
|             'page_header': _('Virtual Machine Cancellation') | ||||
|         } | ||||
|         email_data = { | ||||
|             'subject': 'Virtual machine plan canceled', | ||||
|             'subject': context['page_header'], | ||||
|             'to': self.request.user.email, | ||||
|             'context': context, | ||||
|             'template_name': 'vm_status_changed', | ||||
|             'template_path': 'hosting/emails/' | ||||
|             'template_name': 'vm_canceled', | ||||
|             'template_path': 'hosting/emails/', | ||||
|             'from_address': settings.DCL_SUPPORT_FROM_ADDRESS, | ||||
|         } | ||||
|         email = BaseEmail(**email_data) | ||||
|         email.send() | ||||
| 
 | ||||
|         messages.error( | ||||
|             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()) | ||||
|  |  | |||
|  | @ -1,17 +1,19 @@ | |||
| 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 utils.mailer import DigitalGlarusRegistrationMailer | ||||
| from django.conf import settings | ||||
| 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.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 DigitalGlarusRegistrationMailer | ||||
| from utils.stripe_utils import StripeUtils | ||||
| 
 | ||||
| REGISTRATION_MESSAGE = {'subject': "Validation mail", | ||||
|                         'message': 'Please validate Your account under this link ' | ||||
|  | @ -64,11 +66,13 @@ class CustomUser(AbstractBaseUser, PermissionsMixin): | |||
|     email = models.EmailField(unique=True) | ||||
| 
 | ||||
|     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( | ||||
|         _('staff status'), | ||||
|         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() | ||||
|  | @ -77,28 +81,32 @@ class CustomUser(AbstractBaseUser, PermissionsMixin): | |||
|     REQUIRED_FIELDS = ['name', 'password'] | ||||
| 
 | ||||
|     @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() | ||||
|         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 app == 'digital_glarus': | ||||
|                     dg = DigitalGlarusRegistrationMailer(user.validation_slug) | ||||
|                     dg.send_mail(to=user.email) | ||||
|                 elif app == 'dcl': | ||||
|                     dcl_text = settings.DCL_TEXT | ||||
|                     # not used | ||||
|                     # dcl_from_address = settings.DCL_SUPPORT_FROM_ADDRESS | ||||
|                     user.is_active = False | ||||
| 
 | ||||
|                     if send_email is True: | ||||
|                         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, | ||||
|                             'to': user.email, | ||||
|                             'context': {'base_url': base_url, | ||||
|                                         'activation_link': reverse('hosting:validate', | ||||
|                                                                    kwargs={'validate_slug': user.validation_slug}), | ||||
|                                         'activation_link': reverse( | ||||
|                                             'hosting:validate', | ||||
|                                             kwargs={ | ||||
|                                                 'validate_slug': user.validation_slug}), | ||||
|                                         'dcl_text': dcl_text | ||||
|                                         }, | ||||
|                             'template_name': 'user_activation', | ||||
|  | @ -114,7 +122,8 @@ class CustomUser(AbstractBaseUser, PermissionsMixin): | |||
| 
 | ||||
|     @classmethod | ||||
|     def get_all_members(cls): | ||||
|         return cls.objects.filter(stripecustomer__membershiporder__isnull=False) | ||||
|         return cls.objects.filter( | ||||
|             stripecustomer__membershiporder__isnull=False) | ||||
| 
 | ||||
|     @classmethod | ||||
|     def validate_url(cls, validation_slug): | ||||
|  | @ -204,9 +213,11 @@ class CreditCards(models.Model): | |||
|     name = models.CharField(max_length=50) | ||||
|     user_id = models.ForeignKey(CustomUser, on_delete=models.CASCADE) | ||||
|     card_number = models.CharField(max_length=50) | ||||
|     expiry_date = models.CharField(max_length=50, validators=[RegexValidator(r'\d{2}\/\d{4}', _( | ||||
|         'Use this pattern(MM/YYYY).'))]) | ||||
|     ccv = models.CharField(max_length=4, validators=[RegexValidator(r'\d{3,4}', _('Wrong CCV number.'))]) | ||||
|     expiry_date = models.CharField(max_length=50, validators=[ | ||||
|         RegexValidator(r'\d{2}\/\d{4}', _( | ||||
|             'Use this pattern(MM/YYYY).'))]) | ||||
|     ccv = models.CharField(max_length=4, validators=[ | ||||
|         RegexValidator(r'\d{3,4}', _('Wrong CCV number.'))]) | ||||
|     payment_type = models.CharField(max_length=5, default='N') | ||||
| 
 | ||||
|     def save(self, *args, **kwargs): | ||||
|  | @ -221,7 +232,8 @@ class Calendar(models.Model): | |||
|     def __init__(self, *args, **kwargs): | ||||
|         if kwargs.get('datebooked'): | ||||
|             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 | ||||
|         super(Calendar, self).__init__(*args, **kwargs) | ||||
| 
 | ||||
|  |  | |||
|  | @ -41,7 +41,8 @@ class LoginFormMixin(forms.Form): | |||
|         password = self.cleaned_data.get('password') | ||||
|         is_auth = authenticate(email=email, password=password) | ||||
|         if not is_auth: | ||||
|             raise forms.ValidationError("Your username and/or password were incorrect.") | ||||
|             raise forms.ValidationError( | ||||
|                 "Your username and/or password were incorrect.") | ||||
|         return self.cleaned_data | ||||
| 
 | ||||
|     def clean_email(self): | ||||
|  | @ -101,7 +102,8 @@ class BillingAddressForm(forms.ModelForm): | |||
| 
 | ||||
|     class Meta: | ||||
|         model = BillingAddress | ||||
|         fields = ['cardholder_name', 'street_address', 'city', 'postal_code', 'country'] | ||||
|         fields = ['cardholder_name', 'street_address', | ||||
|                   'city', 'postal_code', 'country'] | ||||
|         labels = { | ||||
|             'cardholder_name': _('Cardholder Name'), | ||||
|             'street_address': _('Street Address'), | ||||
|  | @ -117,8 +119,10 @@ class UserBillingAddressForm(forms.ModelForm): | |||
| 
 | ||||
|     class Meta: | ||||
|         model = UserBillingAddress | ||||
|         fields = ['street_address', 'city', 'postal_code', 'country', 'user'] | ||||
|         fields = ['cardholder_name', 'street_address', | ||||
|                   'city', 'postal_code', 'country', 'user'] | ||||
|         labels = { | ||||
|             'cardholder_name': _('Cardholder Name'), | ||||
|             'street_address': _('Street Building'), | ||||
|             'city': _('City'), | ||||
|             'postal_code': _('Postal Code'), | ||||
|  | @ -146,8 +150,10 @@ class ContactUsForm(forms.ModelForm): | |||
|         } | ||||
| 
 | ||||
|     def send_email(self, email_to='info@digitalglarus.ch'): | ||||
|         text_content = render_to_string('emails/contact.txt', {'data': self.cleaned_data}) | ||||
|         html_content = render_to_string('emails/contact.html', {'data': self.cleaned_data}) | ||||
|         text_content = render_to_string( | ||||
|             'emails/contact.txt', {'data': self.cleaned_data}) | ||||
|         html_content = render_to_string( | ||||
|             'emails/contact.html', {'data': self.cleaned_data}) | ||||
|         email = EmailMultiAlternatives('Subject', text_content) | ||||
|         email.attach_alternative(html_content, "text/html") | ||||
|         email.to = [email_to] | ||||
|  |  | |||
							
								
								
									
										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.utils.http import urlsafe_base64_encode, urlsafe_base64_decode | ||||
| from django.conf import settings | ||||
| 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.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 .mailer import BaseEmail | ||||
| from .forms import SetPasswordForm | ||||
| from .mailer import BaseEmail | ||||
| 
 | ||||
| 
 | ||||
| class SignupViewMixin(CreateView): | ||||
|  | @ -17,8 +18,8 @@ class SignupViewMixin(CreateView): | |||
|     success_url = None | ||||
| 
 | ||||
|     def get_success_url(self): | ||||
| 
 | ||||
|         next_url = self.request.POST.get('next') if self.request.POST.get('next')\ | ||||
|         next_url = self.request.POST.get('next') if self.request.POST.get( | ||||
|             'next') \ | ||||
|             else self.success_url | ||||
| 
 | ||||
|         return next_url | ||||
|  | @ -65,39 +66,37 @@ class LoginViewMixin(FormView): | |||
| class PasswordResetViewMixin(FormView): | ||||
|     # template_name = 'hosting/reset_password.html' | ||||
|     # 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 = '' | ||||
|     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): | ||||
|         context = { | ||||
|             'user': user, | ||||
|             'token': default_token_generator.make_token(user), | ||||
|             'uid': urlsafe_base64_encode(force_bytes(user.pk)), | ||||
|             'site_name': 'ungleich', | ||||
|             'base_url': "{0}://{1}".format(self.request.scheme, self.request.get_host()) | ||||
|             'site_name': 'ungleich' if self.site != 'dcl' else settings.DCL_TEXT, | ||||
|             'base_url': "{0}://{1}".format(self.request.scheme, | ||||
|                                            self.request.get_host()) | ||||
| 
 | ||||
|         } | ||||
|         return context | ||||
| 
 | ||||
|     def form_valid(self, form): | ||||
| 
 | ||||
|         email = form.cleaned_data.get('email') | ||||
|         user = CustomUser.objects.get(email=email) | ||||
| 
 | ||||
|         messages.add_message(self.request, messages.SUCCESS, self.success_message) | ||||
| 
 | ||||
|         messages.add_message(self.request, messages.SUCCESS, | ||||
|                              self.success_message) | ||||
|         context = self.test_generate_email_context(user) | ||||
|         email_data = { | ||||
|             'subject': 'Password Reset', | ||||
|             'subject': _('Password Reset'), | ||||
|             'to': email, | ||||
|             'context': context, | ||||
|             'template_name': 'password_reset_email', | ||||
|             'template_path': self.template_email_path | ||||
|         } | ||||
|         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.send() | ||||
| 
 | ||||
|  | @ -107,6 +106,7 @@ class PasswordResetViewMixin(FormView): | |||
| class PasswordResetConfirmViewMixin(FormView): | ||||
|     # template_name = 'hosting/confirm_reset_password.html' | ||||
|     form_class = SetPasswordForm | ||||
| 
 | ||||
|     # success_url = reverse_lazy('hosting:login') | ||||
| 
 | ||||
|     def post(self, request, uidb64=None, token=None, *arg, **kwargs): | ||||
|  | @ -118,19 +118,24 @@ class PasswordResetConfirmViewMixin(FormView): | |||
| 
 | ||||
|         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(): | ||||
|                 new_password = form.cleaned_data['new_password2'] | ||||
|                 user.set_password(new_password) | ||||
|                 user.save() | ||||
|                 messages.success(request, 'Password has been reset.') | ||||
|                 messages.success(request, _('Password has been reset.')) | ||||
|                 return self.form_valid(form) | ||||
|             else: | ||||
|                 messages.error(request, 'Password reset has not been successful.') | ||||
|                 form.add_error(None, 'Password reset has not been successful.') | ||||
|                 messages.error(request, | ||||
|                                _('Password reset has not been successful.')) | ||||
|                 form.add_error(None, | ||||
|                                _('Password reset has not been successful.')) | ||||
|                 return self.form_invalid(form) | ||||
| 
 | ||||
|         else: | ||||
|             messages.error(request, 'The reset password link is no longer valid.') | ||||
|             form.add_error(None, 'The reset password link is no longer valid.') | ||||
|             messages.error(request, | ||||
|                            _('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) | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue