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')
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, })))
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, })))
def get_base_query(self): query = Site.all() if self.filtering_event_key: query.filter('event', Event.get(self.filtering_event_key)) return query