Пример #1
0
 def get(self):
     self.session = Session()
     if CheckAuth(self) is False:
         return DoAuth(self, "/writer/overview")
     site_domain = Datum.get("site_domain")
     site_domain_sync = Datum.get("site_domain_sync")
     site_name = Datum.get("site_name")
     site_author = Datum.get("site_author")
     site_slogan = Datum.get("site_slogan")
     site_analytics = Datum.get("site_analytics")
     if site_domain is None:
         site_domain = os.environ["HTTP_HOST"]
         Datum.set("site_domain", os.environ["HTTP_HOST"])
     if site_domain_sync is None:
         site_domain_sync = os.environ["HTTP_HOST"]
         Datum.set("site_domain_sync", os.environ["HTTP_HOST"])
     articles = memcache.get("writer_articles")
     if articles is None:
         articles = Article.all().order("-created")
         memcache.set("writer_articles", articles, 86400)
     paginator = ObjectPaginator(articles, PAGE_SIZE)
     try:
         page = int(self.request.get("page", 0))
         articles = paginator.get_page(page)
     except InvalidPage:
         articles = paginator.get_page(int(paginator.pages - 1))
     if paginator.pages > 1:
         is_paginated = True
     else:
         is_paginated = False
     if site_domain is None or site_name is None or site_author is None:
         site_configured = False
     else:
         site_configured = True
     if is_paginated:
         self.session["page"] = page
     urls = memcache.get("writer_urls")
     if urls is None:
         everything = Article.all().order("-title_url")
         urls = []
         for article in everything:
             urls.append(article.title_url)
         memcache.set("writer_urls", urls, 86400)
     template_values = {
         "site_configured": site_configured,
         "is_paginated": is_paginated,
         "page_size": PAGE_SIZE,
         "page_has_next": paginator.has_next_page(page),
         "page_has_previous": paginator.has_previous_page(page),
         "page": page,
         "next": page + 1,
         "previous": page - 1,
         "pages": paginator.pages,
         "articles": articles,
         "articles_total": len(articles),
         "page_range": range(0, paginator.pages),
         "urls": urls,
     }
     if site_analytics is not None:
         template_values["site_analytics"] = site_analytics
     if site_domain_sync is None:
         q = site_domain
     else:
         q = site_domain + " OR " + site_domain_sync
     mentions_web = memcache.get("mentions_web")
     if mentions_web is None:
         try:
             mentions_web = feedparser.parse(
                 "http://blogsearch.google.com/blogsearch_feeds?hl=en&q="
                 + urllib.quote("link:" + Datum.get("site_domain"))
                 + "&ie=utf-8&num=10&output=atom"
             )
             memcache.add("mentions_web", mentions_web, 600)
         except:
             mentions_web = None
     if mentions_web is not None:
         template_values["mentions_web"] = mentions_web.entries
     # mentions_twitter = memcache.get('mentions_twitter')
     # if mentions_twitter is None:
     #  try:
     #    result = urlfetch.fetch('http://search.twitter.com/search.json?q=' + urllib.quote(q))
     #    if result.status_code == 200:
     #      mentions_twitter = simplejson.loads(result.content)
     #      memcache.add('mentions_twitter', mentions_twitter, 600)
     #  except:
     #    mentions_twitter = None
     # if mentions_twitter is not None:
     #  if len(mentions_twitter['results']) > 0:
     #    template_values['mentions_twitter'] = mentions_twitter['results']
     template_values["system_version"] = VERSION
     if "message" in self.session:
         template_values["message"] = self.session["message"]
         del self.session["message"]
     path = os.path.join(os.path.dirname(__file__), "tpl", "writer", "overview.html")
     self.response.out.write(template.render(path, template_values))
Пример #2
0
 def post(self, key=""):
     self.session = Session()
     if CheckAuth(self) is False:
         return DoAuth(self, "/writer")
     site_domain = Datum.get("site_domain")
     site_domain_sync = Datum.get("site_domain_sync")
     site_name = Datum.get("site_name")
     site_author = Datum.get("site_author")
     site_slogan = Datum.get("site_slogan")
     site_analytics = Datum.get("site_analytics")
     site_default_format = Datum.get("site_default_format")
     if "page" in self.session:
         page = self.session["page"]
     else:
         page = 0
     site_default_format = Datum.get("site_default_format")
     if self.request.get("content") != "":
         if key:
             article = db.get(db.Key(key))
             article.title = self.request.get("title")
             article.title_link = self.request.get("title_link")
             article.title_url = self.request.get("title_url")
             article.parent_url = self.request.get("parent_url")
             article.content = self.request.get("content")
             article.article_set = self.request.get("article_set")
             article.format = self.request.get("format")
             if article.format not in CONTENT_FORMATS:
                 article.format = site_default_format
             if article.format == "markdown":
                 article.content_formatted = markdown.markdown(article.content)
             if self.request.get("is_page") == "True":
                 article.is_page = True
             else:
                 article.is_page = False
             if self.request.get("is_for_sidebar") == "True":
                 article.is_for_sidebar = True
             else:
                 article.is_for_sidebar = False
             article.put()
             self.session["message"] = (
                 '<div style="float: right;"><a href="http://'
                 + site_domain
                 + "/"
                 + article.title_url
                 + '" target="_blank" class="super normal button">View Now</a></div>Changes has been saved into <a href="/writer/edit/'
                 + key
                 + '">'
                 + article.title
                 + "</a>"
             )
         else:
             article = Article()
             article.title = self.request.get("title")
             article.title_link = self.request.get("title_link")
             article.title_url = self.request.get("title_url")
             article.parent_url = self.request.get("parent_url")
             article.content = self.request.get("content")
             article.article_set = self.request.get("article_set")
             article.format = self.request.get("format")
             if article.format not in CONTENT_FORMATS:
                 article.format = site_default_format
             if article.format == "markdown":
                 article.content_formatted = markdown.markdown(article.content)
             if self.request.get("is_page") == "True":
                 article.is_page = True
             else:
                 article.is_page = False
             if self.request.get("is_for_sidebar") == "True":
                 article.is_for_sidebar = True
             else:
                 article.is_for_sidebar = False
             article.put()
             self.session["message"] = (
                 '<div style="float: right;"><a href="http://'
                 + site_domain
                 + "/"
                 + article.title_url
                 + '" target="_blank" class="super normal button">View Now</a></div>New article <a href="/writer/edit/'
                 + str(article.key())
                 + '">'
                 + article.title
                 + "</a> has been created"
             )
             # Ping Twitter
             twitter_sync = Datum.get("twitter_sync")
             if twitter_sync == "True" and article.is_page is False:
                 twitter_account = Datum.get("twitter_account")
                 twitter_password = Datum.get("twitter_password")
                 if twitter_account != "" and twitter_password != "":
                     api = twitter.Api(username=twitter_account, password=twitter_password)
                     try:
                         status = api.PostUpdate(
                             article.title
                             + " http://"
                             + site_domain_sync
                             + "/"
                             + article.title_url
                             + " (Sync via @projectpicky)"
                         )
                     except:
                         api = None
         obsolete = [
             "archive",
             "archive_output",
             "feed_output",
             "index",
             "index_output",
             "writer_articles",
             "writer_urls",
         ]
         memcache.delete_multi(obsolete)
         Datum.set("site_updated", time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime()))
         # Ping Google Blog Search
         if site_domain.find("localhost") == -1:
             try:
                 google_ping = (
                     "http://blogsearch.google.com/ping?name="
                     + urllib.quote(Datum.get("site_name"))
                     + "&url=http://"
                     + urllib.quote(Datum.get("site_domain"))
                     + "/&changesURL=http://"
                     + urllib.quote(Datum.get("site_domain"))
                     + "/sitemap.xml"
                 )
                 result = urlfetch.fetch(google_ping)
             except:
                 taskqueue.add(url="/writer/ping")
         self.redirect("/writer/overview?page=" + str(page))
     else:
         article = Article()
         article.title = self.request.get("title")
         article.title_link = self.request.get("title_link")
         article.title_url = self.request.get("title_url")
         article.content = self.request.get("content")
         article.article_set = self.request.get("article_set")
         article.format = self.request.get("format")
         if article.format not in CONTENT_FORMATS:
             article.format = site_default_format
         if self.request.get("is_page") == "True":
             article.is_page = True
         else:
             article.is_page = False
         if self.request.get("is_for_sidebar") == "True":
             article.is_for_sidebar = True
         else:
             article.is_for_sidebar = False
         template_values = {
             "site_default_format": site_default_format,
             "article": article,
             "page_mode": "new",
             "page_title": "New Article",
             "page_reminder": reminder.writer_write,
             "message": message.content_empty,
             "user_email": user.email(),
             "page": page,
         }
         if site_analytics is not None:
             template_values["site_analytics"] = site_analytics
         template_values["system_version"] = VERSION
         path = os.path.join(os.path.dirname(__file__), "tpl", "writer", "write.html")
         self.response.out.write(template.render(path, template_values))
Пример #3
0
 def post(self, key = ''):
   self.session = Session()
   if CheckAuth(self) is False:
     return DoAuth(self, '/writer')
   site_domain = Datum.get('site_domain')
   site_domain_sync = Datum.get('site_domain_sync')
   site_name = Datum.get('site_name')
   site_author = Datum.get('site_author')
   site_slogan = Datum.get('site_slogan')
   site_analytics = Datum.get('site_analytics')
   site_default_format = Datum.get('site_default_format')
   if 'page' in self.session:
     page = self.session['page']
   else:
     page = 0
   site_default_format = Datum.get('site_default_format')
   if (self.request.get('content') != ''):
     if (key):
       article = db.get(db.Key(key))
       article.title = self.request.get('title')
       article.title_link = self.request.get('title_link')
       article.title_url = self.request.get('title_url')
       article.parent_url = self.request.get('parent_url')
       article.content = self.request.get('content')
       article.format = self.request.get('format')
       if article.format not in CONTENT_FORMATS:
         article.format = site_default_format
       if article.format == 'markdown':
         article.content_formatted = markdown.markdown(article.content)
       if (self.request.get('is_page') == 'True'):
         article.is_page = True
       else:
         article.is_page = False
       if (self.request.get('is_for_sidebar') == 'True'):
         article.is_for_sidebar = True
       else:
         article.is_for_sidebar = False
       article.last_modified = datetime.datetime.utcnow() + datetime.timedelta(hours=+8)
       article.put()
     else:
       article = Article()
       article.title = self.request.get('title')
       article.title_link = self.request.get('title_link')
       article.title_url = self.request.get('title_url')
       article.parent_url = self.request.get('parent_url')
       article.content = self.request.get('content')
       article.format = self.request.get('format')
       if article.format not in CONTENT_FORMATS:
         article.format = site_default_format
       if article.format == 'markdown':
         article.content_formatted = markdown.markdown(article.content)
       if (self.request.get('is_page') == 'True'):
         article.is_page = True
       else:
         article.is_page = False
       if (self.request.get('is_for_sidebar') == 'True'):
         article.is_for_sidebar = True
       else:
         article.is_for_sidebar = False
       article.last_modified = datetime.datetime.utcnow() + datetime.timedelta(hours=+8)
       article.created = article.last_modified
       article.put()
       # Ping Twitter
       twitter_sync = Datum.get('twitter_sync')
       if twitter_sync == 'True' and article.is_page is False:  
         twitter_account = Datum.get('twitter_account')
         twitter_password = Datum.get('twitter_password')
         if twitter_account != '' and twitter_password != '':
           api = twitter.Api(username=twitter_account, password=twitter_password)
           try:
             status = api.PostUpdate(article.title + ' http://' + site_domain_sync + '/' + article.title_url + ' (Sync via @projectpicky)')
           except:
             api = None
     obsolete = ['archive', 'archive_output', 'feed_output', 'index', 'index_output', 'writer_articles', 'writer_urls']
     memcache.delete_multi(obsolete)
     Datum.set('site_updated', time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime()))
     # Ping Google Blog Search
     try:
       google_ping = 'http://blogsearch.google.com/ping?name=' + urllib.quote(Datum.get('site_name')) + '&url=http://' + urllib.quote(Datum.get('site_domain')) + '/&changesURL=http://' + urllib.quote(Datum.get('site_domain')) + '/sitemap.xml'
       result = urlfetch.fetch(google_ping)
       hub_field = {"hub.mode":"publish","hub.url":"http://imimom0.appspot.com/index.xml"}
       hub_ping = urlfetch.fetch(url='http://pubsubhubbub.appspot.com/',payload=urllib.urlencode(hub_field),method=urlfetch.POST)
     except:
       taskqueue.add(url='/writer/ping')
     self.redirect('/writer/overview?page=' + str(page))
   else:
     article = Article()
     article.title = self.request.get('title')
     article.title_link = self.request.get('title_link')
     article.title_url = self.request.get('title_url')
     article.content = self.request.get('content')
     article.format = self.request.get('format')
     if article.format not in CONTENT_FORMATS:
       article.format = site_default_format
     if (self.request.get('is_page') == 'True'):
       article.is_page = True
     else:
       article.is_page = False
     if (self.request.get('is_for_sidebar') == 'True'):
       article.is_for_sidebar = True
     else:
       article.is_for_sidebar = False
     template_values = {
       'site_default_format' : site_default_format,
       'article' : article,
       'page_mode' : 'new',
       'page_title' : 'New Article',
       'page_reminder': reminder.writer_write,
       'message' : message.content_empty,
       'page' : page
     }
     if site_analytics is not None:
       template_values['site_analytics'] = site_analytics
     template_values['system_version'] = VERSION
     path = os.path.join(os.path.dirname(__file__), 'tpl', 'writer', 'write.html')
     self.response.out.write(template.render(path, template_values))
Пример #4
0
  def get(self):
    self.session = Session()
    if CheckAuth(self) is False:
      return DoAuth(self, '/writer/overview')
    site_domain = Datum.get('site_domain')
    site_domain_sync = Datum.get('site_domain_sync')
    site_name = Datum.get('site_name')
    site_author = Datum.get('site_author')
    site_slogan = Datum.get('site_slogan')
    site_analytics = Datum.get('site_analytics')
    if site_domain is None:
      site_domain = os.environ['HTTP_HOST']
      Datum.set('site_domain', os.environ['HTTP_HOST'])
    if site_domain_sync is None:
      site_domain_sync = os.environ['HTTP_HOST']
      Datum.set('site_domain_sync', os.environ['HTTP_HOST'])
    articles = memcache.get('writer_articles')
    if articles is None:
      articles = Article.all().order('-created')
      memcache.set('writer_articles', articles, 86400)
    paginator = ObjectPaginator(articles, PAGE_SIZE)
    try:
      page = int(self.request.get('page', 0))
      articles = paginator.get_page(page)
    except InvalidPage:
      articles = paginator.get_page(int(paginator.pages - 1))
    if paginator.pages > 1:
      is_paginated = True
    else:
      is_paginated = False
    if site_domain is None or site_name is None or site_author is None:
      site_configured = False
    else:
      site_configured = True
    if is_paginated:
      self.session['page'] = page
    urls = memcache.get('writer_urls')
    if urls is None:
      everything = Article.all().order('-title_url')
      urls = []
      for article in everything:
        urls.append(article.title_url)
      memcache.set('writer_urls', urls, 86400)
    template_values = {
      'site_configured' : site_configured,
      'is_paginated' : is_paginated,
      'page_size' : PAGE_SIZE,
      'page_has_next' : paginator.has_next_page(page),
      'page_has_previous' : paginator.has_previous_page(page),
      'page' : page,
      'next' : page + 1,
      'previous' : page - 1,
      'pages' : paginator.pages,
      'articles' : articles,
      'articles_total' : len(articles),
      'page_range' : range(0, paginator.pages),
      'urls' : urls
    }
    if site_analytics is not None:
      template_values['site_analytics'] = site_analytics
    if site_domain_sync is None:
      q = site_domain
    else:
      q = site_domain + ' OR ' + site_domain_sync
    mentions_web = memcache.get('mentions_web')
    if mentions_web is None:
      try:
        mentions_web = feedparser.parse('http://blogsearch.google.com/blogsearch_feeds?hl=en&q=' + urllib.quote('link:' + Datum.get('site_domain')) + '&ie=utf-8&num=10&output=atom')
        memcache.add('mentions_web', mentions_web, 3600)
      except:
        mentions_web = None
    if mentions_web is not None:
      template_values['mentions_web'] = mentions_web.entries
#    mentions_twitter = memcache.get('mentions_twitter')
#    if mentions_twitter is None:    
#      try:
#        result = urlfetch.fetch(TWITTER_API_ROOT + 'search.json?q=' + urllib.quote(q))
#        if result.status_code == 200:
#          mentions_twitter = simplejson.loads(result.content)
#          memcache.add('mentions_twitter', mentions_twitter, 3600)
#      except:
#        mentions_twitter = None
#    if mentions_twitter is not None:
#      if len(mentions_twitter['results']) > 0:
#        template_values['mentions_twitter'] = mentions_twitter['results']
    template_values['system_version'] = VERSION
    path = os.path.join(os.path.dirname(__file__), 'tpl', 'writer', 'overview.html')
    self.response.out.write(template.render(path, template_values))
Пример #5
0
 def post(self, key=''):
     self.session = Session()
     if CheckAuth(self) is False:
         return DoAuth(self, '/writer')
     site_domain = Datum.get('site_domain')
     site_domain_sync = Datum.get('site_domain_sync')
     site_name = Datum.get('site_name')
     site_author = Datum.get('site_author')
     site_slogan = Datum.get('site_slogan')
     site_analytics = Datum.get('site_analytics')
     site_default_format = Datum.get('site_default_format')
     if 'page' in self.session:
         page = self.session['page']
     else:
         page = 0
     site_default_format = Datum.get('site_default_format')
     if (self.request.get('content') != ''):
         if (key):
             article = db.get(db.Key(key))
             article.title = self.request.get('title')
             article.title_link = self.request.get('title_link')
             article.title_url = self.request.get('title_url')
             article.parent_url = self.request.get('parent_url')
             article.content = self.request.get('content')
             article.article_set = self.request.get('article_set')
             article.format = self.request.get('format')
             if article.format not in CONTENT_FORMATS:
                 article.format = site_default_format
             if article.format == 'markdown':
                 article.content_formatted = markdown.markdown(
                     article.content)
             if (self.request.get('is_page') == 'True'):
                 article.is_page = True
             else:
                 article.is_page = False
             if (self.request.get('is_for_sidebar') == 'True'):
                 article.is_for_sidebar = True
             else:
                 article.is_for_sidebar = False
             article.put()
             self.session[
                 'message'] = '<div style="float: right;"><a href="http://' + site_domain + '/' + article.title_url + '" target="_blank" class="super normal button">View Now</a></div>Changes has been saved into <a href="/writer/edit/' + key + '">' + article.title + '</a>'
         else:
             article = Article()
             article.title = self.request.get('title')
             article.title_link = self.request.get('title_link')
             article.title_url = self.request.get('title_url')
             article.parent_url = self.request.get('parent_url')
             article.content = self.request.get('content')
             article.article_set = self.request.get('article_set')
             article.format = self.request.get('format')
             if article.format not in CONTENT_FORMATS:
                 article.format = site_default_format
             if article.format == 'markdown':
                 article.content_formatted = markdown.markdown(
                     article.content)
             if (self.request.get('is_page') == 'True'):
                 article.is_page = True
             else:
                 article.is_page = False
             if (self.request.get('is_for_sidebar') == 'True'):
                 article.is_for_sidebar = True
             else:
                 article.is_for_sidebar = False
             article.put()
             self.session[
                 'message'] = '<div style="float: right;"><a href="http://' + site_domain + '/' + article.title_url + '" target="_blank" class="super normal button">View Now</a></div>New article <a href="/writer/edit/' + str(
                     article.key(
                     )) + '">' + article.title + '</a> has been created'
             # Ping Twitter
             twitter_sync = Datum.get('twitter_sync')
             if twitter_sync == 'True' and article.is_page is False:
                 twitter_account = Datum.get('twitter_account')
                 twitter_password = Datum.get('twitter_password')
                 if twitter_account != '' and twitter_password != '':
                     api = twitter.Api(username=twitter_account,
                                       password=twitter_password)
                     try:
                         status = api.PostUpdate(
                             article.title + ' http://' + site_domain_sync +
                             '/' + article.title_url +
                             ' (Sync via @projectpicky)')
                     except:
                         api = None
         obsolete = [
             'archive', 'archive_output', 'feed_output', 'index',
             'index_output', 'writer_articles', 'writer_urls'
         ]
         memcache.delete_multi(obsolete)
         Datum.set('site_updated',
                   time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime()))
         # Ping Google Blog Search
         if site_domain.find('localhost') == -1:
             try:
                 google_ping = 'http://blogsearch.google.com/ping?name=' + urllib.quote(
                     Datum.get(
                         'site_name')) + '&url=http://' + urllib.quote(
                             Datum.get('site_domain')
                         ) + '/&changesURL=http://' + urllib.quote(
                             Datum.get('site_domain')) + '/sitemap.xml'
                 result = urlfetch.fetch(google_ping)
             except:
                 taskqueue.add(url='/writer/ping')
         self.redirect('/writer/overview?page=' + str(page))
     else:
         article = Article()
         article.title = self.request.get('title')
         article.title_link = self.request.get('title_link')
         article.title_url = self.request.get('title_url')
         article.content = self.request.get('content')
         article.article_set = self.request.get('article_set')
         article.format = self.request.get('format')
         if article.format not in CONTENT_FORMATS:
             article.format = site_default_format
         if (self.request.get('is_page') == 'True'):
             article.is_page = True
         else:
             article.is_page = False
         if (self.request.get('is_for_sidebar') == 'True'):
             article.is_for_sidebar = True
         else:
             article.is_for_sidebar = False
         template_values = {
             'site_default_format': site_default_format,
             'article': article,
             'page_mode': 'new',
             'page_title': 'New Article',
             'page_reminder': reminder.writer_write,
             'message': message.content_empty,
             'user_email': user.email(),
             'page': page
         }
         if site_analytics is not None:
             template_values['site_analytics'] = site_analytics
         template_values['system_version'] = VERSION
         path = os.path.join(os.path.dirname(__file__), 'tpl', 'writer',
                             'write.html')
         self.response.out.write(template.render(path, template_values))
Пример #6
0
 def get(self):
     self.session = Session()
     if CheckAuth(self) is False:
         return DoAuth(self, '/writer/overview')
     site_domain = Datum.get('site_domain')
     site_domain_sync = Datum.get('site_domain_sync')
     site_name = Datum.get('site_name')
     site_author = Datum.get('site_author')
     site_slogan = Datum.get('site_slogan')
     site_analytics = Datum.get('site_analytics')
     if site_domain is None:
         site_domain = os.environ['HTTP_HOST']
         Datum.set('site_domain', os.environ['HTTP_HOST'])
     if site_domain_sync is None:
         site_domain_sync = os.environ['HTTP_HOST']
         Datum.set('site_domain_sync', os.environ['HTTP_HOST'])
     articles = memcache.get('writer_articles')
     if articles is None:
         articles = Article.all().order('-created')
         memcache.set('writer_articles', articles, 86400)
     paginator = ObjectPaginator(articles, PAGE_SIZE)
     try:
         page = int(self.request.get('page', 0))
         articles = paginator.get_page(page)
     except InvalidPage:
         articles = paginator.get_page(int(paginator.pages - 1))
     if paginator.pages > 1:
         is_paginated = True
     else:
         is_paginated = False
     if site_domain is None or site_name is None or site_author is None:
         site_configured = False
     else:
         site_configured = True
     if is_paginated:
         self.session['page'] = page
     urls = memcache.get('writer_urls')
     if urls is None:
         everything = Article.all().order('-title_url')
         urls = []
         for article in everything:
             urls.append(article.title_url)
         memcache.set('writer_urls', urls, 86400)
     template_values = {
         'site_configured': site_configured,
         'is_paginated': is_paginated,
         'page_size': PAGE_SIZE,
         'page_has_next': paginator.has_next_page(page),
         'page_has_previous': paginator.has_previous_page(page),
         'page': page,
         'next': page + 1,
         'previous': page - 1,
         'pages': paginator.pages,
         'articles': articles,
         'articles_total': len(articles),
         'page_range': range(0, paginator.pages),
         'urls': urls
     }
     if site_analytics is not None:
         template_values['site_analytics'] = site_analytics
     if site_domain_sync is None:
         q = site_domain
     else:
         q = site_domain + ' OR ' + site_domain_sync
     mentions_web = memcache.get('mentions_web')
     if mentions_web is None:
         try:
             mentions_web = feedparser.parse(
                 'http://blogsearch.google.com/blogsearch_feeds?hl=en&q=' +
                 urllib.quote('link:' + Datum.get('site_domain')) +
                 '&ie=utf-8&num=10&output=atom')
             memcache.add('mentions_web', mentions_web, 600)
         except:
             mentions_web = None
     if mentions_web is not None:
         template_values['mentions_web'] = mentions_web.entries
     mentions_twitter = memcache.get('mentions_twitter')
     if mentions_twitter is None:
         try:
             result = urlfetch.fetch(TWITTER_API_ROOT + 'search.json?q=' +
                                     urllib.quote(q))
             if result.status_code == 200:
                 mentions_twitter = simplejson.loads(result.content)
                 memcache.add('mentions_twitter', mentions_twitter, 600)
         except:
             mentions_twitter = None
     if mentions_twitter is not None:
         if len(mentions_twitter['results']) > 0:
             template_values['mentions_twitter'] = mentions_twitter[
                 'results']
     template_values['system_version'] = VERSION
     if 'message' in self.session:
         template_values['message'] = self.session['message']
         del self.session['message']
     path = os.path.join(os.path.dirname(__file__), 'tpl', 'writer',
                         'overview.html')
     self.response.out.write(template.render(path, template_values))
Пример #7
0
 def post(self, key = ''):
   self.session = Session()
   if CheckAuth(self) is False:
     return DoAuth(self, '/writer')
   site_domain = Datum.get('site_domain')
   site_domain_sync = Datum.get('site_domain_sync')
   site_name = Datum.get('site_name')
   site_author = Datum.get('site_author')
   site_slogan = Datum.get('site_slogan')
   site_analytics = Datum.get('site_analytics')
   site_default_format = Datum.get('site_default_format')
   if 'page' in self.session:
     page = self.session['page']
   else:
     page = 0
   site_default_format = Datum.get('site_default_format')
   if (self.request.get('content') != ''):
     if (key):
       article = db.get(db.Key(key))
       article.title = self.request.get('title')
       article.title_link = self.request.get('title_link')
       article.title_url = self.request.get('title_url')
       article.parent_url = self.request.get('parent_url')
       article.content = self.request.get('content')
       article.article_set = self.request.get('article_set')
       article.format = self.request.get('format')
       if article.format not in CONTENT_FORMATS:
         article.format = site_default_format
       if article.format == 'markdown':
         article.content_formatted = markdown.markdown(article.content)
       if (self.request.get('is_page') == 'True'):
         article.is_page = True
       else:
         article.is_page = False
       if (self.request.get('is_for_sidebar') == 'True'):
         article.is_for_sidebar = True
       else:
         article.is_for_sidebar = False
       article.put()
       self.session['message'] = '<div style="float: right;"><a href="http://' + site_domain + '/' + article.title_url + '" target="_blank" class="super normal button">View Now</a></div>Changes has been saved into <a href="/writer/edit/' + key + '">' + article.title + '</a>'
     else:
       article = Article()
       article.title = self.request.get('title')
       article.title_link = self.request.get('title_link')
       article.title_url = self.request.get('title_url')
       article.parent_url = self.request.get('parent_url')
       article.content = self.request.get('content')
       article.article_set = self.request.get('article_set')
       article.format = self.request.get('format')
       if article.format not in CONTENT_FORMATS:
         article.format = site_default_format
       if article.format == 'markdown':
         article.content_formatted = markdown.markdown(article.content)
       if (self.request.get('is_page') == 'True'):
         article.is_page = True
       else:
         article.is_page = False
       if (self.request.get('is_for_sidebar') == 'True'):
         article.is_for_sidebar = True
       else:
         article.is_for_sidebar = False
       article.put()
       self.session['message'] = '<div style="float: right;"><a href="http://' + site_domain + '/' + article.title_url + '" target="_blank" class="super normal button">View Now</a></div>New article <a href="/writer/edit/' + str(article.key()) + '">' + article.title + '</a> has been created'
       # Ping Twitter
       twitter_sync = Datum.get('twitter_sync')
       if twitter_sync == 'True' and article.is_page is False:  
         twitter_account = Datum.get('twitter_account')
         twitter_password = Datum.get('twitter_password')
         if twitter_account != '' and twitter_password != '':
           api = twitter.Api(username=twitter_account, password=twitter_password)
           try:
             status = api.PostUpdate(article.title + ' http://' + site_domain_sync + '/' + article.title_url + ' (Sync via @projectpicky)')
           except:
             api = None
     obsolete = ['archive', 'archive_output', 'feed_output', 'index', 'index_output', 'writer_articles', 'writer_urls']
     memcache.delete_multi(obsolete)
     Datum.set('site_updated', time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime()))
     # Ping Google Blog Search
     if site_domain.find('localhost') == -1:
       try:
         google_ping = 'http://blogsearch.google.com/ping?name=' + urllib.quote(Datum.get('site_name')) + '&url=http://' + urllib.quote(Datum.get('site_domain')) + '/&changesURL=http://' + urllib.quote(Datum.get('site_domain')) + '/sitemap.xml'
         result = urlfetch.fetch(google_ping)
       except:
         taskqueue.add(url='/writer/ping')
     self.redirect('/writer/overview?page=' + str(page))
   else:
     article = Article()
     article.title = self.request.get('title')
     article.title_link = self.request.get('title_link')
     article.title_url = self.request.get('title_url')
     article.content = self.request.get('content')
     article.article_set = self.request.get('article_set')
     article.format = self.request.get('format')
     if article.format not in CONTENT_FORMATS:
       article.format = site_default_format
     if (self.request.get('is_page') == 'True'):
       article.is_page = True
     else:
       article.is_page = False
     if (self.request.get('is_for_sidebar') == 'True'):
       article.is_for_sidebar = True
     else:
       article.is_for_sidebar = False
     template_values = {
       'site_default_format' : site_default_format,
       'article' : article,
       'page_mode' : 'new',
       'page_title' : 'New Article',
       'page_reminder': reminder.writer_write,
       'message' : message.content_empty,
       'user_email' : user.email(),
       'page' : page
     }
     if site_analytics is not None:
       template_values['site_analytics'] = site_analytics
     template_values['system_version'] = VERSION
     path = os.path.join(os.path.dirname(__file__), 'tpl', 'writer', 'write.html')
     self.response.out.write(template.render(path, template_values))