Esempio n. 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(
        ).isProducer:  # producers aren't allowed here
            self.redirect('/')
            return

        _consumer = bene_query.getCurrentConsumer()
        if _consumer == None:  # no consumer page, so create one
            self.redirect('/')
            return

        _name = bene_util.sanitize(self.request.get('name'))
        _profile = bene_util.sanitize(self.request.get('profile'))
        _picture = self.request.get('picturedata')
        _email_public = self.request.get('email')

        _consumer.name = _name
        _consumer.profile = _profile
        _consumer.email_public = _email_public
        _consumer.addPicture(_picture)
        _consumer.put()

        self.redirect('/myprofile')
        return
        '''
Esempio n. 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().isProducer: # producers can't do this
         self.redirect('/')
         return
     
     if bene_query.getCurrentConsumer() != None: # already exists
         self.redirect('/')
         return
         
     # no consumer, so add to store
     _name = self.request.get('name')
     _picture = self.request.get('picture')
     _profile = self.request.get('profile')
             
     c = entities.Consumer(name=_name, 
                           email=bene_util.getEmail(user), 
                           owner=user,
                           profile=_profile,                      
                           verified=False)
     c.addPicture(_picture)
     c.put()                
     self.redirect('/')
     return
Esempio n. 3
0
 def get(self):
     user = users.get_current_user()
     if not user: # need to sign in
         self.redirect('/?signin=True')
         return
     
     if bene_query.getCurrentUser().isProducer: # producers aren't allowed here
         self.redirect('/')
         return
         
     _consumer = bene_query.getCurrentConsumer();
     if _consumer == None: # no consumer page, so create one 
         self.redirect('/')
         return
     
     # Make a dictionary for template
     template_values = bene_util.initTemplate(self.request.uri)
     template_values['id'] = _consumer.key()
     template_values['consumer'] = _consumer
     template_values['products'] = _consumer.getProducts()
     
     template_values['can_edit_local'] = False
     user = users.get_current_user()
     if user:
         if _consumer.owner == user:
             template_values['can_edit_local'] = True
         
     path = os.path.join(os.path.dirname(__file__), 'viewcloset.html')
     self.response.out.write(template.render(path, template_values))
     return
Esempio n. 4
0
    def get(self):
        user = users.get_current_user()

        if user:  # if user signed in
            signed_in_user = bene_query.getCurrentUser()
            if signed_in_user.isProducer:
                if not bene_query.getCurrentProducer(
                ):  # if producer page doesn't exist, need to create one
                    self.redirect('/createproducer?%s' %
                                  urllib.urlencode({
                                      'redirect': 'producerhome',
                                      'msg': True
                                  }))
                else:  # if setup done, then go to home page
                    self.redirect('/producerhome')
                    return
            else:
                if not bene_query.getCurrentConsumer():
                    self.redirect('/createconsumer?%s' %
                                  urllib.urlencode({
                                      'redirect': 'consumerhome',
                                      'msg': True
                                  }))
                    return
                else:
                    self.redirect('/consumerhome')
                    return
        else:  # otherwise, show button for signing in and searching
            template_values = bene_util.initTemplate(self.request.uri)
            path = os.path.join(os.path.dirname(__file__), 'home.html')
            self.response.out.write(template.render(path, template_values))
            return
Esempio n. 5
0
 def get(self):
     user = users.get_current_user()
     if not user: # not signed in
         self.redirect('/?%s' % urllib.urlencode({'signin': True}))
         return
     if bene_query.getCurrentUser().isProducer: # producers don't have closets
         self.redirect('/')
         return
     _consumer = bene_query.getCurrentConsumer()
     if _consumer == None: # if consumer page doesn't exist, need to create one
         self.redirect('/createconsumer?%s' % urllib.urlencode({'msg': True}))
         return
     ID = self.request.get('id')
     if not ID:
         '''
         TODO: If no ID sent, default to viewcloset?
         '''
         self.redirect('/')
         return
     product = db.get(ID)
     if not product: # invalid product
         template_values = {}
         path = os.path.join(os.path.dirname(__file__), 'not_found.html')
         self.response.out.write(template.render(path, template_values))
         return
     
     # if not already in closet, add to closet, and redirect back to product page
     #return
     if not _consumer.hasProduct(product.key()): 
         _consumer.addProduct(product.key())
         _consumer.put()
     self.redirect('/mobilepage?%s' % urllib.urlencode({'id': product.key()}))  
     return
    def post(self):
        user = users.get_current_user()
        if not user:  # need to sign in
            self.redirect('/?signin=True')
            return
        if bene_query.getCurrentUser().isProducer:  # producers can't do this
            self.redirect('/')
            return

        if bene_query.getCurrentConsumer() != None:  # already exists
            self.redirect('/')
            return

        # no consumer, so add to store
        _name = bene_util.sanitize(self.request.get('name'))
        _picture = bene_util.sanitize(self.request.get('picturedata'))
        _profile = self.request.get('profile')
        _email_public = self.request.get('email')

        c = entities.Consumer(name=_name,
                              has_unread=0,
                              email=bene_util.getEmail(user),
                              email_public=_email_public,
                              owner=user,
                              profile=_profile,
                              verified=False)
        c.addPicture(_picture)
        c.put()

        self.redirect('/consumerhome?%s' %
                      urllib.urlencode({'firsttime': True}))
        return
Esempio n. 7
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().isProducer:  # producers aren't allowed here
            self.redirect("/")
            return

        _consumer = bene_query.getCurrentConsumer()
        if _consumer == None:  # no consumer page, so create one
            self.redirect("/")
            return

        _name = self.request.get("name")
        _profile = self.request.get("profile")
        _picture = self.request.get("picture")

        _consumer.name = _name
        _consumer.profile = _profile
        _consumer.addPicture(_picture)
        _consumer.put()

        self.redirect("/viewconsumer?%s" % urllib.urlencode({"id": _consumer.key()}))
        return

        """
Esempio n. 8
0
 def get(self):
     # Get the id from the get parameter
     ID = self.request.get('id')
     if not ID:
         ''' 
         TODO: If no ID sent, default to page with all products?
         '''
         self.redirect('/')
         return
     # Fetch the data for this product
     product = db.get(ID)
     ''' an error in getting the product will be redirected to exception handler'''
     
     _factory = product.getFactory()
     if _factory and _factory.location:
         latitude = _factory.location.lat
         longitude = _factory.location.lon
     else:
         latitude = None
         longitude = None
     # Make a dictionary for template
     template_values = bene_util.initTemplate(self.request.uri)
     template_values['id'] = ID
     template_values['name'] = product.name
     template_values['producer'] = product.getProducer()
     template_values['latitude'] = latitude
     template_values['longitude'] = longitude
     template_values['url'] = self.request.url
     template_values['qr_url'] = self.request.url.replace('view','qr')
     template_values['factory'] = _factory
     template_values['badges'] = product.getBadges()
     template_values['rating'] = product.rating
     template_values['workers'] = product.getWorkers()
     if product.picture:
         template_values['has_image'] = True
     else:
         template_values['has_image'] = False
         
     template_values['can_edit'] = False
     user = users.get_current_user()
     if user:
         if product.owner == user:
             template_values['can_edit'] = True
             template_values['edit_link'] = '/editproduct?%s' % urllib.urlencode({'id': ID})
     template_values['in_closet'] = False
     template_values['add_closet'] = False
     if user:
         if bene_query.getCurrentUser().isConsumer:
             consumer = bene_query.getCurrentConsumer()
             if consumer:
                 if consumer.hasProduct(product.key()):
                     template_values['in_closet'] = True
                     template_values['rem_closet_link'] = '/removefromcloset?%s' % urllib.urlencode({'id': ID})
                 else:
                     template_values['add_closet'] = True
                     template_values['add_closet_link'] = '/addtocloset?%s' % urllib.urlencode({'id': ID})
         
     path = os.path.join(os.path.dirname(__file__), 'viewproduct.html')
     self.response.out.write(template.render(path, template_values))
     return
Esempio n. 9
0
 def get(self):
     user = users.get_current_user() 
     if not user: # need to sign in
         self.redirect('/?signin=True')
         return
     
     if bene_query.getCurrentUser().isProducer: # producers can't access this
         self.redirect('/')
         return
         
     _consumer = bene_query.getCurrentConsumer()
     if _consumer  == None: # no producer signed up, so ask to sign up
         self.redirect('/')
         return
     
     template_values = bene_util.initTemplate(self.request.uri)
     template_values['consumer'] = _consumer
     _msgs = _consumer.getReceivedMsg()
     if _msgs:
         _msgs.reverse()
     template_values['messages'] = _msgs
     template_values['num_unread'] = _consumer.has_unread
     template_values['path'] = 'message'
     
     _consumer.has_unread = 0
     _consumer.put()
     
     path = os.path.join(os.path.dirname(__file__), 'viewinbox.html')
     self.response.out.write(template.render(path, template_values))
     return
Esempio n. 10
0
    def get(self):
        user = users.get_current_user()
        if not user:  # need to sign in
            self.redirect("/?signin=True")
            return

        if bene_query.getCurrentUser().isProducer:  # producers aren't allowed here
            self.redirect("/")
            return

        _consumer = bene_query.getCurrentConsumer()
        if _consumer == None:  # no consumer page, so create one
            self.redirect("/")
            return

        # Make a dictionary for template
        name = _consumer.name
        profile = _consumer.profile

        template_values = bene_util.initTemplate(self.request.uri)
        template_values["id"] = _consumer.key()
        template_values["consumer"] = _consumer
        template_values["name"] = name
        template_values["profile"] = profile

        template_values["can_edit"] = False
        user = users.get_current_user()
        if user:
            if _consumer.owner == user:
                template_values["can_edit"] = True
                template_values["edit_link"] = "/editconsumer"

        path = os.path.join(os.path.dirname(__file__), "viewconsumer.html")
        self.response.out.write(template.render(path, template_values))
        return
Esempio n. 11
0
 def get(self):
     user = users.get_current_user()
     if not user: # need to sign in
         self.redirect('/?signin=True')
         return
     
     if bene_query.getCurrentUser().isProducer: # producers aren't allowed here
         self.redirect('/')
         return
         
     _consumer = bene_query.getCurrentConsumer();
     if _consumer == None: # no consumer page, so create one 
         self.redirect('/')
         return
     
     # Make a dictionary for template
     template_values = bene_util.initTemplate(self.request.uri)
     template_values['id'] = _consumer.key()
     template_values['consumer'] = _consumer
     template_values['products'] = _consumer.getProducts()
     template_values['path'] = self.request.path
     
     template_values['can_edit_local'] = False
     user = users.get_current_user()
     if user:
         if _consumer.owner == user:
             template_values['can_edit_local'] = True
         
     path = os.path.join(os.path.dirname(__file__), 'viewcloset.html')
     self.response.out.write(template.render(path, template_values))
     return
Esempio n. 12
0
    def get(self):
        user = users.get_current_user()
        if not user:  # need to sign in
            self.redirect('/?signin=True')
            return

        if bene_query.getCurrentUser(
        ).isProducer:  # producers aren't allowed here
            self.redirect('/')
            return

        _consumer = bene_query.getCurrentConsumer()
        if _consumer == None:  # no consumer page, so create one
            self.redirect('/')
            return

        template_values = bene_util.initTemplate(self.request.uri)
        template_values['id'] = _consumer.key()
        template_values['name_old'] = _consumer.name
        template_values['profile_old'] = _consumer.profile
        template_values['email_public_old'] = _consumer.email_public
        template_values['cropentity'] = _consumer

        path = os.path.join(os.path.dirname(__file__), 'editconsumer.html')
        self.response.out.write(template.render(path, template_values))
        return
        '''
Esempio n. 13
0
 def get(self):
     # Get the id from the get parameter
     ID = bene_util.sanitize(self.request.get('id'))
     if not ID:
         '''
         TODO: If no ID sent, default to page with all products?
         '''
         self.redirect('/')
         return
     # Fetch the data for this product
     product = db.get(ID)
     ''' an error in getting the product will be redirected to exception handler'''
             
     # Make a dictionary for template
     template_values = bene_util.initTemplate(self.request.uri)
     # generic
     template_values['id'] = ID
     template_values['name'] = product.name
     template_values['product'] = product
     template_values['producer'] = product.getProducer()
     template_values['rating'] = product.getRating()
     # urls
     template_values['url'] = self.request.url
     template_values['path'] = "product"
     template_values['qr_url'] = self.request.url.replace('viewproduct','qr')
     template_values['image_url'] = self.request.url.replace('viewproduct', 'productimage')
     template_values['comment_url'] = '%s/viewproduct?%s' % (self.request.host_url, urllib.urlencode({'id': ID}))
     # interactions - producer
     template_values['can_edit'] = False
     user = users.get_current_user()
     if user:
         if product.owner == user and bene_query.getCurrentUser().isProducer:
             template_values['can_edit'] = True
             template_values['edit_link'] = '/editproduct?%s' % urllib.urlencode({'id': ID})
             template_values['show_qr'] = True
     # interactions - consumer
     template_values['in_closet'] = False
     template_values['add_closet'] = False
     if user:
         if bene_query.getCurrentUser().isConsumer:
             consumer = bene_query.getCurrentConsumer()
             if consumer:
                 if consumer.hasProduct(product.key()):
                     template_values['in_closet'] = True
                     template_values['rem_closet_link'] = '/removefromcloset?%s' % urllib.urlencode({'id': ID})
                 else:
                     template_values['add_closet'] = True
                     template_values['add_closet_link'] = '/addtocloset?%s' % urllib.urlencode({'id': ID})
                     
     template_values['num_configs'] = product.numConfigs()
     template_values['configs'] = product.getConfigs()
     
     template_values['num_products'] = product.numProducts()
     template_values['closet_count'] = product.getClosetCount()
     path = os.path.join(os.path.dirname(__file__), 'viewproduct.html')
     self.response.out.write(template.render(path, template_values).decode('utf-8'))
     return
Esempio n. 14
0
    def get(self):
        user = users.get_current_user()
        if not user:  # need to sign in
            self.redirect(users.create_login_url(self.request.uri))
            return

        producer = bene_util.sanitize(self.request.get('producer'))
        consumer = bene_util.sanitize(self.request.get('consumer'))

        u = bene_query.getCurrentUser()
        if not u:  # no user exists
            if producer and not consumer:  # make person a producer only in most restricted case
                u = entities.User(email=bene_util.getEmail(user),
                                  owner=user,
                                  isConsumer=False,
                                  isProducer=True)
                u.put()
                self.redirect('/createproducer')
                return
            else:  # all other cases, make consumer
                u = entities.User(email=bene_util.getEmail(user),
                                  owner=user,
                                  isConsumer=True,
                                  isProducer=False)
                u.put()
                self.redirect('/createconsumer')
                return

        if producer and not consumer:  # signed in producer
            if u.isConsumer:  # if previously signed in as consumer
                u.isConsumer = False
                u.isProducer = True
                u.put()
            if bene_query.getCurrentProducer(
            ) == None:  # no producer page, so create one
                self.redirect('/createproducer')
                return
            else:  # already has producer page, so redirect
                self.redirect('/producerhome')
                return
        else:  # signed in consumer
            if u.isProducer:  # if previously signed in as producer
                u.isConsumer = True
                u.isProducer = False
                u.put()
            if bene_query.getCurrentConsumer(
            ) == None:  # no consumer page, so create on
                self.redirect('/createconsumer')
                return
            else:  # already has consumer page, so redirect
                self.redirect('/consumerhome')
                return
Esempio n. 15
0
    def get(self):
        user = users.get_current_user()
        if not user:  # not signed in
            self.redirect('/?%s' % urllib.urlencode({'signin': True}))
            return
        if bene_query.getCurrentUser(
        ).isProducer:  # producers don't have closets
            self.redirect('/')
            return
        _consumer = bene_query.getCurrentConsumer()
        if _consumer == None:  # if consumer page doesn't exist, need to create one
            self.redirect('/createconsumer?%s' %
                          urllib.urlencode({'msg': True}))
            return
        ID = bene_util.sanitize(self.request.get('id'))
        if not ID:
            '''
            TODO: If no ID sent, default to viewcloset?
            '''
            self.redirect('/')
            return
        product = db.get(ID)
        if not product:  # invalid product
            template_values = {}
            path = os.path.join(os.path.dirname(__file__), 'not_found.html')
            self.response.out.write(template.render(path, template_values))
            return

        # if not already in closet, add to closet, and redirect back to product page
        #return
        if not _consumer.hasProduct(product.key()):
            _consumer.addProduct(product.key())
            _consumer.put()

            # add to closet count
            if product.isConfig:
                product.addClosetCount()
                product.addConsumer(_consumer.key())
                product.put()
            if product.isUnit:
                productconfig = product.getProductConfig()
                productconfig.addClosetCount()
                productconfig.addConsumer(_consumer.key())
                productconfig.put()

        self.redirect('/view?%s' % urllib.urlencode({'id': product.key()}))
        return
Esempio n. 16
0
 def get(self):
     user = users.get_current_user()
     if not user: # need to sign in
         self.redirect('/?signin=True')
         return
     if bene_query.getCurrentUser().isProducer: # producers can't do this
         self.redirect('/')
         return
     
     if bene_query.getCurrentConsumer() != None: # has consumer page 
         self.redirect('/')
         return
         
     template_values = bene_util.initTemplate(self.request.uri)
     path = os.path.join(os.path.dirname(__file__), 'createconsumer.html')
     self.response.out.write(template.render(path, template_values))
     return
Esempio n. 17
0
    def get(self):
        user = users.get_current_user()
        if not user:  # need to sign in
            self.redirect('/?signin=True')
            return
        if bene_query.getCurrentUser().isProducer:  # producers can't do this
            self.redirect('/')
            return

        if bene_query.getCurrentConsumer() != None:  # has consumer page
            self.redirect('/')
            return

        template_values = bene_util.initTemplate(self.request.uri)
        template_values['email_public_old'] = bene_util.getEmail(user)
        path = os.path.join(os.path.dirname(__file__), 'createconsumer.html')
        self.response.out.write(template.render(path, template_values))
        return
Esempio n. 18
0
 def get(self):
     user = users.get_current_user()
     if not user: # if not signed in
         self.redirect('/?signin=True')
         return
     if bene_query.getCurrentUser().isProducer: # producer can't get to consumer home page
         self.redirect('/')
         return
     
     _consumer = bene_query.getCurrentConsumer()
     if _consumer == None: # if consumer page doesn't exist, need to create one
         self.redirect('/createconsumer?%s' % urllib.urlencode({'redirect': 'consumerhome', 'msg': True}))
         return
     
     # if setup done, then show home page
     template_values = bene_util.initTemplate(self.request.uri)
     path = os.path.join(os.path.dirname(__file__), 'consumerhome.html')
     self.response.out.write(template.render(path, template_values))
     return
Esempio n. 19
0
 def get(self):
     user = users.get_current_user()
     if not user: # need to sign in
         self.redirect(users.create_login_url(self.request.uri))
         return
     
     if not bene_query.getCurrentUser(): # no user exists
         producer = self.request.get('producer')
         consumer = self.request.get('consumer')
         if producer and not consumer: # make person a producer only in most restricted case
             u = entities.User(email=user.nickname(),
                               owner=user,
                               isConsumer=False,
                               isProducer=True)
             u.put()
             self.redirect('/createproducer')
             return
         else: # all other cases, make consumer
             u = entities.User(email=user.nickname(),
                               owner=user,
                               isConsumer=True,
                               isProducer=False)
             u.put()
             self.redirect('/createconsumer')
             return
             
         
     if bene_query.getCurrentUser().isProducer: # signed in producer
         if bene_query.getCurrentProducer() == None: # no producer page, so create one 
             self.redirect('/createproducer')
             return
         else: # already has producer page, so redirect
             self.redirect('/producerhome')
             return
     else: # signed in consumer
         if bene_query.getCurrentConsumer() == None: # no consumer page, so create on
             self.redirect('/createconsumer')
             return
         else: # already has consumer page, so redirect
             self.redirect('/consumerhome')
             return
Esempio n. 20
0
    def get(self):
        user = users.get_current_user()
        if not user:  # if not signed in
            self.redirect('/?signin=True')
            return
        if bene_query.getCurrentUser(
        ).isProducer:  # producer can't get to consumer home page
            self.redirect('/')
            return

        _consumer = bene_query.getCurrentConsumer()
        if _consumer == None:  # if consumer page doesn't exist, need to create one
            self.redirect('/createconsumer?%s' % urllib.urlencode({
                'redirect': 'consumerhome',
                'msg': True
            }))
            return

        # if setup done, then show home page
        template_values = bene_util.initTemplate(self.request.uri)
        path = os.path.join(os.path.dirname(__file__), 'consumerhome.html')
        self.response.out.write(template.render(path, template_values))
        return
Esempio n. 21
0
 def get(self):
     user = users.get_current_user()
     
     if user: # if user signed in
         signed_in_user = bene_query.getCurrentUser()
         if signed_in_user.isProducer:
             if not bene_query.getCurrentProducer(): # if producer page doesn't exist, need to create one
                 self.redirect('/createproducer?%s' % urllib.urlencode({'redirect': 'producerhome', 'msg': True}))
             else: # if setup done, then go to home page
                 self.redirect('/producerhome')
                 return
         else:
             if not bene_query.getCurrentConsumer():
                 self.redirect('/createconsumer?%s' % urllib.urlencode({'redirect': 'consumerhome', 'msg': True}))
                 return
             else:
                 self.redirect('/consumerhome')
                 return
     else: # otherwise, show button for signing in and searching
         template_values = {}
         path = os.path.join(os.path.dirname(__file__), 'home.html')
         self.response.out.write(template.render(path, template_values))
         return
Esempio n. 22
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(
        ).isProducer:  # producers can't access this
            self.redirect('/')
            return

        _consumer = bene_query.getCurrentConsumer()
        if _consumer == None:  # no consumer signed up, so ask to sign up
            self.redirect('/')
            return

        productConfigKey = bene_util.sanitize(
            self.request.get('productConfigKey'))
        _productconfig = db.get(productConfigKey)
        _productconfig.updateRating(
            float(bene_util.sanitize(self.request.get('adv1'))), _consumer)
        _productconfig.put()
        '''
Esempio n. 23
0
    def get(self):
        user = users.get_current_user()
        if not user:  # need to sign in
            self.redirect("/?signin=True")
            return

        if bene_query.getCurrentUser().isProducer:  # producers aren't allowed here
            self.redirect("/")
            return

        _consumer = bene_query.getCurrentConsumer()
        if _consumer == None:  # no consumer page, so create one
            self.redirect("/")
            return

        template_values = bene_util.urldecode(self.request.uri)
        template_values["name_old"] = _consumer.name
        template_values["profile_old"] = _consumer.profile

        path = os.path.join(os.path.dirname(__file__), "editconsumer.html")
        self.response.out.write(template.render(path, template_values))
        return

        """
Esempio n. 24
0
  def get(self):
      user = users.get_current_user() 
      if not user: # need to sign in
          self.redirect('/?signin=True')
          return
      
      '''
      PRODUCER PROFILE
      '''
      if bene_query.getCurrentUser().isProducer: 
          _producer = bene_query.getCurrentProducer()
          if _producer  == None: # no producer signed up, so ask to sign up
              self.redirect('/')
              return
          
          # Make a dictionary for template
          name = _producer.name
          description = _producer.description
          product_lines = _producer.getProductLines()[0:4]
          workers = _producer.getWorkers()[0:4]
          locations = _producer.getLocations()[0:4]
          email_public = _producer.email_public
          
          template_values = bene_util.initTemplate(self.request.uri)
          template_values['id'] = _producer.key()
          template_values['name'] = name
          template_values['email_public'] = email_public
          template_values['description'] = description
          template_values['locations'] = locations
          template_values['product_lines'] = product_lines 
          template_values['producer'] = _producer
          template_values['workers'] = workers
          template_values['url'] = self.request.url
          template_values['path'] = self.request.path  
          
          template_values['can_edit'] = False
          user = users.get_current_user()
          if user:
              if _producer.owner == user:
                  template_values['can_edit'] = True      
                  template_values['edit_link'] = '/editproducer'
 
          
          path = os.path.join(os.path.dirname(__file__), 'viewproducer.html')
          self.response.out.write(template.render(path, template_values))
          return
      
      '''
      CONSUMER PROFILE
      '''            
      _consumer = bene_query.getCurrentConsumer();
      if _consumer == None: # no consumer page, so create one 
          self.redirect('/')
          return
      
      # Make a dictionary for template
      name = _consumer.name
      profile = _consumer.profile
      email_public = _consumer.email_public
      
      template_values = bene_util.initTemplate(self.request.uri)
      template_values['id'] = _consumer.key()
      template_values['consumer'] = _consumer
      _products = _consumer.getProducts()
      if _products:
          template_values['products'] = _products[0:4] 
      template_values['name'] = name
      template_values['profile'] = profile
      template_values['email_public'] = email_public
      template_values['path'] = self.request.path
      
      template_values['can_edit'] = False
      user = users.get_current_user()
      if user:
          if _consumer.owner == user:
              template_values['can_edit'] = True      
              template_values['edit_link'] = '/editconsumer'     
      
      path = os.path.join(os.path.dirname(__file__), 'viewconsumer.html')
      self.response.out.write(template.render(path, template_values))
      return
Esempio n. 25
0
 def get(self):
     # Get the id from the get parameter
     ID = bene_util.sanitize(self.request.get('id'))
     if not ID:
         '''
         TODO: If no ID sent, default to page with all products?
         '''
         self.redirect('/')
         return
     # Fetch the data for this product
     productconfig = db.get(ID)
     ''' an error in getting the product will be redirected to exception handler'''
     
     productline = productconfig.getProductLine()
     
     # Make a dictionary for template
     template_values = bene_util.initTemplate(self.request.uri)
     # generic
     template_values['id'] = ID
     template_values['name'] = productconfig.getName()
     template_values['is_config'] = True
     template_values['is_unit'] = False 
     template_values['producer'] = productconfig.getProducer()
     template_values['rating'] = productconfig.getRoundedRating()
     template_values['productconfig'] = productconfig
     template_values['config_key'] = productconfig.key()
     # urls
     template_values['url'] = self.request.url
     template_values['path'] = "product"
     template_values['qr_url'] = self.request.url.replace('viewpath','qr')
     template_values['image_url'] = self.request.url.replace('viewconfig', 'productimage')
     template_values['comment_url'] = '%s/viewproduct?%s' % (self.request.host_url, urllib.urlencode({'id': productline.key()}))
     # primary location
     _location = productconfig.getPrimaryLocation()
     if _location and _location.location:
         latitude = _location.location.lat
         longitude = _location.location.lon
     else:
         latitude = None
         longitude = None
     template_values['latitude'] = latitude
     template_values['longitude'] = longitude
     template_values['location'] = _location
     
     # worker to display
     _workers = productconfig.getWorkers()
     if _workers.get(): 
         template_values['has_workers'] = True
         workerlist = []
         for _worker in _workers:
             if _worker:
                 workerlist.append(_worker)
         template_values['has_multiple_workers'] = len(workerlist) > 1
         template_values['num_other_workers'] = len(workerlist)-1
         template_values['more_than_one_other'] = len(workerlist) > 2
         template_values['worker'] = workerlist[randint(0, len(workerlist)-1)]
     else:
         template_values['has_workers'] = False
     # badges
     _badges = productconfig.getBadges()
     if _badges:
         template_values['badges'] = _badges
         template_values['has_badges'] = True
     else:
         template_values['has_badges'] = False
     # interaction - producer
     template_values['can_edit'] = False
     user = users.get_current_user()
     if user:
         if productconfig.owner == user and bene_query.getCurrentUser().isProducer:
             template_values['enable_rating'] = False
             template_values['can_edit'] = True
             template_values['edit_link'] = '/editconfig?%s' % urllib.urlencode({'id': productconfig.key()})
             template_values['show_qr'] = False
     # interaction - consumer
     template_values['in_closet'] = False
     template_values['add_closet'] = False
     if user:
         if bene_query.getCurrentUser().isConsumer:
             template_values['enable_rating'] = True
             consumer = bene_query.getCurrentConsumer()
             if consumer:
                 if consumer.hasProduct(productconfig.key()):
                     template_values['in_closet'] = True
                     template_values['rem_closet_link'] = '/removefromcloset?%s' % urllib.urlencode({'id': ID})
                 else:
                     template_values['add_closet'] = True
                     template_values['add_closet_link'] = '/addtocloset?%s' % urllib.urlencode({'id': ID})
     
     
     template_values['num_products'] = productconfig.numProducts()
     template_values['closet_count'] = productconfig.getClosetCount()
     num_configs = productline.numConfigs()
     if num_configs == 1: 
         template_values['last_config'] = True
     if num_configs > 1:
         template_values['otherconfig'] = True
         if (num_configs > 2):
             template_values['more_than_one_other_config'] = True
         template_values['num_other_configs'] = num_configs - 1 
         template_values['config_link'] = '/view?%s' % urllib.urlencode({'id': productline.key()})         
 
     if productconfig.displayAmazon:
         template_values['display_amazon'] = True
         # Amazon stuff
         amazon = bottlenose.Amazon("AKIAIT4OSXQMYQB2XLUQ", "RPzfxhl7eEa/NiIcmkNinQ8OG6kTW65M6UrRqFgD", "BeneTag")
         response = amazon.ItemSearch(Keywords = productline.name + " " + productconfig.getProducer().name, ResponseGroup = "Offers,Images,ItemAttributes,Variations", SearchIndex="All")
         dom = xml.dom.minidom.parseString(response)
         totalres =  int(dom.getElementsByTagName("TotalResults")[0].firstChild.nodeValue)
         if totalres > 0:
             if dom.getElementsByTagName("ItemAttributes"):
                 if dom.getElementsByTagName("ItemAttributes")[0].getElementsByTagName("Title"):
                     product_name = dom.getElementsByTagName("ItemAttributes")[0].getElementsByTagName("Title")[0].firstChild.nodeValue
                     if productline.name in product_name:
                         if productconfig.getProducer().name in product_name:
                             if dom.getElementsByTagName("DetailPageURL"):
                                 template_values['AmazonURL'] = dom.getElementsByTagName("DetailPageURL")[0].firstChild.nodeValue
                             if dom.getElementsByTagName("OfferSummary"):
                                 if dom.getElementsByTagName("OfferSummary")[0].getElementsByTagName("LowestNewPrice"):
                                     if dom.getElementsByTagName("OfferSummary")[0].getElementsByTagName("LowestNewPrice")[0].getElementsByTagName("FormattedPrice"):
                                         template_values['price'] =  dom.getElementsByTagName("OfferSummary")[0].getElementsByTagName("LowestNewPrice")[0].getElementsByTagName("FormattedPrice")[0].firstChild.nodeValue 
         
     else:
         template_values['display_amazon'] = False
     
     storeLink = productconfig.store_link
     if storeLink:
         template_values['has_store_link'] = True
         template_values['storeName'] = storeLink.name
         template_values['storeUrl'] = storeLink.url
         template_values['storePrice'] = storeLink.price
     else:
         template_values['has_store_link'] = False
     
     # render
     path = os.path.join(os.path.dirname(__file__), 'viewconfig.html')
     self.response.out.write(template.render(path, template_values))
     return
Esempio n. 26
0
 def get(self):
     # Get the id from the get parameter
     ID = self.request.get('id')
     if not ID:
         '''
         TODO: If no ID sent, default to page with all products?
         '''
         self.redirect('/')
         return
     # Fetch the data for this product
     product = db.get(ID)
     # Display error if product ID not found
     if not product:
         template_values = {}
         path = os.path.join(os.path.dirname(__file__), 'not_found.html')
         self.response.out.write(template.render(path, template_values))
         return
     # Make a dictionary for template
     _factory = product.getFactory()
     if _factory and _factory.location:
         latitude = _factory.location.lat
         longitude = _factory.location.lon
     else:
         latitude = None
         longitude = None
     template_values = bene_util.urldecode(self.request.uri)
     template_values['id'] = ID
     template_values['name'] = product.name
     template_values['producer'] = product.getProducer()
     template_values['latitude'] = latitude
     template_values['longitude'] = longitude
     template_values['url'] = self.request.url
     template_values['qr_url'] = self.request.url.replace('view','qr')
     template_values['factory'] = product.getFactory()
     template_values['rating'] = product.rating
     template_values['workers'] = product.getWorkers()
     _badges = product.getBadges()
     if _badges:
         template_values['badges'] = _badges
         template_values['has_badges'] = True
     else:
         template_values['has_badges'] = False
     if product.getPicture():
         template_values['has_image'] = True
     else:
         template_values['has_image'] = False
         
     template_values['can_edit'] = False
     user = users.get_current_user()
     if user:
         if product.owner == user:
             template_values['can_edit'] = True
             
     template_values['in_closet'] = False
     template_values['add_closet'] = False
     if user:
         if bene_query.getCurrentUser().isConsumer:
             consumer = bene_query.getCurrentConsumer()
             if consumer:
                 if consumer.hasProduct(product.key()):
                     template_values['in_closet'] = True
                 else:
                     template_values['add_closet'] = True
         
     path = os.path.join(os.path.dirname(__file__), 'mobilepage.html')
     self.response.out.write(template.render(path, template_values))
     return
Esempio n. 27
0
 def get(self):
     user = users.get_current_user() 
     if not user: # need to sign in
         self.redirect('/?signin=True')
         return
     
     '''
     PRODUCER PROFILE
     '''
     if bene_query.getCurrentUser().isProducer: 
         _producer = bene_query.getCurrentProducer()
         if _producer  == None: # no producer signed up, so ask to sign up
             self.redirect('/')
             return
         
         # Make a dictionary for template
         name = _producer.name
         description = _producer.description
         
         products = _producer.getProducts()
         workers = _producer.getWorkers()
         factories = _producer.getFactories()
         
         template_values = bene_util.urldecode(self.request.uri)
         template_values['id'] = _producer.key()
         template_values['name'] = name
         template_values['description'] = description
         template_values['factories'] = factories
         template_values['products'] = products 
         template_values['producer'] = _producer
         template_values['workers'] = workers
         template_values['url'] = self.request.url  
         
         template_values['can_edit'] = False
         user = users.get_current_user()
         if user:
             if _producer.owner == user:
                 template_values['can_edit'] = True           
         
         if _producer.getPicture():
             template_values['has_image'] = True
         else:
             template_values['has_image'] = False
     
         path = os.path.join(os.path.dirname(__file__), 'viewproducer.html')
         self.response.out.write(template.render(path, template_values))
         return
     
     '''
     CONSUMER PROFILE
     '''            
     _consumer = bene_query.getCurrentConsumer();
     if _consumer == None: # no consumer page, so create one 
         self.redirect('/')
         return
     
     # Make a dictionary for template
     name = _consumer.name
     profile = _consumer.profile
     
     template_values = bene_util.urldecode(self.request.uri)
     template_values['id'] = _consumer.key()
     template_values['consumer'] = _consumer
     template_values['name'] = name
     template_values['profile'] = profile
     
     template_values['can_edit'] = False
     user = users.get_current_user()
     if user:
         if _consumer.owner == user:
             template_values['can_edit'] = True           
     
     path = os.path.join(os.path.dirname(__file__), 'viewconsumer.html')
     self.response.out.write(template.render(path, template_values))
     return