#!/usr/bin/env python3 import pandas as pd import os import sys import datetime version_major=0 version_minor=0 version_serial=2 version = '.'.join([str(version_major),str(version_minor),str(version_serial)]) def help_file(): print('') print('Usage: ') print('') print('Download the Master Pilot Seniority List from CWA-') print(' CWA -> Reports -> System Seniority -> Sort By Seniority Number ') print('') print('Download the monthly Award file from Crew Planning in .pdf format') print('') print('Run SeniorityCalculator.py using these two files as inputs') print('') print('Run analyse.py using the resultant .csv file from SeniorityCalculator.py') print('') print('The results show the current master seniority to hold various domicile relative seniorities as a Captian') print('') def analyse_CA_seniority(mergedfile='merged.csv', empid=88292): print('') print('Master Relative Seniority to hold Domicile Seniority') print('Version: ' + version) print('') if os.path.exists(mergedfile): #Read csv file into DataFrame df_merged = pd.read_csv(mergedfile) else: print("Cannot find file: " + mergedfile) print("Run python3 parse2.py to build appropriate files") sys.exit() # Get list of domiciles for iteration domiciles = df_merged.Dom.unique() #Get Total number of pilots on Seniority List intMaxSen = int(df_merged.TotalSen.max()) SenChart = [] chkpercents = [] x = range(100, 1, -5) for n in x: chkpercents.append(n) for domicile in domiciles: column_names=['Domicile'] #Populate Dataframe with each domicile's CA list df_domicile = df_merged.loc[ (df_merged['Dom'] == str(domicile).upper()) & (df_merged['Seat'] == str('CA').upper()) ] percent_results = [] new_seniority = [] new_seniority.append(domicile) for item in chkpercents: sen = int(item)/100 domsen = int(round(sen * df_domicile.DomSen.max())) totalsen = float(df_domicile.loc[df_merged['DomSen'] == domsen].TotalSen.values[0]) / float(intMaxSen) * 100 new_seniority.append(totalsen) column_names.append(str(item)) SenChart.append(new_seniority) dfSeniority = pd.DataFrame(SenChart) dfSeniority.columns=column_names dfSeniority = dfSeniority.round(2) print(dfSeniority.to_string(index=False)) print('') ## Check inputs ## if not len(sys.argv) > 1: help_file() raise Exception('Missing Arguments filename.csv and [optional] employee number') if len(sys.argv) > 1 and not sys.argv[1].lower().endswith('.csv'): raise Exception('Command needs a CSV filename to open') if not os.path.exists(sys.argv[1]): raise Exception('File name does not exist.') if len(sys.argv) > 2: empid = sys.argv[2].strip() if not empid.isdigit(): #check if string is digit if empid[0].lower() == 'e': #check if string starts with an 'e' empid = empid[1: ] #strip leading char if not empid.isdigit(): #recheck if its a digit now raise Exception('Employee numbers is not in a valid format') else: raise Exception('Employee number must be a digit or start with an e') else: empid=88291 analyse_CA_seniority(sys.argv[1], empid) ##Known Errors: # OAK has OAK and OAK ETOPS listngs on vacsen causing duplicte names on merged list # CAdt has a trailing zero for some reason