Exemple #1
0
    def get(self):
        killmetrics_key = ''
        if hasattr(keys, 'base_url') and hasattr(
                keys,
                'killmetrics_dev') and helper.base_url(self) != keys.base_url:
            killmetrics_key = keys.killmetrics_dev
        if hasattr(keys, 'base_url') and hasattr(
                keys, 'killmetrics_prod') and (
                    helper.base_url(self) == keys.base_url
                    or helper.base_url(self) == keys.base_url_custom_url):
            killmetrics_key = keys.killmetrics_prod

        if killmetrics_key == '':
            return

        killmetrics_base_url = "http://alertify.appspot.com/"

        userUID = urllib.quote(self.request.get("userUID"))
        sessionUID = urllib.quote(self.request.get("sessionUID"))
        category = urllib.quote(self.request.get("category"))
        subcategory = urllib.quote(self.request.get("subcategory"))
        verb = urllib.quote(self.request.get("verb"))
        user_agent = urllib.quote(self.request.get("user-agent"))

        url = killmetrics_base_url + '/data-point/' + killmetrics_key + '?userUID=' + userUID + '&sessionUID=' + sessionUID + '&category=' + category + '&subcategory=' + subcategory + '&verb=' + verb + '&user_agent=' + user_agent
        result = urlfetch.fetch(url)
Exemple #2
0
    def get(self):
        posts = Post.all().order('-created').fetch(20)
        prefetch.prefetch_posts_list(posts)

        items = []
        for post in posts:
            if len(post.message) == 0:
                rss_poster = '<a href="' + post.url + '">' + post.url + '</a>'
            else:
                rss_poster = post.message
            rss_poster += ' por <a href="' + helper.base_url(
                self
            ) + '/perfil/' + post.user.nickname + '">' + post.user.nickname + '</a>'

            link = helper.base_url(self) + '/noticia/' + str(post.key())
            if post.nice_url:
                link = helper.base_url(self) + '/noticia/' + str(post.nice_url)

            items.append(
                PyRSS2Gen.RSSItem(title=post.title,
                                  link=link,
                                  description=rss_poster,
                                  guid=PyRSS2Gen.Guid("guid1"),
                                  pubDate=post.created))

        rss = PyRSS2Gen.RSS2(title="Noticias Hacker",
                             link="http://noticiashacker.com/",
                             description="Noticias Hacker",
                             lastBuildDate=datetime.now(),
                             items=items)
        print 'Content-Type: text/xml'
        self.response.out.write(rss.to_xml('utf-8'))
  def get(self):
    posts = Post.all().order('-created').fetch(20)
    prefetch.prefetch_posts_list(posts)

    items = []
    for post in posts:
      if len(post.message) == 0:
        rss_poster = '<a href="'+post.url+'">'+post.url+'</a>'
      else:
        rss_poster = post.message
      rss_poster += ' por <a href="'+helper.base_url(self)+'/perfil/'+post.user.nickname+'">'+post.user.nickname+'</a>'

      link = helper.base_url(self)+'/noticia/' + str(post.key())
      if post.nice_url:
        link = helper.base_url(self)+'/noticia/' + str(post.nice_url)

      items.append(PyRSS2Gen.RSSItem(
          title = post.title,
          link = link,
          description = rss_poster,
          guid = PyRSS2Gen.Guid("guid1"),
          pubDate = post.created
      ))

    rss = PyRSS2Gen.RSS2(
            title = "Noticias Hacker",
            link = "http://noticiashacker.com/",
            description = "Noticias Hacker",
            lastBuildDate = datetime.now(),
            items = items
          )
    print 'Content-Type: text/xml'
    self.response.out.write(rss.to_xml('utf-8'))
  def get(self):
    session = get_current_session()
    if session.has_key('post_error'):
      post_error = session.pop('post_error')

    if session.has_key('user'):
      if hasattr(keys, 'comment_key'):
        comment_key = keys.comment_key
      user = session['user']
      #### Killmetrics test
      killmetrics_session_id = helper.get_session_id(session)
      killmetrics_key = ''
      if hasattr(keys,'base_url') and hasattr(keys,'killmetrics_dev') and helper.base_url(self) != keys.base_url:
        killmetrics_key = keys.killmetrics_dev
      if hasattr(keys,'base_url') and hasattr(keys,'killmetrics_prod') and (helper.base_url(self) == keys.base_url or helper.base_url(self) == keys.base_url_custom_url):
        killmetrics_key = keys.killmetrics_prod
      #### Killmetrics test



      get_url = helper.sanitizeHtml(self.request.get('url_bookmarklet'))
      get_title = helper.sanitizeHtml(self.request.get('title_bookmarklet'))
      self.response.out.write(template.render('templates/submit.html', locals()))
    else:
      self.redirect('/login')
Exemple #5
0
    def post(self, post_id):
        session = get_current_session()
        title = helper.sanitizeHtml(self.request.get('title'))
        message = helper.sanitizeHtml(self.request.get('message'))

        if session.has_key('user'):
            user = session['user']
            try:
                post = db.get(helper.parse_post_id(post_id))
                if post.can_edit():
                    if len(title) > 0:
                        post.title = title
                    if post.message is not None and message is not None:
                        post.message = message
                    post.edited = True
                    post.put()

                    #index with indextank
                    helper.indextank_document(helper.base_url(self), post)

                    self.redirect('/noticia/' + str(post.key()))
                else:
                    self.redirect('/')
            except db.BadKeyError:
                self.redirect('/')
        else:
            self.redirect('/')
  def post(self, post_id):
    session = get_current_session()
    title = helper.sanitizeHtml(self.request.get('title'))
    message = helper.sanitizeHtml(self.request.get('message'))

    if session.has_key('user'):
      user = session['user']
      try:
        post = db.get(helper.parse_post_id(post_id))
        if post.can_edit():
          if len(title) > 0:
            post.title = title
          if post.message is not None and message is not None:
            post.message = message
          post.edited = True
          post.put()
	  
	  #index with indextank
	  helper.indextank_document(helper.base_url(self), post)

	  self.redirect('/noticia/' + str(post.key()))
        else:
          self.redirect('/')
      except db.BadKeyError:
        self.redirect('/')  
    else:
      self.redirect('/')
Exemple #7
0
 def get(self):
     posts = Post.all().fetch(10000)
     base_url = helper.base_url(self)
     for post in posts:
         taskqueue.add(url='/admin/re-index-tank-task',
                       params={
                           'post_key': str(post.key()),
                           'base_url': base_url
                       })
     self.response.out.write("ok")
    def post(self):
        session = get_current_session()
        url = self.request.get("url")
        title = helper.sanitizeHtml(self.request.get("title"))
        message = helper.sanitizeHtml(self.request.get("message"))
        nice_url = helper.sluglify(title)

        if session.has_key("user"):
            if len(nice_url) > 0:
                user = session["user"]
                if len(message) == 0:  # is it a post or a message?
                    # Check that we don't have the same URL within the last 'check_days'
                    since_date = date.today() - timedelta(days=7)
                    q = Post.all().filter("created >", since_date).filter("url =", url).count()
                    url_exists = q > 0
                    q = Post.all().filter("nice_url", nice_url).count()
                    nice_url_exist = q > 0
                    try:
                        if not url_exists:
                            if not nice_url_exist:
                                post = Post(url=url, title=title, message=message, user=user, nice_url=nice_url)
                                post.put()
                                vote = Vote(user=user, post=post, target_user=post.user)
                                vote.put()
                                Post.remove_cached_count_from_memcache()
                                self.redirect("/noticia/" + str(post.nice_url))
                            else:
                                session["post_error"] = "Este titulo ha sido usado en una noticia anterior"
                                self.redirect("/agregar")
                        else:
                            session["post_error"] = "Este link ha sido entregado en los ultimo 7 dias"
                            self.redirect("/agregar")
                    except db.BadValueError:
                        session["post_error"] = "El formato del link no es valido"
                        self.redirect("/agregar")
                else:
                    q = Post.all().filter("nice_url", nice_url).count()
                    nice_url_exist = q > 0
                    if not nice_url_exist:
                        post = Post(title=title, message=message, user=user, nice_url=nice_url)
                        post.put()
                        post.url = helper.base_url(self) + "/noticia/" + post.nice_url
                        post.put()
                        Post.remove_cached_count_from_memcache()
                        vote = Vote(user=user, post=post, target_user=post.user)
                        vote.put()
                        self.redirect("/noticia/" + post.nice_url)
                    else:
                        session["post_error"] = "Este titulo ha sido usado en una noticia anterior"
                        self.redirect("/agregar")
            else:
                session["post_error"] = "Necesitas agregar un titulo"
                self.redirect("/agregar")
        else:
            self.redirect("/login")
def sendMessageToTwitter(self, post):
  bitlyApi = bitly.Api(login=keys.bitly_login, apikey=keys.bitly_apikey) 
  auth = tweepy.OAuthHandler(keys.consumer_key, keys.consumer_secret)
  auth.set_access_token(keys.access_token, keys.access_token_secret)
  twitterapi = tweepy.API(auth)
  url =  helper.base_url(self) + "/noticia/" + str(post.key())
  shortUrl = bitlyApi.shorten(url)
  title = post.title[:115]
  message = title + "... " + shortUrl
  twitterapi.update_status(message)
  return message
Exemple #10
0
def sendMessageToTwitter(self, post):
    bitlyApi = bitly.Api(login=keys.bitly_login, apikey=keys.bitly_apikey)
    auth = tweepy.OAuthHandler(keys.consumer_key, keys.consumer_secret)
    auth.set_access_token(keys.access_token, keys.access_token_secret)
    twitterapi = tweepy.API(auth)
    url = helper.base_url(self) + "/noticia/" + str(post.key())
    shortUrl = bitlyApi.shorten(url)
    title = post.title[:115]
    message = title + "... " + shortUrl
    twitterapi.update_status(message)
    return message
  def get(self):
    page = helper.sanitizeHtml(self.request.get('pagina'))
    perPage = 20
    page = int(page) if page else 1
    realPage = page - 1
    if realPage > 0:
      prevPage = realPage
    if (page * perPage) < Post.get_cached_count():
      nextPage = page + 1

    session = get_current_session()
    on_main = True
    

    if session.has_key('user'):
      user = session['user']
    #### Killmetrics test
    killmetrics_session_id = helper.get_session_id(session)
    killmetrics_key = ''
    if hasattr(keys,'base_url') and hasattr(keys,'killmetrics_dev') and helper.base_url(self) != keys.base_url:
      killmetrics_key = keys.killmetrics_dev
    if hasattr(keys,'base_url') and hasattr(keys,'killmetrics_prod') and (helper.base_url(self) == keys.base_url or helper.base_url(self) == keys.base_url_custom_url):
      killmetrics_key = keys.killmetrics_prod
    #### Killmetrics test

    posts = Post.all().order('-karma').fetch(perPage, realPage * perPage)
    prefetch.prefetch_posts_list(posts)
    i = perPage * realPage + 1
    for post in posts:
      post.number = i
      i = i + 1
    if helper.is_json(self.request.url):
      posts_json = [p.to_json() for p in posts]
      if(self.request.get('callback')):
        self.response.headers['Content-Type'] = "application/javascript"
        self.response.out.write(self.request.get('callback')+'('+simplejson.dumps({'posts':posts_json})+');')
      else:
        self.response.headers['Content-Type'] = "application/json"
        self.response.out.write(simplejson.dumps({'posts':posts_json}))
    else:
      self.response.out.write(template.render('templates/main.html', locals()))
Exemple #12
0
  def get(self):
    killmetrics_key = ''
    if hasattr(keys,'base_url') and hasattr(keys,'killmetrics_dev') and helper.base_url(self) != keys.base_url:
      killmetrics_key = keys.killmetrics_dev
    if hasattr(keys,'base_url') and hasattr(keys,'killmetrics_prod') and (helper.base_url(self) == keys.base_url or helper.base_url(self) == keys.base_url_custom_url):
      killmetrics_key = keys.killmetrics_prod

    if killmetrics_key == '':
      return

    killmetrics_base_url = "http://www.killmetrics.com/"

    userUID     = urllib.quote(self.request.get("userUID"))
    sessionUID  = urllib.quote(self.request.get("sessionUID"))
    category    = urllib.quote(self.request.get("category"))
    subcategory = urllib.quote(self.request.get("subcategory"))
    verb        = urllib.quote(self.request.get("verb"))
    user_agent  = urllib.quote(self.request.get("user-agent"))

    url = killmetrics_base_url + '/data-point/'+killmetrics_key+'?userUID='+userUID+'&sessionUID='+sessionUID+'&category='+category+'&subcategory='+subcategory+'&verb='+verb+'&user_agent='+user_agent
    result = urlfetch.fetch(url)
Exemple #13
0
    def post(self):
        session = get_current_session()
        url = self.request.get('url')
        title = helper.sanitizeHtml(self.request.get('title'))
        message = helper.sanitizeHtml(self.request.get('message'))

        if session.has_key('user'):
            if len(title) > 0:
                user = session['user']
                if len(message) == 0:  #is it a post or a message?
                    #Check that we don't have the same URL within the last 'check_days'
                    since_date = date.today() - timedelta(days=7)
                    q = Post.all().filter("created >",
                                          since_date).filter("url =",
                                                             url).count()
                    url_exists = q > 0
                    try:
                        if not url_exists:
                            post = Post(url=url,
                                        title=title,
                                        message=message,
                                        user=user)
                            post.put()
                            vote = Vote(user=user,
                                        post=post,
                                        target_user=post.user)
                            vote.put()
                            Post.remove_cached_count_from_memcache()
                            self.redirect('/noticia/' + str(post.key()))
                        else:
                            session[
                                'post_error'] = "Este link ha sido entregado en los ultimo 7 dias"
                            self.redirect('/agregar')
                    except db.BadValueError:
                        session[
                            'post_error'] = "El formato del link no es valido"
                        self.redirect('/agregar')
                else:
                    post = Post(title=title, message=message, user=user)
                    post.put()
                    post.url = helper.base_url(self) + "/noticia/" + str(
                        post.key())
                    post.put()
                    Post.remove_cached_count_from_memcache()
                    vote = Vote(user=user, post=post, target_user=post.user)
                    vote.put()
                    self.redirect('/noticia/' + str(post.key()))
            else:
                session['post_error'] = "Necesitas agregar un titulo"
                self.redirect('/agregar')
        else:
            self.redirect('/login')
  def get(self,post_id):
    session = get_current_session()
    if session.has_key('user'):
      user = session['user']
    #### Killmetrics test
    killmetrics_session_id = helper.get_session_id(session)
    killmetrics_key = ''
    if hasattr(keys,'base_url') and hasattr(keys,'killmetrics_dev') and helper.base_url(self) != keys.base_url:
      killmetrics_key = keys.killmetrics_dev
    if hasattr(keys,'base_url') and hasattr(keys,'killmetrics_prod') and (helper.base_url(self) == keys.base_url or helper.base_url(self) == keys.base_url_custom_url):
      killmetrics_key = keys.killmetrics_prod
    #### Killmetrics test
    if hasattr(keys, 'comment_key'):
      comment_key = keys.comment_key

    try:
      post = Post.all().filter('nice_url =', helper.parse_post_id( post_id ) ).get()
      if  post  == None: #If for some reason the post doesn't have a nice url, we try the id. This is also the case of all old stories
        post = db.get( helper.parse_post_id( post_id ) ) 

      comments = Comment.all().filter("post =", post.key()).order("-karma").fetch(1000)
      comments = helper.order_comment_list_in_memory(comments)
      prefetch.prefetch_comment_list(comments)
      display_post_title = True
      prefetch.prefetch_posts_list([post])
      if helper.is_json(post_id):
        comments_json = [c.to_json() for c in comments if not c.father_ref()] 
        if(self.request.get('callback')):
          self.response.headers['Content-Type'] = "application/javascript"
          self.response.out.write(self.request.get('callback')+'('+simplejson.dumps({'post':post.to_json(),'comments':comments_json})+')')
        else:
          self.response.headers['Content-Type'] = "application/json"
          self.response.out.write(simplejson.dumps({'post':post.to_json(),'comments':comments_json}))
      else:
        self.response.out.write(template.render('templates/post.html', locals()))
    except db.BadKeyError:
      self.redirect('/')
Exemple #15
0
  def post(self):
    session = get_current_session()
    url = self.request.get('url')
    title = helper.sanitizeHtml(self.request.get('title'))
    message = helper.sanitizeHtml(self.request.get('message'))

    if session.has_key('user'):
      if len(title) > 0:
        user = session['user']
        if len(message) == 0: #is it a post or a message?
          #Check that we don't have the same URL within the last 'check_days'
          since_date = date.today() - timedelta(days=7)
          q = Post.all().filter("created >", since_date).filter("url =", url).count()
          url_exists = q > 0
          try:
            if not url_exists:
              post = Post(url=url,title=title,message=message, user=user)
              post.put()
              vote = Vote(user=user, post=post, target_user=post.user)
              vote.put()
              Post.remove_cached_count_from_memcache()
              self.redirect('/noticia/' + str(post.key()));
            else:
              session['post_error'] = "Este link ha sido entregado en los ultimo 7 dias"
              self.redirect('/agregar')
          except db.BadValueError:
            session['post_error'] = "El formato del link no es valido"
            self.redirect('/agregar')
        else:
          post = Post(title=title,message=message, user=user)
          post.put()
          post.url = helper.base_url(self) + "/noticia/" + str(post.key())
          post.put()
          Post.remove_cached_count_from_memcache()
          vote = Vote(user=user, post=post, target_user=post.user)
          vote.put()
          self.redirect('/noticia/' + str(post.key()));
      else:
        session['post_error'] = "Necesitas agregar un titulo"
        self.redirect('/agregar')
    else:
      self.redirect('/login')
Exemple #16
0
 def get(self):
     if hasattr(keys, 'consumer_key') and hasattr(
             keys, 'consumer_secret') and hasattr(
                 keys, 'access_token') and hasattr(
                     keys, 'access_token_secret') and hasattr(
                         keys, 'bitly_login') and hasattr(
                             keys, 'bitly_apikey') and hasattr(
                                 keys, 'base_url') and helper.base_url(
                                     self) == keys.base_url:
         posts = Post.all().order('-karma').fetch(20)
         for post in posts:
             if not post.twittered:
                 post.twittered = True
                 post.put()
                 out = sendMessageToTwitter(self, post)
                 self.response.out.write("Printed:" + out)
                 return
         self.response.out.write("No more message")
     else:
         self.response.out.write("No keys")
    def post(self):
        session = get_current_session()
        url = self.request.get('url')
        title = helper.sanitizeHtml(self.request.get('title'))
        message = helper.sanitizeHtml(self.request.get('message'))
        nice_url = helper.sluglify(title)

        if session.has_key('user'):
            if len(nice_url) > 0:
                user = session['user']
                if len(message) == 0:  #is it a post or a message?
                    #Check that we don't have the same URL within the last 'check_days'
                    since_date = date.today() - timedelta(days=7)
                    q = Post.all().filter("created >",
                                          since_date).filter("url =",
                                                             url).count()
                    url_exists = q > 0
                    q = Post.all().filter("nice_url", nice_url).count()
                    nice_url_exist = q > 0
                    try:
                        if not url_exists:
                            if not nice_url_exist:
                                post = Post(url=url,
                                            title=title,
                                            message=message,
                                            user=user,
                                            nice_url=nice_url)
                                post.put()
                                helper.killmetrics("Submit", "Link", "do",
                                                   session, "", self)
                                vote = Vote(user=user,
                                            post=post,
                                            target_user=post.user)
                                vote.put()
                                Post.remove_cached_count_from_memcache()

                                #index with indextank
                                helper.indextank_document(
                                    helper.base_url(self), post)

                                self.redirect('/noticia/' + str(post.nice_url))
                            else:
                                session[
                                    'post_error'] = "Este titulo ha sido usado en una noticia anterior"
                                self.redirect('/agregar')
                        else:
                            session[
                                'post_error'] = "Este link ha sido entregado en los ultimo 7 dias"
                            self.redirect('/agregar')
                    except db.BadValueError:
                        session[
                            'post_error'] = "El formato del link no es valido"
                        self.redirect('/agregar')
                else:
                    q = Post.all().filter("nice_url", nice_url).count()
                    nice_url_exist = q > 0
                    if not nice_url_exist:
                        post = Post(title=title,
                                    message=message,
                                    user=user,
                                    nice_url=nice_url)
                        post.put()
                        helper.killmetrics("Submit", "Post", "do", session, "",
                                           self)
                        post.url = helper.base_url(
                            self) + "/noticia/" + post.nice_url
                        post.put()
                        Post.remove_cached_count_from_memcache()
                        vote = Vote(user=user,
                                    post=post,
                                    target_user=post.user)
                        vote.put()

                        #index with indextank
                        helper.indextank_document(helper.base_url(self), post)

                        self.redirect('/noticia/' + post.nice_url)
                    else:
                        session[
                            'post_error'] = "Este titulo ha sido usado en una noticia anterior"
                        self.redirect('/agregar')
            else:
                session['post_error'] = "Necesitas agregar un titulo"
                self.redirect('/agregar')
        else:
            self.redirect('/login')
  def post(self):
    session = get_current_session()
    url = self.request.get('url')
    title = helper.sanitizeHtml(self.request.get('title'))
    message = helper.sanitizeHtml(self.request.get('message'))
    nice_url = helper.sluglify(title)
    key = self.request.get('comment_key')
 
    if session.has_key('user') and key == keys.comment_key:
      if len(nice_url) > 0:
        user = session['user']
        if len(message) == 0: #is it a post or a message?
          #Check that we don't have the same URL within the last 'check_days'
          since_date = date.today() - timedelta(days=7)
          q = Post.all().filter("created >", since_date).filter("url =", url).count()
          url_exists = q > 0
          q = Post.all().filter("nice_url", nice_url).count()
          nice_url_exist = q > 0
          try:
            if not url_exists:
              if not nice_url_exist:
                post = Post(url=url,title=title,message=message, user=user, nice_url=nice_url)
                post.put()
                helper.killmetrics("Submit","Link", "do", session, "",self)
                vote = Vote(user=user, post=post, target_user=post.user)
                vote.put()
                Post.remove_cached_count_from_memcache()
 	
                #index with indextank
                helper.indextank_document( helper.base_url(self), post)
                
                self.redirect('/noticia/' + str(post.nice_url));
              else:
                session['post_error'] = "Este titulo ha sido usado en una noticia anterior"
                self.redirect('/agregar')
            else:
              session['post_error'] = "Este link ha sido entregado en los ultimo 7 dias"
              self.redirect('/agregar')
          except db.BadValueError:
            session['post_error'] = "El formato del link no es valido"
            self.redirect('/agregar')
        else:
          q = Post.all().filter("nice_url", nice_url).count()
          nice_url_exist = q > 0
          if not nice_url_exist:
            post = Post(title=title,message=message, user=user, nice_url=nice_url)
            post.put()
            helper.killmetrics("Submit","Post", "do", session, "",self)
            post.url = helper.base_url(self) + "/noticia/" + post.nice_url
            post.put()
            Post.remove_cached_count_from_memcache()
            vote = Vote(user=user, post=post, target_user=post.user)
            vote.put()

	    #index with indextank
	    helper.indextank_document( helper.base_url(self), post)
            
	    self.redirect('/noticia/' + post.nice_url);
          else:
            session['post_error'] = "Este titulo ha sido usado en una noticia anterior"
            self.redirect('/agregar')
      else:
        session['post_error'] = "Necesitas agregar un titulo"
        self.redirect('/agregar')
    else:
      self.redirect('/login')
Exemple #19
0
 def get(self):
   if hasattr(keys,'consumer_key') and hasattr(keys,'consumer_secret') and hasattr(keys,'access_token') and hasattr(keys,'access_token_secret') and hasattr(keys,'bitly_login') and hasattr(keys,'bitly_apikey') and hasattr(keys,'base_url') and helper.base_url(self) == keys.base_url:
     posts = Post.all().order('-karma').fetch(20)
     for post in posts:
       if not post.twittered:
         post.twittered = True
         post.put()
         out = sendMessageToTwitter(self,post)
         self.response.out.write("Printed:" + out)  
         return
     self.response.out.write("No more message")
   else:
     self.response.out.write("No keys")
Exemple #20
0
 def get(self):
   posts = Post.all().fetch(10000)
   base_url = helper.base_url(self) 
   for post in posts:
     taskqueue.add(url='/admin/re-index-tank-task', params={'post_key': str(post.key()), 'base_url': base_url})
   self.response.out.write("ok")