Beispiel #1
0
    def form_valid(self, form):
        data = form.cleaned_data

        user = User(username=data.get('username'))
        user.first_name = data.get('firstname')
        user.last_name = data.get('lastname')
        user.email = data.get('email')
        user.set_password(data.get('password'))
        user.is_active = False
        user.save()

        if data.get('role') == RESEARCHER:
            researcher = Researcher()
            researcher.user = user
            researcher.phone = data.get('phone')
            researcher.save()
        elif data.get('role') == STUDENT:
            student = Student()
            student.user = user
            student.school = School.objects.get(
                id=data.get('school'))  # <select name=xxxx> defines this
            student.role = PEERLEADER
            student.save()
        else:
            advisor = Advisor()
            advisor.user = user
            advisor.school = School.objects.get(id=data.get('school'))
            advisor.save()

        return super(RegisterView, self).form_valid(form)
Beispiel #2
0
    def form_valid(self, form):
        data = form.cleaned_data
        phones = []
        first_names = []
        last_names = []
        default_name = 'N/A'

        for phone in data['phone_numbers'].split(','):
            phones.append(phone.strip())

        for fn in data['first_names'].split(','):
            if not (fn.strip()): # if empty string, then default to 'N/A'
                first_names.append(default_name)
            else:
                first_names.append(fn.strip())

        for ln in data['last_names'].split(','):
            if not (ln.strip()): # if empty string, then default to 'N/A'
                last_names.append(default_name)
            else:
                last_names.append(ln.strip())

        #qs = User.objects.filter(username__in=phones) # this is not specific to school, so commented out
        qs = Student.objects.filter(user__username__in=phones, school__id=self.request.GET['school_id'])

        if qs: # TODO: refactor
            duplicate_nums = set(student.user.username for student in qs)
            duplicate_nums_str = ", ".join(duplicate_nums)
            error_msg = "Phone number(s): " + duplicate_nums_str + " already belong(s) to this organization. " + \
                        "If you'd like to update the info--such as first/last names--of these " + \
                        "number(s), please delete/remove first from the table above, and add them as a new entry. " + \
                        "Otherwise, remove the phone number(s) from the list below, and try again."
            form._errors[forms.forms.NON_FIELD_ERRORS] = ErrorList([error_msg])

            return self.form_invalid(form)

        # We'll base block data entry on phone numbers because
        # they are the life-blood of our program
        len_first_names = len(first_names)
        len_last_names = len(last_names)

        for idx, phone in enumerate(phones):
            if not User.objects.filter(username=phone).exists():
                user = User(username=phone)
                user.first_name = first_names[idx] if len_first_names > idx else default_name
                user.last_name = last_names[idx] if len_last_names > idx else default_name
                user.save()

                person = Student(user=user)
                person.school = School.objects.get(id=self.request.GET['school_id'])
                person.role = data['role']
                person.save()

            else: # TODO: refactor this
                error_msg = "PHONE NUMBER ALREADY EXISTS: (" + phone + ") already exist in the database."

                # means user exists in the DB, but is NOT advisor (probably student or something else)
                if Advisor.objects.filter(user__username=phone).exists():
                    school_name = Advisor.objects.filter(user__username=phone).last().school.name
                    error_msg += " We located it in organization named: " + school_name + "."
                elif Student.objects.filter(user__username=phone).exists():
                    school_name = Student.objects.filter(user__username=phone).last().school.name
                    error_msg += " We located it in organization named: " + school_name + "."

                error_msg += " We do not allow duplicate phone numbers in the user database." + \
                            " If you'd like to add the user to this organization, please remove " + \
                            "him/her from the other organization and try again."
                form._errors[forms.forms.NON_FIELD_ERRORS] = ErrorList([error_msg])
                return self.form_invalid(form)

        return HttpResponseRedirect(self.get_success_url())