コード例 #1
0
    def test_task_creator_taskpriority_form_filled(self):
        """ test minimum form requirements / INVALID """

        # get object
        taskname_1_id = Taskname.objects.get(taskname_name='taskname_1').taskname_id
        taskname_2_id = Taskname.objects.get(taskname_name='taskname_2').taskname_id
        # get object
        taskpriority_id = Taskpriority.objects.get(taskpriority_name='prio_1').taskpriority_id
        # get object
        form = TaskCreatorForm(data = {
            'taskname': [taskname_1_id, taskname_2_id],
            'taskpriority': taskpriority_id,
        })
        # compare
        self.assertFalse(form.is_valid())
コード例 #2
0
def task_creator(request):
    """ function to create many tasks for many systems at once (helper function to call the real function) """

    # form was valid to post
    if request.method == 'POST':

        # get form
        form = TaskCreatorForm(request.POST)

        # form was valid
        if form.is_valid():

            # get objects from request object
            request_post = request.POST
            request_user = request.user

            # show immediate message for user
            messages.success(request, 'Task creator started')

            # call async function
            async_task(
                "dfirtrack_main.creator.task_creator.task_creator_async",
                request_post,
                request_user,
            )

            # return directly to task list
            return redirect(reverse('task_list'))

    # show empty form
    else:

        # get id of first status objects sorted by name
        taskpriority = Taskpriority.objects.order_by(
            'taskpriority_name')[0].taskpriority_id
        taskstatus = Taskstatus.objects.order_by(
            'taskstatus_name')[0].taskstatus_id

        form = TaskCreatorForm(initial={
            'taskpriority': taskpriority,
            'taskstatus': taskstatus,
        })

        # call logger
        debug_logger(str(request.user), ' TASK_CREATOR_ENTERED')

    return render(request, 'dfirtrack_main/task/task_creator.html',
                  {'form': form})
コード例 #3
0
    def test_task_creator_taskstatus_form_label(self):
        """ test form label """

        # get object
        form = TaskCreatorForm()
        # compare
        self.assertEqual(form.fields['taskstatus'].label, 'Taskstatus')
コード例 #4
0
    def test_task_creator_system_form_label(self):
        """ test form label """

        # get object
        form = TaskCreatorForm()
        # compare
        self.assertEqual(form.fields['system'].label, 'Systems')
コード例 #5
0
    def test_task_creator_assigned_to_user_id_form_label(self):
        """ test form label """

        # get object
        form = TaskCreatorForm()
        # compare
        self.assertEqual(form.fields['task_assigned_to_user_id'].label, 'Task assigned to user id')
コード例 #6
0
def tasks_creator(request):
    """ function to create many tasks for many systems at once (helper function to call the real function) """

    # form was valid to post
    if request.method == 'POST':
        request_post = request.POST
        request_user = request.user

        # call async function
        async_task(
            "dfirtrack_main.creator.tasks_creator.tasks_creator_async",
            request_post,
            request_user,
        )

        return redirect('/tasks')

    # show empty form
    else:
        form = TaskCreatorForm(initial={
            'taskpriority': 2,
            'taskstatus': 1,
        })

        # call logger
        debug_logger(str(request.user), " TASK_CREATOR_ENTERED")
    return render(request, 'dfirtrack_main/task/tasks_creator.html',
                  {'form': form})
コード例 #7
0
    def test_task_creator_assigned_to_user_id_form_label(self):
        """ test form label """

        # get object
        form = TaskCreatorForm()
        # compare
        self.assertEqual(form.fields['task_assigned_to_user_id'].label,
                         'Assigned to user')
        self.assertEqual(form.fields['task_assigned_to_user_id'].empty_label,
                         'Select user (optional)')
コード例 #8
0
    def test_task_creator_system_form_filled(self):
        """ test minimum form requirements / VALID """

        # get object
        system_1_id = System.objects.get(system_name='system_1').system_id
        system_2_id = System.objects.get(system_name='system_2').system_id
        # get object
        taskname_1_id = Taskname.objects.get(taskname_name='taskname_1').taskname_id
        taskname_2_id = Taskname.objects.get(taskname_name='taskname_2').taskname_id
        # get object
        taskpriority_id = Taskpriority.objects.get(taskpriority_name='prio_1').taskpriority_id
        # get object
        taskstatus_id = Taskstatus.objects.get(taskstatus_name='taskstatus_1').taskstatus_id
        # get object
        form = TaskCreatorForm(data = {
            'system': [system_1_id, system_2_id],
            'taskname': [taskname_1_id, taskname_2_id],
            'taskpriority': taskpriority_id,
            'taskstatus': taskstatus_id,
        })
        # compare
        self.assertTrue(form.is_valid())
コード例 #9
0
ファイル: task_creator.py プロジェクト: dekoder/dfirtrack
def task_creator_async(request_post, request_user):
    """ function to create many tasks for many systems at once """

    # call logger
    debug_logger(str(request_user), " TASK_CREATOR_BEGIN")

    # extract tasknames (list results from request object via multiple choice field)
    tasknames = request_post.getlist('taskname')

    # extract systems (list results from request object via multiple choice field)
    systems = request_post.getlist('system')

    # iterate over tasknames
    for taskname in tasknames:

        # iterate over systems
        for system in systems:

            # create form with request data
            form = TaskCreatorForm(request_post)

            # create task
            if form.is_valid():

                # dont't save form yet
                task = form.save(commit=False)

                # set taskname and system
                task.taskname = Taskname.objects.get(taskname_id=taskname)
                task.system = System.objects.get(system_id=system)

                # set auto values
                task.task_created_by_user_id = request_user
                task.task_modified_by_user_id = request_user

                # get taskstatus objects for comparing
                taskstatus_working = Taskstatus.objects.get(
                    taskstatus_name='Working')
                taskstatus_done = Taskstatus.objects.get(
                    taskstatus_name='Done')

                # set times depending on submitted taskstatus
                if task.taskstatus == taskstatus_working:
                    task.task_started_time = timezone.now()
                if task.taskstatus == taskstatus_done:
                    task.task_started_time = timezone.now()
                    task.task_finished_time = timezone.now()

                # save object
                task.save()

                # save manytomany
                form.save_m2m()

                # call logger
                task.logger(str(request_user), " TASK_CREATOR_EXECUTED")

    # call logger
    debug_logger(str(request_user), " TASK_CREATOR_END")
コード例 #10
0
    def test_task_creator_note_form_filled(self):
        """ test additional form content """

        # get object
        system_1_id = System.objects.get(system_name='system_1').system_id
        system_2_id = System.objects.get(system_name='system_2').system_id
        # get object
        taskname_1_id = Taskname.objects.get(taskname_name='taskname_1').taskname_id
        taskname_2_id = Taskname.objects.get(taskname_name='taskname_2').taskname_id
        # get object
        taskpriority_id = Taskpriority.objects.get(taskpriority_name='prio_1').taskpriority_id
        # get object
        taskstatus_id = Taskstatus.objects.get(taskstatus_name='taskstatus_1').taskstatus_id
        # get object
        form = TaskCreatorForm(data = {
            'system': [system_1_id, system_2_id],
            'taskname': [taskname_1_id, taskname_2_id],
            'taskpriority': taskpriority_id,
            'taskstatus': taskstatus_id,
            'task_note': 'lorem ipsum'
        })
        # compare
        self.assertTrue(form.is_valid())
コード例 #11
0
def tasks_creator_async(request_post, request_user):
    """ function to create many tasks for many systems at once """

    # call logger
    debug_logger(str(request_user), " TASK_CREATOR_BEGIN")

    # extract tasknames (list results from request object via multiple choice field)
    tasknames = request_post.getlist('taskname')

    # extract systems (list results from request object via multiple choice field)
    systems = request_post.getlist('system')

    # iterate over tasknames
    for taskname in tasknames:

        # iterate over systems
        for system in systems:

            # create form with request data
            form = TaskCreatorForm(request_post)

            # create task
            if form.is_valid():

                # dont't save form yet
                task = form.save(commit=False)

                # set taskname and system
                task.taskname = Taskname.objects.get(taskname_id=taskname)
                task.system = System.objects.get(system_id=system)

                # set auto values
                task.task_created_by_user_id = request_user
                task.task_modified_by_user_id = request_user

                # save object
                task.save()

                # save manytomany
                form.save_m2m()

                tags = task.tag.all()
                taglist = []
                tagstring = 'None'
                for tag in tags:
                    taglist.append(tag.tag_name)
                    tagstring = ','.join(taglist)

                # call logger
                task.logger(str(request_user), " TASK_CREATOR_EXECUTED")

    # call logger
    debug_logger(str(request_user), " TASK_CREATOR_END")
コード例 #12
0
def task_creator_async(request_post, request_user):
    """ function to create many tasks for many systems at once """

    # call logger
    debug_logger(str(request_user), ' TASK_CREATOR_START')

    # extract tasknames (list results from request object via multiple choice field)
    tasknames = request_post.getlist('taskname')

    # extract systems (list results from request object via multiple choice field)
    systems = request_post.getlist('system')

    # set tasks_created_counter (needed for messages)
    tasks_created_counter = 0

    # set system_tasks_created_counter (needed for messages)
    system_tasks_created_counter = 0

    # iterate over systems
    for system in systems:

        # autoincrement counter
        system_tasks_created_counter += 1

        # iterate over tasknames
        for taskname in tasknames:

            # create form with request data
            form = TaskCreatorForm(request_post)

            # create task
            if form.is_valid():
                """ object creation """

                # don't save form yet
                task = form.save(commit=False)

                # set taskname and system
                task.taskname = Taskname.objects.get(taskname_id=taskname)
                task.system = System.objects.get(system_id=system)

                # set auto values
                task.task_created_by_user_id = request_user
                task.task_modified_by_user_id = request_user

                # get taskstatus objects for comparing
                taskstatus_working = Taskstatus.objects.get(
                    taskstatus_name='20_working')
                taskstatus_done = Taskstatus.objects.get(
                    taskstatus_name='30_done')

                # set times depending on submitted taskstatus
                if task.taskstatus == taskstatus_working:
                    task.task_started_time = timezone.now()
                if task.taskstatus == taskstatus_done:
                    task.task_started_time = timezone.now()
                    task.task_finished_time = timezone.now()

                # save object
                task.save()

                # save manytomany
                form.save_m2m()
                """ object counter / log """

                # autoincrement counter
                tasks_created_counter += 1

                # call logger
                task.logger(str(request_user), ' TASK_CREATOR_EXECUTED')
    """ finish system importer """

    # call final message
    message_user(
        request_user,
        f'{tasks_created_counter} tasks created for {system_tasks_created_counter} systems.',
        constants.SUCCESS)

    # call logger
    info_logger(
        str(request_user), f' TASK_CREATOR_STATUS'
        f' tasks_created:{tasks_created_counter}'
        f'|systems_affected:{system_tasks_created_counter}')

    # call logger
    debug_logger(str(request_user), ' TASK_CREATOR_END')