Ejemplo n.º 1
0
 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()
Ejemplo n.º 2
0
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()