def post(self): try: current_reader = self.require_current_reader() is_public = 'is_public' in self.request.POST reminder_frequency = self.post_str('reminder_frequency') name = self.post_str('name') time_zone = self.post_str('time_zone') reminder_start = self.post_datetime( "reminder_start", pytz.timezone(time_zone)) utility_units = self.post_str('utility_units') if reminder_frequency == 'never': email_address = None else: email_address = self.post_str('email_address') confirm_email_address = self.post_str('confirm_email_address') email_address = email_address.strip() if email_address != confirm_email_address.strip(): raise HTTPBadRequest("The email addresses don't match.") customer_read_frequency = self.post_str('customer_read_frequency') meter = Meter( reader=current_reader, email_address=email_address, reminder_start=reminder_start, reminder_frequency=reminder_frequency, is_public=is_public, name=name, time_zone=time_zone, customer_read_frequency=customer_read_frequency) meter.put() utility_id, units = utility_units.split('-') meter.update( utility_id, units, name, time_zone, is_public, email_address, reminder_start, reminder_frequency, customer_read_frequency) self.return_see_other('/view_meter?meter_key=' + str(meter.key())) except HTTPBadRequest as e: self.return_bad_request(self.page_fields(current_reader, e))