def AuthenticatedPost(self, org, event):
        # get and check args
        ids = [int(id) for id in self.request.get('ids', '').split(',')]
        selected_org = (
            Organization.get(self.request.get('org'))
            if self.request.get('org') else None
        )
        status = self.request.get('status')
        action = self.request.get('action', None)
        if action not in self.BULK_ACTIONS:
            self.abort(404)

        # get authorised events 
        if org.is_global_admin:
            event_keys = list(event_db.Event.all(keys_only=True))
        elif org.is_local_admin:
            event_keys = org.incidents

        # handle bulk action
        fn = self.BULK_ACTIONS[action]
        for id in ids:
            site = Site.get_by_id(id)
            authorised = (
                site.event.key() in event_keys
                and (selected_org is None or any(
                    incident_key in event_keys for incident_key in [
                        incident.key() for incident in org.incidents
                    ])
                )
            )
            if authorised:
                fn(self, site, org=selected_org, status=status)

        # redirect back to work orders table
        self.redirect('/admin-view-work-orders')
コード例 #2
0
    def AuthenticatedGet(self, org, event):
        site_proj = db.Query(Site,
                             projection=('county', 'state'),
                             distinct=True).filter('event', event)
        counties_and_states = {
            site.county_and_state: (site.county, site.state)
            for site in site_proj
        }
        Form = create_site_filter_form(counties_and_states)
        form = Form(self.request.GET)
        if not form.validate():
            form = Form()  # => use defaults

        # construct query
        query = Site.all().filter('event', event.key())
        if form.county_and_state.data:
            county, state = counties_and_states[form.county_and_state.data]
            query = query.filter('county', county).filter('state', state)
        if form.order.data:
            query = query.order(form.order.data)

        # run query
        sites = list(
            query.run(offset=form.page.data * self.SITES_PER_PAGE,
                      limit=self.SITES_PER_PAGE))

        self.response.out.write(
            template.render(
                dict(
                    page_db.get_page_block_dict(), **{
                        "form": form,
                        "sites": sites,
                        "sites_per_page": self.SITES_PER_PAGE,
                    })))
コード例 #3
0
    def AuthenticatedGet(self, org, event):
        site_proj = db.Query(
            Site,
            projection=('county', 'state'),
            distinct=True
        ).filter('event', event)
        counties_and_states = {
            site.county_and_state : (site.county, site.state) for site
            in site_proj
        }
        Form = create_site_filter_form(counties_and_states)
        form = Form(self.request.GET)
        if not form.validate():
            form = Form()  # => use defaults

        # construct query
        query = Site.all().filter('event', event.key())
        if form.county_and_state.data:
            county, state = counties_and_states[form.county_and_state.data]
            query = query.filter('county', county).filter('state', state)
        if form.order.data:
            query = query.order(form.order.data)

        # run query
        sites = list(query.run(
            offset=form.page.data * self.SITES_PER_PAGE,
            limit=self.SITES_PER_PAGE
        ))

        self.response.out.write(template.render(dict(
            page_db.get_page_block_dict(), **{
            "form": form,
            "sites": sites,
            "sites_per_page": self.SITES_PER_PAGE,
        })))
コード例 #4
0
 def get_base_query(self):
     query = Site.all()
     if self.filtering_event_key:
         query.filter('event', Event.get(self.filtering_event_key))
     return query
コード例 #5
0
 def get_base_query(self):
     query = Site.all()
     if self.filtering_event_key:
         query.filter('event', Event.get(self.filtering_event_key))
     return query