def check_and_write_row(row_d):
    """
    Check and save @row_d, return True if ok and False if failed.
    """
    row_acceptable = bool(row_d['Date Password Provided'])
    if row_acceptable:
        # get org
        query = Query(model_class=Organization)
        query.filter('name = ', row_d['ORGANIZATION'])
        org = query.get()
        if org:
            try:
                # write new contact
                new_contact = Contact(
                    first_name=row_d['First Name'],
                    last_name=row_d['Last Name'],
                    email=row_d['E-MAIL'],
                    phone=row_d['PHONE #'],
                    organization=org,
                )
                new_contact.save()
                return True
            except BadValueError, e:
                pass
Esempio n. 2
0
    def AuthenticatedPost(self, org, event):
        if not (org.is_global_admin or org.is_local_admin):
            self.abort(403)

        try:
            org_by_id = organization.Organization.get_by_id(
                int(self.request.get("organization")))
        except:
            self.abort(404)

        # bail if not allowed
        if not org.may_administer(org_by_id):
            self.abort(403)

        # construct forms
        incidents = [
            # hack to workaround apparent bug in webapp2 re multiple selects
            Key(v) for k, v in self.request.POST.items()
            if k.startswith('incidents')
        ]
        organization_form, existing_contact_forms, blank_contact_forms = \
            self._get_forms(self.request.POST, org, org_by_id, incidents)

        # remove unused blank contact forms
        blank_contact_forms = filter(lambda f: any(f.data.values()),
                                     blank_contact_forms)
        for bcf in blank_contact_forms:
            bcf.has_data = True

        # validate forms
        all_forms = [organization_form
                     ] + existing_contact_forms + blank_contact_forms
        if all(form.validate() for form in all_forms):
            # update org
            organization_form.populate_obj(org_by_id)
            org_by_id.save()

            # update existing contacts
            existing_contacts = org_by_id.contacts
            for contact_form in existing_contact_forms:
                contact_form_id = \
                    int(contact_form.id.data) if contact_form.id.data else -1
                contact = [
                    ec for ec in existing_contacts
                    if ec.key().id() == contact_form_id
                ][0]
                delete_requested = contact_form.delete_me.data
                if delete_requested:
                    contact.delete()
                else:
                    contact_form.populate_obj(contact)
                    contact.save()

            # create new
            for contact_form in blank_contact_forms:
                contact = Contact(organization=org_by_id,
                                  first_name=contact_form.first_name.data,
                                  last_name=contact_form.last_name.data,
                                  title=contact_form.title.data,
                                  phone=contact_form.phone.data,
                                  email=contact_form.email.data,
                                  is_primary=contact_form.is_primary.data)
                contact.save()
            self.redirect('/admin-edit-organization?organization=%d' %
                          org_by_id.key().id())
        else:
            self.response.out.write(
                template.render({
                    "errors": True,
                    "organization": org_by_id,
                    "organization_form": organization_form,
                    "existing_contact_forms": existing_contact_forms,
                    "blank_contact_forms": blank_contact_forms,
                }))
    def AuthenticatedPost(self, org, event):
        if not (org.is_global_admin or org.is_local_admin):
            self.abort(403)

        try:
            org_by_id = organization.Organization.get_by_id(
                int(self.request.get("organization"))
            )
        except:
            self.abort(404)

        # bail if not allowed
        if not org.may_administer(org_by_id):
            self.abort(403)

        # construct forms
        incidents = [
            # hack to workaround apparent bug in webapp2 re multiple selects
            Key(v) for k,v in self.request.POST.items()
            if k.startswith('incidents')
        ]
        organization_form, existing_contact_forms, blank_contact_forms = \
            self._get_forms(self.request.POST, org, org_by_id, incidents)

        # remove unused blank contact forms
        blank_contact_forms = filter(lambda f: any(f.data.values()), blank_contact_forms)
        for bcf in blank_contact_forms:
            bcf.has_data = True

        # validate forms
        all_forms = [organization_form] + existing_contact_forms + blank_contact_forms
        if all(form.validate() for form in all_forms):
            # update org
            organization_form.populate_obj(org_by_id)
            org_by_id.save()

            # update existing contacts
            existing_contacts = org_by_id.contacts
            for contact_form in existing_contact_forms:
                contact_form_id = \
                    int(contact_form.id.data) if contact_form.id.data else -1
                contact = [
                    ec for ec in existing_contacts
                    if ec.key().id() == contact_form_id 
                ][0]
                delete_requested = contact_form.delete_me.data
                if delete_requested:
                    contact.delete()
                else:
                    contact_form.populate_obj(contact)
                    contact.save()

            # create new
            for contact_form in blank_contact_forms:
                contact = Contact(
                    organization=org_by_id,
                    first_name=contact_form.first_name.data,
                    last_name=contact_form.last_name.data,
                    title=contact_form.title.data,
                    phone=contact_form.phone.data,
                    email=contact_form.email.data,
                    is_primary=contact_form.is_primary.data
                )
                contact.save()
            self.redirect('/admin-edit-organization?organization=%d' % org_by_id.key().id())
        else:
            self.response.out.write(template.render({
                "errors": True,
                "organization": org_by_id,
                "organization_form": organization_form,
                "existing_contact_forms": existing_contact_forms,
                "blank_contact_forms": blank_contact_forms,
            }))