Skip to content
Snippets Groups Projects

Fix invitations of existing persons with short name

2 files
+ 30
20
Compare changes
  • Side-by-side
  • Inline
Files
2
+ 27
12
@@ -611,6 +611,7 @@ class AccountRegisterForm(SignupForm, ExtensibleForm):
@@ -611,6 +611,7 @@ class AccountRegisterForm(SignupForm, ExtensibleForm):
request = kwargs.pop("request", None)
request = kwargs.pop("request", None)
super(AccountRegisterForm, self).__init__(*args, **kwargs)
super(AccountRegisterForm, self).__init__(*args, **kwargs)
 
person = None
if request.session.get("account_verified_email"):
if request.session.get("account_verified_email"):
email = request.session["account_verified_email"]
email = request.session["account_verified_email"]
@@ -619,16 +620,27 @@ class AccountRegisterForm(SignupForm, ExtensibleForm):
@@ -619,16 +620,27 @@ class AccountRegisterForm(SignupForm, ExtensibleForm):
except (Person.DoesNotExist, Person.MultipleObjectsReturned):
except (Person.DoesNotExist, Person.MultipleObjectsReturned):
raise SuspiciousOperation()
raise SuspiciousOperation()
self.fields["email"].disabled = True
elif request.session.get("invitation_code"):
self.fields["email2"].disabled = True
try:
 
invitation = PersonInvitation.objects.get(
 
key=request.session.get("invitation_code")
 
)
 
except PersonInvitation.DoesNotExist:
 
raise SuspiciousOperation()
if person:
person = invitation.person
available_fields = [field.name for field in Person._meta.get_fields()]
 
if person:
 
self.instance = person
 
available_fields = [field.name for field in Person._meta.get_fields()]
 
if person.email:
 
self.fields["email"].disabled = True
 
self.fields["email2"].disabled = True
self.fields["email2"].initial = person.email
self.fields["email2"].initial = person.email
for field in self.fields:
for field in self.fields:
if field in available_fields and getattr(person, field):
if field in available_fields and getattr(person, field):
self.fields[field].disabled = True
self.fields[field].disabled = True
self.fields[field].initial = getattr(person, field)
self.fields[field].initial = getattr(person, field)
def save(self, request):
def save(self, request):
adapter = get_adapter(request)
adapter = get_adapter(request)
@@ -639,11 +651,14 @@ class AccountRegisterForm(SignupForm, ExtensibleForm):
@@ -639,11 +651,14 @@ class AccountRegisterForm(SignupForm, ExtensibleForm):
for field in Person._meta.get_fields():
for field in Person._meta.get_fields():
if field.name in self.cleaned_data:
if field.name in self.cleaned_data:
data[field.name] = self.cleaned_data[field.name]
data[field.name] = self.cleaned_data[field.name]
person_qs = Person.objects.filter(email=data["email"])
if self.instance:
if not person_qs.exists():
person_qs = Person.objects.filter(pk=self.instance.pk)
if get_site_preferences()["account__auto_create_person"]:
Person.objects.create(user=user, **data)
else:
else:
 
person_qs = Person.objects.filter(email=data["email"])
 
if not person_qs.exists():
 
if get_site_preferences()["account__auto_create_person"]:
 
Person.objects.create(user=user, **data)
 
if person_qs.exists():
person_qs.update(user=user, **data)
person_qs.update(user=user, **data)
self.custom_signup(request, user)
self.custom_signup(request, user)
setup_user_email(request, user, [])
setup_user_email(request, user, [])
Loading