Exemplo n.º 1
0
 def update_task(self, task_id):
     if task_id is not None:
         from business.models.task import Task
         task = Task.objects.get(id=task_id)
         if task is not None:
             task.receive_status = BusinessPublic.GetTaskStatusObjectByKey(
                 'wait_check')
             task.save()
             BusinessPublic.create_message(task.receiver.id,
                                           task.sender.id,
                                           menu_id=2,
                                           messages='有新的任务需要你的验收,请尽快处理!')
Exemplo n.º 2
0
 def update_task(self, task_id):
     if task_id is not None:
         from business.models.task import Task
         task = Task.objects.get(id=task_id)
         if task is not None:
             # 任务负责人已拒接手
             task.receive_status = BusinessPublic.GetTaskStatusObjectByKey(
                 'rejected')
             task.save()
             BusinessPublic.create_message(task.receiver.id,
                                           task.sender.id,
                                           menu_id=2,
                                           messages='任务负责人已拒接!')
Exemplo n.º 3
0
    def update_task(self, task_id):
        if task_id is not None:
            task = Task.objects.filter(id=task_id, is_published=0).first()
            if task:
                task.is_published = 1
                task.publish_time = datetime.datetime.now().strftime(
                    '%Y-%m-%d %H:%M:%S')
                task.receive_status = BusinessPublic.GetTaskStatusObjectByKey(
                    'wait_accept')
                task.save()

                if task.receiver:
                    # 新增消息
                    BusinessPublic.create_message(task.sender.id,
                                                  task.receiver.id,
                                                  menu_id=2,
                                                  messages='已安排新的任务,请查看!')
Exemplo n.º 4
0
 def update_task(self, task_id, reason):
     if task_id is not None:
         from business.models.task import Task
         task = Task.objects.get(id=task_id)
         if task is not None:
             # 任务验收不通过
             task.receive_status = BusinessPublic.GetTaskStatusObjectByKey(
                 'check_rejected')
             task.save()
             BusinessPublic.create_reason(
                 task.id, task.receiver.id, task.sender.id,
                 BusinessPublic.GetReasonTypeIdByKey('task_check_reject'),
                 reason)
             BusinessPublic.create_message(task.receiver.id,
                                           task.sender.id,
                                           menu_id=2,
                                           messages='任务验收不通过')
Exemplo n.º 5
0
    def update_task(self, task_id, assessment_id, comments):
        if task_id is not None:
            if assessment_id is not None and comments is not None:
                assessment = TaskAssessment.objects.get(id=assessment_id)
                task = Task.objects.get(id=task_id)
                if task is not None:
                    # 任务已通过验收
                    task.receive_status = BusinessPublic.GetTaskStatusObjectByKey(
                        'checked')
                    task.task_assessment = assessment
                    task.comments = comments
                    task.save()

                    project_id = task.project_id
                    BusinessPublic.update_progress_by_project_id(project_id)

                BusinessPublic.create_message(task.sender.id,
                                              task.receiver.id,
                                              menu_id=2,
                                              messages='任务已通过验收!')
Exemplo n.º 6
0
 def update_task(self, request, task_ids, receiver_id):
     if len(task_ids) > 0:
         for task_id in task_ids:
             from business.models.task import Task
             task = Task.objects.get(id=task_id)
             if task is not None:
                 old_receiver_id = task.receiver.id
                 receiver = UserProfile.objects.get(id=receiver_id)
                 task.receiver = receiver
                 task.superior_id = request.user.id
                 task.receive_status = BusinessPublic.GetTaskStatusObjectByKey(
                     'wait_accept')
                 task.save()
                 if old_receiver_id != receiver_id:
                     # 转移积分
                     ProjectPoints.objects.filter(
                         user_id=task.receiver.id,
                         is_created=0,
                         project_id=task.project.id).update(
                             user_id=receiver_id)
                 BusinessPublic.create_message(task.superior.id,
                                               task.receiver.id,
                                               menu_id=2,
                                               messages='已安排新的任务,请查看!')
Exemplo n.º 7
0
    def import_excel_data(cls, project_id, file_name):
        obj = {}
        DataList = []
        try:
            with xlrd.open_workbook(file_name) as data:
                table = data.sheet_by_index(0)  # 获取工作表
                project_receiver_id = 0
                n = 1
                x = y = z = 0
                WorkList = []
                # nrows = table.nrows # 行数 ncols = table.ncols # 列数 print sh.row_values(rownum)
                for line in range(n, table.nrows):
                    n = n + 1
                    row = table.row_values(line)
                    # 查看行值是否为空
                    if row:
                        # 判断该行值是否在数据库中重复
                        if Task.objects.filter(name=row[0].strip(),
                                               project_id=project_id,
                                               is_active=1).exists():
                            x = x + 1  # 重复值计数
                            dict_obj = {}
                            dict_obj["info"] = '第' + str(n) + '行,第1列任务名称重复'
                            DataList.append(dict_obj)
                            z = z + 1
                            continue
                        else:
                            if not TaskType.objects.filter(
                                    name=row[1].strip()).exists():
                                dict_obj = {}
                                dict_obj["info"] = '第' + str(
                                    n) + '行,第2列任务类型不存在'
                                DataList.append(dict_obj)
                                z = z + 1
                                continue
                            if not TaskPriority.objects.filter(
                                    name=row[3].strip()).exists():
                                dict_obj = {}
                                dict_obj["info"] = '第' + str(
                                    n) + '行,第4列任务优先级不存在'
                                DataList.append(dict_obj)
                                z = z + 1
                                continue
                            if not TaskQuality.objects.filter(
                                    name=row[4].strip()).exists():
                                dict_obj = {}
                                dict_obj["info"] = '第' + str(
                                    n) + '行,第5列任务品质要求不存在'
                                DataList.append(dict_obj)
                                z = z + 1
                                continue
                            if not UserProfile.objects.filter(
                                    name=row[7].strip()).exists(
                                    ) and row[7].strip() != '':
                                dict_obj = {}
                                dict_obj["info"] = '第' + str(
                                    n) + '行,第8列任务负责人不存在'
                                DataList.append(dict_obj)
                                z = z + 1
                                continue
                            if not cls.isVaildDate(row[5], data):
                                dict_obj = {}
                                dict_obj["info"] = '第' + str(
                                    n) + '行,第6列时间格式不正确'
                                DataList.append(dict_obj)
                                z = z + 1
                                continue
                            if not cls.isVaildDate(row[6], data):
                                dict_obj = {}
                                dict_obj["info"] = '第' + str(
                                    n) + '行,第7列时间格式不正确'
                                DataList.append(dict_obj)
                                z = z + 1
                                continue
                            if row[7].strip() != '':
                                task_type = TaskType.objects.get(
                                    name=row[1].strip())
                                receiver = UserProfile.objects.get(
                                    name=row[7].strip())
                                user_skill_ids = cls.get_user_skills(
                                    receiver.id)

                                if task_type.id not in user_skill_ids:
                                    dict_obj = {}
                                    dict_obj["info"] = '第' + str(
                                        n) + '行,第2列的技能不在任务负责人的技能列表'
                                    DataList.append(dict_obj)
                                    z = z + 1
                                    continue
                            if project_id is not None:
                                # 根据项目 id 查项目负责人
                                project = Project.objects.get(id=project_id)
                                project_receiver_id = project.receiver_id

                                # 如果项目状态为已完成,则当创建任务时,需要将项目状态改为已接手
                                if project.receive_status.key == 'finished':
                                    project.receive_status_id = BusinessPublic.GetProjectStatusIdByKey(
                                        'accepted')
                                    project.save()

                            # 如果创建任务时指定了任务负责人,则任务接收状态为 1 - 已安排任务负责人
                            auditor = None
                            if row[7].strip() != '':
                                if project_id is not None:
                                    # 根据项目 id 查项目审核状态
                                    project = Project.objects.get(
                                        id=project_id)
                                    if project.audit_status == 2:
                                        receive_status = BusinessPublic.GetTaskStatusObjectByKey(
                                            'wait_accept')
                                    else:
                                        receive_status = BusinessPublic.GetTaskStatusObjectByKey(
                                            'assigned')
                                else:
                                    receive_status = BusinessPublic.GetTaskStatusObjectByKey(
                                        'assigned')
                            # 如果创建任务时未指定任务负责人,则任务接收状态为 0 - 未安排任务负责人
                            else:
                                receive_status = BusinessPublic.GetTaskStatusObjectByKey(
                                    'unassigned')

                            # 如果存在项目负责人则将该项目负责人作为任务审核员
                            if project_receiver_id is not None:
                                auditor = UserProfile.objects.get(
                                    id=project_receiver_id)

                            project = Project.objects.get(id=project_id)
                            task_type = TaskType.objects.get(
                                name=row[1].strip())
                            task_priority = TaskPriority.objects.get(
                                name=row[3].strip())
                            task_quality = TaskQuality.objects.get(
                                name=row[4].strip())
                            receiver = None
                            if row[7].strip() != '':
                                receiver = UserProfile.objects.get(
                                    name=row[7].strip())
                            sender = None
                            if project_receiver_id:
                                sender = UserProfile.objects.get(
                                    id=project_receiver_id)

                            WorkList.append(
                                Task(
                                    project=project,
                                    name=row[0].strip(),
                                    task_type=task_type,
                                    content=row[2].strip(),
                                    task_priority=task_priority,
                                    task_quality=task_quality,
                                    begin_time=cls.getDate(row[5], data),
                                    end_time=cls.getDate(row[6], data),
                                    receiver=receiver,
                                    memo=row[8].strip(),
                                    sender=sender,
                                    auditor=auditor,
                                    receive_status=receive_status,
                                    superior=sender,
                                ))

                            y = y + 1  # 非重复计数
                    else:
                        # 空行
                        z = z + 1
                        dict_obj = {}
                        dict_obj["info"] = '第' + str(n) + '行为空行'
                        DataList.append(dict_obj)

                    if (n - 1) % 2 == 0:
                        Task.objects.bulk_create(WorkList)
                        WorkList = []

                if len(WorkList) > 0:
                    Task.objects.bulk_create(WorkList)

                obj["success"] = y
                obj["fail"] = z
                obj['infos'] = DataList

        except Exception as e:
            dict_obj = {}
            dict_obj["info"] = '数据异常'
            DataList.append(dict_obj)
            obj['infos'] = DataList
            obj["success"] = 0
            return obj
        return obj