def print_params_lines(self, quarters, output): """ Prints param stream. ASSUMPTION: quarters is a list of Quarter objects. """ print >>output, "=====params" for q in quarters: print >> output, "\t=====%s" % str(q) start_date_str = dates.date_to_str(q.get_start_date()) end_date_str = dates.date_to_str(q.get_end_date()) print >> output, "\t\t%s\t%s\t%s" % (start_date_str, end_date_str, ":".join(self.skill_headings)) return
def format_vacation(self, vacation): """ Vacation to string suitable for appify apps. """ days = [dates.date_to_str(d) for d in vacation] result = ":".join(days) return result
def get_date_strings(self, min_date, max_date, start_date, end_date): # Check dates here if end_date.date() < min_date or start_date.date() > max_date: return None # Clamp dates if start_date.date() < min_date: start_date = datetime.datetime(min_date.year, min_date.month, min_date.day) if end_date.date() > max_date: end_date = datetime.datetime(max_date.year, max_date.month, max_date.day) dates = expand_dates([[start_date, end_date]]) result = [date_to_str(d) for d in dates] return result
def condition_vacation_data(self, staff_lines, vacation_lines, oncall_lines): output = StringIO.StringIO() # Get date range for the vacationator start = datetime.date.today() end = start + datetime.timedelta(days=self.horizon) start_date = date_to_str(start) end_date = date_to_str(end) # Filter assignment records by current quarter cur_quarter = quarter.quarter_from_date(start) assignments_parser = RawAssignmentsParser(staff_lines) parsed_staff = filter(lambda rec: rec['quarter'] == cur_quarter, assignments_parser.get_records()) staff_names = [p['name'] for p in parsed_staff] vacation_parser = RawVacationParser(vacation_lines) name_to_vac_name = vacation_parser.map_names_to_vac_names(staff_names) vac_name_to_names = vacation_parser.invert_map(name_to_vac_name) vac_name_to_names["All"] = ["All"] expanded_vacations = vacation_parser.get_expanded_records() oncall_days = self.parse_oncall(start, end, staff_names, vacation_parser, oncall_lines) # Print param stream print >>output, "=====params" print >>output, "\t%s\t%s" % (start_date, end_date) # Print staff stream print >>output, "=====staff" for rec in parsed_staff: print >>output, "\t%s" % "\t".join([rec['name'], rec['track']]) # Print vacation "out days" print >>output, "=====outdays" for vac in expanded_vacations: vacation_person_name = vac[0] if vacation_person_name not in vac_name_to_names: continue names = vac_name_to_names[vacation_person_name] for na in names: # The field order depends on what's returned from RawVacationParser.get_expanded_records vac_type = vac[1] vac_dates = vac[2] # Assemble date string, clamping to start and end dates date_strings = [] for d in vac_dates: if d.date() >= start and d.date() <= end: date_strings.append(date_to_str(d)) # Print a record if there are any out dates if date_strings: print >>output, "\t%s" % "\t".join([na, vac_type, ":".join(date_strings)]) # Print oncall "out days" for d in oncall_days: print >>output, "\t%s" % "\t".join(d) result = output.getvalue() output.close() return result