Exemplo n.º 1
0
	def get(self):
		urls = []
		host = 'http://blog-pj.appspot.com'

		urls.append(Url(host + '/archive', 'monthly', '1.00')) 
		urls.append(Url(host + '/guestbook', 'monthly', '1.00')) 
		urls.append(Url(host + '/about', 'monthly', '1.00')) 
		urls.append(Url(host + '/feed', 'monthly', '1.00')) 

		cats = Category.all()
		for cat in cats:
			urls.append(Url(host + '/category/' + cat.name, 'monthly', '0.8'))
		urls.append(Url(host + '/category/unsorted', 'monthly', '0.8'))

		tags = Tag.all()
		for tag in tags:
			urls.append(Url(host + '/tag/' + tag.name, 'monthly', '0.8'))

		arcs = Archive.all()
		for arc in arcs:
			urls.append(Url(host + '/date/' + str(arc.year) + \
				                   '/' + str(arc.month), 'monthly', '0.8'))

		arts = Article.all()
		for art in arts:
			urls.append(Url(host + '/article/' + art.permalink, 'monthly', '0.6'))

		template_values = {
			'urls': urls
		}

		path = os.path.join(os.path.dirname(__file__), 'sitemap.xml')
		self.response.out.write(template.render(path, template_values))
Exemplo n.º 2
0
	def get(self):
		try:
			pageno = int(self.request.get('pageno'))
		except ValueError:
			pageno = 1

		query = Article.all().order('-time_stamp')
		group = query.fetch(1000)

		article_list = []
		pagei = 0
		start = 0
		length = len(group)

		while group != [] and article_list == []:
			# Pick out each page
			while start + self.msg_per_page - 1 < length:
				pagei = pagei + 1
				if pagei == pageno:
					article_list = group[start : start + self.msg_per_page]
				start = start + self.msg_per_page
			if len(group[start : start + self.msg_per_page]) > 0:
				pagei = pagei + 1
				if pagei == pageno:
					article_list = group[start : start + self.msg_per_page]

			last_time = group[-1].time_stamp
			query.filter('time_stamp <', last_time)
			group = query.fetch(1000)

		show_left_arrow = 1 if pageno > 1 else 0
		show_right_arrow = 1 if pageno < pagei else 0
		show_left_dot = 1 if pageno >= 5 else 0
		show_right_dot = 1 if pageno <= pagei - 4 else 0

		pageno_list = [i for i in range(max(1, pageno - 3), min(pagei + 1, pageno + 4))]

		template_values = {
			'articles': article_list,
			'page_current': pageno,
			'page_total': pagei,
			'pageno_list': pageno_list,
			'show_left_arrow': show_left_arrow,
			'show_right_arrow': show_right_arrow,
			'show_left_dot': show_left_dot,
			'show_right_dot': show_right_dot,
			'colno': len(pageno_list) + show_left_arrow + show_right_arrow + 
			                           show_left_dot + show_right_dot,
			'page_prev': max(1, pageno - 1),
			'page_next': min(pagei, pageno + 1),

			'logout_url': users.create_logout_url('/'),
			'page_name': 'articlesAdmin'
		}

		path = os.path.join(os.path.dirname(__file__), 'pages/articlesAdmin.html')
		self.response.headers['Content-Type'] = 'text/html;charset=utf-8'
		self.response.out.write(template.render(path, template_values))
Exemplo n.º 3
0
	def post(self):
		method = self.request.get('method')
		pageno = self.request.get('articleCurrentPage')
		if method == 'delete':
			id_list = self.request.get('articleId').split('$')

			for id in id_list:
				victim = Article.all().filter('id =', id).get()
				if victim.has_category:
					victim.category.count = victim.category.count - 1
					victim.category.put()

				for tag in victim.tags():
					delete_tag(victim, tag)

				for cmt in victim.comments:
					cmt.delete()

				delete_archive(victim.archive)

				if victim.link_prev != '':
					prev_article = Article.all().filter('permalink =', victim.link_prev).get()
					prev_article.link_next = victim.link_next
					prev_article.year_next = victim.year_next
					prev_article.month_next = victim.month_next
					prev_article.day_next = victim.day_next
					prev_article.title_next = victim.title_next
					prev_article.put()

				if victim.link_next != '':
					next_article = Article.all().filter('permalink =', victim.link_next).get()
					next_article.link_prev = victim.link_prev
					next_article.year_prev = victim.year_prev
					next_article.month_prev = victim.month_prev
					next_article.day_prev = victim.day_prev
					next_article.title_prev = victim.title_prev
					next_article.put()

				victim.delete()

			self.redirect('/atf-articles?pageno=' + pageno)
		else:
			self.redirect('/atf-writenew?id=' + self.request.get('articleId'))
Exemplo n.º 4
0
	def get(self):
		articles = Article.all().order('-time_stamp')

		item_list = []
		for article in articles:
			item_list.append(article)

		template_values = {
			'latest_time_stamp': item_list[0].time_stamp if item_list != [] else '',
			'articles': item_list
		}
		path = os.path.join(os.path.dirname(__file__), 'pages/rss.xml')
		self.response.out.write(template.render(path, template_values))
Exemplo n.º 5
0
	def post(self):
		challenge = self.request.get('recaptcha_challenge_field')
		response = self.request.get('recaptcha_response_field')
		remoteip = environ['REMOTE_ADDR']

		cResponse = captcha.submit(challenge, response,
			'6LfrwroSAAAAADfwZ2WtvUV0zdbyV3BzAfRTzaDr',
			remoteip)

		# Create a new comment
		message = Comment()
		message.nickname = self.request.get('nickname')
		message.email = self.request.get('email')
		message.gravatar = get_gravatar_url(message.email.encode('utf-8'))
		message.website = self.request.get('website')
		message.msg = self.request.get('msg')
		message.ref_msg = self.request.get('refMsg')
		message.ref_name = self.request.get('refName')

		id = self.request.get('id')
		message.article = Article.all().filter('id =', id).get()

		show_cancel = self.request.get('cancel')
		msgid = 0 if self.request.get('msgId') == '' else int(self.request.get('msgId'))

		if cResponse.is_valid:
			rep = re.compile('^http://', re.IGNORECASE)		
			message.website = re.sub(rep, '', message.website)

			# Escape the content
			message.msg = escape_str(message.msg)
			message.escaped_msg = message.msg.replace('\\', '\\\\')
			message.ref_msg = escape_str(message.ref_msg)
			message.put()
			self.redirect('/article/' + message.article.permalink)
		else:
			self.captcha_error = 'Please try again'
			self.save_nickname = message.nickname
			self.save_email = message.email
			self.save_website = message.website
			self.save_msg = message.msg
			self.save_ref = message.ref_msg
			self.save_refname = message.ref_name
			self.save_showcancel = show_cancel
			self.save_msgid = msgid
			self.get()
Exemplo n.º 6
0
	def get(self):
		id = self.request.get('id')
		cats = get_all_categories()
		path = os.path.join(os.path.dirname(__file__), 'pages/writeNew.html')

		if id == '':
			id = 'new'

		if id == 'new':
			template_values = {
				'logout_url': users.create_logout_url('/'),
				'page_name': 'writeNew',
				'cats': cats,

				'save_title': self.save_title, 
				'save_content': self.save_content,
				'save_permalink': self.save_permalink,
				'save_permit_comment': self.save_permit_comment,
				'save_category': self.save_category,
				'save_tags': self.save_tags
			}
		else:
			article = Article.all().filter('id =', id).get()
			rep = re.compile(r'[\r\f\v]')
			template_values = {
				'article': article,
				'old_tags': ' '.join(art.name for art in article.tags()),
				'html': re.sub(rep, '', article.content.replace('\\', '\\\\').replace('\"', '\\"').replace('\'', '\\\'').replace('\n', '\\n')),
				'logout_url': users.create_logout_url('/'),
				'page_name': 'editOld',
				'cats': cats,

				'save_title': self.save_title, 
				'save_content': self.save_content,
				'save_permalink': self.save_permalink,
				'save_permit_comment': self.save_permit_comment,
				'save_category': self.save_category,
				'save_tags': self.save_tags
			}
		self.response.out.write(template.render(path, template_values))
Exemplo n.º 7
0
	def post(self):
		content = self.request.get('content')
		method = self.request.get('method')

		if method == 'preview':
			self.do_preview(self, content)

		elif method == 'publish':
			link = self.request.get('permalink')
			target = db.GqlQuery('''select * from Article where permalink = :1''', link).get()
			if target != None:
				self.save_title = self.request.get('thetitle')
				self.save_content = content
				self.save_permalink = link
				self.save_permit_comment = self.request.get('permitComment')
				self.save_category = self.request.get('cat')
				self.save_tags = self.request.get('tags')
				self.get()
			else:
				article = Article()
				article.thetitle = self.request.get('thetitle')
				article.content = content
				article.thumbnail = self.request.get('thumbnail')
				article.permalink = self.request.get('permalink')
				article.permit_comment = True if self.request.get('permitComment') == 'permit' else False

				cat = self.request.get('cat')
				if cat == 'unsorted':
					article.has_category = False
				else:
					article.has_category = True
					cat_item = Category.all().filter('name = ', cat).get()
					article.category = cat_item
					cat_item.count = cat_item.count + 1
					cat_item.put()

				mod_archive(article)

				article.year = article.time_stamp.year
				article.month = article.time_stamp.month
				article.day = article.time_stamp.day

				article.id = str(article.time_stamp.year) + '-' + str(article.time_stamp.month) + '-' + str(article.time_stamp.day) + '-' + \
				             str(article.time_stamp.hour) + '-' + str(article.time_stamp.minute) + '-' + str(article.time_stamp.second) + '-' + \
							 str(article.time_stamp.microsecond)

				query = Article.all().order('-time_stamp').fetch(1)
				record = None if query == [] else query[0]

				if record != None:
					record.link_next = article.permalink
					record.year_next = article.year
					record.month_next = article.month
					record.day_next = article.day
					record.title_next = article.thetitle
					record.put()

					article.link_prev = record.permalink
					article.year_prev = record.year
					article.month_prev = record.month
					article.day_prev = record.day
					article.title_prev = record.thetitle
				else:
					article.link_prev = ''
					article.year_prev = -1
					article.month_prev = -1
					article.day_prev = -1
					article.title_prev = ''

				article.link_next = ''
				article.year_next = -1
				article.month_next = -1
				article.day_next = -1
				article.title_next = ''

				article.put();

				mod_article_tag(article, self.request.get('tags').split(' '), False)

				self.redirect('/atf-articles');

		# Modify an article
		else:
			# Article to be modified
			target = Article.all().filter('id =', self.request.get('articleId')).get()

			link = self.request.get('permalink')
			# If there exists an article with that link name
			suspect = db.GqlQuery('''select * from Article where permalink = :1''', link).get()

			if suspect != None and target.id != suspect.id: 
				self.save_title = self.request.get('thetitle')
				self.save_content = content
				self.save_permalink = link
				self.save_permit_comment = self.request.get('permitComment')
				self.save_category = self.request.get('cat')
				self.save_tags = self.request.get('tags')
				self.get()
			else:
				if target.has_category:
					target.category.count = target.category.count - 1
					target.category.put()

				target.thetitle = self.request.get('thetitle')
				target.content = content
				target.thumbnail = self.request.get('thumbnail')
				target.permalink = self.request.get('permalink')
				target.permit_comment = True if self.request.get('permitComment') == 'permit' else False

				cat = self.request.get('cat')
				if cat == 'unsorted':
					target.category = None
					target.has_category = False
				else:
					target.has_category = True
					target.category = Category.all().filter('name =', self.request.get('cat')).get()
					target.category.count = target.category.count + 1
					target.category.put()
				target.put()
				mod_article_tag(target, self.request.get('tags').split(' '), True)

				self.redirect('/atf-articles');
Exemplo n.º 8
0
	def get(self):
#		arts = Article.all().order('-time_stamp').fetch(100)
#
#		arts[3].link_prev = ''
#		arts[3].year_prev = 0
#		arts[3].month_prev = 0
#		arts[3].day_prev = 0
#		arts[3].title_prev = ''
#		arts[3].link_next = arts[2].permalink
#		arts[3].year_next = arts[2].year
#		arts[3].month_next = arts[2].month
#		arts[3].day_next = arts[2].day
#		arts[3].title_next = arts[2].thetitle
#
#		arts[2].link_prev = arts[3].permalink
#		arts[2].year_prev = arts[3].year
#		arts[2].month_prev = arts[3].month
#		arts[2].day_prev = arts[3].day
#		arts[2].title_prev = arts[3].thetitle
#		arts[2].link_next = arts[1].permalink
#		arts[2].year_next = arts[1].year
#		arts[2].month_next = arts[1].month
#		arts[2].day_next = arts[1].day
#		arts[2].title_next = arts[1].thetitle
#
#		arts[1].link_prev = arts[2].permalink
#		arts[1].year_prev = arts[2].year
#		arts[1].month_prev = arts[2].month
#		arts[1].day_prev = arts[2].day
#		arts[1].title_prev = arts[2].thetitle
#		arts[1].link_next = arts[0].permalink
#		arts[1].year_next = arts[0].year
#		arts[1].month_next = arts[0].month
#		arts[1].day_next = arts[0].day
#		arts[1].title_next = arts[0].thetitle
#
#		arts[0].link_prev = arts[1].permalink
#		arts[0].year_prev = arts[1].year
#		arts[0].month_prev = arts[1].month
#		arts[0].day_prev = arts[1].day
#		arts[0].title_prev = arts[1].thetitle
#		arts[0].link_next = ''
#		arts[0].year_next = 0
#		arts[0].month_next = 0
#		arts[0].day_next = 0
#		arts[0].title_next = ''
#
#		for a in arts:
#			a.put()
#
#		self.redirect('http://www.baidu.com');


		try:
			pageno = int(self.request.path.split('/')[-1])
		except ValueError:
			pageno = 1

		query = Article.all().order('-time_stamp')
		group = query.fetch(1000)

		article_list = []
		pagei = 0
		start = 0
		length = len(group)

		while group != [] and article_list == []:
			while start + self.article_per_page - 1 < length:
				pagei = pagei + 1
				if pagei == pageno:
					article_list = group[start : start + self.article_per_page]
				start = start + self.article_per_page
			if len(group[start : start + self.article_per_page]) > 0:
				pagei = pagei + 1
				if pagei == pageno:
					article_list = group[start : start + self.article_per_page]

			last_time = group[-1].time_stamp
			query.filter('time_stamp <', last_time)
			group = query.fetch(1000)

		show_left_arrow = 1 if pageno > 1 else 0
		show_right_arrow = 1 if pageno < pagei else 0
		show_left_dot = 1 if pageno >= 5 else 0
		show_right_dot = 1 if pageno <= pagei - 4 else 0

		pageno_list = [i for i in range(max(1, pageno - 3), min(pagei + 1, pageno + 4))]

		template_values = {
			'articles': article_list,
			'pagename': 'articles',
			'page_current': pageno,
			'page_total': pagei,
			'pageno_list': pageno_list,
			'show_left_arrow': show_left_arrow,
			'show_right_arrow': show_right_arrow,
			'show_left_dot': show_left_dot,
			'show_right_dot': show_right_dot,
			'page_prev': max(1, pageno - 1),
			'page_next': min(pagei, pageno + 1),
			'categories': get_all_categories(),
			'tags': get_all_tags(),
			'unsorted_count': count_unsorted(),
		}

		path = os.path.join(os.path.dirname(__file__), 'pages/articles.html')
		self.response.headers['Content-Type'] = 'text/html;charset=utf-8'
		self.response.out.write(template.render(path, template_values))
Exemplo n.º 9
0
	def get(self):
		temp = self.request.path.split('/')
		key = temp[1]

		try:
			pageno = int(temp[-1])
		except ValueError:
			pageno = 1

		if key == 'category':
			if len(temp) == 4 or len(temp) > 3 and temp[3] != 'page':
				path = os.path.join(os.path.dirname(__file__), 'pages/error.html')
				self.response.out.write(template.render(path, None))
				return

			name = unicode(urllib.unquote(temp[2]), 'utf-8')
			if name == 'unsorted':
				query = Article.all().filter('has_category =', False).order('-time_stamp')
			else:
				query = Category.all().filter('name =', name)
				if query.get() != None:
					query = query.get().articles.order('-time_stamp')

		elif key == 'tag':
			if len(temp) == 4 or len(temp) > 3 and temp[3] != 'page':
				path = os.path.join(os.path.dirname(__file__), 'pages/error.html')
				self.response.out.write(template.render(path, None))
				return

			name = unicode(urllib.unquote(temp[2]), 'utf-8')
			query = Tag.all().filter('name =', name)
			if query.get() != None:
				query = query.get().ref_tag.order('-time_stamp')

		else:
			year = int(temp[2])
			month = int(temp[3])
			pageno = 1
			if len(temp) > 4:
				try:
					pageno = int(temp[-1])
				except ValueError:
					pageno = 1

			name = str(year) + '/' + str(month)
			query = db.GqlQuery('select * from Archive where year = :1 and month = :2',
								 year, month)
			if query.get() != None:
				query = query.get().articles.order('-time_stamp')
			

		group = query.fetch(1000)

		article_list = []
		pagei = 0
		start = 0
		length = len(group)

		while group != [] and article_list == []:
			# Pick out each page
			while start + self.article_per_page - 1 < length:
				pagei = pagei + 1
				if pagei == pageno:
					article_list = group[start : start + self.article_per_page]
				start = start + self.article_per_page
			if len(group[start : start + self.article_per_page]) > 0:
				pagei = pagei + 1
				if pagei == pageno:
					article_list = group[start : start + self.article_per_page]

			last_time = group[-1].time_stamp
			query.filter('time_stamp <', last_time)
			group = query.fetch(1000)

		show_left_arrow = 1 if pageno > 1 else 0
		show_right_arrow = 1 if pageno < pagei else 0
		show_left_dot = 1 if pageno >= 5 else 0
		show_right_dot = 1 if pageno <= pagei - 4 else 0

		pageno_list = [i for i in range(max(1, pageno - 3), min(pagei + 1, pageno + 4))]

		if key == 'tag':
			article_set = []
			for item in article_list:
				article_set.append(item.article)

		template_values = {
			'articles': article_list if key != 'tag' else article_set,
			'pagename': 'articles',
			'page_current': pageno,
			'page_total': pagei,
			'pageno_list': pageno_list,
			'show_left_arrow': show_left_arrow,
			'show_right_arrow': show_right_arrow,
			'show_left_dot': show_left_dot,
			'show_right_dot': show_right_dot,
			'colno': len(pageno_list) + show_left_arrow + show_right_arrow + 
			                           show_left_dot + show_right_dot,
			'page_prev': max(1, pageno - 1),
			'page_next': min(pagei, pageno + 1),
			'categories': get_all_categories(),
			'tags': get_all_tags(),
			'name': name,
			'key': key,
			'unsorted_count': count_unsorted(),
		}

		path = os.path.join(os.path.dirname(__file__), 'pages/articles.html')
		self.response.headers['Content-Type'] = 'text/html;charset=utf-8'
		self.response.out.write(template.render(path, template_values))