class Jobcodes(TsAPI): def __init__(self, page:int=1): self.page = str(page) super(Jobcodes, self).__init__(rest_method='GET', reference='jobcodes', query_string={"page":self.page}) self.data_transformation = DataTransformation(self.__addJobcodes()) def __addJobcodes(self): return [Jobcode(**value1).values() for value in self.getRequest()['results'].values() for value1 in value.values()] @staticmethod def __tranformListToStr(lst:list): return list(map(str, lst)) def applyTransformation(self): """This method applies specific transformations to the DataTransformantion obj (e.g See the Class) Aguments: None Returns: None """ # Cleaning str columns self.data_transformation.cleaningStrColumns(['name','last_modified', 'created']) # Cleaning dates columns self.data_transformation.cleaningDates(['last_modified', 'created']) # Transform the attribute locations to str self.data_transformation.listToStr('locations') # Opening rows for the locations list self.data_transformation.listToRows('locations', 'id', 'location')
class Payrolls(TsAPI): def __init__(self, days:int=1): super(Payrolls, self).__init__(rest_method='POST', reference='reports/payroll', days=days) self.data_transformation = DataTransformation(self.__addPayrolls()) def __addPayrolls(self): return [Payroll(**value1).values() for value in self.getRequest()['results'].values() for value1 in value.values()] # def getTotalPages(self): # from math import ceil # return ceil(np.sum(self.data['timesheet_count'])/50) def applyTransformation(self): """This method applies specific transformations to the DataTransformantion obj (e.g See the Class) Aguments: None Returns: None """ # Cleaning str columns self.data_transformation.cleaningStrColumns(['start_date','end_date'])
class Groups(TsAPI): def __init__(self, page:int=1): self.page = str(page) super(Groups, self).__init__(rest_method='GET', reference='groups', query_string={"page":self.page}) self.data_transformation = DataTransformation(self.__addGroups()) def __addGroups(self): return [Group(**value1).values() for value in self.getRequest()['results'].values() for value1 in value.values()] def applyTransformation(self): """This method applies specific transformations to the DataTransformantion obj (e.g See the Class) Aguments: None Returns: None """ # Cleaning str columns self.data_transformation.cleaningStrColumns(['name','last_modified', 'created']) # Cleaning dates columns self.data_transformation.cleaningDates(['last_modified', 'created']) # Transform the list of manager_ids to manager_id (e.g opening the rows) self.data_transformation.listToRows('manager_ids', 'id', 'manager_id')
class Users(TsAPI): def __init__(self, page:int=1): self.page = str(page) super(Users, self).__init__(rest_method='GET', reference='users', query_string={"page":page}) self.data_transformation = DataTransformation(self.__addUsers()) def __addUsers(self): return [User(**value1).values() for value in self.getRequest()['results'].values() for value1 in value.values()] def applyTransformation(self): """This method applies specific transformations to the DataTransformantion obj (e.g See the Class) Aguments: None Returns: None """ # Cleaning str columns self.data_transformation.cleaningStrColumns(['first_name','last_name','username','email', 'hire_date','term_date','last_modified','last_active','created','client_url', 'company_name','profile_image_url','display_name','pronouns','pay_interval']) # Cleaning dates columns self.data_transformation.cleaningDates(['last_modified','last_active','created'])
class Timesheets(TsAPI): def __init__(self, days:int=None, modified_since:int=None, page:int=1): """This simulates a factory Method """ self.page = page if days is not None: self.__start_date = (dt.datetime.now() - dt.timedelta(days=days)).date().strftime('%Y-%m-%d') self.__end_date = dt.datetime.now().date().strftime('%Y-%m-%d') super(Timesheets, self).__init__(rest_method='GET', reference='timesheets', query_string={"start_date":self.__start_date, "end_date":self.__end_date, "page":self.page}) else: # YYYY-MM-DDThh:mm:ss±hh:mm self.__modified_since = (dt.datetime.now() - dt.timedelta(days=modified_since)).date().strftime('%Y-%m-%d') + 'T00:00:00+00:00' super(Timesheets, self).__init__(rest_method='GET', reference='timesheets', query_string={"modified_since":self.__modified_since, "page":self.page}) self.data_transformation = DataTransformation(self.__addTimesheets()) def __addTimesheets(self): return [Timesheet(**value1).values() for value in self.getRequest()['results'].values() for value1 in value.values()] def applyTransformation(self): """This method applies specific transformations to the DataTransformantion obj (e.g See the Class) Aguments: None Returns: None """ # Cleaning str columns self.data_transformation.cleaningStrColumns(['start','end','date','tz_str','tz_str','location', 'on_the_clock','notes','last_modified','customfields']) # Cleaning dates columns self.data_transformation.cleaningDates(['start','end','last_modified']) # Cleaning double quoting self.data_transformation.removingDoubleQuoting('customfields')