Merge master into task/3730/refactor_price_parameter
This commit is contained in:
commit
c17604e5c1
11 changed files with 199 additions and 64 deletions
|
@ -1,4 +1,4 @@
|
|||
Pre-changelog: 1.2.3 2017-09-20
|
||||
1.2.3: 2017-09-25
|
||||
* #3484: [dcl, hosting] Refactored account activation, password reset, VM order and cancellation email
|
||||
* #3731: [dcl, hosting] Added cdist ssh key handler
|
||||
* #3628: [dcl] on hosting, VM is created at credit card info submit
|
||||
|
@ -6,6 +6,8 @@ Pre-changelog: 1.2.3 2017-09-20
|
|||
* #3786: [hosting] Redesigned the hosting invoice and order-confirmation page
|
||||
* #3728: [hosting] VM Termination animation added
|
||||
* #3777: [hosting] Create new VM calculator added like dcl landing
|
||||
* #3781: [hosting] Resend activation mail
|
||||
* #3806: [hosting] Fix can not create VMs after password reset
|
||||
* Feature: [cms, blog] Added /cms prefix for all the django-cms generated urls
|
||||
* Bugfix: [dcl, hosting] added host to celery error mails
|
||||
* Bugfix: [ungleich] Fixed wrong subdomain digitalglarus.ungleich.ch
|
||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-09-23 19:00+0530\n"
|
||||
"POT-Creation-Date: 2017-09-24 12:34+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"
|
||||
|
@ -28,10 +28,10 @@ msgid "User does not exist"
|
|||
msgstr "Der Benutzer existiert nicht"
|
||||
|
||||
msgid "Paste here your public key"
|
||||
msgstr "Füge deinen Public Key ein"
|
||||
msgstr "Füge Deinen Public Key ein"
|
||||
|
||||
msgid "Give a name to your key"
|
||||
msgstr "Gebe deinem SSH-Key einen Name"
|
||||
msgstr "Gebe Deinem SSH-Key einen Name"
|
||||
|
||||
msgid "Key name"
|
||||
msgstr "Key-Name"
|
||||
|
@ -156,10 +156,10 @@ msgid "Upload"
|
|||
msgstr "Hochladen"
|
||||
|
||||
msgid "Your VM hosted in Switzerland"
|
||||
msgstr "deine VM in der Schweiz"
|
||||
msgstr "Deine VM in der Schweiz"
|
||||
|
||||
msgid "Set your new password"
|
||||
msgstr "Setze dein neues Passwort"
|
||||
msgstr "Setze Dein neues Passwort"
|
||||
|
||||
msgid "Reset"
|
||||
msgstr "Zurücksetzen"
|
||||
|
@ -180,7 +180,7 @@ msgid "My VMs"
|
|||
msgstr "Meine VMs"
|
||||
|
||||
msgid "My SSH Keys"
|
||||
msgstr "Meine SSH Keys"
|
||||
msgstr "Meine SSH-Keys"
|
||||
|
||||
msgid "My Bills"
|
||||
msgstr "Meine Rechnungen"
|
||||
|
@ -229,10 +229,10 @@ msgid ""
|
|||
"Thank you!\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Du erhälst diese E-Mail da du dein Passwort für deinen Account bei "
|
||||
"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, "
|
||||
"%(password_reset_url)s Solltest Du kein neues Passwort angefordert haben, "
|
||||
"dann ignoriere diese E-Mail.<br/>\n"
|
||||
"Dankeschön!\n"
|
||||
|
||||
|
@ -245,10 +245,10 @@ msgid ""
|
|||
"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 "
|
||||
"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, "
|
||||
"%(password_reset_url)s Solltest Du kein neues Passwort angefordert haben, "
|
||||
"dann ignoriere diese E-Mail.\n"
|
||||
"Dankeschön!\n"
|
||||
|
||||
|
@ -260,11 +260,11 @@ msgid ""
|
|||
"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 "
|
||||
"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 "
|
||||
"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"
|
||||
|
@ -280,12 +280,12 @@ msgid ""
|
|||
"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 "
|
||||
"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"
|
||||
"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"
|
||||
"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"
|
||||
|
@ -306,6 +306,9 @@ msgstr "Registrieren"
|
|||
msgid "Forgot your password ? "
|
||||
msgstr "Passwort vergessen?"
|
||||
|
||||
msgid "Resend activation link"
|
||||
msgstr "Aktivierungslink noch einmal senden"
|
||||
|
||||
msgid "Notifications"
|
||||
msgstr "Benachrichtigungen"
|
||||
|
||||
|
@ -353,7 +356,7 @@ msgid "Order summary"
|
|||
msgstr "Bestellungsübersicht"
|
||||
|
||||
msgid "Product"
|
||||
msgstr ""
|
||||
msgstr "Produkt"
|
||||
|
||||
msgid "Cores"
|
||||
msgstr "Prozessorkerne"
|
||||
|
@ -588,7 +591,7 @@ msgid "We are here to help you!"
|
|||
msgstr "Wir sind hier, um Dir zu helfen!"
|
||||
|
||||
msgid "CONTACT"
|
||||
msgstr "KONTACT"
|
||||
msgstr "KONTAKT"
|
||||
|
||||
msgid "Terminate your Virtual Machine"
|
||||
msgstr "Deine Virtuelle Maschine beenden"
|
||||
|
@ -601,8 +604,11 @@ msgstr ""
|
|||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Your Virtual Machine %(virtual_machine.name)s is successfully terminated!"
|
||||
msgstr "Deine Virtuelle Machine (VM) %(virtual_machine.name)s wurde erfolgreich beendet!"
|
||||
"Your Virtual Machine <strong>%(machine_name)s</strong> is successfully "
|
||||
"terminated!"
|
||||
msgstr ""
|
||||
"Deine Virtuelle Machine (VM) <strong>%(machine_name)s</strong> wurde erfolgreich "
|
||||
"beendet!"
|
||||
|
||||
msgid "Virtual Machines"
|
||||
msgstr "Virtuelle Maschinen"
|
||||
|
@ -644,13 +650,13 @@ msgid "Sorry. Your request is invalid."
|
|||
msgstr "Entschuldigung, deine Anfrage ist ungültig."
|
||||
|
||||
msgid "Password has been reset."
|
||||
msgstr ""
|
||||
msgstr "Dein Passwort wurde erfolgreich zurückgesetzt."
|
||||
|
||||
msgid "Password reset has not been successful."
|
||||
msgstr ""
|
||||
msgstr "Dein Passwort konnte nicht zurückgesetzt werden."
|
||||
|
||||
msgid "The reset password link is no longer valid."
|
||||
msgstr ""
|
||||
msgstr "Der Link zum Zurücksetzen Deines Passwortes ist nicht mehr gültig."
|
||||
|
||||
msgid "Invalid credit card"
|
||||
msgstr "Ungültige Kreditkarte"
|
||||
|
@ -707,7 +713,7 @@ msgstr "VM Kündigung"
|
|||
#~ msgstr "VM %(VM_ID)s erfolgreich beendet"
|
||||
|
||||
#~ msgid "days"
|
||||
#~ msgstr "tage"
|
||||
#~ msgstr "Tage"
|
||||
|
||||
#~ msgid "New Virtual Machine"
|
||||
#~ msgstr "Neue virtuelle Maschine"
|
||||
|
@ -740,7 +746,7 @@ msgstr "VM Kündigung"
|
|||
#~ msgstr "Meine Bestellungen"
|
||||
|
||||
#~ msgid "SSH Keys"
|
||||
#~ msgstr "SSH Key"
|
||||
#~ msgstr "SSH Keys"
|
||||
|
||||
#~ msgid "Notifications "
|
||||
#~ msgstr "Benachrichtigungen"
|
||||
|
@ -788,19 +794,19 @@ msgstr "VM Kündigung"
|
|||
#~ msgstr "Hinzufügen"
|
||||
|
||||
#~ msgid "Keys"
|
||||
#~ msgstr "Schlüssel"
|
||||
#~ msgstr "Keys"
|
||||
|
||||
#~ msgid "Log in"
|
||||
#~ msgstr "Anmelden"
|
||||
|
||||
#~ msgid "You haven been logged out"
|
||||
#~ msgstr "Sie wurden abgmeldet"
|
||||
#~ msgstr "Du wurdest abgemeldet"
|
||||
|
||||
#~ msgid "How it works"
|
||||
#~ msgstr "So funktioniert es"
|
||||
|
||||
#~ msgid "Your infrastructure"
|
||||
#~ msgstr "deine Infrastruktur"
|
||||
#~ msgstr "Deine Infrastruktur"
|
||||
|
||||
#~ msgid "Our inftrastructure"
|
||||
#~ msgstr "Unsere Infrastruktur"
|
||||
|
@ -809,10 +815,10 @@ msgstr "VM Kündigung"
|
|||
#~ msgstr "Preise"
|
||||
|
||||
#~ msgid "Access Key"
|
||||
#~ msgstr "Zugriffsschlüssel"
|
||||
#~ msgstr "SSH Key"
|
||||
|
||||
#~ msgid "Upload your own key. "
|
||||
#~ msgstr "Lade deinen Key hoch"
|
||||
#~ msgstr "Lade Deinen Key hoch"
|
||||
|
||||
#~ msgid "Generate Key Pair"
|
||||
#~ msgstr "Schlüsselpaar generieren"
|
||||
|
@ -836,5 +842,5 @@ msgstr "VM Kündigung"
|
|||
#~ "Your SSH private key was already generated and downloaded, if you lost "
|
||||
#~ "it, contact us. "
|
||||
#~ msgstr ""
|
||||
#~ "Dein privater SSH Schlüssel wurde bereits generiert und heruntergeladen. "
|
||||
#~ "Falls du ihn verloren hast, kontaktiere uns."
|
||||
#~ "Dein privater SSH Key wurde bereits generiert und heruntergeladen. "
|
||||
#~ "Falls Du ihn verloren hast, kontaktiere uns."
|
||||
|
|
|
@ -44,6 +44,8 @@
|
|||
<a class="unlink" href="{% url 'hosting:signup' %}">{% trans "Sign up"%}</a>
|
||||
<span class="text"> or </span>
|
||||
<a class="unlink" href="{% url 'hosting:reset_password' %}">{% trans "Forgot your password ? "%}</a>
|
||||
<span class="text"> or </span><br/>
|
||||
<a class="unlink" href="{% url 'hosting:resend_activation_link' %}">{% trans "Resend activation link"%}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
36
hosting/templates/hosting/resend_activation_link.html
Normal file
36
hosting/templates/hosting/resend_activation_link.html
Normal file
|
@ -0,0 +1,36 @@
|
|||
{% extends "hosting/base_short.html" %}
|
||||
{% load staticfiles bootstrap3%}
|
||||
{% load i18n %}
|
||||
|
||||
{% block navbar %}
|
||||
{% include 'hosting/includes/_navbar_transparent.html' %}
|
||||
{% endblock navbar %}
|
||||
|
||||
|
||||
{% block content %}
|
||||
<div class="auth-container">
|
||||
<div class="auth-bg"></div>
|
||||
<div class="auth-center">
|
||||
<div class="auth-title">
|
||||
<h2>{% trans "Your VM hosted in Switzerland"%}</h2>
|
||||
</div>
|
||||
<div class="auth-content">
|
||||
<div class="intro-message auth-box sign-up">
|
||||
<h2 class="section-heading">{% trans "Resend activation link"%}</h2>
|
||||
<form action="{% url 'hosting:resend_activation_link' %}" method="post" class="form" novalidate>
|
||||
{% csrf_token %}
|
||||
{% for field in form %}
|
||||
{% bootstrap_field field show_label=False %}
|
||||
{% endfor %}
|
||||
{% buttons %}
|
||||
<button type="submit" class="btn btn-block btn-success">
|
||||
{% trans "Submit"%}
|
||||
</button>
|
||||
{% endbuttons %}
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
|
@ -8,8 +8,7 @@ from .views import (
|
|||
MarkAsReadNotificationView, PasswordResetView, PasswordResetConfirmView,
|
||||
HostingPricingView, CreateVirtualMachinesView, HostingBillListView,
|
||||
HostingBillDetailView, SSHKeyDeleteView, SSHKeyCreateView, SSHKeyListView,
|
||||
SSHKeyChoiceView, DashboardView, SettingsView)
|
||||
|
||||
SSHKeyChoiceView, DashboardView, SettingsView, ResendActivationEmailView)
|
||||
|
||||
urlpatterns = [
|
||||
url(r'index/?$', IndexView.as_view(), name='index'),
|
||||
|
@ -52,6 +51,8 @@ urlpatterns = [
|
|||
url(r'signup/?$', SignupView.as_view(), name='signup'),
|
||||
url(r'signup-validate/?$', SignupValidateView.as_view(),
|
||||
name='signup-validate'),
|
||||
url(r'resend-activation-link/?$', ResendActivationEmailView.as_view(),
|
||||
name='resend_activation_link'),
|
||||
url(r'reset-password/?$', PasswordResetView.as_view(),
|
||||
name='reset_password'),
|
||||
url(r'reset-password-confirm/(?P<uidb64>[0-9A-Za-z]+)-(?P<token>.+)/$',
|
||||
|
|
|
@ -33,13 +33,16 @@ from membership.models import CustomUser, StripeCustomer
|
|||
from opennebula_api.models import OpenNebulaManager
|
||||
from opennebula_api.serializers import VirtualMachineSerializer, \
|
||||
VirtualMachineTemplateSerializer, VMTemplateSerializer
|
||||
from utils.forms import BillingAddressForm, PasswordResetRequestForm, \
|
||||
UserBillingAddressForm
|
||||
from utils.forms import (
|
||||
BillingAddressForm, PasswordResetRequestForm, UserBillingAddressForm,
|
||||
ResendActivationEmailForm
|
||||
)
|
||||
from utils.hosting_utils import get_vm_price
|
||||
from utils.mailer import BaseEmail
|
||||
from utils.stripe_utils import StripeUtils
|
||||
from utils.views import (
|
||||
PasswordResetViewMixin, PasswordResetConfirmViewMixin, LoginViewMixin
|
||||
PasswordResetViewMixin, PasswordResetConfirmViewMixin, LoginViewMixin,
|
||||
ResendActivationLinkViewMixin
|
||||
)
|
||||
from .forms import HostingUserSignupForm, HostingUserLoginForm, \
|
||||
UserHostingKeyForm, generate_ssh_key_name
|
||||
|
@ -47,6 +50,7 @@ from .mixins import ProcessVMSelectionMixin
|
|||
from .models import HostingOrder, HostingBill, HostingPlan, UserHostingKey
|
||||
from datacenterlight.models import VMTemplate
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
CONNECTION_ERROR = "Your VMs cannot be displayed at the moment due to a \
|
||||
|
@ -282,6 +286,14 @@ class SignupValidatedView(SignupValidateView):
|
|||
return context
|
||||
|
||||
|
||||
class ResendActivationEmailView(ResendActivationLinkViewMixin):
|
||||
template_name = 'hosting/resend_activation_link.html'
|
||||
form_class = ResendActivationEmailForm
|
||||
success_url = reverse_lazy('hosting:login')
|
||||
email_template_path = 'datacenterlight/emails/'
|
||||
email_template_name = 'user_activation'
|
||||
|
||||
|
||||
class PasswordResetView(PasswordResetViewMixin):
|
||||
site = 'dcl'
|
||||
template_name = 'hosting/reset_password.html'
|
||||
|
@ -319,7 +331,7 @@ class PasswordResetConfirmView(PasswordResetConfirmViewMixin):
|
|||
messages.success(request, _('Password has been reset.'))
|
||||
|
||||
# Change opennebula password
|
||||
opennebula_client.change_user_password(new_password)
|
||||
opennebula_client.change_user_password(user.password)
|
||||
|
||||
return self.form_valid(form)
|
||||
else:
|
||||
|
|
|
@ -438,11 +438,11 @@ class OpenNebulaManager():
|
|||
self.oneadmin_client.call(oca.VmTemplate.METHODS[
|
||||
'delete'], template_id, False)
|
||||
|
||||
def change_user_password(self, new_password):
|
||||
def change_user_password(self, passwd_hash):
|
||||
self.oneadmin_client.call(
|
||||
oca.User.METHODS['passwd'],
|
||||
self.opennebula_user.id,
|
||||
new_password
|
||||
passwd_hash
|
||||
)
|
||||
|
||||
def add_public_key(self, user, public_key='', merge=False):
|
||||
|
|
|
@ -96,5 +96,4 @@ pyflakes==1.5.0
|
|||
billiard==3.5.0.3
|
||||
amqp==2.2.1
|
||||
vine==1.1.4
|
||||
#git+https://github.com/ungleich/cdist.git#egg=cdist
|
||||
file:///home/app/cdist#egg=cdist
|
||||
cdist==4.7.0
|
||||
|
|
|
@ -18,7 +18,8 @@ class SignupFormMixin(forms.ModelForm):
|
|||
model = CustomUser
|
||||
fields = ['name', 'email', 'password']
|
||||
widgets = {
|
||||
'name': forms.TextInput(attrs={'placeholder': _('Enter your name or company name')}),
|
||||
'name': forms.TextInput(
|
||||
attrs={'placeholder': _('Enter your name or company name')}),
|
||||
}
|
||||
|
||||
def clean_confirm_password(self):
|
||||
|
@ -42,7 +43,7 @@ class LoginFormMixin(forms.Form):
|
|||
is_auth = authenticate(email=email, password=password)
|
||||
if not is_auth:
|
||||
raise forms.ValidationError(
|
||||
"Your username and/or password were incorrect.")
|
||||
_("Your username and/or password were incorrect."))
|
||||
return self.cleaned_data
|
||||
|
||||
def clean_email(self):
|
||||
|
@ -51,7 +52,24 @@ class LoginFormMixin(forms.Form):
|
|||
CustomUser.objects.get(email=email)
|
||||
return email
|
||||
except CustomUser.DoesNotExist:
|
||||
raise forms.ValidationError("User does not exist")
|
||||
raise forms.ValidationError(_("User does not exist"))
|
||||
|
||||
|
||||
class ResendActivationEmailForm(forms.Form):
|
||||
email = forms.CharField(widget=forms.EmailInput())
|
||||
|
||||
class Meta:
|
||||
fields = ['email']
|
||||
|
||||
def clean_email(self):
|
||||
email = self.cleaned_data.get('email')
|
||||
try:
|
||||
c = CustomUser.objects.get(email=email)
|
||||
if c.validated == 1:
|
||||
raise forms.ValidationError(_("The account is already active."))
|
||||
return email
|
||||
except CustomUser.DoesNotExist:
|
||||
raise forms.ValidationError(_("User does not exist"))
|
||||
|
||||
|
||||
class PasswordResetRequestForm(forms.Form):
|
||||
|
@ -66,7 +84,7 @@ class PasswordResetRequestForm(forms.Form):
|
|||
CustomUser.objects.get(email=email)
|
||||
return email
|
||||
except CustomUser.DoesNotExist:
|
||||
raise forms.ValidationError("User does not exist")
|
||||
raise forms.ValidationError(_("User does not exist"))
|
||||
|
||||
|
||||
class SetPasswordForm(forms.Form):
|
||||
|
@ -75,11 +93,11 @@ class SetPasswordForm(forms.Form):
|
|||
password
|
||||
"""
|
||||
error_messages = {
|
||||
'password_mismatch': ("The two password fields didn't match."),
|
||||
'password_mismatch': _("The two password fields didn't match."),
|
||||
}
|
||||
new_password1 = forms.CharField(label=("New password"),
|
||||
new_password1 = forms.CharField(label=_("New password"),
|
||||
widget=forms.PasswordInput)
|
||||
new_password2 = forms.CharField(label=("New password confirmation"),
|
||||
new_password2 = forms.CharField(label=_("New password confirmation"),
|
||||
widget=forms.PasswordInput)
|
||||
|
||||
def clean_new_password2(self):
|
||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-09-02 11:50+0000\n"
|
||||
"POT-Creation-Date: 2017-09-25 20:11+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"
|
||||
|
@ -738,6 +738,24 @@ msgstr ""
|
|||
msgid "Enter your name or company name"
|
||||
msgstr "Geben Sie Ihren Namen oder der Ihrer Firma ein"
|
||||
|
||||
msgid "Your username and/or password were incorrect."
|
||||
msgstr "Dein Benutzername und/oder Dein Passwort ist falsch."
|
||||
|
||||
msgid "User does not exist"
|
||||
msgstr "Der Benutzer existiert nicht"
|
||||
|
||||
msgid "The account is already active."
|
||||
msgstr "Das Benutzerkonto ist bereits aktiv."
|
||||
|
||||
msgid "The two password fields didn't match."
|
||||
msgstr "Die beiden Passwörter stimmen nicht überein."
|
||||
|
||||
msgid "New password"
|
||||
msgstr "Neues Passwort"
|
||||
|
||||
msgid "New password confirmation"
|
||||
msgstr "Neues Passwort Bestätigung"
|
||||
|
||||
msgid "Cardholder Name"
|
||||
msgstr "Name des Kartenbesitzer"
|
||||
|
||||
|
@ -768,17 +786,25 @@ msgstr "Telefon"
|
|||
msgid "Message"
|
||||
msgstr "Nachricht"
|
||||
|
||||
msgid "An email with the activation link has been sent to your email"
|
||||
msgstr ""
|
||||
"Der Link zum Zurücksetzen deines Passwortes wurde an deine E-Mail gesendet"
|
||||
|
||||
msgid "Account Activation"
|
||||
msgstr "Accountaktivierung"
|
||||
|
||||
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"
|
||||
msgstr ""
|
||||
"Der Link zum Zurücksetzen deines Passwortes wurde an deine E-Mail gesendet"
|
||||
|
||||
msgid "Password Reset"
|
||||
msgstr ""
|
||||
msgstr "Passwort zurücksetzen"
|
||||
|
||||
msgid "Password has been reset."
|
||||
msgstr "Das Passwort wurde zur?ckgesetzt."
|
||||
msgstr "Das Passwort wurde zurückgesetzt."
|
||||
|
||||
msgid "Password reset has not been successful."
|
||||
msgstr "Das Zur?cksetzen war nicht erfolgreich."
|
||||
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."
|
||||
msgstr "Der Link zum Zurücksetzen Deines Passwortes ist nicht länger gültig."
|
||||
|
|
|
@ -2,6 +2,7 @@ from django.conf import settings
|
|||
from django.contrib import messages
|
||||
from django.contrib.auth import authenticate, login
|
||||
from django.contrib.auth.tokens import default_token_generator
|
||||
from django.core.urlresolvers import reverse_lazy
|
||||
from django.http import HttpResponseRedirect
|
||||
from django.utils.encoding import force_bytes
|
||||
from django.utils.http import urlsafe_base64_encode, urlsafe_base64_decode
|
||||
|
@ -63,9 +64,45 @@ class LoginViewMixin(FormView):
|
|||
return super(LoginViewMixin, self).get(request, *args, **kwargs)
|
||||
|
||||
|
||||
class ResendActivationLinkViewMixin(FormView):
|
||||
success_message = _(
|
||||
"An email with the activation link has been sent to your email")
|
||||
|
||||
def generate_email_context(self, user):
|
||||
context = {
|
||||
'base_url': "{0}://{1}".format(self.request.scheme,
|
||||
self.request.get_host()),
|
||||
'activation_link': reverse_lazy(
|
||||
'hosting:validate',
|
||||
kwargs={'validate_slug': user.validation_slug}
|
||||
),
|
||||
'dcl_text': settings.DCL_TEXT,
|
||||
}
|
||||
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)
|
||||
context = self.generate_email_context(user)
|
||||
email_data = {
|
||||
'subject': '{dcl_text} {account_activation}'.format(
|
||||
dcl_text=settings.DCL_TEXT,
|
||||
account_activation=_('Account Activation')
|
||||
),
|
||||
'to': email,
|
||||
'context': context,
|
||||
'template_name': self.email_template_name,
|
||||
'template_path': self.email_template_path,
|
||||
'from_address': settings.DCL_SUPPORT_FROM_ADDRESS
|
||||
}
|
||||
email = BaseEmail(**email_data)
|
||||
email.send()
|
||||
return HttpResponseRedirect(self.get_success_url())
|
||||
|
||||
|
||||
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")
|
||||
site = ''
|
||||
|
@ -78,7 +115,6 @@ class PasswordResetViewMixin(FormView):
|
|||
'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
|
||||
|
||||
|
@ -104,11 +140,8 @@ 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):
|
||||
try:
|
||||
uid = urlsafe_base64_decode(uidb64)
|
||||
|
|
Loading…
Reference in a new issue