예제 #1
0
 def setUp(self):
     super().setUp()
     self.user = UserFactory()
     self.client.force_login(self.user)
     self.task_activity = TaskActivityTypeFactory()
     self.project = ProjectFactory()
     self.project.members.add(self.user)
     self.report = ReportFactory(author=self.user,
                                 project=self.project,
                                 task_activity=self.task_activity)
     self.url = reverse("custom-report-detail", args=(self.report.pk, ))
     self.data = {
         "date": self.report.date,
         "description": self.report.description,
         "project": self.project.pk,
         "author": self.report.author.pk,
         "task_activity": self.task_activity.pk,
         "work_hours": self.report.work_hours_str,
     }
     self.expected_success_message = SuccessPopUpMessages.REPORT_UPDATE.value.format(
         report_date=self.report.date, project_name=self.project.name)
예제 #2
0
 def setUp(self):
     super().setUp()
     self.employee1 = UserFactory(first_name="Cezar", last_name="Goldstein")
     self.employee2 = UserFactory(first_name="", last_name="", email="*****@*****.**")
     self.employee3 = UserFactory(first_name="Abimelek", last_name="Zuckerberg")
     self.manager = ManagerUserFactory()
     self.project = ProjectFactory()
     self.project.members.add(self.employee1)
     self.project.members.add(self.employee2)
     self.project.members.add(self.employee3)
     reports_in_day = 2
     # creating reports in desc order
     number_of_days = 4
     self.year = "2019"
     self.month = "06"
     for i in range(number_of_days, 0, -1):
         for _ in range(reports_in_day):
             ReportFactory(author=self.employee2, project=self.project, date=f"{self.year}-{self.month}-{i}")
             ReportFactory(author=self.employee3, project=self.project, date=f"{self.year}-{self.month}-{i}")
             ReportFactory(author=self.employee1, project=self.project, date=f"{self.year}-{self.month}-{i}")
     self.report_asc = Report.objects.filter(author__id=self.employee1.pk).order_by("date")
     self.reports_per_user = reports_in_day * number_of_days
예제 #3
0
 def setUp(self):
     super().setUp()
     self.admin = AdminUserFactory()
     self.user = UserFactory()
     self.task_activity = TaskActivityTypeFactory()
     self.project = ProjectFactory()
     self.project.members.add(self.user)
     self.client.force_login(self.admin)
     self.report = ReportFactory(author=self.user,
                                 project=self.project,
                                 task_activity=self.task_activity)
     self.url = reverse("admin-report-detail",
                        kwargs={"pk": self.report.pk})
     self.data = {
         "date": timezone.now().date(),
         "description": "Some other description",
         "project": self.report.project.pk,
         "author": self.user.pk,
         "task_activity": self.task_activity.pk,
         "work_hours": "8:00",
         "current-project-pk": self.report.project.pk,
     }
예제 #4
0
 def setUp(self):
     super().setUp()
     self.project = ProjectFactory()
     self.url = reverse("custom-projects-list")
예제 #5
0
 def setUp(self):
     super().setUp()
     self.project = ProjectFactory()
     self.url = reverse("custom-project-detail",
                        kwargs={"pk": self.project.pk})
예제 #6
0
 def setUp(self) -> None:
     self.number_of_reports = 6
     self.project = ProjectFactory(name="Test project")
     self.user = UserFactory()
     self.project.members.add(self.user)
     self._generate_user_reports()
예제 #7
0
    def setUp(self) -> None:
        self.user = UserFactory(user_type=CustomUser.UserType.EMPLOYEE.name)

        for _project_number in range(2):
            ProjectFactory(start_date=timezone.now(), suspended=True)
예제 #8
0
 def setUp(self):
     super().setUp()
     self.user = UserFactory()
     self.project_1 = ProjectFactory()
     self.project_2 = ProjectFactory()
예제 #9
0
    def create_project(self, project_type: str, number_of_projects_to_create: int) -> None:
        factory_parameters = self._set_project_factory_parameters(project_type)

        for project_number in range(number_of_projects_to_create):
            logging.info(f"{number_of_projects_to_create - project_number} {project_type} project(s) left to create")
            ProjectFactory(**factory_parameters)
예제 #10
0
    def handle(self, *args, **options):
        #
        # Users
        #

        user_admin = User.objects.filter(email="*****@*****.**").first()
        if user_admin is None:
            user_admin = UserFactory(email="*****@*****.**",
                                     user_type=User.UserType.ADMIN.name,
                                     is_superuser=True,
                                     is_staff=True)
            user_admin.set_password("superuser")  # pylint: disable=no-value-for-parameter
            user_admin.save()

        user_employee_1 = User.objects.filter(
            email="*****@*****.**").first()
        if user_employee_1 is None:
            user_employee_1 = UserFactory(
                email="*****@*****.**",
                user_type=User.UserType.EMPLOYEE.name,
                first_name="Mieczysław",
                last_name="Mietkowiak",
            )
            user_employee_1.set_password("passwduser")  # pylint: disable=no-value-for-parameter
            user_employee_1.save()

        user_employee_2 = User.objects.filter(
            email="*****@*****.**").first()
        if user_employee_2 is None:
            user_employee_2 = UserFactory(
                email="*****@*****.**",
                user_type=User.UserType.EMPLOYEE.name,
                first_name="Andromeda",
                last_name="Adamiak",
            )
            user_employee_2.set_password("passwduser")  # pylint: disable=no-value-for-parameter
            user_employee_2.save()

        user_manager_1 = User.objects.filter(
            email="*****@*****.**").first()
        if user_manager_1 is None:
            user_manager_1 = UserFactory(
                email="*****@*****.**",
                user_type=User.UserType.MANAGER.name,
                first_name="Jan",
                last_name="Nowakowski",
            )
            user_manager_1.set_password("passwduser")  # pylint: disable=no-value-for-parameter
            user_manager_1.save()

        user_manager_2 = User.objects.filter(
            email="*****@*****.**").first()
        if user_manager_2 is None:
            user_manager_2 = UserFactory(
                email="*****@*****.**",
                user_type=User.UserType.MANAGER.name,
                first_name="Anna",
                last_name="Małomówna",
            )
            user_manager_2.set_password("passwduser")  # pylint: disable=no-value-for-parameter
            user_manager_2.save()

        user_employee_3 = User.objects.filter(
            email="*****@*****.**").first()
        if user_employee_3 is None:
            user_employee_3 = UserFactory(
                email="*****@*****.**",
                user_type=User.UserType.EMPLOYEE.name,
                first_name="Kurt",
                last_name="Schmidt",
            )
            user_employee_3.set_password("passwduser")  # pylint: disable=no-value-for-parameter
            user_employee_3.save()

        #
        # Projects
        #

        project_stopped = Project.objects.filter(name="Time monkey").first()
        if project_stopped is None:
            project_stopped = ProjectFactory(
                name="Time monkey",
                start_date=timezone.now() - timezone.timedelta(days=4 * 7),
                stop_date=timezone.now() - timezone.timedelta(days=2 * 7),
            )

        self._add_manager_to_project_if_not_added_yet(project_stopped,
                                                      user_manager_1)
        self._add_member_to_project_if_not_added_yet(project_stopped,
                                                     user_employee_1)
        self._add_member_to_project_if_not_added_yet(project_stopped,
                                                     user_employee_2)
        self._add_member_to_project_if_not_added_yet(project_stopped,
                                                     user_manager_1)
        self._add_member_to_project_if_not_added_yet(project_stopped,
                                                     user_manager_2)

        project_pending = Project.objects.filter(name="Sheet storm").first()
        if project_pending is None:
            project_pending = ProjectFactory(name="Sheet storm",
                                             start_date=timezone.now() -
                                             timezone.timedelta(days=2 * 7))

        self._add_manager_to_project_if_not_added_yet(project_pending,
                                                      user_manager_1)
        self._add_member_to_project_if_not_added_yet(project_pending,
                                                     user_employee_1)
        self._add_member_to_project_if_not_added_yet(project_pending,
                                                     user_employee_2)
        self._add_member_to_project_if_not_added_yet(project_pending,
                                                     user_manager_1)

        project_suspended = Project.objects.filter(name="e_munchkin").first()
        if project_suspended is None:
            project_suspended = ProjectFactory(name="e_munchkin",
                                               start_date=timezone.now() -
                                               timezone.timedelta(days=7),
                                               suspended=True)

        self._add_manager_to_project_if_not_added_yet(project_suspended,
                                                      user_manager_1)
        self._add_member_to_project_if_not_added_yet(project_suspended,
                                                     user_employee_2)
        self._add_member_to_project_if_not_added_yet(project_suspended,
                                                     user_employee_3)
        self._add_member_to_project_if_not_added_yet(project_suspended,
                                                     user_manager_1)
        self._add_member_to_project_if_not_added_yet(project_suspended,
                                                     user_manager_2)

        #
        # Task activities
        #

        task_activity_review, _ = TaskActivityType.objects.get_or_create(
            name="Review")
        task_activity_backend_development, _ = TaskActivityType.objects.get_or_create(
            name="Backend Development")
        task_activity_frontend_development, _ = TaskActivityType.objects.get_or_create(
            name="Frontend Development")
        task_activity_meeting, _ = TaskActivityType.objects.get_or_create(
            name="Meeting")

        #
        # Reports
        #

        ReportFactory(
            date=timezone.now() - timezone.timedelta(days=2),
            description=
            "Some report\r\ncontaining multiple lines\r\\nin description.",
            author=user_employee_1,
            project=project_pending,
            work_hours=timezone.timedelta(hours=8),
            editable=True,
            task_activities=task_activity_review,
        )

        ReportFactory(
            date=timezone.now() - timezone.timedelta(days=1),
            description="Some report",
            author=user_employee_1,
            project=project_pending,
            work_hours=timezone.timedelta(hours=4),
            editable=True,
            task_activities=task_activity_review,
        )

        ReportFactory(
            date=timezone.now() - timezone.timedelta(days=1),
            description="Some report on the same day as other.",
            author=user_employee_1,
            project=project_stopped,
            work_hours=timezone.timedelta(hours=4),
            editable=True,
            task_activities=task_activity_review,
        )

        ReportFactory(
            date=timezone.now() - timezone.timedelta(days=1),
            description="Some report",
            author=user_employee_2,
            project=project_pending,
            work_hours=timezone.timedelta(hours=6),
            editable=True,
            task_activities=task_activity_review,
        )

        ReportFactory(
            date=timezone.now() - timezone.timedelta(days=2),
            description="Some report containing hours with fraction",
            author=user_employee_2,
            project=project_suspended,
            work_hours=timezone.timedelta(hours=8, minutes=30),
            editable=True,
            task_activities=task_activity_backend_development,
        )

        ReportFactory(
            date=timezone.now() - timezone.timedelta(days=2),
            description=
            "Some report containing:\r\n- multiple lines\\ in description\r\n- time with fraction",
            author=user_manager_1,
            project=project_pending,
            work_hours=timezone.timedelta(hours=7, minutes=59),
            editable=True,
            task_activities=task_activity_backend_development,
        )

        ReportFactory(
            date=timezone.now() - timezone.timedelta(days=1),
            description="Some report",
            author=user_manager_1,
            project=project_pending,
            work_hours=timezone.timedelta(hours=2),
            editable=True,
            task_activities=task_activity_backend_development,
        )

        ReportFactory(
            date=timezone.now() - timezone.timedelta(days=1),
            description="Some report containing time with fraction.",
            author=user_manager_2,
            project=project_stopped,
            work_hours=timezone.timedelta(hours=7, minutes=1),
            editable=True,
            task_activities=task_activity_frontend_development,
        )

        ReportFactory(
            date=timezone.now() - timezone.timedelta(days=2),
            description="Some report",
            author=user_manager_2,
            project=project_suspended,
            work_hours=timezone.timedelta(hours=8),
            editable=True,
            task_activities=task_activity_frontend_development,
        )

        ReportFactory(
            date=timezone.now() - timezone.timedelta(days=1),
            description="Some report on the same day as other",
            author=user_manager_1,
            project=project_stopped,
            work_hours=timezone.timedelta(hours=2),
            editable=True,
            task_activities=task_activity_frontend_development,
        )

        ReportFactory(
            date=timezone.now() - timezone.timedelta(days=1),
            description="Some report on the same day as other two",
            author=user_manager_1,
            project=project_suspended,
            work_hours=timezone.timedelta(hours=4),
            editable=True,
            task_activities=task_activity_meeting,
        )

        ReportFactory(
            date=timezone.now() - timezone.timedelta(days=1),
            description="Some report",
            author=user_employee_3,
            project=project_suspended,
            work_hours=timezone.timedelta(hours=8),
            editable=True,
            task_activities=task_activity_meeting,
        )
예제 #11
0
 def _generate_test_projects(queryset_length: int):
     for _ in range(queryset_length):
         ProjectFactory()