Exemple #1
0
 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)
Exemple #2
0
    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"))
Exemple #3
0
 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")
Exemple #4
0
 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)
Exemple #5
0
 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")
Exemple #6
0
 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]))
Exemple #7
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")
Exemple #8
0
 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]))
Exemple #9
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)
Exemple #10
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")
Exemple #11
0
    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