Esempio n. 1
0
    def get(self, request, info):
        user = request.user
        user_roles = [role.get('id') for role in user.roles.values('id')]
        if min(user_roles) == 1:
            serializer = self.get_serializer(self.get_queryset(), many=True)
            department_list = [
                department.get('department_name')
                for department in serializer.data
            ]
        else:
            department_list = [
                department.get('department_name')
                for department in user.department.values('department_name')
            ]

        res = SQLHepler.fetch_all(SQL_Hardware_Product_Search_Client.format(
            info, info, info, info, department_list),
                                  db_dict=Sidus_Dev_Database)
        return Response({
            "status": RET.OK,
            "msg": Info_Map[RET.OK],
            "data": res
        })
Esempio n. 2
0
    def get(self, request, offered, series):
        user = request.user
        # 判断用户角色做不同处理
        user_roles = [role.get('id') for role in user.roles.values('id')]
        if min(user_roles) == 1:
            serializer = self.get_serializer(self.get_queryset(), many=True)
            offered_list = [
                department.get('department_name')
                for department in serializer.data
            ]
        else:
            offered_list = [
                department.get('department_name')
                for department in user.department.values('department_name')
            ]

        if offered == 'ALL':
            hardware_p_info = SQLHepler.fetch_all(
                SQL_Hardware_All_Product_Client,
                args=(offered_list, ),
                db_dict=Sidus_Dev_Database)
        elif offered != 'ALL' and series == 'ALL':
            if offered not in offered_list:
                return Response({
                    "status": RET.PARAMERR,
                    "msg": Info_Map[RET.PARAMERR]
                })
            hardware_p_info = SQLHepler.fetch_all(SQL_Hardware_Product_Client,
                                                  args=offered,
                                                  db_dict=Sidus_Dev_Database)
        else:
            if offered not in offered_list:
                return Response({
                    "status": RET.PARAMERR,
                    "msg": Info_Map[RET.PARAMERR]
                })
            hardware_p_info = SQLHepler.fetch_all(
                SQL_Hardware_Product_offered_series_Client,
                args=(offered, series),
                db_dict=Sidus_Dev_Database)
        info = []
        # 获取参与人员列表信息
        for data in hardware_p_info:
            uuid = data.get('uuid')
            instance = ProdPartner.objects.filter(pro_uuid=uuid)
            creator = None
            partner = []
            if instance:
                serializer = ProdPartnerSerializer(instance=instance,
                                                   many=True)
                partner = serializer.data[0].get('pro_user')
                creator = serializer.data[0].get('pro_create')
                # if creator in partner:
                #     partner.remove(creator)
                # 获取创建者用户所在部门的高级用户
                try:
                    user = instance.first().pro_create
                    if user:
                        department_list = [
                            c_user.get('id')
                            for c_user in user.department.values('id')
                        ]
                        # 添加部门的高级人员到参与者
                        temp_list = User.objects.filter(
                            department__in=department_list, roles=2)
                        for high_user in temp_list:
                            high_user_data = UserSerializer(
                                instance=high_user).data
                            if high_user_data and high_user_data not in partner:
                                partner.append(high_user_data)
                except Exception as e:
                    return Response({"status": RET.UNKOWNERR, "msg": str(e)})
                if creator in partner:
                    partner.remove(creator)
            data.update(creator=creator, partner=partner)
            info.append(data)
        return Response({
            "status": RET.OK,
            "msg": Info_Map[RET.OK],
            "data": info
        })