Пример #1
0
    def post(self):
        bbs = None
        try:
            bbs = db.get(self.request.get("bbs_key"))
        except:
            bbs = None

        if bbs == None:
            self.response.out.write(Alert.alert_msg("削除対象が見つかりません。", self.request.host))
            return

        user = users.get_current_user()
        if not user:
            self.response.out.write(Alert.alert_msg("ログインする必要があります。", self.request.host))
            return

        is_admin = OwnerCheck.is_admin(user)
        if OwnerCheck.check(bbs, user) and (not is_admin):
            self.response.out.write(Alert.alert_msg("削除する権限がありません。", self.request.host))
            return

        bbs.del_flag = 1
        bbs.put()

        ApiFeed.invalidate_cache()

        self.redirect(str("./mypage?tab=bbs"))
Пример #2
0
	def del_message_list(self,user):
		if(self.request.get("user_id")!=user.user_id()):
			self.response.out.write(Alert.alert_msg("認証に失敗しました。",self.request.host));
			return False

		bookmark=ApiObject.get_bookmark_of_user_id_for_write(user.user_id())
		if(bookmark==None):
			self.response.out.write(Alert.alert_msg("ユーザデータが見つかりません。",self.request.host));
			return False

		tweet_list=self.request.get_all("tweet_list")

		if(not tweet_list or len(tweet_list)==0):
			self.response.out.write(Alert.alert_msg("削除するツイートが選択されていません。",self.request.host));
			return False			

		for tweet in tweet_list:
			self.del_from_bookmark(bookmark,tweet)

			try:
				data=db.get(tweet)
			except:
				data=None
			if(data):
				if(data.from_user_id==user.user_id()):
					data.delete()

		bookmark.put()
		return True
Пример #3
0
	def check_id_available(main,app_id):
		if(app_id=="" or MappingId.key_format_check(app_id)):
			main.response.out.write(Alert.alert_msg("アプリIDは半角英数である必要があります。",main.request.host))
			return False
		query=AppCode.all().filter("app_id =",app_id)
		if(query.count()==0):
			return True
		main.response.out.write(Alert.alert_msg("このアプリIDは既に使われています。",main.request.host))
		return False
Пример #4
0
	def set_css(main,css,bbs):
		if(css):
			if(css!=""):
				app=AppPortal.get_app(css)
				if(app==None):
					main.response.out.write(Alert.alert_msg("CSSデザインが見つかりません。",main.request.host))
					return False
				if(app.mode!=BbsConst.APP_MODE_CSS):
					main.response.out.write(Alert.alert_msg("CSSデザインではありません。",main.request.host))
					return False
				bbs.css=app
		return True
Пример #5
0
	def get(self):
		SetUtf8.set()

		user = users.get_current_user()
		if(not user):
			self.response.out.write(Alert.alert_msg("ログインしている必要があります。",self.request.host));
			return;

		thread=None
		try:
			thread = db.get(self.request.get("thread_key"))	
		except:
			thread=None
		if(not thread):
			self.response.out.write(Alert.alert_msg("スレッドが見つかりません。",self.request.host));
			return

		mode = self.request.get("mode")
		
		if(not thread.tag_list):
			thread.tag_list=[]
		
		tag=self.request.get("tag")
		
		if(tag==""):
			self.response.out.write(Alert.alert_msg("タグを入力して下さい。",self.request.host));
			return;

		if(mode=="add"):
			if(thread.tag_list.count(tag)>0):
				thread.tag_list.remove(tag)
				thread.tag_list.insert(0,tag)
			else:
				thread.tag_list.insert(0,tag)
				tag_info="[Add Tag] "+tag+" "+str(user.user_id())+" "+user.email()
				thread.tag_last_edit=tag
				thread.tag_last_edit_user_id=str(user.user_id())
				logging.info(tag_info)
		else:
			try:
				thread.tag_list.remove(tag)
			except:
				self.response.out.write(Alert.alert_msg("タグ"+tag+"が見つかりません。",self.request.host));
		thread.put()
		
		bbs=db.get(self.request.get("bbs_key"))
		thread=db.get(self.request.get("thread_key"))

		url=MappingThreadId.get_thread_url("./",bbs,thread)
		self.redirect(str(url))
Пример #6
0
	def get(self):
		try:
			bbs = db.get(self.request.get("bbs_key"))
		except:
			bbs=None
		try:
			thread = db.get(self.request.get("thread_key"))
		except:
			thread=None
		
		if(not bbs or not thread):
			self.response.out.write(Alert.alert_msg("削除対象が見つかりません。",self.request.host))
			return

		is_english=CssDesign.is_english(self)
		
		del_ok=0		
		if(self.request.get("del_key")):
			if(thread.delete_key):
				if(thread.delete_key==self.request.get("del_key")):
					del_ok=1
				else:
					msg="削除キーが一致しません。"
					if(is_english):
						msg="invalid key"
					self.response.out.write(Alert.alert_msg(msg,self.request.host))
					return;
		
		user = users.get_current_user()

		bbs_owner = not OwnerCheck.check(bbs,user)
		thread_owner=False
		if(user and user.user_id()==thread.user_id):
			thread_owner=True
		
		if(del_ok==0):
			if(not bbs_owner and not thread_owner and not OwnerCheck.is_admin(user)):
				self.response.out.write(Alert.alert_msg("削除権限がありません。",self.request.host))
				return

		DelThread.delete_thread_core(thread)

		bbs.cached_thumbnail_key=None
		bbs.put()

		ApiFeed.invalidate_cache()

		url=MappingId.get_usr_url("./",bbs)
		self.redirect(str(url))
Пример #7
0
	def post(self):
		SetUtf8.set()

		page=None
		if(self.request.get("page")):
			page=self.request.get("page")
		
		user = users.get_current_user()
		if(not user):
			if(page=="update"):
				dic={"status":"failed","message":"アプリを登録するにはログインする必要があります。"}
				ApiObject.write_json_core(self,dic)
				return
			else:
				self.response.out.write(Alert.alert_msg("アプリを登録するにはログインする必要があります。",self.request.host))
				return
		
		if(page=="update"):
			dic=DevPortal.update_app(self,user)
			if(dic==None):
				return
			ApiObject.write_json_core(self,dic)
			return
		
		if(page=="submit"):
			if(not DevPortal.add_new_app(self,user)):
				return

		DevPortal.ret(self,"top")
Пример #8
0
	def add_support_forum(main,app):
		if(not app.support_forum and app.is_public):
			thread=MesThread()
			bbs_key=MappingId.mapping(BbsConst.APP_SUPPORT_BBS_ID)
			if(bbs_key==""):
				#return False
				main.response.out.write(Alert.alert_msg("サポートフォーラムBBS[ID:"+BbsConst.APP_SUPPORT_BBS_ID+"]が見つかりません。",main.request.host))
				return True

			bbs=db.get(bbs_key)
			thread.bbs_key=bbs
			thread.title=app.app_name
			thread.author=app.author
			thread.summary=app.app_name+"のサポートフォーラムです。"
			thread.user_id=app.user_id
			thread.illust_mode=BbsConst.ILLUSTMODE_NONE
			thread.create_date=datetime.datetime.today()
			thread.comment_cnt=0
			thread.date=datetime.datetime.today()

			thread.put()
			
			app.support_forum=thread
			app.put()

		#if(not app.support_forum.score):
		#	app.support_forum.score = None
		#	app.support_forum.put()
		
		return False
Пример #9
0
	def get(self):
		bbs = db.get(self.request.get("bbs_key"))
		user = users.get_current_user()
		entry = db.get(self.request.get("entry_key"))

		entry_owner=False
		if(user and user.user_id()==entry.user_id):
			entry_owner=True
		
		bbs_owner=not OwnerCheck.check(bbs,user)

		if(not bbs_owner and not OwnerCheck.is_admin(user) and not entry_owner):
			self.response.out.write(Alert.alert_msg("削除する権限がありません。",self.request.host))
			return
		entry.del_flag = 0
		entry.put()

		thread = db.get(self.request.get("thread_key"))
		thread.comment_cnt=thread.comment_cnt-1
		thread.cached_entry_key=[]
		thread.cached_entry_key_enable=None
		thread.put()

		url=MappingThreadId.get_thread_url("./",bbs,thread)+"?comment_edit=1"
		self.redirect(str(url))

		RecentCommentCache.invalidate(bbs)
Пример #10
0
	def add_new_message(self,user):
		#メッセージ作成
		data=StackFeedData()
		data.feed_mode="message"
		data.from_user_id=user.user_id()
		if(self.request.get("to_user_id")):
			data.to_user_id=self.request.get("to_user_id")
		else:
			data.to_user_id=None
		data.user_key=None
		data.bbs_key=None
		data.thread_key=None
		data.message=self.request.get("message")
		if(data.message==""):
			self.response.out.write(Alert.alert_msg("書き込みメッセージが存在しません。",self.request.host));
			return False
		data.create_date=datetime.datetime.today()

		#二重投稿防止
		message=memcache.get("StackFeedTweet")
		if(message==self.request.get("message")):
			self.response.out.write(Alert.alert_msg("このメッセージは既に投稿されています。",self.request.host));
			return False
		memcache.set("StackFeedTweet",self.request.get("message"),5)

		#保存
		data.put()
		
		#トップページ用ログ格納
		recent=StackFeedDataRecent.get_or_insert(data.from_user_id)
		recent.message=data.message
		recent.from_user_id=data.from_user_id
		recent.to_user_id=data.to_user_id
		recent.put()

		#自分と相手にフィード
		StackFeed._append_one(data,user.user_id())
		if(data.to_user_id):
			StackFeed._append_one(data,data.to_user_id)
		
		#フォロワーにフィード
		StackFeed.feed_new_message(user,data)
		
		return True
Пример #11
0
	def delete_app(req):
		app_key=None
		if(req.request.get("app_key")):
			app_key=req.request.get("app_key")
		app=db.get(app_key)
		user = users.get_current_user()
		if(app and user and app.user_id==user.user_id()):
			app.delete()
		else:
			req.response.out.write(Alert.alert_msg("アプリが見つからないか削除する権限がありません。",req.request.host))
			return True
		return False
Пример #12
0
	def get(self):
		SetUtf8.set()

		user = users.get_current_user()
		
		is_admin=0
		if(user):
			if(OwnerCheck.is_admin(user)):
				is_admin=1
		
		if(not is_admin):
			self.response.out.write(Alert.alert_msg("管理者権限が必要です。",self.request.host));
			return

		checkcode=SpamCheck.get_check_code()		

		query=Entry.all()
		thread=None
		try:
			thread=db.get(checkcode)
		except:
			thread=None
		if(thread):
			query.filter("thread_key =",thread)
		entrys=query.fetch(limit=1000)
		
		ret=0
		aborted=""

		for entry in entrys:
			if(SpamCheck.check_with_thread(entry,checkcode)):
				entry.delete()
				ret=ret+1
				if(ret>=250):
					aborted="ABORTED"
					break;

		RecentCommentCache.invalidate(None);
		self.response.out.write(Alert.alert_msg("<H2>SPAM DELETE RESULT</H2>"+aborted+"<H2>TOTAL</H2>DELETE CNT:"+str(ret),self.request.host))		
Пример #13
0
	def del_message_all(self,user):
		if(self.request.get("user_id")!=user.user_id()):
			self.response.out.write(Alert.alert_msg("認証に失敗しました。",self.request.host));
			return False

		bookmark=ApiObject.get_bookmark_of_user_id_for_write(user.user_id())
		if(bookmark==None):
			self.response.out.write(Alert.alert_msg("ユーザデータが見つかりません。",self.request.host));
			return False

		tweeet_list=StackFeedData.all().filter("from_user_id =",user.user_id()).filter("feed_mode =","message").fetch(limit=1000)

		delete_limit=100

		del_cnt=0
		for tweet in tweeet_list:
			if(tweet.from_user_id==user.user_id()):
				self.del_from_bookmark(bookmark,str(tweet.key()))
				tweet.delete()
				del_cnt=del_cnt+1
				if(del_cnt>=delete_limit):
					break

		if(del_cnt>=delete_limit):#len(bookmark.my_timeline)>=1):
			self.response.out.write(Alert.alert_msg(str(del_cnt)+"件のツイートを削除しましたが、ツイートを削除しきることができませんでした。リロードして下さい。",self.request.host));
			return False
		if(del_cnt==0):
			self.response.out.write(Alert.alert_msg("削除するツイートが見つかりませんでした。",self.request.host));
			return False

		#bookmark.stack_feed_list=[]
		#bookmark.my_timeline=[]
		bookmark.put()

		self.response.out.write(Alert.alert_msg(str(del_cnt)+"件のツイートを削除しました。",self.request.host));
		return False
Пример #14
0
	def get(self):
		entry = db.get(self.request.get("entry_key"))
		
		if(self.request.get("res_key")=="all"):
			res=None
		else:
			res= db.get(self.request.get("res_key"))

		thread_key=entry.thread_key
		bbs_key=thread_key.bbs_key

		user = users.get_current_user()
		bbs_owner =not OwnerCheck.check(bbs_key,user)
		res_owner=False
		if(user and res and user.user_id()==res.user_id):
			res_owner=True
		
		if(not bbs_owner and not OwnerCheck.is_admin(user) and not res_owner):
			self.response.out.write(Alert.alert_msg("削除する権限がありません。",self.request.host))
			return

		if(not res):
			for res in entry.res_list:
				db.get(res).delete()
			entry.res_list=[]
		else:
			res.delete()
			idx = entry.res_list.index(db.Key(self.request.get("res_key")))
			entry.res_list.pop(idx)
		
		res_n=len(entry.res_list)
		if(res_n>=1):
			entry.date=db.get(entry.res_list[res_n-1]).date
		else:
			entry.date=entry.create_date

		entry.put()

		url=MappingThreadId.get_thread_url("./",bbs_key,thread_key)+"?comment_edit=1"
		self.redirect(str(url))
		
		thread = db.get(str(thread_key.key()))
		thread.comment_cnt=thread.comment_cnt-1
		thread.put()

		RecentCommentCache.invalidate(bbs_key)
Пример #15
0
	def get(self):
		host_url="http://"+MappingId.mapping_host(self.request.host)+"/"
		bbs_key=self.request.get("bbs_key")
		thread_key=self.request.get("thread_key")

		try:
			bbs = db.get(self.request.get("bbs_key"))
			thread = db.get(self.request.get("thread_key"))
		except:
			bbs = None
			thread = None
		
		if(bbs==None or thread==None):
			self.response.out.write(Alert.alert_msg("スレッドが見つかりません。",self.request.host))
			return
		
		image=thread.image_key#db.get(thread.image);
		width=400
		height=400
		if(image.width):
			width=image.width
		if(image.height):
			height=image.height
		if(self.request.get("width")):
			width=self.request.get("width")
		if(self.request.get("height")):
			height=self.request.get("height")
		
		if(CssDesign.is_iphone(self)==1):
			if(width>=300):
				height=300*height/width
				width=300
		
		template_values = {
		'host': host_url,
		'bbs': bbs,
		'bbs_key': bbs_key,
		'thread': thread,
		'thread_key': thread_key,
		'width': width,
		'height': height
		}		  
		path = '/html/moper/moper_embedded.htm'
		self.response.out.write(template_select.render(path, template_values))
Пример #16
0
	def delete_image(req):
		app_key=None
		if(req.request.get("app_key")):
			app_key=req.request.get("app_key")
		app=db.get(app_key)
		user = users.get_current_user()
		if(app and user and app.user_id==user.user_id()):
			image_id=req.request.get("image_id")
			index_no=app.image_id_list.index(image_id)
			app.image_id_list.pop(index_no)
			app.image_blob_list.pop(index_no)
			app.image_type_list.pop(index_no)
			app.put()
			if(req.request.get("bbs_key")):
				req.redirect(str("./dev?page=info&app_key="+str(app.key())+"&bbs_key="+req.request.get("bbs_key")))
			else:
				req.redirect(str("./dev?page=info&app_key="+str(app.key())))
		else:
			req.response.out.write(Alert.alert_msg("アプリが見つからないか削除する権限がありません。",req.request.host))
Пример #17
0
	def add_new_app(main,user):
		app=AppCode()
		app.user_id=user.user_id()
		author="none"
		bookmark=ApiObject.get_bookmark_of_user_id(app.user_id)
		if(bookmark and bookmark.name):
			author=bookmark.name
		app.author=author
		app.js_code=""
		app.css_code=""
		app.app_name=main.request.get("app_name")
		app.app_id=main.request.get("app_id")
		app.mode=int(main.request.get("mode"))
		app.plugin_args=""
		app.app_guide=""
		app.is_public=0
		app.create_date=datetime.datetime.today()
		if(not DevPortal.check_id_available(main,app.app_id)):
			return
		if(app.app_name==""):
			main.response.out.write(Alert.alert_msg("アプリ名は必須です。",main.request.host))
			return False
		app.put()
		return True
Пример #18
0
	def update_app(main,user):
		app_key=main.request.get("app_key")
		app=None
		try:
			app=db.get(app_key)
		except:
			app=None

		no_permit=0
		if(not(app) or not(app.user_id==user.user_id())):
			no_permit=1

		if(main.request.get("code")):
			if(no_permit):
				dic={"status":"failed","message":"アプリを保存する権限がありません"}
				return dic
			if(app.mode==BbsConst.APP_MODE_CSS):
				app.css_code=main.request.get("code")
			else:
				app.js_code=main.request.get("code")
			app.put()
			dic={"status":"success","message":""}
			return dic
		
		if(no_permit):
			main.response.out.write(Alert.alert_msg("アプリを保存する権限がありません。",main.request.host))
			return
		if(app.app_id!=main.request.get("app_id")):
			if(not DevPortal.check_id_available(main,main.request.get("app_id"))):
				return
		app.author=main.request.get("author")
		app.app_name=main.request.get("app_name")
		app.app_id=main.request.get("app_id")
		app.app_guide=main.request.get("app_guide")
		app.is_public=int(main.request.get("is_public"))
		app.mode=int(main.request.get("mode"))
		app.ranking_order=int(main.request.get("ranking_order"))
		app.ranking_key=main.request.get("ranking_key")
		app.plugin_args=main.request.get("plugin_args")
		if(app.is_public):
			if(not app.public_date):
				app.public_date=datetime.datetime.today()
		if(not app.bookmark_count):
			app.bookmark_count=0
		if(main.request.get("icon")):
			app.icon=db.Blob(main.request.get("icon"))
			img = main.request.body_file.vars['icon']
			app.icon_content_type=img.headers['content-type']
		if(main.request.get("image")):
			if(main.request.get("image_id")==""):
				main.response.out.write(Alert.alert_msg("画像リソースにはIDが必要です。",main.request.host))
				return
			app.image_blob_list.append(db.Blob(main.request.get("image")))
			img = main.request.body_file.vars['image']
			app.image_type_list.append(img.headers['content-type'])
			app.image_id_list.append(main.request.get("image_id"))
		
		try:
			app.put()
		except:
			main.response.out.write(Alert.alert_msg("画像の容量が大きすぎます。",main.request.host))
			return
		
		if(main.request.get("redirect")):
			main.redirect(str(main.request.get("redirect")))
		else:
			if(main.request.get("image")):
				main.redirect(str("./dev?page=info&app_key="+str(app.key())))
			else:
				main.redirect(str("./dev"))
		return None
Пример #19
0
	def get(self):
		user = users.get_current_user()
		if(not user):
			self.response.out.write(Alert.alert_msg("ログインが必要です。",self.request.host));
			return