Source code for xer_parser.model.projects

from xer_parser.model.classes.project import Project

__all__ = ["Projects"]


[docs] class Projects:
[docs] def __init__(self) -> None: self.index = 0 self._projects = []
[docs] def add(self, params, data): prj = Project(params, data) self._projects.append(prj)
[docs] def get_tsv(self): if len(self._projects): tsv = [] tsv.append(["%T", "PROJECT"]) tsv.append( [ "%F", "proj_id", "fy_start_month_num", "rsrc_self_add_flag", "allow_complete_flag", "rsrc_multi_assign_flag", "checkout_flag", "project_flag", "step_complete_flag", "cost_qty_recalc_flag", "batch_sum_flag", "name_sep_char", "def_complete_pct_type", "proj_short_name", "acct_id", "orig_proj_id", "source_proj_id", "base_type_id", "clndr_id", "sum_base_proj_id", "task_code_base", "task_code_step", "priority_num", "wbs_max_sum_level", "strgy_priority_num", "last_checksum", "critical_drtn_hr_cnt", "def_cost_per_qty", "last_recalc_date", "plan_start_date", "plan_end_date", "scd_end_date", "add_date", "last_tasksum_date", "fcst_start_date", "def_duration_type", "task_code_prefix", "guid", "def_qty_type", "add_by_name", "web_local_root_path", "proj_url", "def_rate_type", "add_act_remain_flag", "act_this_per_link_flag", "def_task_type", "act_pct_link_flag", "critical_path_type", "task_code_prefix_flag", "def_rollup_dates_flag", "use_project_baseline_flag", "rem_target_link_flag", "reset_planned_flag", "allow_neg_act_flag", "sum_assign_level", "last_fin_dates_id", "last_baseline_update_date", "cr_external_key", "apply_actuals_date", "fintmpl_id", "location_id", "loaded_scope_level", "export_flag", "new_fin_dates_id", "baselines_to_export", "baseline_names_to_export", "next_data_date", "close_period_flag", "sum_refresh_date", "trsrcsum_loaded", "sumtask_loaded", ] ) for prj in self._projects: tsv.append(prj.get_tsv()) return tsv return []
[docs] def find_by_id(self, id) -> Project: obj = list(filter(lambda x: x.proj_id == id, self._projects)) if obj: return obj[0] return obj
def __repr__(self): return str(self._projects) def __len__(self) -> int: return super().__len__() def __iter__(self) -> "Projects": return self def __next__(self) -> Project: if self.index >= len(self._projects): raise StopIteration idx = self.index self.index += 1 return self._projects[idx]