示例#1
0
 def get(self, url):
     user = users.get_current_user()
         
     if user and users.is_current_user_admin():
         context = {'user' : user.nickname()}
         logout_url = users.create_logout_url(self.request.uri)
         context['logout_url'] = logout_url
         if url == 'algorithm.html':
           context['alg'] =  model.getOrderingAlgorithmParams()
         elif url == 'background.html':
           activities = model.getActivities(False)
           i = 0
           for activity in activities:
             activity.index = i
             i += 1
           newActivity = model.ActivityParams()
           newActivity.name = NEW_ACTIVITY_NAME
           newActivity.activity_load = 0
           newActivity.index = i
           newActivity.enabled = False
           newActivity.threshold_total[model.ActivityTypes.ITEM] = 0
           newActivity.threshold_time_sec[model.ActivityTypes.ITEM] = 0
           activities.append(newActivity)
           context['activities'] = activities
           context['timePeriod'] = activityManager.getActivityPeriod()
         elif url =='publishers.html':
           publishers = model.getPublisherSites()
           context['publishers'] = publishers
         elif url =='paymentsconfig.html':
           context['paymentparams'] = model.getPaymentConfig()
         elif url =='ligerpediaconfig.html':
           context['ligerpediaconfig'] = model.getLigerpediaConfig()
         elif url =='defaultlinks.html':
           config = model.getDefaultLinksConfig()
           context['publisher'] = model.getPublisherSite(config.default_links_url)
           context['defaultlinksconfig'] = config
           items = defaultItemList.getOrderedItems()
           views = 0
           for item in items:
             views += item.stats[model.StatType.VIEWS]
           context['items'] = items
           context['totalviews'] = views
         path = ''
         if url and len(url) > 0:
           path = os.path.join(os.path.dirname(__file__), 'webadmin', url)
         else:
           path = os.path.join(os.path.dirname(__file__), 'webadmin', 'index.html')
         self.response.out.write(template.render(path, context))
     elif user and users.is_current_user_admin() == False:
         context = {'user' : user.nickname()}
         login_url = users.create_login_url(self.request.uri)
         context['login_url'] = login_url
         path = os.path.join(os.path.dirname(__file__), 'webadmin', 'unauthorized.html')
         self.response.out.write(template.render(path, context))
     else:
         self.redirect(users.create_login_url(self.request.uri))
示例#2
0
 def updateAlg(self):
   params = model.getOrderingAlgorithmParams()
   err = params.update(float(self.request.get('t1_eng')),
                       float(self.request.get('t2_eng')),
                       int(self.request.get('num_views')),
                       float(self.request.get('ctr_factor')),
                       float(self.request.get('t2_t3_ratio')))
   if (err == ''):                      
     filterStrategy.refreshParams()
     self.redirect('algorithm.html?status=updated')
   else:
     self.response.out.write(err)
示例#3
0
 def applyFilter(self, items, filter):    
   if not self.params or self.doRefreshParams:
     self.params = model.getOrderingAlgorithmParams()
     self.doRefreshParams = False
   tier0 = []
   tier1 = []
   tier2 = []
   tier3 = []
   #TODO: support timeliness
   #TODO: support likes
   for item in items:
     item.id = item.key().id()
     # likes = float(item.stats[model.StatType.LIKES])
     closes = self.getCloses_(item)
     views = self.getViews_(item)
     clicks = self.getClicks_(item)
     engagement = 0
     if views > 0:
       engagement = (clicks * self.params.ctr_factor - closes * (1-self.params.ctr_factor)) / views
     item.engagement = engagement
     if views < self.params.num_views_threshold and item.price > 0:
       tier0.append(item)
       item.tier = 0
       continue
     if views >= self.params.num_views_threshold and engagement >= self.params.tier1_engagement_threshold:
       tier1.append(item)
       item.tier = 1
       continue
     if engagement >= self.params.tier2_engagement_threshold:
       tier2.append(item)
       item.tier = 2
       continue
     if views < self.params.num_views_threshold:
       item.tier = 3
       tier3.append(item)
       continue
   sortedTier0 = sorted(tier0, key = lambda item : item.price, reverse=True)
   sortedTier1 = sorted(tier1, key = lambda item : item.engagement, reverse=True)
   sortedTier2 = sorted(tier2, key = lambda item : item.engagement, reverse=True)
   sortedTier3 = sorted(tier3, key = lambda item : self.getViews_(item))
   return combineTiers_(sortedTier0, sortedTier1, sortedTier2, sortedTier3,
                        self.params.tier2_tier3_ratio)