def AuthenticatedGet(self, org, event):
        relevant_contacts = Contact.for_event(event)

        self.response.out.write(template.render(
        {
            "contacts": relevant_contacts,
        }))
예제 #2
0
    def AuthenticatedGet(self, org, event):
        relevant_contacts = Contact.for_event(event)

        self.response.out.write(
            template.render({
                "contacts": relevant_contacts,
            }))
    def AuthenticatedGet(self, org, _):
        global_admin = False
        local_admin = False
        if org.name == GLOBAL_ADMIN_NAME:
            global_admin = True
        if org.is_admin == True and global_admin == False:
            local_admin = True
        
        if global_admin == False and local_admin == False:
            self.redirect("/")
            return
            
        # lookup contact
        try:
            id = int(self.request.get("contact"))
            contact = Contact.get_by_id(id)
        except:
            self.abort(404)

        # check authorised
        if not org.may_administer(contact):
            self.abort(403)
        
        # create form
        form = ContactFormFull(None, contact)

        # render template
        self.response.out.write(template.render({
            "contact": contact,
            "form": form,
            "organization_name": (
                contact.organization.name if contact.organization else None
            ),
            "global_admin": global_admin,
        }))
    def AuthenticatedGet(self, org, event):
        try:
            contact_id = int(self.request.get("contact", -1))
            contact = Contact.get_by_id(contact_id)
        except:
            self.abort(404)
        if not contact:
            self.abort(404)

        self.response.out.write(template.render({
            "contact": contact,
            "form": ContactFormFull(None, contact),  # use form to iterate fields
        }))
    def AuthenticatedGet(self, org, event):
        try:
            contact_id = int(self.request.get("contact", -1))
            contact = Contact.get_by_id(contact_id)
        except:
            self.abort(404)
        if not contact:
            self.abort(404)

        self.response.out.write(
            template.render({
                "contact": contact,
                "form": ContactFormFull(None,
                                        contact),  # use form to iterate fields
            }))
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
예제 #7
0
    def handle(self, org, event):
        org_id = self.request.get("org")

        # select contacts
        relevant_contacts = Contact.for_event(event)
        if org_id:
            relevant_contacts = (
                contact for contact in relevant_contacts
                if unicode(contact.organization.key().id()) == org_id
            )

        # write out csv
        self.response.headers['Content-Type'] = 'text/csv'
        self.response.headers['Content-Disposition'] = \
            'attachment; filename="crisis_cleanup_contacts.csv"'
        writer = csv.writer(self.response.out)
        writer.writerow(Contact.CSV_FIELDS)
        for contact in relevant_contacts:
            writer.writerow(contact.ToCsvLine())
    def AuthenticatedPost(self, org, _):
        global_admin = False
        local_admin = False
        if org.name == GLOBAL_ADMIN_NAME:
            global_admin = True
        if org.is_admin == True and global_admin == False:
            local_admin = True
        
        if global_admin == False and local_admin == False:
            self.redirect("/")
            return

        form = ContactFormFull(self.request.POST)

        # retrieve contact
        try:
            contact_id = int(self.request.get("contact_id"))
            contact = Contact.get_by_id(contact_id)
        except:
            self.abort(404)

        # check authorised
        if not org.may_administer(contact):
            self.abort(403)

        if form.validate() and not form.errors:
            # update contact and redirect
            form.populate_obj(contact)
            contact.save()
            self.redirect('/admin-single-contact?contact=%d' % contact.key().id())
        else:
            self.response.out.write(template.render({
                "contact": contact,
                "form": form,
                "organization_name": (
                    contact.organization.name if contact.organization else None
                ),
                "global_admin": global_admin,
            }))
예제 #9
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,
            }))