def get(self): reader_key = self.get_str('reader_key') reader = Reader.get_reader(reader_key) current_reader = self.require_current_reader() if current_reader.key() != reader.key(): self.return_forbidden() self.return_ok( { 'reader': reader, 'meters': Meter.gql( "where reader = :1", current_reader).fetch(10)})
def post(self): try: current_reader = self.require_current_reader() reader_key = self.post_str("reader_key") reader = Reader.get_reader(reader_key) if current_reader.key() != reader.key(): self.return_forbidden() if 'remove_email' in self.request.POST: email = self.get_str('email') if email in reader.emails: reader.emails.remove(email) reader.put() fields = self.page_fields(reader) fields['message'] = "Successfully removed email address." self.return_ok(fields) else: raise HTTPBadRequest("""That email isn't associated with the reader.""") elif 'proposed_email' in self.request.POST: proposed_email = self.post_str('proposed_email') reader.proposed_email = proposed_email.strip() reader.put() if len(proposed_email) == 0: message = """Proposed email address successfully set to blank.""" else: message = """Proposed email address set successfully. Now sign out and then sign in using the proposed email address""" self.return_ok(self.page_fields(reader, message)) elif 'delete' in self.request.POST: for meter in Meter.gql("where reader = :1", reader): meter.delete_meter() reader.delete() self.send_found('/welcome') else: name = self.post_str('name') reader.name = name reader.put() self.add_flash('Settings updated successfully.') self.return_see_other( '/view_reader?reader_key=' + str(reader.key())) except HTTPBadRequest as e: self.return_bad_request(self.page_fields(reader, str(e)))
def get(self): now = datetime.datetime.now() for meter in Meter.gql("""where next_reminder != null and next_reminder <= :1""", now): body = jinja2.Template(""" Hi, This is a reminder from MtrHub to read your {{ meter.utility_id }} meter \ {{ meter.name }}. To change the settings, log in to: http://www.mtrhub.com/ Regards, MtrHub. """).render(meter=meter) mail.send_mail( sender="MtrHub <*****@*****.**>", to=meter.email_address, subject="MtrHub: Remember to take a meter reading.", body=body) meter.set_next_reminder() meter.put() self.return_ok({})
def get(self): meters = {} public_reads = [] for read in Read.gql("order by read_date desc limit 50"): meter = read.meter if not meter.is_public or str(meter.key()) in meters: continue meters[str(meter.key())] = meter public_reads.append(read) if len(public_reads) > 20: break fields = {'public_reads': public_reads} current_reader = self.find_current_reader() if current_reader is not None: reader_meters = Meter.gql( "where reader = :1", current_reader).fetch(10) fields['meters'] = reader_meters fields['candidate_customer_reads'] = [ cand for cand in [ mtr.candidate_customer_read() for mtr in reader_meters] if cand is not None] self.return_ok(fields)