def event_create(self): """ 活动发布接口 """ validators = dict( tableid=ObjectIdConverter(), alarm=Alarm(if_missing=None, if_empty=None), title=fe.validators.UnicodeString(min=1, strip=True), content=fe.validators.UnicodeString(strip=True, if_missing=None, if_empty=None), addr=fe.validators.UnicodeString(max=30, strip=True, if_missing=None, if_empty=None), ) form = Form(self.request, validators=validators, state=State(request=self.request), variable_decode=True) if form.validate(force_validate=True): event = JSONObject() form.bind(event) tableid = event.pop("tableid") table = self.db.event_table.find_and_modify( {"_id": tableid, "$or": [{"mode": 1}, {"user.$id": self.request.user.id}]}, {"$inc": {"stat.event": 1}} ) if not table: raise APIError(-1, u"不能向该日程表里添加日程", path=self.request.path) # 添加活动时,若尚未关注该专题,则需先添加关注 follow = self.db.event_table_follow.find_one({"table.$id": tableid, "user.$id": self.request.user.id}) if not follow: self.db.event_table.update({"_id": tableid}, {"$inc": {"stat.follow": 1}}) follow = { "user": DBRef("user", self.request.user.id), "table": DBRef("event_table", tableid), "time": {"create": int(time.time() * 1000)}, } self.db.event_table_follow.save(follow) alarm = event.get("alarm") if not alarm: event.pop("alarm") addr = event.get("addr") if not addr: event.pop("addr") event.update({"isdeleted": False, "enable": True}) event.update({"time": {"create": int(time.time() * 1000)}}) event.update({"user": DBRef("user", self.request.user.id)}) event.update({"stat": {"add": 1, "feed": 0}}) event.update({"table": DBRef("event_table", tableid)}) self.db.event.save(event) # 设置个性化报警信息 if not alarm: alarm = {} else: alarm = alarm.copy() alarm.update({"user": DBRef("user", self.request.user.id)}) alarm.update({"event": DBRef("event", event.get("_id"))}) alarm.update({"status": 10, "isroot": True}) alarm.update({"time": {"create": int(time.time() * 1000)}}) alarm.update({"privacy": 1}) self.db.alarm.save(alarm) # event.update({'user': user_snap(self.request.user)}) # alarm.update({'event': event}) # return dict(alarm = alarm) return dict(result=1) return FormObject(form.errors)