Exemple #1
0
    def validate(args: argparse.Namespace) -> bool:
        COMMON_MESSAGE = "annofabcli experimental find_break_error: error:"
        if args.import_file_path is not None:
            if not Path(args.import_file_path).is_file():
                print(
                    f"{COMMON_MESSAGE} argument --import_file_path: ファイルパスが存在しません\
                '{args.import_file_path}'",
                    file=sys.stderr,
                )
                return False
        project_id_list = get_list_from_args(args.project_id)
        if len(project_id_list) > 1 and args.task_id:
            print(
                f"{COMMON_MESSAGE} argument --project_id: task_idを指定した場合はproject_idは複数指定できません\
                            '{args.project_id}'",
                file=sys.stderr,
            )
            return False
        if args.task_id and len(args.task_id) > 1 and args.time:
            print(
                f"{COMMON_MESSAGE} argument --task_id: timeを指定した場合はtask_idは複数指定できません\
                            '{args.project_id}'",
                file=sys.stderr,
            )
            return False

        return True
Exemple #2
0
def main(args):
    not_masked_biography_set = (
        set(get_list_from_args(args.not_masked_biography)) if args.not_masked_biography is not None else None
    )
    not_masked_user_id_set = (
        set(get_list_from_args(args.not_masked_user_id)) if args.not_masked_user_id is not None else None
    )

    mask_visualization_dir(
        project_dir=args.dir,
        not_masked_biography_set=not_masked_biography_set,
        not_masked_user_id_set=not_masked_user_id_set,
        output_dir=args.output_dir,
        minimal_output=args.minimal,
        exclude_masked_user_for_linegraph=args.exclude_masked_user_for_linegraph,
    )
Exemple #3
0
    def main(self):
        args = self.args

        annotation_path: Path = args.annotation
        # Simpleアノテーションの読み込み
        if annotation_path.is_file():
            iter_parser = lazy_parse_simple_annotation_zip(annotation_path)
        else:
            iter_parser = lazy_parse_simple_annotation_dir(annotation_path)

        df = pandas.read_csv(
            args.input_data_id_csv,
            sep=",",
            header=None,
            names=("input_data_id", "image_path"),
        )
        input_data_id_relation_dict = dict(
            zip(df["input_data_id"], df["image_path"]))

        task_query = (TaskQuery.from_dict(
            annofabcli.common.cli.get_json_from_args(args.task_query))
                      if args.task_query is not None else None)

        draw_annotation_all(
            iter_parser=iter_parser,
            image_dir=args.image_dir,
            input_data_id_relation_dict=input_data_id_relation_dict,
            output_dir=args.output_dir,
            target_task_ids=get_list_from_args(args.task_id)
            if args.task_id is not None else None,
            task_query=task_query,
            label_color_dict=self._create_label_color(args.label_color)
            if args.label_color is not None else None,
            target_label_names=get_list_from_args(args.label_name)
            if args.label_name is not None else None,
            polyline_labels=get_list_from_args(args.polyline_label)
            if args.polyline_label is not None else None,
            drawing_options=DrawingOptions.from_dict(
                get_json_from_args(args.drawing_options))
            if args.drawing_options is not None else None,
        )
    def main(self) -> None:
        args = self.args

        arg_user_id_list = get_list_from_args(args.user_id) if args.user_id is not None else None
        project_id_list = get_list_from_args(args.project_id) if args.project_id is not None else None
        organization_name_list = get_list_from_args(args.organization) if args.organization is not None else None

        start_date, end_date = self.get_start_and_end_date_from_args(args)
        output_dir = Path(args.output_dir)
        output_dir.mkdir(exist_ok=True, parents=True)

        mian_obj = ListWorktimeByUserMain(self.service)
        mian_obj.main(
            organization_name_list=organization_name_list,
            project_id_list=project_id_list,
            start_date=start_date,
            end_date=end_date,
            output_dir=output_dir,
            user_id_list=arg_user_id_list,
            add_availability=args.add_availability,
            add_monitored_worktime=args.add_monitored_worktime,
        )
Exemple #5
0
    def main(self) -> None:
        args = self.args

        target_dir: Path = args.dir
        user_id_list = get_list_from_args(args.user_id) if args.user_id is not None else None
        df_user = create_user_df(target_dir)

        result = create_rating_df(
            df_user,
            target_dir,
            threshold_worktime=args.threshold_worktime,
            threshold_task_count=args.threshold_task_count,
        )

        output_dir: Path = args.output_dir
        # output_csv(result, output_dir)
        output_rank_csv(result, output_dir, user_id_list=user_id_list)
        output_deviation_csv(
            result,
            output_dir,
            threshold_deviation_user_count=args.threshold_deviation_user_count,
            user_id_list=user_id_list,
        )
        output_basic_statistics_by_project(result, output_dir)
Exemple #6
0
 def __init__(self, service: annofabapi.Resource, facade: AnnofabApiFacade, args: argparse.Namespace):
     super().__init__(service, facade, args)
     project_id_list = get_list_from_args(args.project_id)
     self.project_id_list = list(set(project_id_list))
Exemple #7
0
    def main(self):
        args = self.args
        if not self.validate(args):
            return

        format_target = FormatTarget(args.format)
        time_unit = TimeUnitTarget(args.time_unit)

        start_date = datetime.datetime.strptime(args.start_date,
                                                "%Y-%m-%d").date()
        end_date = datetime.datetime.strptime(args.end_date, "%Y-%m-%d").date()
        user_id_list = get_list_from_args(
            args.user_id) if args.user_id is not None else None

        total_df = pd.DataFrame([])

        # プロジェクトごとにデータを取得
        project_id_list = get_list_from_args(args.project_id)
        logger.info(f"{len(project_id_list)} 件のプロジェクトを取得します。")
        for i, project_id in enumerate(list(set(project_id_list))):
            logger.debug(f"{i + 1} 件目: project_id = {project_id}")
            try:
                afaw_time_df = self.list_labor_worktime(
                    project_id, start_date.strftime("%Y-%m-%d"),
                    end_date.strftime("%Y-%m-%d"))
                total_df = pd.concat([total_df, afaw_time_df], sort=True)
            except Exception as e:  # pylint: disable=broad-except
                logger.error(e)
                logger.error(f"プロジェクトにアクセスできませんでした(project_id={project_id} )。")

        # データが無い場合にはwarning
        if len(total_df) == 0:
            logger.warning(f"対象プロジェクトの労務管理情報・作業情報が0件のため、出力しません。")
            return
        total_df = refine_df(total_df, start_date, end_date, user_id_list)
        if len(total_df) == 0:
            logger.warning(f"対象期間の労務管理情報・作業情報が0件のため、出力しません。")
            return

        # 時間単位変換
        total_df = timeunit_conversion(df=total_df, time_unit=time_unit)

        # フォーマット別に出力dfを作成
        if format_target == FormatTarget.BY_NAME_TOTAL:
            df = print_byname_total_list(total_df)
        elif format_target == FormatTarget.TOTAL:
            df = print_total(total_df)
        elif format_target == FormatTarget.COLUMN_LIST_PER_PROJECT:
            df = create_column_list_per_project(total_df)
        elif format_target == FormatTarget.COLUMN_LIST:
            df = create_column_list(total_df)
        elif format_target == FormatTarget.DETAILS:
            df = print_time_list_from_work_time_list(total_df)
        else:
            raise RuntimeError(f"format_target='{format_target}'は対象外です。")
        # 出力先別に出力
        if args.output:
            out_format = args.output
        else:
            out_format = sys.stdout
        self._output(
            out_format,
            df,
            index=(format_target == FormatTarget.DETAILS),
            add_project_id=args.add_project_id,
            project_id_list=project_id_list,
        )