Beispiel #1
0
 def post(self):
     user = users.get_current_user() 
     if not user: # need to sign in
         self.redirect('/?signin=True')
         return
     
     if bene_query.getCurrentUser().isConsumer: # consumers can't access this
         self.redirect('/')
         return
         
     _producer = bene_query.getCurrentProducer()
     if _producer  == None: # no producer signed up, so ask to sign up
         self.redirect('/')
         return
     
     if not _producer.verified: # if producer is not verified
         self.redirect('/producerhome?%s' % urllib.urlencode({'verify': True}))
         return
     
     _name = self.request.get('name')
     _factory = self.request.get('factory')
     _workers = self.request.get_all('workers')
     _badges = self.request.get_all('badges')
     _picture = self.request.get('picture')
     _unique = self.request.get('unique')
                         
     p = entities.Product(name=_name, 
                          unique=_unique,
                          owner=user)
     p.addPicture(_picture)
     if _factory:
         p.addFactory(db.get(_factory))       
     p.addProducer(_producer)
     for _badge in _badges:
         p.addBadge(_badge)
                 
     if bene_util.doesProductExist(p): # already exists
         self.redirect('/createproduct?%s' % urllib.urlencode({'repeat': True}))
         return
     
     p.put()
         
     # add product to workers
     if _workers:
         key = p.key()
         for _worker in _workers:
             if _worker:
                 worker = db.get(_worker)
                 worker.addProduct(key)
                 worker.put()
        
     if self.request.get('more'): # want to add more
         self.redirect('/createproduct?%s' % urllib.urlencode({'added': True}))
         return
     
     # otherwise redirect to product page
     self.redirect('/mobilepage?%s' % urllib.urlencode({'id' : p.key()}))
Beispiel #2
0
 def post(self):
     user = users.get_current_user() 
     if not user: # need to sign in
         self.redirect('/?signin=True')
         return
     
     if bene_query.getCurrentUser().isConsumer: # consumers can't access this
         self.redirect('/')
         return
         
     _producer = bene_query.getCurrentProducer()
     if _producer  == None: # no producer signed up, so ask to sign up
         self.redirect('/')
         return
     
     if not _producer.verified: # if producer is not verified
         self.redirect('/producerhome?%s' % urllib.urlencode({'verify': True}))
         return
                 
     ID = self.request.get('id')
     if not ID:
         '''
         TODO: If no ID sent?
         '''
         self.redirect('/')
         return
     _product = db.get(ID)
     if not _product: # product doesn't exist
         template_values = {}
         path = os.path.join(os.path.dirname(__file__), 'not_found.html')
         self.response.out.write(template.render(path, template_values))
         return
     
     if _product.owner != user: # if current user doesn't own product
         self.redirect('/producerhome?%s' % urllib.urlencode({'not_owner': True}))
         return
     
     _product.name = self.request.get('name')
     _unique_save = _product.unique
     _product.unique = self.request.get('unique')
     if bene_util.doesProductExist(_product) and _unique_save != _product.unique: # if product already exists
         self.redirect('/editproduct?%s' % (urllib.urlencode({'id' : ID, 'repeatedit' : True})))
         return
     
     _factory = self.request.get('factory')
     if _factory:
         _product.addFactory(db.get(_factory))      
     
     _picture = self.request.get('picture')
     _product.addPicture(_picture)
     
     # badges
     _badges = self.request.get_all('badges')
     _badges_old = _product.getBadges()
     if _badges_old:
         for badge in _badges_old:
             if not _badges: # convert None to empty array
                 _badges = []
             if badge not in _badges:
                 _product.remBadge(badge)
     if _badges:
         for badge in _badges:
             if not _badges_old: # convert None to empty array
                 _badges_old = []
             if badge not in _badges_old:
                 _product.addBadge(badge)
         
     _product.put()                                 
     
     # workers
     '''
     TODO: FIX THIS. Make it more efficient
     '''
     _workers = self.request.get_all('workers')
     _workers_old = _product.getWorkers()
     key = _product.key()
     if _workers_old:
         for worker in _workers_old:
                 worker.remProduct(key)
                 worker.put()
     if _workers:
         for _worker in _workers:
             if _worker:
                 worker = db.get(_worker)
                 worker.addProduct(key)
                 worker.put()
                         
     self.redirect('/mobilepage?%s' % urllib.urlencode({'id': ID}))
     return