Esempio n. 1
0
    def post(self):
        user = users.get_current_user()
        if user is None:
            self.return_unauthorized()

        if 'associate' in self.request.POST:
            current_reader = self.find_current_reader()
            if current_reader is None:
                reader_key = self.post_str('reader_key')
                reader = Reader.get_reader(reader_key)
                if reader.proposed_email == user.email():
                    reader.proposed_email = ''
                    reader.emails.append(user.email())
                    reader.put()
                    self.add_flash(
                        "The email address " + user.email() +
                        " has been successfully associated with this reader.")
                    self.return_see_other(
                        '/view_reader?reader_key=' + str(reader.key()))
                else:
                    self.return_ok(
                        messages=[
                            "Can't associate " + user.email() +
                            " with the account " + reader.name + """ because
                            the email address you're signed in with doesn't
                            match the proposed email address."""])
            else:
                self.return_bad_request(
                    messages=[
                        "The email address " + user.email() +
                        """ is already associated with an account."""])
        else:
            self.return_see_other('/')
Esempio n. 2
0
 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(self.page_fields(reader))
Esempio n. 3
0
    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)})
Esempio n. 4
0
    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)))