from datetime import datetime from . import BaseSchema from marshmallow import fields, validate, RAISE, INCLUDE, EXCLUDE class AddProjectSchema(BaseSchema): type = fields.String(required=False, allow_none=True) title = fields.String(required=True, validate=validate.Length(min=2, max=50)) code = fields.String(required=False, allow_none=True) amount = fields.Decimal(required=False, default=0, allow_none=True) # 总金额 consult_type = fields.String(required=False, allow_none=True) # 咨询项目类型 contract_sign_at = fields.String(required=False, allow_none=True) # 项目签订日期 party_a = fields.String(required=False, allow_none=True) # 项目甲方 party_b = fields.String(required=False, allow_none=True) # 项目乙方 leader = fields.String(required=False, allow_none=True) # 项目开发人 level = fields.String(required=False, allow_none=True) # 项目开发级别 source = fields.String(required=False, allow_none=True) # 项目来源 introducer = fields.String(required=False, allow_none=True) # 同业引进人 standard_type = fields.String(required=False, allow_none=True) # 体系类型 review_type = fields.String(required=False, allow_none=True) # 审核类型 customer_addr = fields.String(required=False, allow_none=True) # 客户地址 customer_contact = fields.String(required=False, allow_none=True) # 客户联系人 customer_phone = fields.String(required=False, allow_none=True) # 客户联系电话 ascription = fields.String(required=False, allow_none=True) # 项目归属 risk = fields.String(required=False, allow_none=True) # 风险级别 people_nums = fields.Int(required=False, allow_none=True) # 人数 start_time = fields.DateTime(required=True, default=datetime.now) # 项目开始时间 end_time = fields.DateTime(required=True, default=datetime.now) # 项目结束时间 users = fields.List(fields.String(), required=True) # 项目参与者 flow = fields.List(fields.Dict(), required=False, allow_none=True) # 流程节点列表 payback = fields.List(fields.Dict(), required=False, allow_none=True) # 回款计划列表 production = fields.Dict(required=False, allow_none=True) # 项目费用相关 remarks = fields.String(required=False, allow_none=True) # 备注 class Meta: unknown = EXCLUDE class QuerySchema(BaseSchema): project = fields.UUID(required=True) class Meta: unknown = EXCLUDE class QueryPaybackSchema(BaseSchema): project = fields.UUID(required=True) class Meta: unknown = EXCLUDE class DeleteProjectUserSchema(BaseSchema): uuid = fields.UUID(required=True) project = fields.UUID(required=True) class Meta: unknown = EXCLUDE class ModifyProjectUserSchema(BaseSchema): users = fields.List(fields.UUID, required=True) project = fields.UUID(required=True) class Meta: unknown = EXCLUDE class UpdateFlowSchema(BaseSchema): flow = fields.List(fields.Dict(required=True), required=True) uuid = fields.UUID(required=True) class Meta: unknown = EXCLUDE class UpdatePaybackSchema(BaseSchema): payback = fields.List(fields.Dict(required=True), required=True) uuid = fields.UUID(required=True) class Meta: unknown = EXCLUDE class UpdateProductionSchema(BaseSchema): production = fields.Dict(required=True) uuid = fields.UUID(required=True) class Meta: unknown = EXCLUDE