def post(self): result = utils.init_response_data() self.model.extra_params = self.response_extra_params try: self.check_request_params(self.mp_require_params) request_params = self.format_request_params() exec("""request_params = self.mp_default_params.update(%s)""" % request_params) request_params = self.mp_default_params query_params = {} for key in self.mp_query_params: query_params.update({ key: request_params[key], }) if query_params == {} or not self.model.is_exists(query_params): obj = self.model.create(**request_params) result["data"] = utils.dump(obj) else: if self.mp_update_or_raise == "update": obj = self.model.search(query_params) query_params = {"_id": utils.create_objectid(obj["_id"])} result["data"] = self.model.update(query_params, request_params) else: raise Exception("已存在!") except Exception, e: result = utils.reset_response_data(0, str(e))
def put(self): result = utils.init_response_data() try: banner_id = self.get_argument("banner_id", "") use_type = self.get_argument("use_type", "banner") banner = self.model.get_coll().find_one({"_id": utils.create_objectid(banner_id), "enable_flag": 1}) if banner is None: raise ValueError(u'该图片不存在或已被删除') files = self.request.files if files.has_key("files"): files = files["files"] data = self.model.upload_image(files, use_type) else: raise ValueError(u"没有上传文件") for d in data: banner["file_name"] = d["file_name"] banner["use_type"] = d["use_type"] banner["add_time"] = d["add_time"] banner["file_type"] = d["file_type"] banner["logs"].append({ "user_id": "", "action_date": utils.get_current_time(), "action": "修改文件", "note": "file_path|from|%s|to|%s" % (banner['file_path'], d['file_path']) }) banner["file_path"] = d["file_path"] self.model.get_coll().save(banner) except StandardError, e: result = utils.reset_response_data(0, unicode(e))
def delete(self): result = utils.init_response_data() try: ids = json.loads(self.get_argument("ids")) _ids = [utils.create_objectid(id) for id in ids] for _id in _ids: self.model.delete(_id=_id) except Exception, e: result = utils.reset_response_data(0, str(e))
def get_user_id(self): token = self.get_argument('access_token', None) if not token: auth_header = self.request.headers.get('Authorization', None) if not auth_header: raise Exception('This resource need a authorization token') token = auth_header[7:] redis_tool = redislib.RedisTool() user_id = redis_tool.get(token) return utils.create_objectid(user_id)
def get(self): result = utils.init_response_data() try: _id = self.get_argument("_id") link = self.model.search({"_id": utils.create_objectid(_id)}) if link: count = link.get("count", 0) + 1 last_read_time = str(datetime.datetime.now()) query_params = {"_id": utils.create_objectid(_id)} update_params = { "count": count, "last_read_time": last_read_time } self.model.update(query_params, update_params) except Exception, e: result = utils.reset_response_data(0, str(e)) self.write(result) self.finish() return
def get(self): result = utils.init_response_data() self.model.extra_params = self.mg_extra_params try: id = self.get_argument("id") _id = utils.create_objectid(id) ret = self.model.search({"_id": _id}) if ret: result["data"] = ret else: result["data"] = {} except Exception, e: result = utils.reset_response_data(0, str(e))
def delete(self, file_id): file = self.get_coll().find_one( {"_id": utils.create_objectid(file_id)}) if file is None: raise ValueError(u"该文件不存在或已被删除") file['enable_flag'] = 0 file['logs'].append({ "action_date": utils.get_current_time(), "action": "删除文件", "note": "" }) self.get_coll().save(file)
def edit(self, file_id, file): ''' :param file_id: 文件id :param file: self.request.files['file']的格式 :param user_id: 用户id :return: ''' import os, time file_coll = self.get_coll().find_one({ "_id": utils.create_objectid(file_id), "enable_flag": 1 }) if file_coll is None: raise ValueError(u"该文件不存在或已被删除") upload_path = options.file_download_store_url + "%s/%s/" % ( file_coll['file_type'], time.strftime('%Y/%m/%d')) if not os.path.exists(upload_path): os.makedirs(upload_path) file_metas = file if file_metas == '': raise ValueError(u"没有上传文件") for meta in file_metas: filename = str(utils.get_local_timestamp()) + meta['filename'] filepath = os.path.join(upload_path, filename) #有些文件需要已二进制的形式存储,实际中可以更改 with open(filepath, 'wb') as up: up.write(meta['body']) file_coll['logs'].append({ "action_date": utils.get_current_time(), "action": "修改文件", "note": "file_path|from|%s|to|%s" % (file_coll['file_path'], filepath.split(utils.options.project_root_path)[1]) }) file_coll['file_path'] = filepath.split( utils.options.project_root_path)[1] self.get_coll().save(file_coll)
def put(self): result = utils.init_response_data() try: id = self.get_argument("id") _id = utils.create_objectid(id) self.check_request_params(self.mp_require_params) request_params = self.format_request_params() update_params = {} exec("""update_params.update(%s)""" % request_params) self.check_update_params(update_params) update_params["_id"] = _id del update_params["id"] ret = self.model.update(query_params={"_id": _id}, update_params=update_params) result['data'] = ret except Exception, e: result = utils.reset_response_data(0, str(e))