Ejemplo n.º 1
0
    def _post_toggle(self):
        index = intval(self.get_body_argument('index', default=None))
        type = self.get_body_argument('type', default=None)
        plugin = self.get_body_argument('plugin', default=None)
        toggle = bool(intval(self.get_body_argument('toggle', default=None)))
        config = self._read_config()
        # 验证数据
        if plugin not in plugin_manager.plugins or type not in config['plugin_config'] \
                or type not in plugin_manager.plugins[plugin]['type']:
            self._json('fail', '参数错误')

        # 开启 or 关闭
        if toggle:
            if plugin in config['plugin_config'][type]:
                self._json('fail', '插件已开启')
            else:
                config['plugin_config'][type].insert(index, plugin)
        else:
            if plugin in config['plugin_config'][type]:
                config['plugin_config'][type].remove(plugin)
            else:
                self._json('fail', '插件已关闭')

        # 更新
        if (yield self.update_plugin(config)):
            self._json('success', '更新成功')
        else:
            self._json('fail', '更新失败')
Ejemplo n.º 2
0
    def post(self, *args, **kwargs):
        id = self.get_body_argument("id", default=None)
        if not id:
            self.custom_error("不存在这篇文章", "", id)
        post = yield self.db.article.find_one({"_id": ObjectId(id)})
        self.__check_power(post)
        content = self.get_body_argument("ckeditor", default=None)
        post["title"] = self.get_body_argument("title", default=None)
        sort = self.get_body_argument("sort", default=None)
        post["charge"] = intval(self.get_body_argument("charge", default=0))
        post["freebegin"] = intval(
            self.get_body_argument("freebegin", default=0))
        post["freeend"] = intval(self.get_body_argument("freeend", default=0))

        if not post["title"]:
            self.custom_error("标题不能为空", content, id)
        if post["charge"] < 0:
            self.custom_error("收费不能低于0", content, id)
        if post["freebegin"] > post["freeend"]:
            self.custom_error("结束时间不能小于开始时间", content, id)
        if not sort:
            self.custom_error("不存在这个分类", content, id)
        post["sort"] = yield self.db.sort.find_one({"_id": ObjectId(sort)})
        if not post["sort"]:
            self.custom_error("不存在这个分类", content, id)

        # filter html
        post["content"] = xss_filter(content)
        model = ArticleModel()
        if not model(post):
            self.custom_error(model.error_msg, content, id)
        yield self.db.article.find_and_modify({"_id": post["_id"]}, post)
        self.redirect("/post/%s" % id)
Ejemplo n.º 3
0
Archivo: publish.py Proyecto: 0ps/Minos
	def post(self, *args, **kwargs):
		id = self.get_body_argument("id", default=None)
		if not id:
			self.custom_error("不存在这篇文章", "", id)
		post = yield self.db.article.find_one({
			"_id": ObjectId(id)
		})
		self.__check_power(post)
		content = self.get_body_argument("ckeditor", default=None)
		post["title"] = self.get_body_argument("title", default=None)
		sort = self.get_body_argument("sort", default=None)
		post["charge"] = intval(self.get_body_argument("charge", default=0))
		post["freebegin"] = intval(self.get_body_argument("freebegin", default=0))
		post["freeend"] = intval(self.get_body_argument("freeend", default=0))

		if post["charge"] < 0:
			self.custom_error("收费不能低于0", content, id)
		if post["freebegin"] > post["freeend"]:
			self.custom_error("结束时间不能小于开始时间", content, id)
		if not sort:
			self.custom_error("不存在这个分类", content, id)
		post["sort"] = yield self.db.sort.find_one({"_id": ObjectId(sort)})
		if not post["sort"]:
			self.custom_error("不存在这个分类", content, id)

		# filter html
		post["content"] = xss_filter(content)
		model = ArticleModel()
		if not model(post):
			self.custom_error(model.error_msg, content, id)
		yield self.db.article.find_and_modify({
			"_id": post["_id"]
		}, post)
		self.redirect("/post/%s" % id)
Ejemplo n.º 4
0
	def post(self, *args, **kwargs):
		content = self.get_body_argument("ckeditor", default=None)
		title = self.get_body_argument("title", default=None)
		sort = self.get_body_argument("sort", default=None)
		charge = intval(self.get_body_argument("charge", default=0))
		freebegin = intval(self.get_body_argument("freebegin", default=0))
		freeend = intval(self.get_body_argument("freeend", default=0))
		if not title:
			self.flash["article"] = content
			self.custom_error("标题不能为空哦", jump = "/publish")
		if charge < 0:
			self.flash["article"] = content
			self.custom_error("收费不能低于0", jump = "/publish")
		if freebegin > freeend:
			self.flash["article"] = content
			self.custom_error("结束时间不能小于开始时间", jump = "/publish")
		if not sort:
			self.flash["article"] = content
			self.custom_error("不存在这个分类", jump = "/publish")
		tosort = yield self.db.sort.find_and_modify({
			"_id": ObjectId(sort)
		}, {
			"$inc": {"article": 1}
		})
		if not tosort:
			self.flash["article"] = content
			self.custom_error("不存在这个分类", jump = "/publish")

		# filter html
		content = xss_filter(content)

		article = {
			"title": title,
		    "content": content,
		    "user": self.current_user["username"],
			"sort": tosort,
		    "view": 0,
		    "like": [],
		    "unlike": [],
		    "charge": charge,
		    "time": time.time(),
		    "freebegin": freebegin,
		    "freeend": freeend,
		    "buyer": [],
		    "thanks": [],
		    "star": False,
		    "rank": 0,
		    "comment": [],
		    "open": False,
		    "top": False,
		    "lastcomment": time.time()
		}
		model = ArticleModel()
		if not model(article):
			self.flash["article"] = content
			self.custom_error(model.error_msg, jump = "/publish")
		id = yield self.db.article.insert(article)
		self.redirect("/post/%s" % id)
Ejemplo n.º 5
0
    def post(self, *args, **kwargs):
        content = self.get_body_argument("ckeditor", default=None)
        title = self.get_body_argument("title", default=None)
        sort = self.get_body_argument("sort", default=None)
        charge = intval(self.get_body_argument("charge", default=0))
        freebegin = intval(self.get_body_argument("freebegin", default=0))
        freeend = intval(self.get_body_argument("freeend", default=0))
        if not title:
            self.flash["article"] = content
            self.custom_error("标题不能为空哦", jump="/publish")
        if charge < 0:
            self.flash["article"] = content
            self.custom_error("收费不能低于0", jump="/publish")
        if freebegin > freeend:
            self.flash["article"] = content
            self.custom_error("结束时间不能小于开始时间", jump="/publish")
        if not sort:
            self.flash["article"] = content
            self.custom_error("不存在这个分类", jump="/publish")
        tosort = yield self.db.sort.find_and_modify({
            "_id": ObjectId(sort)
        }, {
            "$inc": {"article": 1}
        })
        if not tosort:
            self.flash["article"] = content
            self.custom_error("不存在这个分类", jump="/publish")

        # filter html
        content = xss_filter(content)

        article = {
            "title": title,
            "content": content,
            "user": self.current_user["username"],
            "sort": tosort,
            "view": 0,
            "like": [],
            "unlike": [],
            "charge": charge,
            "time": time.time(),
            "freebegin": freebegin,
            "freeend": freeend,
            "buyer": [],
            "thanks": [],
            "star": False,
            "rank": 0,
            "comment": [],
            "open": False,
            "top": False,
            "lastcomment": time.time()
        }
        model = ArticleModel()
        if not model(article):
            self.flash["article"] = content
            self.custom_error(model.error_msg, jump="/publish")
        id = yield self.db.article.insert(article)
        self.redirect("/post/%s" % id)
Ejemplo n.º 6
0
 def _post_message(self):
     openwebsite = intval(self.get_body_argument("openwebsite", default=1))
     openqq = intval(self.get_body_argument("openqq", default=1))
     openemail = intval(self.get_body_argument("openemail", default=1))
     allowemail = intval(self.get_body_argument("allowemail", default=1))
     yield self.db.member.find_and_modify(
         {"username": self.current_user["username"]}, {
             "$set": {
                 "openwebsite": openwebsite,
                 "openqq": openqq,
                 "openemail": openemail,
                 "allowemail": allowemail
             }
         })
     self.redirect("/user/edit")
Ejemplo n.º 7
0
 def _view_invite(self, arg):
     where = self.get_query_argument("act", default=None)
     act = {
         "nouse": {
             "used": False
         },
         "used": {
             "used": True
         },
         "expire": {
             "time": {
                 "$lt": time.time() - self.settings["invite_expire"]
             },
             "used": False
         }
     }
     where = act.get(where) if (where in act) else {}
     limit = 15
     page = intval(arg)
     page = page if page > 1 else 1
     cursor = self.db.invite.find(where)
     count = yield cursor.count()
     cursor.sort([('time', pymongo.DESCENDING)]).limit(limit).skip(
         (page - 1) * limit)
     invites = yield cursor.to_list(limit)
     self.render("invite.htm",
                 invites=invites,
                 count=count,
                 each=limit,
                 page=page)
Ejemplo n.º 8
0
 def _post_message(self):
     openwebsite = intval(self.get_body_argument("openwebsite", default=1))
     openqq = intval(self.get_body_argument("openqq", default=1))
     openemail = intval(self.get_body_argument("openemail", default=1))
     allowemail = intval(self.get_body_argument("allowemail", default=1))
     yield self.db.member.find_and_modify({
         "username": self.current_user["username"]
     }, {
         "$set": {
             "openwebsite": openwebsite,
             "openqq": openqq,
             "openemail": openemail,
             "allowemail": allowemail
         }
     })
     self.redirect("/user/edit")
Ejemplo n.º 9
0
 def get(self, *args, **kwargs):
     keyword = self.get_query_argument("keyword", default=None)
     if not keyword:
         self.custom_error("关键词不能为空")
     esp_keyword = re.escape(keyword)
     limit = 20
     page = intval(args[1])
     if not page or page <= 0: page = 1
     cursor = self.db.article.find({
         '$and': [{
             "title": {
                 "$regex": ".*%s.*" % esp_keyword,
                 "$options": "i"
             }
         }, {
             '$or': [{
                 'private': None
             }, {
                 'private': 'off'
             }]
         }]
     })
     count = yield cursor.count()
     cursor.sort([('time', pymongo.DESCENDING)]).limit(limit).skip(
         (page - 1) * limit)
     posts = yield cursor.to_list(length=limit)
     self.render("search.htm",
                 posts=posts,
                 page=page,
                 keyword=keyword,
                 time_span=time_span,
                 count=count,
                 each=limit)
Ejemplo n.º 10
0
    def get(self, *args, **kwargs):
        limit = 15
        page = intval(args[1])
        if not page or page <= 0: page = 1
        cursor = self.db.article.find(
            {'$or': [{
                'private': None
            }, {
                'private': 'off'
            }]})
        cursor.sort([('top', pymongo.DESCENDING),
                     ("lastcomment", pymongo.DESCENDING),
                     ('time', pymongo.DESCENDING)]).limit(limit).skip(
                         (page - 1) * limit)
        count = yield cursor.count()
        posts = yield cursor.to_list(length=limit)
        sorts = yield self.get_sort()

        self.render("main.htm",
                    posts=filter(
                        lambda post: post.get('private', 'off') == 'off',
                        posts),
                    sorts=sorts,
                    page=page,
                    time_span=time_span,
                    count=count,
                    each=limit)
Ejemplo n.º 11
0
    def detail_page(self, arg):
        site = arg.split('/')[0]
        asin = arg.split('/')[1]

        limit = 20
        page = intval(self.get_argument("page", default=1))
        if not page or page <= 0:
            page = 1

        product_cursor = self.db.follow_product.find({
            "$and": [
                {'username': self.get_current_user()['username']},
                {'site': site},
                {'asin': asin},
            ]})
        products = yield product_cursor.to_list(1)
        image = products[0]['image']

        cursor = self.db.follow_monitor.find({
            "$and": [
                {'site': site},
                {'asin': asin},
            ]})
        count = yield cursor.count()
        cursor.sort([('time', pymongo.DESCENDING)]).limit(limit).skip((page - 1) * limit)

        monitors = yield cursor.to_list(length=limit)
        for monitor in monitors:
            monitor['follows'] = json.loads(monitor['follows'])
            monitor['time'] = monitor['time'].strftime("%Y-%m-%d %H:%M:%S")

        self.render("amazon/follow_detail.htm", image=image, site=site, asin=asin, monitors=monitors, page=page,
                    each=limit, count=count)
Ejemplo n.º 12
0
 def _view_user(self, arg):
     username = self.get_query_argument("username", default=None)
     where = {
         "username": {
             "$regex": ".*" + re.escape(username) + ".*"
         }
     } if username else {}
     limit = 15
     page = intval(arg)
     page = page if page > 1 else 1
     user = self.db.member.find(where)
     count = yield user.count()
     user.tag([('time', pymongo.ASCENDING)]).limit(limit).skip(
         (page - 1) * limit)
     users = yield user.to_list(limit)
     if username:
         search = "?username=%s" % username
     else:
         search = ""
     self.render("userlist.html",
                 page=page,
                 users=users,
                 count=count,
                 each=limit,
                 search=search)
Ejemplo n.º 13
0
	def _view_games(self, arg): #查看所有游戏
		limit = 15
		page = intval(arg)
		page = page if page > 1 else 1
		cursor = self.db.games.find()
		count = yield cursor.count()
		cursor.limit(limit).skip((page - 1) * limit)
		games = yield cursor.to_list(limit)
		self.render("games.htm", games = games, count = count, each = limit, page = page)
Ejemplo n.º 14
0
 def _view_sort(self, arg):
     limit = 15
     page = intval(arg)
     page = page if page > 1 else 1
     cursor = self.db.sort.find()
     count = yield cursor.count()
     cursor.limit(limit).skip((page - 1) * limit)
     sorts = yield cursor.to_list(limit)
     self.render("sort.htm", sorts=sorts, count=count, each=limit, page=page)
Ejemplo n.º 15
0
	def _view_tag(self, arg):
		limit = 15
		page = intval(arg)
		page = page if page > 1 else 1
		cursor = self.db.tag.find()
		count = yield cursor.count()
		cursor.limit(limit).skip((page - 1) * limit)
		tags = yield cursor.to_list(limit)
		self.render("tag.html", tags = tags, count = count, each = limit, page = page)
Ejemplo n.º 16
0
 def _view_sort(self, arg):
     limit = 15
     page = intval(arg)
     page = page if page > 1 else 1
     cursor = self.db.sort.find()
     count = yield cursor.count()
     cursor.limit(limit).skip((page - 1) * limit)
     sorts = yield cursor.to_list(limit)
     self.render("sort.htm", sorts=sorts, count=count, each=limit, page=page)
Ejemplo n.º 17
0
 def _view_tag(self, arg):
     limit = 15
     page = intval(arg)
     page = page if page > 1 else 1
     cursor = self.db.tag.find()
     count = yield cursor.count()
     cursor.limit(limit).skip((page - 1) * limit)
     tags = yield cursor.to_list(limit)
     self.render("tag.html", tags=tags, count=count, each=limit, page=page)
Ejemplo n.º 18
0
 def edituser_action(self, *args, **kwargs):
     id = self.get_body_argument("id")
     user = dict(
         money=intval(self.get_body_argument("money")),
         power=intval(self.get_body_argument("power")),
         email=self.get_body_argument("email"),
         website=self.get_body_argument("website"),
         qq=self.get_body_argument("qq"),
         address=self.get_body_argument("address"),
         signal=self.get_body_argument("signal"),
     )
     model = UserModel()
     if not model(user):
         self.custom_error(model.error_msg)
     password = self.get_body_argument("password", default=None)
     if password:
         user["password"] = yield self.backend.submit(hash.get, password)
     user = yield self.db.member.find_and_modify({"_id": ObjectId(id)},
                                                 {"$set": user})
     self.redirect("/manage/userdetail/%s" % user['username'])
Ejemplo n.º 19
0
	def get(self, *args, **kwargs):
		limit = 15
		page = intval(args[1])
		if not page or page <= 0 : page = 1
		cursor = self.db.article.find()
		cursor.sort([('top', pymongo.DESCENDING), ("lastcomment", pymongo.DESCENDING), ('time', pymongo.DESCENDING)]).limit(limit).skip((page - 1) * limit)
		count = yield cursor.count()
		posts = yield cursor.to_list(length = limit)
		sorts = yield self.get_sort()
		self.render("main.htm", posts = posts, sorts = sorts, page = page,
					time_span = time_span, count = count, each = limit)
Ejemplo n.º 20
0
 def like_act(self, arg):
     limit = 10
     page = intval(arg)
     if page <= 0 : page = 1
     cursor = self.db.article.find({
         "like": self.current_user["username"]
     })
     count = yield cursor.count()
     cursor.tag([('_id', pymongo.DESCENDING)]).limit(limit).skip((page - 1) * limit)
     posts = yield cursor.to_list(length = limit)
     self.render("like.html", posts = posts, page = page, count = count, each = limit)
Ejemplo n.º 21
0
Archivo: main.py Proyecto: joeyxy/Minos
	def get(self, *args, **kwargs):
		limit = 15
		page = intval(args[1])
		if not page or page <= 0 : page = 1
		cursor = self.db.article.find()
		cursor.sort([('top', pymongo.DESCENDING), ("lastcomment", pymongo.DESCENDING), ('time', pymongo.DESCENDING)]).limit(limit).skip((page - 1) * limit)
		count = yield cursor.count()
		posts = yield cursor.to_list(length = limit)
		sorts = yield self.get_sort()
		self.render("main.htm", posts = posts, sorts = sorts, page = page,
		            time_span = time_span, count = count, each = limit)
Ejemplo n.º 22
0
	def get(self, *args, **kwargs):
		limit = 15
		page = intval(args[1])
		if not page or page <= 0 : page = 1
		cursor = self.db.article.find({
			"open": True
		})
		cursor.sort([("top", pymongo.DESCENDING), ('time', pymongo.DESCENDING)]).limit(limit).skip((page - 1) * limit)
		count = yield cursor.count()
		posts = yield cursor.to_list(length = limit)
		self.render("open_list.htm", posts = posts, page = page,
		            time_span = time_span, count = count, each = limit)
Ejemplo n.º 23
0
	def newsort_action(self, *args, **kwargs):
		sort = dict(
			name = self.get_body_argument("name"),
			intro = self.get_body_argument("intro",default=None),
			show = True if intval(self.get_body_argument("show", default=None)) else False,
		    article = 0
		)
		model = SortModel()
		if not model(sort):
			self.custom_error(model.error_msg)
		sort = yield self.db.sort.insert(sort)
		self.redirect("/manage/sort")
Ejemplo n.º 24
0
 def editgame_action(self, *args, **kwargs):  #修改一个已经存在的游戏
     id = self.get_body_argument("id")
     game = dict(
         path=self.get_body_argument("path"),
         type=intval(self.get_body_argument("type")),
         play_type=intval(self.get_body_argument("play_type")),
         resource_type=intval(self.get_body_argument("resource_type")),
         question=self.get_body_argument("question"),
         answer1=self.get_body_argument("answer1"),
         answer2=self.get_body_argument("answer2"),
         answer3=self.get_body_argument("answer3"),
         answer4=self.get_body_argument("answer4"),
         right_answer=self.get_body_argument("right_answer"),
         switch=intval(self.get_body_argument("switch")),
     )
     model = GameModel()
     if not model(game):
         self.custom_error(model.error_msg)
     game = yield self.db.games.find_and_modify({"_id": ObjectId(id)},
                                                {"$set": game})
     self.redirect("/manage/gamedetail/%s" % game['_id'])
Ejemplo n.º 25
0
 def bookmark_act(self, arg):
     limit = 10
     page = intval(arg)
     if page <= 0 : page = 1
     user = yield self.db.member.find_one({
         "username": self.current_user["username"]
     })
     bookmark = user.get("bookmark")
     count = len(bookmark)
     bookmark = bookmark[(page - 1) * limit:(page - 1) * limit + limit]
     bookmark.reverse()
     self.render("bookmark.html", bookmark = bookmark, page = page, count = count, each = limit)
Ejemplo n.º 26
0
 def newsort_action(self, *args, **kwargs):
     sort = dict(
         name=self.get_body_argument("name"),
         intro=self.get_body_argument("intro", default=None),
         show=True
         if intval(self.get_body_argument("show", default=None)) else False,
         article=0)
     model = SortModel()
     if not model(sort):
         self.custom_error(model.error_msg)
     sort = yield self.db.sort.insert(sort)
     self.redirect("/manage/sort")
Ejemplo n.º 27
0
 def newgame_action(self, *args, **kwargs):  #创建一个新的游戏
     game = dict(name=self.get_body_argument("name"),
                 type=intval(self.get_body_argument("type")),
                 play_type=intval(self.get_body_argument("play_type")),
                 resource_type=intval(
                     self.get_body_argument("resource_type")),
                 path=self.get_body_argument("path"),
                 question=self.get_body_argument("question"),
                 answer1=self.get_body_argument("answer1"),
                 answer2=self.get_body_argument("answer2"),
                 answer3=self.get_body_argument("answer3"),
                 answer4=self.get_body_argument("answer4"),
                 right_answer=self.get_body_argument("right_answer"),
                 switch=intval(self.get_body_argument("switch")),
                 plays=0,
                 right_plays=0,
                 wrong_plays=0)
     model = GameModel()
     if not model(game):
         self.custom_error(model.error_msg)
     sort = yield self.db.games.insert(game)
     self.redirect("/manage/games")
Ejemplo n.º 28
0
    def detail_page(self, arg):
        site = arg.split('/')[0]
        asin = arg.split('/')[1]

        limit = 20
        page = intval(self.get_argument("page", default=1))
        if not page or page <= 0:
            page = 1

        product_cursor = self.db.follow_product.find({
            "$and": [
                {
                    'username': self.get_current_user()['username']
                },
                {
                    'site': site
                },
                {
                    'asin': asin
                },
            ]
        })
        products = yield product_cursor.to_list(1)
        image = products[0]['image']

        cursor = self.db.follow_monitor.find(
            {"$and": [
                {
                    'site': site
                },
                {
                    'asin': asin
                },
            ]})
        count = yield cursor.count()
        cursor.sort([('time', pymongo.DESCENDING)]).limit(limit).skip(
            (page - 1) * limit)

        monitors = yield cursor.to_list(length=limit)
        for monitor in monitors:
            monitor['follows'] = json.loads(monitor['follows'])
            monitor['time'] = monitor['time'].strftime("%Y-%m-%d %H:%M:%S")

        self.render("amazon/follow_detail.htm",
                    image=image,
                    site=site,
                    asin=asin,
                    monitors=monitors,
                    page=page,
                    each=limit,
                    count=count)
Ejemplo n.º 29
0
	def edituser_action(self, *args, **kwargs):
		id = self.get_body_argument("id")
		user = dict(
			money = intval(self.get_body_argument("money")),
			power = intval(self.get_body_argument("power")),
			email = self.get_body_argument("email"),
			website = self.get_body_argument("website"),
			qq = self.get_body_argument("qq"),
			address = self.get_body_argument("address"),
			signal = self.get_body_argument("signal"),
		)
		model = UserModel()
		if not model(user):
			self.custom_error(model.error_msg)
		password = self.get_body_argument("password", default=None)
		if password:
			user["password"] = yield self.backend.submit(hash.get, password)
		user = yield self.db.member.find_and_modify({
			"_id": ObjectId(id)
		}, {
			"$set": user
		})
		self.redirect("/manage/userdetail/%s" % user['username'])
Ejemplo n.º 30
0
	def get(self, *args, **kwargs):
		limit = 20
		page = intval(args[1])
		if not page or page <= 0 : page = 1
		cursor = self.db.message.find({
			"$or": [
				{"to": self.current_user["username"]},
				{"from": self.current_user["username"]}
			]
		})
		count = yield cursor.count()
		cursor.sort([('time', pymongo.DESCENDING)]).limit(limit).skip((page - 1) * limit)
		messages = yield cursor.to_list(length = limit)
		self.render("message.htm", messages = messages, count = count, cutstr = cutstr)
Ejemplo n.º 31
0
Archivo: sort.py Proyecto: lukw00/Minos
 def get(self, *args, **kwargs):
     sortid = args[0]
     limit = 15
     page = intval(args[2])
     if not page or page <= 0:
         page = 1
     sort = yield self.db.sort.find_one({"_id": ObjectId(sortid)})
     if not sort:
         self.custom_error("板块不存在")
     cursor = self.db.article.find({"sort._id": ObjectId(sortid)})
     count = yield cursor.count()
     cursor.sort([("time", pymongo.DESCENDING)]).limit(limit).skip((page - 1) * limit)
     posts = yield cursor.to_list(length=limit)
     self.render("sort.htm", posts=posts, page=page, sort=sort, time_span=time_span, count=count, each=limit)
Ejemplo n.º 32
0
	def newgame_action(self, *args, **kwargs):#创建一个新的游戏
		game = dict(
			name = self.get_body_argument("name"),
			type = intval(self.get_body_argument("type")),
			play_type = intval(self.get_body_argument("play_type")),
			resource_type = intval(self.get_body_argument("resource_type")),
			path = self.get_body_argument("path"),
			question = self.get_body_argument("question"),
			answer1 = self.get_body_argument("answer1"),
			answer2 = self.get_body_argument("answer2"),
			answer3 = self.get_body_argument("answer3"),
			answer4 = self.get_body_argument("answer4"),
			right_answer = self.get_body_argument("right_answer"),
			switch = intval(self.get_body_argument("switch")),
		    plays = 0,
			right_plays = 0,
			wrong_plays = 0
		)
		model = GameModel()
		if not model(game):
			self.custom_error(model.error_msg)
		sort = yield self.db.games.insert(game)
		self.redirect("/manage/games")
Ejemplo n.º 33
0
	def get(self, *args, **kwargs):
		limit = 20
		page = intval(args[1])
		if not page or page <= 0 : page = 1
		cursor = self.db.message.find({
			"$or": [
				{"to": self.current_user["username"]},
				{"from": self.current_user["username"]}
			]
		})
		count = yield cursor.count()
		cursor.sort([('time', pymongo.DESCENDING)]).limit(limit).skip((page - 1) * limit)
		messages = yield cursor.to_list(length = limit)
		self.render("message.htm", messages = messages, count = count, cutstr = cutstr)
Ejemplo n.º 34
0
 def like_act(self, arg):
     limit = 10
     page = intval(arg)
     if page <= 0: page = 1
     cursor = self.db.article.find({"like": self.current_user["username"]})
     count = yield cursor.count()
     cursor.sort([('_id', pymongo.DESCENDING)]).limit(limit).skip(
         (page - 1) * limit)
     posts = yield cursor.to_list(length=limit)
     self.render("like.htm",
                 posts=posts,
                 page=page,
                 count=count,
                 each=limit)
Ejemplo n.º 35
0
    def get(self, *args, **kwargs):
        limit = 15
        page = intval(args[1])
        if not page or page <= 0: page = 1
        cursor = self.db.article.find({'$or': [{'private': None}, {'private': 'off'}]})
        cursor.sort(
            [('top', pymongo.DESCENDING), ("lastcomment", pymongo.DESCENDING), ('time', pymongo.DESCENDING)]).limit(
            limit).skip((page - 1) * limit)
        count = yield cursor.count()
        posts = yield cursor.to_list(length=limit)
        sorts = yield self.get_sort()

        self.render("main.htm", posts=filter(lambda post: post.get('private', 'off') == 'off', posts), sorts=sorts, page=page,
                    time_span=time_span, count=count, each=limit)
Ejemplo n.º 36
0
    def get(self, *args, **kwargs):
        limit = 15

        try:
            page = intval(args[2])
            if page <= 0: page = 1
        except:
            page = 1

        cursor = self.db.tag.find()
        count = yield cursor.count()
        cursor.sort([('time', pymongo.DESCENDING)]).limit(limit).skip(
            (page - 1) * limit)
        tags = yield cursor.to_list(length=limit)
        self.write(dict(tags=tags, page=page, count=count, each=limit))
Ejemplo n.º 37
0
	def _view_user(self, arg):
		username = self.get_query_argument("username", default=None)
		where = {"username": {"$regex": ".*"+re.escape(username)+".*"}} if username else {}
		limit = 15
		page = intval(arg)
		page = page if page > 1 else 1
		user = self.db.member.find(where)
		count = yield user.count()
		user.tag([('time', pymongo.ASCENDING)]).limit(limit).skip((page - 1) * limit)
		users = yield user.to_list(limit)
		if username:
			search = "?username=%s" % username
		else:
			search = ""
		self.render("userlist.html", page = page, users = users, count = count, each = limit, search = search)
Ejemplo n.º 38
0
 def bookmark_act(self, arg):
     limit = 10
     page = intval(arg)
     if page <= 0: page = 1
     user = yield self.db.member.find_one(
         {"username": self.current_user["username"]})
     bookmark = user.get("bookmark")
     count = len(bookmark)
     bookmark = bookmark[(page - 1) * limit:(page - 1) * limit + limit]
     bookmark.reverse()
     self.render("bookmark.htm",
                 bookmark=bookmark,
                 page=page,
                 count=count,
                 each=limit)
Ejemplo n.º 39
0
	def editgame_action(self, *args, **kwargs): #修改一个已经存在的游戏
		id = self.get_body_argument("id")
		game = dict(
			path = self.get_body_argument("path"),
			type = intval(self.get_body_argument("type")),
			play_type = intval(self.get_body_argument("play_type")),
			resource_type = intval(self.get_body_argument("resource_type")),
			question = self.get_body_argument("question"),
			answer1 = self.get_body_argument("answer1"),
			answer2 = self.get_body_argument("answer2"),
			answer3 = self.get_body_argument("answer3"),
			answer4 = self.get_body_argument("answer4"),
			right_answer = self.get_body_argument("right_answer"),
			switch = intval(self.get_body_argument("switch")),
		)
		model = GameModel()
		if not model(game):
			self.custom_error(model.error_msg)
		game = yield self.db.games.find_and_modify({
			"_id": ObjectId(id)
		}, {
			"$set": game
		})
		self.redirect("/manage/gamedetail/%s" % game['_id'])
Ejemplo n.º 40
0
 def sort_action(self, *args, **kwargs):
     id = self.get_body_argument("id")
     sort = dict(
         name=self.get_body_argument("name"),
         intro=self.get_body_argument("intro", default=None),
         show=True
         if intval(self.get_body_argument("show", default=None)) else False)
     model = SortModel()
     if not model(sort):
         self.custom_error(model.error_msg)
     sort = yield self.db.sort.find_and_modify({"_id": ObjectId(id)},
                                               {"$set": sort})
     if not sort:
         self.custom_error("不存在这个板块")
     else:
         self.redirect("/manage/sortdetail/%s" % id)
Ejemplo n.º 41
0
Archivo: search.py Proyecto: 0ps/Minos
	def get(self, *args, **kwargs):
		keyword = self.get_query_argument("keyword", default=None)
		if not keyword:
			self.custom_error("关键词不能为空")
		esp_keyword = re.escape(keyword)
		limit = 20
		page = intval(args[1])
		if not page or page <= 0 : page = 1
		cursor = self.db.article.find({
			"title": {"$regex": ".*%s.*" % esp_keyword, "$options": "i"}
		})
		count = yield cursor.count()
		cursor.sort([('time', pymongo.DESCENDING)]).limit(limit).skip((page - 1) * limit)
		posts = yield cursor.to_list(length = limit)
		self.render("search.htm", posts = posts, page = page, keyword = keyword,
		            time_span = time_span, count = count, each = limit)
Ejemplo n.º 42
0
 def _view_invite(self, arg):
     where = self.get_query_argument("act", default=None)
     act = {
         "nouse": {"used": False},
         "used": {"used": True},
         "expire": {"time": {"$lt": time.time() - self.settings["invite_expire"]}, "used": False},
     }
     where = act.get(where) if (where in act) else {}
     limit = 15
     page = intval(arg)
     page = page if page > 1 else 1
     cursor = self.db.invite.find(where)
     count = yield cursor.count()
     cursor.sort([("time", pymongo.DESCENDING)]).limit(limit).skip((page - 1) * limit)
     invites = yield cursor.to_list(limit)
     self.render("invite.htm", invites=invites, count=count, each=limit, page=page)
Ejemplo n.º 43
0
 def get(self, *args, **kwargs):
     limit = 15
     
     try:        
         page = intval(args[1])
         if page <= 0 : page = 1
     except:
         page = 1
                 
     cursor = self.db.article.find()
     cursor.sort([('top', pymongo.DESCENDING), ("lastcomment", pymongo.DESCENDING), ('time', pymongo.DESCENDING)]).limit(limit).skip((page - 1) * limit)
     count = yield cursor.count()
     posts = yield cursor.to_list(length = limit)
     tags = yield self.get_tag()
     
     self.write(dict(posts = posts, tags = tags, page = page,
         count = count, each = limit))
Ejemplo n.º 44
0
	def setting_action(self, *args, **kwargs):
		config = self._read_config()
		config["global"]["site"] = dict(
			webname = self.get_body_argument("webname"),
			keyword = self.get_body_argument("keyword"),
			description = self.get_body_argument("description")
		)
		config["global"]["init_money"] = intval(self.get_body_argument("init_money"))
		config["global"]["register"] = self.get_body_argument("register")
		if config["global"]["register"] not in ("open", "invite", "close"):
			self.custom_error("注册方法不正确")
		captcha = self.get_body_arguments("captcha")
		for d in ("register", "login", "comment"):
			config["global"]["captcha"][d] = True if (d in captcha) else False
		key = self.get_body_argument("key", default=None)
		if key:
			config["global"]["cookie_secret"] = key
		self._write_config(config)
		self.redirect("/manage/setting")
Ejemplo n.º 45
0
	def sort_action(self, *args, **kwargs):
		id = self.get_body_argument("id")
		sort = dict(
			name = self.get_body_argument("name"),
			intro = self.get_body_argument("intro",default=None),
			show = True if intval(self.get_body_argument("show", default=None)) else False
		)
		model = SortModel()
		if not model(sort):
			self.custom_error(model.error_msg)
		sort = yield self.db.sort.find_and_modify({
			"_id": ObjectId(id)
		}, {
			"$set": sort
		})
		if not sort:
			self.custom_error("不存在这个板块")
		else:
			self.redirect("/manage/sortdetail/%s" % id)
Ejemplo n.º 46
0
 def setting_action(self, *args, **kwargs):
     config = self._read_config()
     config["global"]["site"] = dict(
         webname=self.get_body_argument("webname"),
         keyword=self.get_body_argument("keyword"),
         description=self.get_body_argument("description"))
     config["global"]["init_money"] = intval(
         self.get_body_argument("init_money"))
     config["global"]["register"] = self.get_body_argument("register")
     if config["global"]["register"] not in ("open", "invite", "close"):
         self.custom_error("注册方法不正确")
     captcha = self.get_body_arguments("captcha")
     for d in ("register", "login", "comment"):
         config["global"]["captcha"][d] = True if (d in captcha) else False
     key = self.get_body_argument("key", default=None)
     if key:
         config["global"]["cookie_secret"] = key
     self._write_config(config)
     self.redirect("/manage/setting")
Ejemplo n.º 47
0
    def get(self, *args, **kwargs):
        limit = 15

        try:
            page = intval(args[1])
            if page <= 0: page = 1
        except:
            page = 1

        cursor = self.db.article.find()
        cursor.sort([('top', pymongo.DESCENDING),
                     ("lastcomment", pymongo.DESCENDING),
                     ('time', pymongo.DESCENDING)]).limit(limit).skip(
                         (page - 1) * limit)
        count = yield cursor.count()
        posts = yield cursor.to_list(length=limit)
        tags = yield self.get_tag()

        self.write(
            dict(posts=posts, tags=tags, page=page, count=count, each=limit))
Ejemplo n.º 48
0
 def get(self, *args, **kwargs):
     sortid = args[0]
     limit = 15
     page = intval(args[2])
     if not page or page <= 0: page = 1
     sort = yield self.db.sort.find_one({"_id": ObjectId(sortid)})
     if not sort:
         self.custom_error("板块不存在")
     cursor = self.db.article.find({"sort._id": ObjectId(sortid)})
     count = yield cursor.count()
     cursor.sort([('time', pymongo.DESCENDING)]).limit(limit).skip(
         (page - 1) * limit)
     posts = yield cursor.to_list(length=limit)
     self.render("sort.htm",
                 posts=posts,
                 page=page,
                 sort=sort,
                 time_span=time_span,
                 count=count,
                 each=limit)
Ejemplo n.º 49
0
    def detail_act(self, arg):
        if not arg : arg = self.current_user["username"]
        username = self.get_query_argument("u", default = arg)
        user = yield self.db.member.find_one({
            "username": username
        })
        if not user:
            self.custom_error("不存在这个用户")

        limit = 10
        page = intval(self.get_argument("page", default=1))
        if not page or page <= 0 : page = 1
        cursor = self.db.article.find({
            "user": username
        })
        count = yield cursor.count()
        cursor.tag([('time', pymongo.DESCENDING)]).limit(limit).skip((page - 1) * limit)
        posts = yield cursor.to_list(length = limit)
        face = "./static/face/%s/180.png" % user["_id"]
        if not os.path.exists(face): face = "./static/face/guest.png"
        self.render("user.html", user = user, posts = posts, page = page, time_span = time_span, each = limit, count = count)
Ejemplo n.º 50
0
	def post(self, *args, **kwargs):
		self.func = intval(self.get_argument("CKEditorFuncNum"))
		now = time.time()
		try:
			if self.request.files:
				file = self.request.files['upload'][0]
				ext = os.path.splitext(file["filename"])[-1]
				if ext not in (".png", ".gif", ".jpg", ".bmp", ".jpeg"):
					self.end("", u"不允许上传此类后缀的文件哦")
				self.orgname = file["filename"]
				filename = md5("%s%s" % (file["filename"], random_str(6))) + ext
				folder = "%s/%s/%s" % (self.settings["imagepath"], humantime(now, "%Y%m"),
				                          humantime(now, "%d"))
				if not os.path.isdir(folder):
					os.makedirs(folder)
				filename = "%s/%s" % (folder, filename)
				with open(filename, "wb") as fin:
					fin.write(file["body"])
					fin.close()
				self.end(filename, u"上传成功")
		except tornado.web.Finish, e:
			pass
Ejemplo n.º 51
0
 def _view_userlist(self, arg):
     if arg not in ('all', 'subscribe', 'unsubscribe'): arg = 'all'
     options = {
         'all': {},
         'subscribe': {'subscribe': True},
         'unsubscribe': {'subscribe': False}
     }
     page = intval(self.get_argument('page', default=1))
     if not page or page <= 0: page = 1
     limit = 10
     cursor = self.db.wechat_user.find(options[arg])
     count = yield cursor.count()
     cursor.sort([('time', pymongo.DESCENDING)]).limit(limit).skip((page - 1) * limit)
     userlist = yield cursor.to_list(limit)
     if userlist:
         w_userlist = self.wechat.user.get_user_list([u['wechatid'] for u in userlist])
         for i in range(len(userlist)):
             userlist[i].update(w_userlist[i])
     sex = {
         0: '未知',
         1: '男',
         2: '女'
     }
     self.render('user-list.html', userlist=userlist, item=arg, sex=sex, page=page, each=limit, count=count)
Ejemplo n.º 52
0
    def detail_act(self, arg):
        if not arg: arg = self.current_user["username"]
        username = self.get_query_argument("u", default=arg)
        user = yield self.db.member.find_one({"username": username})
        if not user:
            self.custom_error("不存在这个用户")

        limit = 10
        page = intval(self.get_argument("page", default=1))
        if not page or page <= 0: page = 1
        cursor = self.db.article.find({"user": username})
        count = yield cursor.count()
        cursor.sort([('time', pymongo.DESCENDING)]).limit(limit).skip(
            (page - 1) * limit)
        posts = yield cursor.to_list(length=limit)
        face = "./static/face/%s/180.png" % user["_id"]
        if not os.path.exists(face): face = "./static/face/guest.png"
        self.render("user.htm",
                    user=user,
                    posts=posts,
                    page=page,
                    time_span=time_span,
                    each=limit,
                    count=count)
Ejemplo n.º 53
0
    def get(self, *args, **kwargs):
        tagid = args[0]
        limit = 15

        try:
            page = intval(args[2])
            if page <= 0: page = 1
        except:
            page = 1

        tag = yield self.db.tag.find_one({"_id": ObjectId(tagid)})
        if not tag:
            self.custom_error("标签不存在")
        cursor = self.db.article.find({"tag._id": ObjectId(tagid)})
        count = yield cursor.count()
        cursor.sort([('time', pymongo.DESCENDING)]).limit(limit).skip(
            (page - 1) * limit)
        posts = yield cursor.to_list(length=limit)
        self.render("tag.html",
                    posts=posts,
                    page=page,
                    tag=tag,
                    count=count,
                    each=limit)
Ejemplo n.º 54
0
    def article_action(self, *args, **kwargs):
        method = self.get_body_argument("method", default="")
        id = self.get_body_argument("id", default=None)
        if method in ("star", "unstar"):
            star = True if method == "star" else False
            post = yield self.db.article.find_and_modify({
                "_id": ObjectId(id)
            }, {
                "$set": {
                    "star": star
                }
            })
            content = u"你的文章《%s》被管理员" % post["title"] + (u"加精" if star else u"取消精华") + u"了"
            yield self.message(fromuser=None, touser=post["user"], content=content,
                               jump="/post/%s" % id)
        elif method in ("open", "close"):
            open = True if method == "open" else False
            post = yield self.db.article.find_and_modify({
                "_id": ObjectId(id)
            }, {
                "$set": {
                    "open": open
                }
            })
            yield self.message(fromuser=None, touser=post["user"], jump="/post/%s" % id,
                content=u"你的文章《%s》被管理员%s了" % (post["title"], u"公开" if open else u"取消公开"))
        elif method in ("top", "notop"):
            top = True if method == "top" else False
            post = yield self.db.article.find_and_modify({
                "_id": ObjectId(id)
            }, {
                "$set": {
                    "top": top
                }
            })
            yield self.message(fromuser=None, touser=post["user"], jump="/post/%s" % id,
                content=u"你的文章《%s》被管理员%s了" % (post["title"], u"置顶" if top else u"取消置顶"))
        elif method == "del":
            post = yield self.db.article.find_and_modify({
                "_id": ObjectId(id)
            }, remove = True)
            if not post:
                self.custom_error("不存在这篇文章", jump="/")
            yield self.db.member.update({
            }, {
                "$pull": {
                    "bookmark": {"id": id}
                }
            }, multi = True)
            yield self.message(fromuser=None, touser=post["user"], jump="/post/%s" % id,
                content=u"你的文章《%s》被管理员删除了" % post["title"])
            self.redirect("/")
        elif method == "rank":
            rank = intval(self.get_body_argument("rank"))
            post = yield self.db.article.find_one({
                "_id": ObjectId(id)
            })
            if not post:
                self.custom_error("不存在这篇文章")
            if "rank" in post and post.get("rank") != 0:
                self.custom_error("已经评分过啦")
            if not (-10 <= rank <= 10):
                self.custom_error("评分超出范围拉")
            yield self.db.article.find_and_modify({
                "_id": ObjectId(id)
            }, {
                "$set": {"rank": rank}
            })
            yield self.message(fromuser=None, touser=post["user"],
                content=u"你的文章《%s》被管理员" % post["title"] + (u"奖励" if rank > 0 else u"扣除") + u"%d金币" % abs(rank),
                jump="/post/%s" % id)

        self.redirect("/post/%s" % id)
Ejemplo n.º 55
0
    def post(self, *args, **kwargs):
        content = self.get_body_argument("ckeditor", default=None)
        title = self.get_body_argument("title", default=None)
        sort = self.get_body_argument("sort", default=None)
        charge = intval(self.get_body_argument("charge", default=0))
        freebegin = intval(self.get_body_argument("freebegin", default=0))
        freeend = intval(self.get_body_argument("freeend", default=0))
        private = self.get_body_argument('private', default='off')

        if not title:
            self.flash["article"] = content
            self.custom_error("标题不能为空哦", jump="/publish")
        if charge < 0:
            self.flash["article"] = content
            self.custom_error("收费不能低于0", jump="/publish")
        if freebegin > freeend:
            self.flash["article"] = content
            self.custom_error("结束时间不能小于开始时间", jump="/publish")
        if not sort:
            self.flash["article"] = content
            self.custom_error("不存在这个分类", jump="/publish")
        tosort = yield self.db.sort.find_and_modify({
            "_id": ObjectId(sort)
        }, {
            "$inc": {"article": 1}
        })
        if not tosort:
            self.flash["article"] = content
            self.custom_error("不存在这个分类", jump="/publish")

        # filter html
        content = xss_filter(content)

        # attach file
        attach = []
        fs = motor.motor_tornado.MotorGridFS(self.db)

        for file in self.request.files.get('file', []):
            fs_id = yield fs.put(file['body'], filename=file['filename'])
            attach.append(fs_id)

        article = {
            "title": title,
            "content": content,
            "user": self.current_user["username"],
            "sort": tosort,
            "view": 0,
            "like": [],
            "unlike": [],
            "charge": charge,
            "time": time.time(),
            "freebegin": freebegin,
            "freeend": freeend,
            "buyer": [],
            "thanks": [],
            "star": False,
            "rank": 0,
            "comment": [],
            "open": False,
            "top": False,
            "lastcomment": time.time(),
            'attach': attach,
            'private': private,
        }
        model = ArticleModel()
        if not model(article):
            self.flash["article"] = content
            self.custom_error(model.error_msg, jump="/publish")
        id = yield self.db.article.insert(article)

        # send mail
        users = self.db.member.find()

        article_url = '{}/post/{}'.format(tornado.options.options.url, id)
        content = "{}<br><br>{}".format('''<a href="{}" target="_blank">点击查看论坛文章</a>'''.format(article_url), content)

        while (yield users.fetch_next):
            user = users.next_object()

            if user.get('power') >= 0 and self.settings["email"]["method"] == "mailgun" and "email" in user and user.get("allowemail"):
                Sendemail(self.settings.get("email")).send(
                    title=u"论坛文章:《{}》,作者:{}".format(title, self.current_user["username"]),
                    content=content,
                    to=user["email"]
                )

        self.redirect("/post/%s" % id)
Ejemplo n.º 56
0
    def article_action(self, *args, **kwargs):
        method = self.get_body_argument("method", default="")
        id = self.get_body_argument("id", default=None)
        if method in ("star", "unstar"):
            star = True if method == "star" else False
            post = yield self.db.article.find_and_modify(
                {"_id": ObjectId(id)}, {"$set": {
                    "star": star
                }})
            content = u"你的文章《%s》被管理员" % post["title"] + (u"加精" if star else
                                                         u"取消精华") + u"了"
            yield self.message(fromuser=None,
                               touser=post["user"],
                               content=content,
                               jump="/post/%s" % id)
        elif method in ("open", "close"):
            open = True if method == "open" else False
            post = yield self.db.article.find_and_modify(
                {"_id": ObjectId(id)}, {"$set": {
                    "open": open
                }})
            yield self.message(fromuser=None,
                               touser=post["user"],
                               jump="/post/%s" % id,
                               content=u"你的文章《%s》被管理员%s了" %
                               (post["title"], u"公开" if open else u"取消公开"))
        elif method in ("top", "notop"):
            top = True if method == "top" else False
            post = yield self.db.article.find_and_modify(
                {"_id": ObjectId(id)}, {"$set": {
                    "top": top
                }})
            yield self.message(fromuser=None,
                               touser=post["user"],
                               jump="/post/%s" % id,
                               content=u"你的文章《%s》被管理员%s了" %
                               (post["title"], u"置顶" if top else u"取消置顶"))
        elif method == "del":
            post = yield self.db.article.find_and_modify({"_id": ObjectId(id)},
                                                         remove=True)
            if not post:
                self.custom_error("不存在这篇文章", jump="/")
            yield self.db.member.update({},
                                        {"$pull": {
                                            "bookmark": {
                                                "id": id
                                            }
                                        }},
                                        multi=True)
            yield self.message(fromuser=None,
                               touser=post["user"],
                               jump="/post/%s" % id,
                               content=u"你的文章《%s》被管理员删除了" % post["title"])
            self.redirect("/")
        elif method == "rank":
            rank = intval(self.get_body_argument("rank"))
            post = yield self.db.article.find_one({"_id": ObjectId(id)})
            if not post:
                self.custom_error("不存在这篇文章")
            if "rank" in post and post.get("rank") != 0:
                self.custom_error("已经评分过啦")
            if not (-10 <= rank <= 10):
                self.custom_error("评分超出范围拉")
            yield self.db.article.find_and_modify({"_id": ObjectId(id)},
                                                  {"$set": {
                                                      "rank": rank
                                                  }})
            yield self.message(fromuser=None,
                               touser=post["user"],
                               content=u"你的文章《%s》被管理员" % post["title"] +
                               (u"奖励" if rank > 0 else u"扣除") +
                               u"%d金币" % abs(rank),
                               jump="/post/%s" % id)

        self.redirect("/post/%s" % id)