예제 #1
0
파일: home.py 프로젝트: Jonekee/bigscreen
    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)