def post(self, campaign_id): user = users.get_current_user() if not user: return self.redirect(users.create_login_url(self.request.uri)) name = self.request.get('name', None) target_url = self.request.get('target_url', None) priority = self.request.get('priority', None) img = self.request.POST['img'] alt_text = self.request.get('alt_text', None) title_text = self.request.get('title_text', None) if not target_url or not img.value: return self.get(campaign_id, [ 'Faltan campos obligatorios', ]) campaign = Campaign.get_by_id(int(campaign_id)) ad = ImgAdvert(name=name, target_url=target_url, priority=int(priority), img=img.value, mimetype=img.type, alt_text=alt_text, title_text=title_text, campaign=campaign) ad.put() if ad.is_saved(): return self.redirect( webapp2.uri_for('advert.view', advert_id=ad.key().id())) self.response.set_status(500)
def get(self, campaign_id, platform_name): """ Handles incoming clicks for given campaign_id and platform_name. If click is valid then user is redirected to url defined in the campaign and statistic about this click is saved. All invalid clicks (e.g. for non existing campaigns, platforms) users are redirected to http://outfit7.com. """ # cast campaign_id, type checking is done through route definition try: campaign_id = int(campaign_id) except ValueError: return webapp2.redirect("http://outfit7.com", permanent=True) platform_id = "%d-%s" % (campaign_id, platform_name) platform = Platform.get_by_id(platform_id) if platform: memcache.incr(platform_id, 1, namespace="counters", initial_value=0) try: deferred.defer(Platform.increment, platform_id, _countdown=TRACKER_COUNTER_UPDATE_INTERVAL_LENGTH, _name="%s-%d" % (platform_id, get_interval_index())) except (taskqueue.TaskAlreadyExistsError, taskqueue.TombstonedTaskError), e: pass # TODO: optimize with async operations campaign = Campaign.get_by_id(campaign_id) return webapp2.redirect(campaign.link.encode("utf8"))
def post(self, campaign_id): user = users.get_current_user() if not user: return self.redirect(users.create_login_url(self.request.uri)) name = self.request.get('name', None) target_url = self.request.get('target_url', None) priority = self.request.get('priority', None) title = self.request.get('title', None) description_text_line_1 = self.request.get('description_text_line_1', None) description_text_line_2 = self.request.get('description_text_line_2', None) visible_url = self.request.get('visible_url', None) if not target_url or not title or not description_text_line_1: return self.get(campaign_id, [ 'Faltan campos obligatorios', ]) campaign = Campaign.get_by_id(int(campaign_id)) ad = TextAdvert(name=name, target_url=target_url, priority=int(priority), title=title, description_text_line_1=description_text_line_1, description_text_line_2=description_text_line_2, visible_url=visible_url, campaign=campaign) ad.put() if ad.is_saved(): return self.redirect( webapp2.uri_for('advert.view', advert_id=ad.key().id())) self.response.out.write("Error Raro")
def post(self,campaign_id): user = users.get_current_user() if not user: return self.redirect(users.create_login_url(self.request.uri)) name = self.request.get('name',None) target_url = self.request.get('target_url',None) priority = self.request.get('priority',None) img = self.request.POST['img'] alt_text = self.request.get('alt_text',None) title_text = self.request.get('title_text',None) if not target_url or not img.value: return self.get(campaign_id,['Faltan campos obligatorios',]) campaign = Campaign.get_by_id(int(campaign_id)) ad = ImgAdvert( name = name, target_url=target_url, priority=int(priority), img=img.value, mimetype=img.type, alt_text = alt_text, title_text = title_text, campaign = campaign) ad.put() if ad.is_saved(): return self.redirect(webapp2.uri_for('advert.view',advert_id=ad.key().id())) self.response.set_status(500)
def post(self,campaign_id): user = users.get_current_user() if not user: return self.redirect(users.create_login_url(self.request.uri)) name = self.request.get('name',None) target_url = self.request.get('target_url',None) priority = self.request.get('priority',None) title = self.request.get('title',None) description_text_line_1 = self.request.get('description_text_line_1',None) description_text_line_2 = self.request.get('description_text_line_2',None) visible_url = self.request.get('visible_url',None) if not target_url or not title or not description_text_line_1: return self.get(campaign_id,['Faltan campos obligatorios',]) campaign = Campaign.get_by_id(int(campaign_id)) ad = TextAdvert( name = name, target_url=target_url, priority=int(priority), title=title, description_text_line_1=description_text_line_1, description_text_line_2=description_text_line_2, visible_url = visible_url, campaign=campaign) ad.put() if ad.is_saved(): return self.redirect(webapp2.uri_for('advert.view',advert_id=ad.key().id())) self.response.out.write("Error Raro")
def get(self,campaign_id,type='text'): model = TextAdvert f = text_json if type == 'image': model = ImgAdvert f = img_json c = Campaign.get_by_id(int(campaign_id)) q = model.all().filter('campaign',c) count = model.all().filter('campaign',c).count() rdm = random.randint(0,count-1) self.response.out.write(f(q.fetch(limit=1,offset=rdm)[0]))
def get(self,campaign_id): c = Campaign.get_by_id(int(campaign_id)) user = users.get_current_user() if c: if c.owner == user: ads = Advert.all().filter('campaign',c) self.response.out.write(template.render('templates/campaigns/view.html',{'campaign':c,'ads':ads})) else: self.response.out.write("No tenes permisos") else: self.response.out.write("La campania no existe")
def get(self, campaign_id, type='text'): model = TextAdvert f = text_json if type == 'image': model = ImgAdvert f = img_json c = Campaign.get_by_id(int(campaign_id)) q = model.all().filter('campaign', c) count = model.all().filter('campaign', c).count() rdm = random.randint(0, count - 1) self.response.out.write(f(q.fetch(limit=1, offset=rdm)[0]))
def get(self, campaign_id): """ Display information about the existing campaign. :param campaign_id: ID of the campaign. """ campaign_id = int(campaign_id) campaign = Campaign.get_by_id(campaign_id) if campaign: return campaign_to_dict(campaign) else: raise TrackerException("Campaign with id %s does not exist." % campaign_id, status_code=404)
def get(self, campaign_id): c = Campaign.get_by_id(int(campaign_id)) user = users.get_current_user() if c: if c.owner == user: ads = Advert.all().filter('campaign', c) self.response.out.write( template.render('templates/campaigns/view.html', { 'campaign': c, 'ads': ads })) else: self.response.out.write("No tenes permisos") else: self.response.out.write("La campania no existe")
def delete(self, campaign_id): """Delete the existing campaign.""" campaign_id = int(campaign_id) campaign = Campaign.get_by_id(campaign_id) if campaign: # delete the campaign first, so that updates are not possible futures = [campaign.key.delete_async()] # delete all platforms that correspond to the campaign futures.extend( ndb.delete_multi_async([ platform.key for platform in Platform.query( Platform.campaign == campaign.key).fetch(3) ])) Future.wait_all(futures) else: # the campaign does not exist, just send 204 self.response.status_int = 204