Пример #1
0
    def test_delete_task(self):
        factory = APIRequestFactory()
        view = TaskDetail.as_view()

        project = Project.objects.create(title='TestProject')
        tasks = Task.objects.bulk_create([(Task(id=1,
                                                title='Test1',
                                                description='d1',
                                                project=project)),
                                          (Task(id=2,
                                                title='Test2',
                                                description='d2',
                                                project=project)),
                                          (Task(id=3,
                                                title='Test3',
                                                description='d3',
                                                project=project))])
        task = tasks[0]

        request = factory.delete('/api/tasks/1')
        force_authenticate(request,
                           user=self.test_user,
                           token=self.full_access_token)
        response = view(request, pk='1')

        self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
        self.assertEqual(len(Task.objects.all()), 2)
        self.assertNotIn(task, Task.objects.all())
Пример #2
0
    def test_get_tasks(self):
        factory = APIRequestFactory()
        view = TaskList.as_view()

        project = Project.objects.create(title='TestProject 1')
        tasks = Task.objects.bulk_create([(Task(id=1,
                                                title='Test1',
                                                project=project)),
                                          (Task(id=2,
                                                title='Test2',
                                                project=project)),
                                          (Task(id=3,
                                                title='Test3',
                                                project=project))])

        request = factory.get('/api/tasks')
        force_authenticate(request,
                           user=self.test_user,
                           token=self.full_access_token)
        response = view(request)

        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(len(response.data), 3)

        for i in range(3):
            # Reverse comparison because tasks are ordered by created date.
            self.assertEqual(tasks[i].title, response.data[2 - i]['title'])
            self.assertEqual(tasks[i].description,
                             response.data[2 - i]['description'])
            self.assertEqual(tasks[i].project.id,
                             response.data[2 - i]['project']['id'])
            self.assertEqual(tasks[i].project.title,
                             response.data[2 - i]['project']['title'])
            self.assertEqual(tasks[i].project.description,
                             response.data[2 - i]['project']['description'])

        force_authenticate(request,
                           user=self.test_user,
                           token=self.read_access_token)
        response = view(request)

        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(len(response.data), 3)

        for i in range(3):
            self.assertEqual(tasks[i].title, response.data[2 - i]['title'])
            self.assertEqual(tasks[i].description,
                             response.data[2 - i]['description'])
            self.assertEqual(tasks[i].project.id,
                             response.data[2 - i]['project']['id'])
            self.assertEqual(tasks[i].project.title,
                             response.data[2 - i]['project']['title'])
            self.assertEqual(tasks[i].project.description,
                             response.data[2 - i]['project']['description'])
Пример #3
0
def task_lists(request):
    if request.method == 'GET':
        t_lists = TaskList.objects.all()
        serializer = Task(t_lists, many=True)
        return JsonResponse(serializer.data, safe=False)
    elif request.method == 'POST':
        t_list = json.loads(request.body)
        serializer = Task(data=t_list)
        if serializer.is_valid():
            serializer.save()
            return JsonResponse(serializer.data)
        return JsonResponse(serializer.errors)
Пример #4
0
 def load_task(self, path, delete_all=False):
     if delete_all:
         Task.objects.all().delete()
     with open(path) as jsonfile:
         reader = json.loads(jsonfile.read())
         for row in reader:
             title, desc = row.get('title'), row.get('description')
             created_by, assigned_to = None, None
             if title and desc:
                 description = self.get_clean_description(desc)
                 priority = self.get_priority()
                 while not created_by:
                     created_by = self.get_user()
                 while not assigned_to:
                     assigned_to = self.get_user()
                 while created_by.id == assigned_to.id:
                     assigned_to = self.get_user(
                     )  # If assign and user are same
                 task = Task(title=title,
                             description=description,
                             priority=priority,
                             created_by=created_by,
                             assigned_to=assigned_to)
                 task.save()
                 # Add tags and categories
                 [task.category.add(cat) for cat in self.get_categories()]
                 [task.tag.add(tag) for tag in self.get_tags()]
Пример #5
0
def handle_hello():
    user_id = get_jwt_identity()
    print(user_id)
    if request.method == 'GET':
        # if _from = todays_date get all matching dates and all None dates else just get all matching dates
        _from = request.args.get('from', None)
        _null = request.args.get('_null', None)
        print("_nullywully", _null)
        _from = datetime.strptime(_from, '%Y/%m/%d')
        _until = request.args.get('until', None)
        _until = datetime.strptime(_until, '%Y/%m/%d')
        all_tasks = get_all_tasks(user_id, _from, _until, _null == "true")
        all_tasks = list(map(lambda t: t.serialize(), all_tasks))
        return jsonify(all_tasks), 200
    if request.method == 'POST':
        body = request.get_json()
        print("BODDYYY***", body)
        new_task = Task(label=body['label'],
                        date=body['date'],
                        dashboard=body['dashboard'],
                        folder=body['folder'],
                        user_id=user_id)
        db.session.add(new_task)
        db.session.commit()
        _from = request.args.get('from', None)
        _null = request.args.get('_null', None)
        _from = datetime.strptime(_from, '%Y/%m/%d')
        _until = request.args.get('until', None)
        _until = datetime.strptime(_until, '%Y/%m/%d')
        if _until is not None:
            _until += timedelta(days=1)
        all_tasks = get_all_tasks(user_id, _from, _until, _null == "true")
        all_tasks = list(map(lambda t: t.serialize(), all_tasks))
        return jsonify(all_tasks), 201
    return "invalid request4r  method", 404
Пример #6
0
    def create_new_task(self, requestobj):
        task_resp = self.check_parent_task_exist(requestobj)
        if task_resp['Status'] == 'Success':
            ptaskupdate = Task.objects.filter(
                Q(task_id=task_resp['taskid']) & Q(userid=requestobj['userid'])
                & Q(task_name=requestobj['foldername'])).update(
                    status='pending')

            if ptaskupdate:
                resposnse = self.insert_new_task(task_resp['taskid'],
                                                 requestobj)
            else:
                resposnse = {
                    'Status': 'Error',
                    'Message': 'Please try Again',
                    'code': '100'
                }
        else:
            ptaskid = self.generate_task_id(7)
            ptaskobj = Task()
            ptaskobj.userid = requestobj['userid']
            ptaskobj.task_id = ptaskid
            ptaskobj.task_name = requestobj['foldername']
            ptaskobj.created_date = get_current_time()
            ptaskobj.save()
            resposnse = self.insert_new_task(ptaskid, requestobj)
        return resposnse
Пример #7
0
    def test_get_tasks_of_project(self):
        factory = APIRequestFactory()
        view = ProjectTasks.as_view()

        project = Project.objects.create(id=1, title='TestProject')
        Task.objects.bulk_create([(Task(id=1, title='Test1', project=project)),
                                  (Task(id=2, title='Test2', project=project)),
                                  (Task(id=3, title='Test3',
                                        project=project))])

        request = factory.get('/api/projects/1/tasks')
        force_authenticate(request,
                           user=self.test_user,
                           token=self.full_access_token)
        response = view(request, pk='1')

        self.assertEqual(len(response.data), 3)
Пример #8
0
def create():
    task = request.form.get('task')
    if task:
        todo = Task(task=task)
        db.session.add(todo)
        db.session.commit()
        return {'message': 'Task created'}, 201
    return {'message': 'No task send.'}, 404
Пример #9
0
def task_list(request, pk):
    try:
        t_list = models.TaskList.objects.get(id=pk)
    except models.TaskList.DoesNotExist as e:
        return JsonResponse({'error': str(e)}, safe=False)

    if request.method == 'GET':
        serializer = Task(t_list)
        return JsonResponse(serializer.data, safe=False)
    elif request.method == 'PUT':
        data = json.loads(request.body)
        serializer = Task(instance=t_list, data=data)
        if serializer.is_valid():
            serializer.save()
        return JsonResponse(serializer.errors)
    elif request.method == 'DELETE':
        t_list.delete()
        return JsonResponse({})
Пример #10
0
 def post(self):
     # 创建一个task
     args = self.reqparse.parse_args()
     title = args['title']
     task = Task(
         title=args['title'], description=args['description'], done=False)
     db.session.add(task)
     db.session.commit()
     return {'msg': f'创建task:{title}成功'}, 201
Пример #11
0
def create_task():
    if not request.json:
        return abort(404)
    
    task = Task(name=request.json["name"], started="N/A", finished="N/A", status="Not started", step=request.json["step"], file_path=request.json["file_path"], result="")
    db.session.add(task)
    db.session.commit()

    return jsonify([task.serialize])
Пример #12
0
    def test_delete_task_fail_by_user_with_read_scope_only(self):
        factory = APIRequestFactory()
        view = TaskDetail.as_view()

        project = Project.objects.create(title='TestProject')

        Task.objects.bulk_create([(Task(id=1, title='Test1', project=project)),
                                  (Task(id=2, title='Test2', project=project)),
                                  (Task(id=3, title='Test3',
                                        project=project))])

        request = factory.delete('/api/tasks/1')
        force_authenticate(request,
                           user=self.test_user,
                           token=self.read_access_token)
        response = view(request)

        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
Пример #13
0
def saveTask(name, description, total_times, startDate, endDate, type, status):
    task = Task(name=name,
                description=description,
                total_times=total_times,
                startDate=startDate,
                endDate=endDate,
                type=type,
                status=status)
    task.save()
    return task
Пример #14
0
def validateTask(data, idProject):
    try:
        task = Task(title=data["title"],
                    order=int(data['order']),
                    due_date=datetime.strptime(data['due_date'], '%Y-%m-%d'),
                    completed=data['completed'],
                    creation_date=datetime.now(),
                    project_id=idProject)
        return task
    except:
        return None
Пример #15
0
    def addTask(request):

        print("Request got here")
        # print(request.__dict__)
        new_task = Task(title=request.POST.get('title'),
                        due_date=request.POST.get('date'),
                        status=request.POST.get('status'))
        print("Got the request correctly")
        new_task.save()

        return redirect('home')
Пример #16
0
    def mutate(self, info, title, text):
        task = Task()
        task.title = title
        task.text = text
        task.save()

        return CreateTask(
            id=task.id,
            title=task.title,
            text=task.text
        )
Пример #17
0
 def put(self, request, user_name):
     tasks = Task.objects.filter(user_name=user_name)
     tasks.delete()
     user = User.objects.get(name=user_name)
     newList = json.loads(request.body)
     for task in newList:
         newTask = Task(user_name=user,
                        label=task["label"],
                        done=task["done"])
         newTask.save()
     response = {"result": "ok"}
     return Response(response, status=status.HTTP_200_OK)
Пример #18
0
def create_task():
    if not request.json or not 'title' in request.json:
        abort(400)

    user = g.user
    task = Task(title=request.json['title'],
                description=request.json.get('description', ''),
                done=request.json.get('done', False),
                author=user)

    db.session.add(task)
    db.session.commit()

    return jsonify(task=make_public_task(task.serialize())), 201
Пример #19
0
def get_tasks(task_names, worker_id, limit=1):
    with connection.cursor() as cursor:
        cursor.execute(get_task_sql, [task_names, limit, worker_id])
        raw_tasks = dictfetchall(cursor)

    for raw_task in raw_tasks:
        task_name = raw_task.pop('task_def_name')
        raw_task['task_def'] = TaskDef(name=task_name)

    tasks = []
    for raw_task in raw_tasks:
        tasks.append(Task(**raw_task))

    return tasks
Пример #20
0
    def post(self):
        """ Endpoint to create new Task"""

        data = request.get_json()
        title = data.get('title')
        formatted_date = convert_date_to_date_time(data['due_date'])
        schema = TaskSchema()
        project_id = data['projectId']
        project = Project.get_or_404(project_id)
        task_exist = Task.find_by_title_and_project_id(title=title,
                                                       project_id=project.id)
        if task_exist:
            raise ValidationError(
                {
                    "message":
                    serialization_messages['exists'].format('Task with title')
                }, 409)
        if not check_date_difference(formatted_date, project.due_date):
            raise ValidationError(
                {
                    "message":
                    "Tasks cannot be created under this project because of dat difference"
                }, 401)
        assignee_list = check_assignee(data.get('task_assignees'),
                                       project.assignees)
        if assignee_list is not None:
            user_list = assign_user(assignee_list)
            data['task_assignees'] = user_list
        else:
            data['task_assignees'] = []
        assignee_ids = data['task_assignees'] if data[
            'task_assignees'] is not None else []
        del data['task_assignees']
        task_data = schema.load_object_into_schema(data)

        task = Task()
        task.title = data['title']
        task.description = data['description']
        task.due_date = data['due_date']
        task.task_assignees = assignee_ids
        task.project_id = project.id
        task.save()

        task.save()

        return response('success',
                        message=success_messages['created'].format('Task'),
                        data=schema.dump(task).data,
                        status_code=201)
Пример #21
0
def do_task(taskID=None):
    if taskID:
        if request.method == 'DELETE':
            task = Task.delete().where(Task.id == taskID)
            task.execute()
            return 'Success', 200
        elif request.method == 'PUT':
            data = request.args
            task = Task.select().where(Task.id == taskID)
            row = model_to_dict(task)
            # only change things that need changed
            if 'name' in data and data['name'] != row['name']:
                task.name = data['name']
            if 'description' in data and data['description'] != row[
                    'description']:
                task.description = data['description']
            if 'parent' in data and data['parent'] != row['parent']['id']:
                task.parent = data['parent']
            if 'completed' in data and data['completed'] != row['completed']:
                task.completed = data['completed']
            if 'block' in data and data['block'] != row['block']['id']:
                task.block = data['block']
            if 'label' in data and data['label'] != row['label']:
                task.label = data['label']
            if 'assigned' in data and data['assigned'] != row['assigned']:
                task.assigned = data['assigned']
            if 'estimate' in data:
                estimate = time(data['estimate'])
                if estimate != row['estimate']:
                    task.estimate = estimate
            task.save()
    else:
        data = request.get_json()
        task = Task(
            name=data.get('name', None),
            description=data.get('description', None),
            parent=data.get('parent', None)
            or None,  # make sure None instead of ''
            completed=data.get('completed', None)
            or None,  # make sure None instead of ''
            block=data.get('block', None)
            or None,  # make sure None instead of ''
            label=data.get('label', None),
            assigned=data.get('assigned', None),
            estimate=time(data.get('estimate', '0m')))
        task.save()
    return json.dumps(model_to_dict(task), default=json_serial)
Пример #22
0
 def post(self):
     args = self.reqparse.parse_args()
     task = Task(args)
     try:
         db.session.add(task)
         db.session.commit()
         return {
             "status": 0,
             "message": "success",
             "data": marshal(args, tasks_fields)
         }
     except:
         db.session.rollback()
         return {
             "status": 400,
             "message": "failed",
             "data": marshal(args, tasks_fields)
         }
Пример #23
0
    def _add_handler(self, arg):
        try:
            id_card, train_code, start_code, end_code, start_time, end_time = self._parser_order_string(
                arg)
        except ParserBookingInfoException as e:
            return Strings.ERROR_ADD_FORMAT
        except ParserBookingInfoStartStationException as e:
            return Strings.ERROR_ADD_FORMAT_START_STATION
        except ParserBookingInfoEndStationException as e:
            return Strings.ERROR_ADD_FORMAT_END_STATION
        except ParserBookingInfoTimeException as e:
            return Strings.ERROR_ADD_FORMAT_Time
        # test once
        try:
            train_crawler = TrainCrawler()
            ticket = train_crawler.query_exist_seat(id_card,
                                                    TRAIN_CODE_MAP[train_code],
                                                    start_code, end_code,
                                                    start_time, end_time)
        except QueryExistSeatException as e:
            return Strings.ERROR_QUERY_SEAT
        except Exception as e:
            traceback.print_exc()
            return Strings.ERROR_QUERY_SEAT

        # add order task
        task = Task.objects.filter(line_id=self.user_id).first()
        if task is None or task.status == Status.DELETING:
            task = Task(line_id=self.user_id, status=Status.RUNNING)
            task.save()
            t = threading.Thread(target=booking_ticket_task,
                                 args=(self.user_id, id_card, train_code,
                                       start_code, end_code, start_time,
                                       end_time))
            t.start()
            # booking_ticket_task.delay(self.user_id, id_card, train_code, start_code, end_code, start_time, end_time)
            return Strings.ADD_BOOKING_TASK_SUCCESS
        else:
            return Strings.ERROR_ALREADY_HAS_TASK
Пример #24
0
    def get_task_from_data(data):
        task_obj = Task()
        task_obj.id = data["task_id"]
        task_obj.name = data["result"]["name"]
        task_obj.status = data["status"]
        task_obj.title = data["result"]["title"]
        task_obj.message = data["result"]["message"]
        task_obj.details = data["result"]["details"]
        task_obj.current = data["result"]["current"]
        task_obj.total = data["result"]["total"]
        task_obj.started = data["result"]["started"]
        task_obj.finished = data["result"]["finished"]
        task_obj.progress = 0

        if task_obj.status == u'SUCCESS':
            task_obj.progress = 100
        elif task_obj.status == u'FAILURE':
            task_obj.progress = 0
        elif task_obj.status == 'PROGRESS':
            if data["result"]["total"] > 0:
                task_obj.progress = int(data["result"]["current"] /
                                        data["result"]["total"] * 100)

        return task_obj
Пример #25
0
 def create(self, validated_data):
     task = Task(**validated_data)
     task.save()
     return task
Пример #26
0
 def create(self, validated_data):
     new_task = Task(**validated_data)
     new_task.save()
     return new_task
Пример #27
0
def new_task():

    post_json = request.get_json()
    
    # Kunde anlegen oder über ID selektieren
    customer = None
    cus_id = None
    if hasattr(post_json, "cusID"):
        cus_id = post_json["cusID"]
    else:
        customer = Customer(
            cus_title = post_json["gender"],
            cus_first_name = post_json["firstName"],
            cus_last_name = post_json["lastName"],
            cus_email = post_json["email"],
            cus_phone_no = post_json["prefixNumber"] + " " + post_json["phone"],
            cus_street = post_json["street"],
            cus_house_number = post_json["houseNumber"],
            cus_post_code = post_json["postCode"]
        )
        db.session.add(customer) # pylint: disable=maybe-no-member
        db.session.commit() # pylint: disable=maybe-no-member
        cus_id = customer.cus_id

    # Gerät anlegen oder über ID selektieren
    device = None
    dev_id = None
    if hasattr(post_json, "devID"):
        dev_id = post_json["devID"]
    else:
        device = Device(
            dev_name = post_json["devName"],
            dev_model = post_json["devModel"],
            dev_category = post_json["categoryName"],
            dev_electronic_mechanical_type = post_json["electricalMechanical"],
            dev_mnf_name = post_json["manufacturerName"],
        )
        db.session.add(device) # pylint: disable=maybe-no-member
        db.session.commit() # pylint: disable=maybe-no-member
        dev_id = device.dev_id

    new_task = Task(
        tsk_fault_description = post_json["faultDescription"],
        tsk_creation_date = datetime.now(),
        tsk_cus_id = cus_id,
        tsk_dev_id = dev_id,
        tsk_state = "new",
        tsk_next_step = "not_set",
    )

    db.session.add(new_task) # pylint: disable=maybe-no-member
    db.session.commit() # pylint: disable=maybe-no-member

    tk = generate_token("customer", new_task.tsk_id)

    # QR-Code generieren
    image_file = generate_qrcode_label("customer", new_task.tsk_id, tk)

    # Files anlegen
    files = post_json["files"]
    for filename in files:
        new_file = Image(img_filename=filename, img_tsk_id=new_task.tsk_id)
        db.session.add(new_file) # pylint: disable=maybe-no-member
        db.session.commit() # pylint: disable=maybe-no-member

    # Token als neuer Token in der Session speichern.
    session['NEW_TOKEN'] = tk

    return {'tsk_id':new_task.tsk_id, 'tsk_token': tk}