コード例 #1
0
ファイル: project.py プロジェクト: fengjy96/rest_task
 def get(self, request, *args, **kwargs):
     user_id = request.user.id
     project_id = request.query_params.get('project_id', None)
     tasks = Task.objects.filter(project_id=project_id, sender_id=user_id)
     if len(tasks) > 0:
         return MykeyResponse(status=status.HTTP_200_OK, data=1, msg='请求成功')
     return MykeyResponse(status=status.HTTP_200_OK, data=0, msg='请求成功')
コード例 #2
0
ファイル: points.py プロジェクト: fengjy96/rest_task
    def post(self, request, format=None):
        try:
            # 项目标识
            project_id = request.data.get('project_id', None)
            # 项目负责人百分比
            project_receiver_percentage = request.data.get(
                'project_receiver_percentage', None)
            # 商务人员百分比
            project_sender_percentage = request.data.get(
                'project_sender_percentage', None)
            # 项目总积分
            project_points = request.data.get('project_points', None)

            self.create_project_receiver_points(project_id, project_points,
                                                project_receiver_percentage)
            self.create_project_sender_points(project_id, project_points,
                                              project_sender_percentage)
            self.create_task_receiver_points(project_id, project_points,
                                             project_receiver_percentage,
                                             project_sender_percentage)
            self.create_projectpointsex(project_id, project_points,
                                        project_receiver_percentage,
                                        project_sender_percentage)

        except Exception as e:
            return MykeyResponse(status=status.HTTP_400_BAD_REQUEST,
                                 msg='请求失败')
        return MykeyResponse(status=status.HTTP_200_OK, msg='请求成功')
コード例 #3
0
ファイル: files.py プロジェクト: fengjy96/rest_task
    def post(self, request):
        try:
            # 获取用户上传的文件,保存到服务器,再添加到数据库
            files = request.FILES.getlist('file', [])
            # 判断文件列表是否存在文件
            if len(files) > 0:
                # 判断上传路径是否存在,不存在则创建
                if not os.path.exists(settings.MEDIA_ROOT):
                    os.makedirs(settings.MEDIA_ROOT)

                file = files[0]
                # 获取文件后缀名
                extension = os.path.splitext(file.name)[1]
                # 通过uuid重命名上传的文件
                filename = '{}{}'.format(uuid.uuid4(), extension)
                # 构建文件路径
                file_path = '{}{}'.format(settings.MEDIA_URL, filename)
                file_path_server = '{}/{}'.format(settings.MEDIA_ROOT,
                                                  filename)

                # 保存文件
                with open(file_path_server, 'wb') as f:
                    for c in file.chunks():
                        f.write(c)
                    f.close()

                data = {'link': file_path}
                return Response(data=data)
            return MykeyResponse(status=status.HTTP_400_BAD_REQUEST,
                                 msg='请求失败')
        except Exception as e:
            return MykeyResponse(status=status.HTTP_400_BAD_REQUEST,
                                 msg='请求失败')
コード例 #4
0
ファイル: project.py プロジェクト: fengjy96/rest_task
 def post(self, request, format=None):
     try:
         project_id = request.data.get('project_id', None)
         if project_id is not None:
             self.update_project(project_id)
     except Exception as e:
         return MykeyResponse(status=status.HTTP_400_BAD_REQUEST, msg='请求失败')
     return MykeyResponse(status=status.HTTP_200_OK, msg='请求成功')
コード例 #5
0
ファイル: project.py プロジェクト: fengjy96/rest_task
    def post(self, request, format=None):
        try:
            project_ids = request.data.get('project_ids', [])
            self.update_project(project_ids)

        except Exception as e:
            msg = e.args if e else '请求失败'
            return MykeyResponse(status=status.HTTP_400_BAD_REQUEST, msg=msg)
        return MykeyResponse(status=status.HTTP_200_OK, msg='请求成功')
コード例 #6
0
ファイル: step.py プロジェクト: fengjy96/rest_task
    def post(self, request):
        try:
            # 步骤标识
            step_id = request.data.get('step_id', None)
            # 标题
            title = request.data.get('title', None)
            # 进度
            progress = request.data.get('progress', None)
            # 备注
            memo = request.data.get('memo', None)
            # 富文本内容
            content = request.data.get('content', None)
            # 文件
            files = request.data.get('files', None)

            # 增加步骤日志
            if step_id is not None and title is not None and progress is not None:
                # if content or files:
                step_log = StepLog(step_id=step_id,
                                   title=title,
                                   progress=progress,
                                   memo=memo)
                step_log.save()

                if files:
                    for file in files:
                        # 增加文件表记录
                        step_log_file = Files(
                            steplog=step_log,
                            name=file['name'],
                            path=file['url'],
                            path_thumb_w200=file.get('path_thumb_w200', ''),
                            path_thumb_w900=file.get('path_thumb_w900', ''))
                        step_log_file.save()

                # 如果存在富文本,则先添加富文本
                if content:
                    progresstexts = ProgressTexts(steplog=step_log,
                                                  content=content)
                    progresstexts.save()

                # 更新步骤进度
                step = Step.objects.get(id=step_id)
                if step:
                    step.progress = progress
                    # updated
                    step.label = 1
                    step.save()

                    task_id = step.task_id
                    BusinessPublic.update_progress_by_task_id(task_id)

        except Exception as e:
            msg = e.args if e else '请求失败'
            return MykeyResponse(status=status.HTTP_400_BAD_REQUEST, msg=msg)

        return MykeyResponse(status=status.HTTP_200_OK, msg='请求成功')
コード例 #7
0
    def post(self, request, format=None):
        try:
            # 任务标识
            task_id = request.data.get('task_id')

            self.update_task(task_id)
        except Exception as e:
            return MykeyResponse(status=status.HTTP_400_BAD_REQUEST,
                                 msg='请求失败')
        return MykeyResponse(status=status.HTTP_200_OK, msg='请求成功')
コード例 #8
0
ファイル: step.py プロジェクト: fengjy96/rest_task
    def post(self, request):
        try:
            user_id = request.user.id
            # 文件或者富文本标识
            step_log_file_id = request.data.get('step_log_file_id', None)
            type = request.data.get('type', None)
            title = request.data.get('title', None)
            memo = request.data.get('memo', None)
            content = request.data.get('content', None)
            files = request.data.get('files', None)
            step_id = request.data.get('step_id', None)

            # 增加日志
            if step_log_file_id is not None and type is not None and title is not None:
                # if content or files:
                feedback_log = FeedBackLog(step_log_file_id=step_log_file_id,
                                           type=type,
                                           title=title,
                                           memo=memo,
                                           feedbacker_id=user_id)
                feedback_log.save()

                if step_id is not None:
                    step = Step.objects.get(id=step_id)
                    # feedback
                    step.label = 2
                    step.save()

                    task = Task.objects.get(id=step.task_id)
                    # feedback
                    task.label = 2
                    task.save()

                if files:
                    for file in files:
                        # 增加文件表记录
                        feedback_file = FeedBacks(
                            feedbacklog=feedback_log,
                            name=file['name'],
                            path=file['url'],
                            path_thumb_w200=file.get('path_thumb_w200', ''),
                            path_thumb_w900=file.get('path_thumb_w900', ''))
                        feedback_file.save()

                # 如果存在反馈富文本,则先添加反馈富文本
                if content:
                    feedback_log_contents = FeedBackTexts(
                        feedbacklog=feedback_log, content=content)
                    feedback_log_contents.save()

        except Exception as e:
            msg = e.args if e else '请求失败'
            return MykeyResponse(status=status.HTTP_400_BAD_REQUEST, msg=msg)

        return MykeyResponse(status=status.HTTP_200_OK, msg='请求成功')
コード例 #9
0
ファイル: project.py プロジェクト: fengjy96/rest_task
    def post(self, request, format=None):
        try:
            project_id = request.data.get('project_id', None)
            # 项目总积分
            project_points = request.data.get('project_points', None)

            self.update_project(project_id, project_points)
            self.update_task(project_id)
        except Exception as e:
            return MykeyResponse(status=status.HTTP_400_BAD_REQUEST, msg='请求失败')
        return MykeyResponse(status=status.HTTP_200_OK, msg='请求成功')
コード例 #10
0
 def post(self, request, format=None):
     try:
         # 任务 id 列表
         task_ids = request.data.get('selected_task_ids', [])
         if task_ids and len(task_ids) > 0:
             for task_id in task_ids:
                 self.update_task(task_id)
     except Exception as e:
         return MykeyResponse(status=status.HTTP_400_BAD_REQUEST,
                              msg='请求失败')
     return MykeyResponse(status=status.HTTP_200_OK, msg='请求成功')
コード例 #11
0
ファイル: project.py プロジェクト: fengjy96/rest_task
    def get(self, request, format=None):
        try:
            list_project_fee_objects.clear()

            project_id = request.query_params.get('project_id', None)

            self.get_projectfee_cost(project_id)

        except Exception as e:
            return MykeyResponse(status=status.HTTP_400_BAD_REQUEST, msg='请求失败')
        return MykeyResponse(status=status.HTTP_200_OK, msg='请求成功', data=list_project_fee_objects)
コード例 #12
0
ファイル: points.py プロジェクト: fengjy96/rest_task
 def get(self, request):
     try:
         # 获取当前用户 id
         user_id = request.user.id
         points = Points.objects.filter(user_id=user_id).first() or {}
         serializer = PointsSerializer(points)
     except Exception as e:
         msg = e.args if e else '请求失败'
         return MykeyResponse(status=status.HTTP_400_BAD_REQUEST, msg=msg)
     return MykeyResponse(serializer.data,
                          status=status.HTTP_200_OK,
                          msg='请求成功')
コード例 #13
0
ファイル: points.py プロジェクト: fengjy96/rest_task
 def get(self, request):
     try:
         project_id = request.query_params.get('project_id', None)
         projectpointsex = ProjectPointsEx.objects.filter(
             project_id=project_id).first() or {}
         serializer = ProjectPointsExSerializer(projectpointsex)
     except Exception as e:
         msg = e.args if e else '请求失败'
         return MykeyResponse(status=status.HTTP_400_BAD_REQUEST, msg=msg)
     return MykeyResponse(serializer.data,
                          status=status.HTTP_200_OK,
                          msg='请求成功')
コード例 #14
0
ファイル: project.py プロジェクト: fengjy96/rest_task
    def post(self, request, format=None):
        try:
            # 项目标识
            project_id = request.data.get('project_id')
            # 验收不通过原因
            reason = request.data.get('reason') or ''

            self.update_project(project_id, reason)

        except Exception as e:
            msg = e.args if e else '请求失败'
            return MykeyResponse(status=status.HTTP_400_BAD_REQUEST, msg=msg)
        return MykeyResponse(status=status.HTTP_200_OK, msg='请求成功')
コード例 #15
0
    def get(self, request, format=None):
        try:
            # 任务标识
            task_id = request.query_params.get('task_id')

            # 获取任务日志
            task_logs = self.get_task_logs(task_id)

        except Exception as e:
            msg = e.args if e else '请求失败'
            return MykeyResponse(status=status.HTTP_400_BAD_REQUEST, msg=msg)
        return MykeyResponse(status=status.HTTP_200_OK,
                             msg='请求成功',
                             data=task_logs)
コード例 #16
0
    def post(self, request, format=None):
        try:
            # 任务标识
            task_id = request.data.get('task_id', None)
            # 评级
            task_assessment_id = request.data.get('task_assessment_id', None)
            # 评语
            comments = request.data.get('comments', None)

            self.update_task(task_id, task_assessment_id, comments)
        except Exception as e:
            return MykeyResponse(status=status.HTTP_400_BAD_REQUEST,
                                 msg='请求失败')
        return MykeyResponse(status=status.HTTP_200_OK, msg='请求成功')
コード例 #17
0
ファイル: step.py プロジェクト: fengjy96/rest_task
    def get(self, request, format=None):
        try:
            # 步骤标识
            step_id = request.query_params.get('step_id')

            # 获取步骤日志
            step_logs = self.get_step_logs(step_id)

        except Exception as e:
            msg = e.args if e else '请求失败'
            return MykeyResponse(status=status.HTTP_400_BAD_REQUEST, msg=msg)
        return MykeyResponse(status=status.HTTP_200_OK,
                             msg='请求成功',
                             data=step_logs)
コード例 #18
0
ファイル: project.py プロジェクト: fengjy96/rest_task
    def post(self, request, format=None):
        try:
            project_id = request.data.get('project_id')
            auditor_id = request.data.get('auditor_id')

            if project_id is not None and auditor_id is not None:
                self.update_project(project_id, auditor_id)
                user_id = request.user.id
                BusinessPublic.create_message(user_id, auditor_id, menu_id=2,
                                              messages='有新的项目需要你的审核,请尽快处理!')

        except Exception as e:
            return MykeyResponse(status=status.HTTP_400_BAD_REQUEST, msg='请求失败')
        return MykeyResponse(status=status.HTTP_200_OK, msg='请求成功')
コード例 #19
0
ファイル: message.py プロジェクト: fengjy96/rest_task
    def post(self, request, format=None):
        try:
            message_status = request.data.get('status', None)
            message_ids = request.data.get('msg_ids', [])

            if message_status and len(message_ids) > 0:
                for message_id in message_ids:
                    # 更新消息状态为相应的值:未读或已读
                    self.update_message(message_id, message_status)

        except Exception as e:
            msg = e.args if e else '请求失败'
            return MykeyResponse(status=status.HTTP_400_BAD_REQUEST, msg=msg)
        return MykeyResponse(status=status.HTTP_200_OK, msg='请求成功')
コード例 #20
0
ファイル: project.py プロジェクト: fengjy96/rest_task
    def post(self, request, format=None):
        name = request.data.get('name', None)
        project_id = request.data.get('project_id', None)

        if project_id is not None:
            cur_project = Project.objects.get(id=project_id)
            if name == cur_project.name:
                return MykeyResponse(status=status.HTTP_200_OK, data={}, msg='请求成功')

        if name is not None:
            try:
                Project.objects.get(name=name)
                return MykeyResponse(status=status.HTTP_200_OK, data={'msg': '该项目名已存在,请重新输入'}, msg='请求成功')
            except Exception as e:
                return MykeyResponse(status=status.HTTP_200_OK, data={}, msg='请求成功')
        return MykeyResponse(status=status.HTTP_200_OK, data={}, msg='请求成功')
コード例 #21
0
ファイル: files.py プロジェクト: fengjy96/rest_task
    def post(self, request):
        try:
            # 获取文件名称列表
            urls = request.POST.getlist('url')
            # 判断是否存在文件列表
            if len(urls) > 0:
                # 判断文件径是否存在,存在则删除
                for url in urls:
                    if os.path.exists(url):
                        os.remove(url)

                return MykeyResponse(status=status.HTTP_200_OK, msg='请求成功')

        except Exception as e:
            return MykeyResponse(status=status.HTTP_400_BAD_REQUEST,
                                 msg='请求失败')
コード例 #22
0
ファイル: step.py プロジェクト: fengjy96/rest_task
    def get(self, request, format=None):
        try:
            # 文件标识
            file_id = request.query_params.get('file_id', None)
            # 类型
            type = request.query_params.get('type', None)

            if file_id is not None and type is not None:
                if type == '1':
                    step_log_file_list = self.one_get_step_log_files(file_id)
                else:
                    step_log_file_list = self.one_progresstext_objects(file_id)
                return MykeyResponse(status=status.HTTP_200_OK,
                                     msg='请求成功',
                                     data=step_log_file_list)

        except Exception as e:
            msg = e.args if e else '请求失败'
            return MykeyResponse(status=status.HTTP_400_BAD_REQUEST, msg=msg)
コード例 #23
0
 def get(self, request, format=None):
     try:
         # 项目标识
         project_id = request.data.get('project_id')
         if project_id is not None:
             project = Project.objects.get(id=project_id)
             if project is not None:
                 tasks = Task.objects.filter(project_id=project_id)
                 if tasks is not None:
                     for task in tasks:
                         if task is not None:
                             files = Files.objects.filter(task_id=task.id)
                             if files is not None:
                                 if files.count() == 0:
                                     return MykeyResponse(
                                         status=status.HTTP_400_BAD_REQUEST,
                                         msg=task.name + '的参考文件为空')
     except Exception as e:
         return MykeyResponse(status=status.HTTP_400_BAD_REQUEST,
                              msg='请求失败')
     return MykeyResponse(status=status.HTTP_200_OK, msg='请求成功')
コード例 #24
0
    def post(self, request):
        try:
            # 获取项目标识
            project_id = request.data.get('project_id', None)
            # 获取用户上传的文件,保存到服务器,再添加到数据库
            files = request.data.get('files', [])

            for file in files:
                path = '{}{}'.format(settings.BASE_DIR, file['url'])

                if os.path.exists(path):
                    datalist = Excel.import_excel_data(project_id, path)
                    os.remove(path)
                    return MykeyResponse(status=status.HTTP_200_OK,
                                         msg='请求成功',
                                         data=datalist)
                else:
                    return MykeyResponse(status=status.HTTP_400_BAD_REQUEST,
                                         msg='文件不存在')
        except Exception as e:
            return MykeyResponse(status=status.HTTP_400_BAD_REQUEST,
                                 msg='请求失败')
コード例 #25
0
    def post(self, request, format=None):
        name = request.data.get('name', None)
        project_id = request.data.get('project_id', None)
        task_id = request.data.get('task_id', None)

        if task_id is not None:
            cur_task = Task.objects.get(id=task_id)
            if name == cur_task.name:
                return MykeyResponse(status=status.HTTP_200_OK,
                                     data={},
                                     msg='请求成功')

        if name is not None and project_id is not None:
            try:
                Task.objects.get(name=name, project_id=project_id)
                return MykeyResponse(status=status.HTTP_200_OK,
                                     data={'msg': '该任务名已存在,请重新输入'},
                                     msg='请求成功')
            except Exception as e:
                return MykeyResponse(status=status.HTTP_200_OK,
                                     data={},
                                     msg='请求成功')
        return MykeyResponse(status=status.HTTP_200_OK, data={}, msg='请求成功')
コード例 #26
0
ファイル: files.py プロジェクト: fengjy96/rest_task
    def post(self, request):
        try:
            # 获取用户上传的文件,保存到服务器,再添加到数据库
            files = request.FILES.getlist('file')
            # 判断文件列表是否存在文件
            if len(files) > 0:
                # 遍历用户上传的文件列表
                upload_files = []
                dict_obj = {}
                for file in files:
                    # 获取文件后缀名
                    extension = os.path.splitext(file.name)[1][1:]
                    # 根据文件类型生成相对应的文件夹-时间+类型
                    path_year = time.strftime('%Y', time.localtime())
                    path_month = time.strftime('%m', time.localtime())
                    path_day = time.strftime('%d', time.localtime())

                    path = '{}/{}/{}/{}/{}/{}'.format(settings.MEDIA_ROOT,
                                                      'project', path_year,
                                                      path_month, path_day,
                                                      extension)
                    # 判断上传路径是否存在,不存在则创建
                    if not os.path.exists(path):
                        os.makedirs(path)

                    # 通过 uuid 重命名上传的文件
                    filename = '{}.{}'.format(uuid.uuid4(), extension)
                    # 构建文件路径
                    file_path = '{}{}/{}/{}/{}/{}/{}'.format(
                        settings.MEDIA_URL, 'project', path_year, path_month,
                        path_day, extension, filename)
                    file_path_server = '{}/{}/{}/{}/{}/{}/{}'.format(
                        settings.MEDIA_ROOT, 'project', path_year, path_month,
                        path_day, extension, filename)

                    # 如果上传的文件是图片类型,则生成相应尺寸的缩略图
                    img_formats = ['jpg', 'jpeg', 'png', 'bmp', 'gif']
                    if extension in img_formats:
                        img = Image.open(file)
                        img_w900 = self.make_thumb(img, 900)
                        img_w900.save(file_path_server + '_w900.' + extension)
                        img_w200 = self.make_thumb(img, 200)
                        img_w200.save(file_path_server + '_w200.' + extension)
                        dict_obj[
                            "path_thumb_w200"] = file_path + '_w200.' + extension
                        dict_obj[
                            "path_thumb_w900"] = file_path + '_w900.' + extension

                    # 将上传的文件路径存储到 upload_files 中
                    # 注意这样要构建相对路径 MEDIA_URL + filename,这里可以保存到数据库
                    dict_obj["name"] = filename
                    dict_obj["raw_name"] = file.name
                    dict_obj["url"] = file_path

                    upload_files.append(dict_obj)
                    # 保存文件
                    with open(file_path_server, 'wb') as f:
                        for c in file.chunks():
                            f.write(c)
                        f.close()

                data = {'files': upload_files}

                return MykeyResponse(status=status.HTTP_200_OK,
                                     msg='请求成功',
                                     data=data)

        except Exception as e:
            return MykeyResponse(status=status.HTTP_400_BAD_REQUEST,
                                 msg='请求失败')
コード例 #27
0
ファイル: project.py プロジェクト: fengjy96/rest_task
 def get(self, request, *args, **kwargs):
     user_id = request.user.id
     projects = Project.objects.filter(sender_id=user_id)
     if len(projects) > 0:
         return MykeyResponse(status=status.HTTP_200_OK, data=1, msg='请求成功')
     return MykeyResponse(status=status.HTTP_200_OK, data=0, msg='请求成功')
コード例 #28
0
    def get(self, request, format=None):
        user_id = request.user.id

        user_role_list = self.get_user_roles(user_id)
        users = UserProfile.objects.filter(superior_id=user_id)

        users = self.filter_user(request, users)

        sign = True

        if '项目负责人' in user_role_list:
            sign = True
        elif '任务负责人' in user_role_list:
            sign = False

        list_objects = []

        if sign:
            for user in users:
                user_obj = {}
                user_obj["id"] = user.id
                user_obj["name"] = user.name
                list_objects.append(user_obj)
        else:
            for user in users:
                # tasks = Task.objects.filter(receiver_id=user.id, is_active=1, receive_status__lte=3)
                tasks = Task.objects.filter(
                    ~Q(receive_status=BusinessPublic.GetTaskStatusIdByKey(
                        'checked')),
                    receiver_id=user.id,
                    is_active=1)

                if len(tasks) > 0:
                    for task in tasks:
                        if task is not None:
                            dict_obj1 = {}
                            dict_obj1["user_id"] = user.id
                            dict_obj1["name"] = user.name
                            dict_obj1["task_type"] = task.task_type.name
                            dict_obj1["task_progress"] = task.progress
                            dict_obj1["task_name"] = task.name
                            dict_obj1["end_time"] = task.end_time
                            dict_obj1["leftdays"] = (
                                task.end_time -
                                datetime.datetime.now().date()).days + 1
                            dict_obj1[
                                "receive_status"] = task.receive_status.text
                            list_objects.append(dict_obj1)
                else:
                    dict_obj2 = {}
                    dict_obj2["user_id"] = user.id
                    dict_obj2["name"] = user.name
                    dict_obj2["task_type"] = ''
                    dict_obj2["task_progress"] = ''
                    dict_obj2["task_name"] = ''
                    dict_obj2["end_time"] = ''
                    dict_obj2["leftdays"] = ''
                    dict_obj2["receive_status"] = ''
                    list_objects.append(dict_obj2)

        return MykeyResponse(status=status.HTTP_200_OK,
                             msg='请求成功',
                             data=list_objects)