Beispiel #1
0
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.helper = FormHelper(self)
        self.helper.form_id = "id-profileUpdateForm"
        self.helper.form_method = "post"
        self.helper.form_action = "cosmos_users:user_profile"
        self.helper.form_tag = False

        username = self.initial.get("username")
        profile = self.instance.profile
        self.initial["nationality"] = profile.nationality
        if is_tue_email(username):
            hidden_tue = ""
            hidden_fontys = "hidden"
            self.initial["department"] = profile.institution.department
            self.initial["program"] = profile.institution.program
        elif is_fontys_email(username):
            hidden_tue = "hidden"
            hidden_fontys = ""
            self.initial["study"] = profile.institution.study
        else:
            hidden_tue = ""
            hidden_fontys = ""

        self.helper.layout = Layout(
            FloatingField("first_name"),
            FloatingField("last_name"),
            FloatingField("username"),
            FloatingField("email"),
            FloatingField("nationality"),
            FloatingField("department", type=hidden_tue),
            FloatingField("program", type=hidden_tue),
            FloatingField("study", type=hidden_fontys),
            ButtonHolder(Submit("save_profile", "Submit")),
        )
Beispiel #2
0
    def institution(self):
        from apps.users.models.institution import InstitutionFontys, InstitutionTue

        if is_tue_email(self.username):
            return InstitutionTue.objects.get(profile=self)
        elif is_fontys_email(self.username):
            return InstitutionFontys.objects.get(profile=self)
        return None
Beispiel #3
0
def profile_post_save(sender, instance: Profile, created, **kwargs):
    username = instance.user.username
    if is_tue_email(username):
        institution_model = InstitutionTue
    elif is_fontys_email(username):
        institution_model = InstitutionFontys
    else:
        # TODO raise exception?
        return

    if created:
        institution_model.objects.create(profile=instance)
    institution_model.objects.get(profile=instance).save()
Beispiel #4
0
    def save(self, commit=True):
        instance = super().save(commit=True)
        profile = instance.profile
        profile.nationality = self.cleaned_data["nationality"]
        profile.save()
        username = self.cleaned_data["username"]
        institution = profile.institution
        if is_tue_email(username):
            institution.department = self.cleaned_data["department"]
            institution.program = self.cleaned_data["program"]
            institution.save()
        elif is_tue_email(username):
            institution.study = self.cleaned_data["study"]
            institution.save()

        if "email" in self.changed_data and profile.subscribed_newsletter and profile.newsletter_recipient == "ALT":
            old_email = self.initial["email"]
            executor.add_command(NewsletterUnsubscribeCommand(old_email))
            new_email = self.cleaned_data["email"]
            executor.add_command(
                NewsletterSubscribeCommand(new_email, profile.user.first_name,
                                           profile.user.last_name))
Beispiel #5
0
    def done(self, form_list, form_dict, **kwargs):
        user_form = form_dict["register_user"]
        username = user_form.cleaned_data["username"]
        if is_tue_email(username):
            institution_form = form_dict["register_tue"]
        elif is_fontys_email(username):
            institution_form = form_dict["register_fontys"]
        else:
            # TODO raise exception?
            pass

        if user_form.is_valid() and institution_form.is_valid():
            user = user_form.save(commit=False)
            user.is_active = False
            user.save()
            user.refresh_from_db()

            profile = user.profile

            if is_tue_email(username):
                institution = InstitutionTue.objects.get(profile=profile)
                institution.department = institution_form.cleaned_data["department"]
                institution.program = institution_form.cleaned_data["program"]
                institution.save()
            elif is_fontys_email(username):
                institution = InstitutionFontys.objects.get(profile=profile)
                institution.study = institution_form.cleaned_data["study"]
                institution.save()
            else:
                # TODO raise exception?
                pass

            create_confirm_account_email(profile).send()

            if profile.subscribed_newsletter:
                email = user.username if profile.newsletter_recipient == "TUE" else user.email
                executor.add_command(NewsletterSubscribeCommand(email, user.first_name, user.last_name))

        return redirect(reverse("cosmos_users:registration_done"))
Beispiel #6
0
 def institution_name(self):
     if is_tue_email(self.username):
         return "tue"
     elif is_fontys_email(self.username):
         return "fontys"
     return None
Beispiel #7
0
def show_tue_form_condition(wizard):
    cleaned_data = wizard.get_cleaned_data_for_step("register_user") or {}
    return is_tue_email(cleaned_data.get("username", "None"))