Django - метод регистрации переопределения allauth в пользовательской форме - PullRequest
0 голосов
/ 04 марта 2020

У меня проблемы с django Аллахом. Я создаю свою пользовательскую форму, и она отлично работает, но теперь мне нужно переопределить регистрацию

Я попробовал это:

class CustomSignupForm(SignupForm):

password1 = SetPasswordField(label="Password")
password2 = PasswordField(label="Conferma Password")
first_name = forms.CharField(max_length=30, label='Nome')
last_name = forms.CharField(max_length=30, label='Cognome')
data_di_nascita = forms.CharField(max_length=30, label='Data di nascita',widget=forms.TextInput(attrs={'placeholder': 'gg/mm/aaaa'}))
citta = forms.CharField(max_length=30, label='Città', required=False)
regione = forms.CharField(max_length=30, label='Regione', required=False)
stato = CountryField(blank_label='Nazione',blank=True).formfield()
termini_e_condizioni = forms.BooleanField(label='termini_e_condizioni',widget=forms.CheckboxInput(attrs={'class':'your_class'}))
privacy = forms.BooleanField(label='privacy',widget=forms.CheckboxInput(attrs={'class':'your_class'}), required=False)
newsletter = forms.BooleanField(label='newsletter',widget=forms.CheckboxInput(attrs={'class':'your_class'}), required=False)

def __init__(self, *args, **kwargs):
    super(CustomSignupForm, self).__init__(*args, **kwargs)
    self.fields['password1'].label = "Password"
    self.fields['password2'].label = "Conferma Password"
    self.fields['password1'].widget = PasswordInput(attrs={'class': 'form-control', 'placeholder': 'Password'})
    self.fields['password2'].widget = PasswordInput(attrs={'class': 'form-control', 'placeholder': 'Conferma Password'})
    for field in self.fields:
        help_text = self.fields[field].help_text
        self.fields[field].help_text = None
        if help_text != '':
            self.fields[field].widget.attrs.update({'class':'has-popover', 'data-content':help_text, 'data-placement':'right', 'data-container':'body'})


def confirm_password(self):
    print('entered confirm_password')
    if ("password1" in self.cleaned_data
            and "password2" in self.cleaned_data):
        print('password fields found')
        if self.cleaned_data['password1'] != self.cleaned_data['password2']:
            print('le password non corrispondono')
            raise forms.ValidationError(_("You must type the same password"
                                          " each time."))
        print('passwords equal')
        return self.cleaned_data["password1"]
    else:
        print('passwords not found in form')
        raise forms.ValidationError(_("Password not found in form"))


def signup(self, request, user):
    print("-------------------------------------------------------------------OK----------------------------------------------")
    user.first_name = self.cleaned_data['first_name']
    user.last_name = self.cleaned_data['last_name']
    user.save()
    userpost=User.objects.get(username=self.cleaned_data['username'])
    userpost.personal_data.birthdate = self.cleaned_data['data_di_nascita']
    userpost.personal_data.country = self.cleaned_data['stato']
    userpost.personal_data.subcountry = self.cleaned_data['regione']
    userpost.personal_data.city = self.cleaned_data['citta']
    userpost.personal_data.created = timezone.now()
    userpost.personal_data.save()
    userpost.markeringpreference.subscribed=self.cleaned_data['newsletter']
    userpost.newsletterpreference.subscribed=self.cleaned_data['newsletter']
    userpost.markeringpreference.save()
    userpost.newsletterpreference.save()
    return user

Это правильно? Я спрашиваю, потому что он не сохраняет personal_data и никогда не печатает первую строку (prin('———ok——-'))

Моя версия Django - 2.2 и django -ответ 0.41.0

...