Exemple #1
0
    def save(self, commit=True):
        def populate_address(needle):
            data = {}
            delete = []
            for k, value in six.iteritems(self.cleaned_data):
                if k.startswith(needle):
                    key = k.replace(needle, "")
                    data[key] = value
                    delete.append(k)

            # sweep unneeded keys
            for k in delete:
                del self.cleaned_data[k]

            return data

        contact_address_data = populate_address("contact_")
        company_address_data = populate_address("company_")
        user = super(CompanyRegistrationForm, self).save(commit)

        website = company_address_data.pop("www")

        contact_address = MutableAddress.from_data(contact_address_data)
        contact_address.save()
        company_address = MutableAddress.from_data(company_address_data)
        company_address.save()

        contact = PersonContact()
        contact.is_active = False
        contact.user = user
        contact.email = user.email
        contact.default_shipping_address = contact_address
        contact.default_billing_address = contact_address
        contact.first_name = contact_address_data["first_name"]
        contact.last_name = contact_address_data["last_name"]
        contact.phone = contact_address.phone
        contact.save()

        company = CompanyContact()
        company.default_shipping_address = company_address
        company.default_billing_address = company_address
        company.is_active = False
        company.phone = company_address.phone
        company.www = website
        company.name = company_address_data["name"]
        company.name_ext = company_address_data["name_ext"]
        company.tax_number = company_address_data["tax_number"]
        company.email = company_address_data["email"]
        company.save()
        company.members.add(contact)
        return user