Beispiel #1
0
 def get(self,entrytype,blogId):
     blog = Weblog.get_by_id(int(blogId))
     template_values = {
     'blog': blog,
     'action': "deleteBlog",
     }
     self.generate('blog_delete.html',template_values)
Beispiel #2
0
 def get(self):
       pages = Weblog.all().filter('entrytype','page').order('-date')
       #menus = Menu.all().order('order')
       template_values = {
           'pages':pages,
          # 'menus':menus,
         }
       self.generate('admin/admin_pages.html',template_values)
Beispiel #3
0
 def get(self,tags=None):
     blogs = Weblog.all().filter('entrytype =','post').order('-date').fetch(10)
     last_updated = datetime.datetime.now()
     if blogs and blogs[0]:
         last_updated = blogs[0].date
         last_updated = last_updated.strftime("%Y-%m-%dT%H:%M:%SZ")
     for blog in blogs:
         blog.formatted_date = blog.date.strftime("%Y-%m-%dT%H:%M:%SZ")
     self.response.headers['Content-Type'] = 'application/atom+xml'
     self.generate('atom.xml',{'blogs':blogs,'last_updated':last_updated})
Beispiel #4
0
 def post(self,entrytype,blogId):
   blog= Weblog.get_by_id(int(blogId))
   if(blog is not None):
       blogReactions = blog.weblogreactions_set
       for reaction in blogReactions:
           reaction.delete()
       blog.delete()
       util.flushBlogMonthCache(blog)
       util.flushBlogPagesCache()
   self.redirect('/')
Beispiel #5
0
  def post(self):
    blogId_ = self.request.get('blogId')
    blog= Weblog.get_by_id(int(blogId_))
    if(blog is None):
      self.redirect('/')
      return
    blogReaction = WeblogReactions()
    blogReaction.weblog = blog
    blogReaction.content = self.request.get('text_input')
    blogReaction.authorWebsite = self.request.get('website')
    blogReaction.authorEmail = self.request.get('mail')
    blogReaction.user = self.request.get('name_input')

    cpedialog = util.getCPedialog()
    clientIp = self.request.remote_addr
    if(cpedialog.recaptcha_enable):
        challenge = self.request.get('recaptcha_challenge_field')
        response  = self.request.get('recaptcha_response_field')
        cResponse = captcha.submit(
                       challenge,
                       response,
                       cpedialog.recaptcha_private_key,
                       clientIp)
        if not cResponse.is_valid:
            captchahtml = None
            captchahtml = captcha.displayhtml(
                    public_key = cpedialog.recaptcha_public_key,
                    use_ssl = False,
                    error = cResponse.error_code)
            reactions = db.GqlQuery("select * from WeblogReactions where weblog =:1  order by date", blog)
            template_values = {
              'blog': blog,
              'reactions': reactions,
              'blogReaction': blogReaction,
              'captchahtml': captchahtml,
              }
            self.generate('blog_view.html',template_values)
            return True

    user = users.get_current_user()
    # [Add] not login is no add reaction
    if not user:
        self.redirect('/'+blog.relative_permalink())
        return

    if user is not None:
        blogReaction.author = user
        blogReaction.authorEmail = str(user.email())
        blogReaction.user = str(user.nickname())
    blogReaction.userIp = clientIp
    blogReaction.save()
    util.flushRecentReactions()
    self.redirect('/'+blog.relative_permalink())
    return
Beispiel #6
0
 def get(self, encoded_tag):
     #tag =  re.sub('(%25|%)(\d\d)', lambda cmatch: chr(string.atoi(cmatch.group(2), 16)), encoded_tag)   # No urllib.unquote in AppEngine?
     #tag =  urllib.unquote(encoded_tag.encode('utf8'))
     tag = encoded_tag
     blogs = Weblog.all().filter('tags', tag).order('-date')
     recentReactions = util.getRecentReactions()
     template_values = {
       'blogs':blogs,
       'tag':tag,
       'recentReactions':recentReactions,
       }
     self.generate('tag.html',template_values)
Beispiel #7
0
 def RefreshTag(self,request):
     tag = Tag.get_by_id(int(request.get("id")))
     query_weblog = Weblog.all().filter('tags', tag.tag)
     if query_weblog:
         tag.entrycount = query_weblog.count()
         tag.put()
     tagJson = {}    
     tagJson["id"] =  str(tag.key().id())
     tagJson["key"] = str(tag.key())
     tagJson["tag"] = str(tag.tag)
     tagJson["entrycount"] = tag.entrycount
     tagJson["valid"] = tag.valid
     return tagJson
Beispiel #8
0
def getRecentFeatured():
    key_ = "blog_recentFeatured_key"
    try:
        recentFeatured = memcache.get(key_)
    except Exception:
        recentFeatured = None
    if recentFeatured is None:
        recentFeatured = Weblog.all().filter('tags', "featured").order('-date').fetch(10)
        memcache.add(key=key_, value=recentFeatured, time=3600)
    else:
        getLogger(__name__).debug("getRecentFeatured from cache. ")

    return recentFeatured
Beispiel #9
0
 def post(self,entrytype,blogId):
     blog= Weblog.get_by_id(int(blogId))
     if(blog is None):
         self.redirect('/')
     if blog.entrytype == 'page':
         blog.permalink = self.request.get('permalink') 
     blog.title = self.request.get('title_input')
     blog.content = self.request.get('text_input')
     blog.tags_commas = self.request.get('tags')
     user = users.get_current_user()
     blog.lastModifiedDate = datetime.datetime.now()
     blog.lastModifiedBy = user
     blog.update()
     util.flushBlogMonthCache(blog)
     util.flushBlogPagesCache()
     self.redirect('/'+blog.relative_permalink())
Beispiel #10
0
def getBlogPagination(page):
    key_ = "blog_pages_key"
    try:
        obj_pages = memcache.get(key_)
    except Exception:
        obj_pages = None
    if obj_pages is None or page not in obj_pages:
        blogs_query = Weblog.gql('WHERE entrytype=:1 ORDER BY date desc','post')
        try:
            cpedialog = getCPedialog()
            obj_page  =  GqlQueryPaginator(blogs_query,page,cpedialog.num_post_per_page).page()
            if obj_pages is None:
                obj_pages = {}
            obj_pages[page] = obj_page
            memcache.add(key=key_, value=obj_pages, time=3600)
        except InvalidPage:
            return None
    else:
        logging.debug("getBlogPagination from cache. ")

    return obj_pages[page]
Beispiel #11
0
def getBlogPagination(page):
    key_ = "blog_pages_key"
    try:
        obj_pages = memcache.get(key_)
    except Exception:
        obj_pages = None
    if obj_pages is None or page not in obj_pages:
        blogs_query = Weblog.gql('WHERE entrytype=:1 ORDER BY date desc','post')
        try:
            cpedialog = getCPedialog()
            #todo:get blog count from the Counter object
            obj_page  =  YUIPaginator(blogs_query,page,cpedialog.num_post_per_page)
            if obj_pages is None:
                obj_pages = {}
            obj_pages[page] = obj_page
            memcache.add(key=key_, value=obj_pages, time=3600)
        except InvalidPage:
            return None
    else:
        getLogger(__name__).debug("getBlogPagination from cache. ")

    return obj_pages[page]
Beispiel #12
0
 def get(self):
     blogs = Weblog.all().order('-date')
     template_values = {
       'allblogs': blogs,
       }
     self.generate('site_map.html',template_values)
Beispiel #13
0
 def post(self,entrytype):
   preview = self.request.get('preview')
   submitted = self.request.get('submitted')
   user = users.get_current_user()
   blog = Weblog()
   blog.title = self.request.get('title_input')
   blog.content = self.request.get('text_input')
   blog.author = user
   blog.authorEmail = user.email()
   blog.tags_commas = self.request.get('tags')
   if entrytype == 'page':
       blog.entrytype = entrytype
   template_values = {
     'entrytype': entrytype,
     'blog': blog,
     'preview': preview,
     'submitted': submitted,
     'action': "addBlog",
     'tags': self.request.get('tags'),
     }
   if preview == '1' and submitted !='1':
       self.generate('blog_add.html',template_values)
   else:
     if submitted =='1':
       try:
           permalink =  util.get_permalink(blog.date,translate.translate(util.u(blog.title,'utf-8')))
           if not permalink:
               raise Exception
       except Exception:
           template_values.update({'error':'Generate permanent link for blog error, please retry it.'})
           self.generate('blog_add.html',template_values)
           return
       #check the permalink duplication problem.
       maxpermalinkBlog = db.GqlQuery("select * from Weblog where permalink >= :1 and permalink < :2 order by permalink desc",permalink, permalink+u"\xEF\xBF\xBD").get()
       if maxpermalinkBlog is not None:
           permalink = maxpermalinkBlog.permalink+"1"
       blog.permalink =  permalink
       blog.save()
       util.flushBlogMonthCache(blog)
       util.flushBlogPagesCache()
       util.flushTagList()
       util.flushRecentFeatured()
       self.redirect('/'+blog.relative_permalink())
       return
Beispiel #14
0
 def get(self):
     pages = Weblog.all().filter("entrytype", "page").order("-date")
     menus = Menu.all().order("order")
     template_values = {"pages": pages, "menus": menus}
     self.generate("admin/admin_pages.html", template_values)