Пример #1
0
    def get(self, id, name):
        """访问项目功能"""
        staff = current_staff

        proj = staff.app.projects.filter_by(id=id).one()
        # 判断是否有权限
        if not proj_biz.staff_has_perm_for_project(staff, proj):
            raise errors.BizError(errors.ERR_PERMISSION_DENIED,
                                  'staff has no permission for this project',
                                  dict(uid=staff.uid, id=proj.id))

        args = access_function_args.parse_args()
        uid = args.get('uid')
        if uid and not (uid == proj.owner.uid or any(c.uid == uid
                                                     for c in proj.customers)):
            # 指定的uid不是owner也不是customers
            raise errors.BizError(errors.ERR_INVALID_PARAMS, 'invalid uid',
                                  dict(uid=uid))
        elif not uid:
            uid = proj.owner.uid

        app = staff.app
        app_client = app_clients.get_client(app.appid, app.appkey, app.urls)
        url = app_client.build_access_function_url(proj.domain,
                                                   proj.type,
                                                   proj.biz_id,
                                                   proj.owner.uid,
                                                   name,
                                                   id=proj.id,
                                                   uid=uid)

        return dict(url=url)
Пример #2
0
    def post(self):
        """转发其它渠道的消息到客服系统"""
        app = current_application
        data = request.get_json()
        proj = biz.get_project(app, data.get('project_id', data.get('id')),
                               data.get('project_domain'),
                               data.get('project_type'),
                               data.get('project_biz_id', data.get('biz_id')))

        uid = data['uid']
        try:
            customer = next(filter(lambda c: c.uid == uid, proj.customers))
        except StopIteration:
            raise errors.BizError(errors.ERR_PERMISSION_DENIED,
                                  'customer is not the member of the project',
                                  dict(uid=uid))

        content = data['content']
        if isinstance(content, dict):
            content = json.dumps(content)

        rx_key, ts = proj_biz.send_channel_message(proj, customer,
                                                   data['channel'],
                                                   data.get('domain', ''),
                                                   data['type'], content)
        return dict(rx_key=rx_key, ts=ts), 200
    def get(self, id=None, domain=None, type=None, biz_id=None):
        """获取项目当前会话信息"""
        app = current_application

        proj = biz.get_project(app, id, domain, type, biz_id)
        current_session = proj.current_session
        if current_session is None:
            raise errors.BizError(errors.ERR_ITEM_NOT_FOUND, 'no current session', dict(id=proj.id))

        return current_session
Пример #4
0
    def get(self, id):
        """尝试接待项目"""
        staff = current_staff

        proj = staff.app.projects.filter_by(id=id).one()
        # 判断是否有权限
        if not proj_biz.staff_has_perm_for_project(staff, proj):
            raise errors.BizError(errors.ERR_PERMISSION_DENIED,
                                  'can not handle this project',
                                  dict(uid=staff.uid, id=proj.id))

        return proj_proj_biz.try_handle_project(proj, staff)
Пример #5
0
    def get(self, id):
        """获取项目扩展数据"""
        staff = current_staff

        proj = staff.app.projects.filter_by(id=id).one()
        # 判断是否有权限
        if not proj_biz.staff_has_perm_for_project(staff, proj):
            raise errors.BizError(errors.ERR_PERMISSION_DENIED,
                                  'staff has no permission for this project',
                                  dict(uid=staff.uid, id=proj.id))

        proj_biz.fetch_ext_data(staff, proj)
        return None, 204
Пример #6
0
    def get(self, id):
        """获取项目消息"""
        staff = current_staff

        proj = staff.app.projects.filter_by(id=id).one()
        # 判断是否有权限
        if not proj_biz.staff_has_perm_for_project(staff, proj):
            raise errors.BizError(errors.ERR_PERMISSION_DENIED,
                                  'staff has no permission for this project',
                                  dict(uid=staff.uid, id=proj.id))

        args = fetch_msgs_arguments.parse_args()
        msgs, has_more, no_more = proj_biz.fetch_project_msgs(proj, **args)
        return dict(msgs=msgs, has_more=has_more, no_more=no_more)
    def get(self, id=None, domain=None, type=None, biz_id=None):
        """尝试接待项目"""
        app = current_application

        args = try_handle_project_arguments.parse_args()
        uid = args['uid']

        staff = app.staffs.filter_by(uid=uid).one()
        proj = biz.get_project(app, id, domain, type, biz_id)
        # 判断是否有权限
        if not proj_biz.staff_has_perm_for_project(staff, proj):
            raise errors.BizError(errors.ERR_PERMISSION_DENIED, 'staff can not handle this project',
                                  dict(uid=uid, id=proj.id))

        return proj_proj_biz.try_handle_project(proj, staff)