def post(self): self.fetch() for person in self.people: if self.request.get(u'person_%s_remove' % str(person.key())): for auth in person.product_authorization.values(): auth.delete() person.account_access.delete() person.delete() self.redirect_and_finish(u'%s/people/' % self.account_path, flash = u"%s removed." % (person.user.email())) if self.request.get('new'): txns = [] new_person_email = self.valid_string(u'new_person_email', required=False) if new_person_email != None: txns.append((create_person_txn, new_person_email)) person_key = Person.key_for(new_person_email) admin = self.valid_bool(u'new_person_admin') txns.append((update_person_account_access_txn, person_key, self.account.key(), admin)) for product in self.products: level = self.valid_int(u'new_person_%s_level' % (product.key())) txns.append((update_person_product_access_txn, person_key , product.key(), level)) if self.is_valid(): for txn in txns: db.run_in_transaction(*txn) self.redirect_and_finish(u'%s/people/' % self.account_path, flash = u"%s has been created." % new_person_email) else: self.new_person_email = new_person_email self.render_screen_and_finish() else: txns = [] for person in self.people: admin = self.valid_bool(u'person_%s_admin' % person.key()) txns.append((update_person_account_access_txn, person.key(), self.account.key(), admin)) for product in self.products: level = self.valid_int(u'person_%s_%s_level' % (person.key(), product.key())) txns.append((update_person_product_access_txn, person.key(), product.key(), level)) if self.is_valid(): for txn in txns: db.run_in_transaction(*txn) self.redirect_and_finish(u'%s/people/' % self.account_path, flash = u"Permission settings have been saved.") else: self.render_screen_and_finish()
def create_person_txn(email): key = Person.key_for(email) p = db.get(key) if not p: p = Person(key_name=key.name(), user=users.User(email)) p.put()