def calctimings(log): single_log = {} for end_type, chunk in nt.loadchunks(log): start, stop, duration = nt.parsefortime(chunk) chunk_time = nt.getworkingtimeforchunk(chunk) chunk_day = start[0:8] if chunk_day not in single_log: single_log[chunk_day] = { 'working_time': 0, 'duration': [], 'start': [], 'stop': [], } single_log[chunk_day]['duration'].append(duration) single_log[chunk_day]['start'].append(start) single_log[chunk_day]['stop'].append(stop) single_log[chunk_day]['working_time'] += chunk_time['working'] return single_log
def calcactions(log): result = { "merges": 0, "splits": 0, "bodies": {}, } initial = { 'merges': 0, 'splits': 0, 'working': 0, } day_result = {} current_assignment = None assignment_chunk = [] assignment_day_chunk = [] for l in log: if l[nt.loglevellength:].startswith('20'): line_date = nt.gettimestamp(l).strftime(nt.newtimestampformat)[0:8] if line_date not in day_result: day_result[line_date] = { "merges": 0, "splits": 0, "bodies": {}, } if assignment_day_chunk: wt_day = nt.getworkingtimeforchunk(assignment_day_chunk) assignment_day_chunk = [] if current_assignment not in day_result[line_date]['bodies']: day_result[line_date]['bodies'][current_assignment] = initial.copy() day_result[line_date]['bodies'][current_assignment]['working'] += wt_day['working'] if "Assigned bookmark" in l: # Retrieve bookmark bid = nt.getbookmarkid(l) if bid: if current_assignment and bid != current_assignment: wt = nt.getworkingtimeforchunk(assignment_chunk) wt_day = nt.getworkingtimeforchunk(assignment_day_chunk) assignment_chunk = [] assignment_day_chunk = [] result['bodies'][current_assignment]['working'] += wt['working'] if current_assignment not in day_result[line_date]['bodies']: day_result[line_date]['bodies'][current_assignment] = initial.copy() day_result[line_date]['bodies'][current_assignment]['working'] += wt_day['working'] # add time to old assignment current_assignment = bid if current_assignment not in result['bodies']: # If not exists, create dictionary result['bodies'][current_assignment] = initial.copy() if "Merge operation saved." in l: result['merges'] += 1 day_result[line_date]['merges'] += 1 if current_assignment: result['bodies'][current_assignment]['merges'] += 1 if current_assignment not in day_result[line_date]['bodies']: day_result[line_date]['bodies'][current_assignment] = initial.copy() day_result[line_date]['bodies'][current_assignment]['merges'] += 1 if "splitted" in l: result['splits'] += 1 day_result[line_date]['splits'] += 1 if current_assignment: result['bodies'][current_assignment]['splits'] += 1 if current_assignment not in day_result[line_date]['bodies']: day_result[line_date]['bodies'][current_assignment] = initial.copy() day_result[line_date]['bodies'][current_assignment]['splits'] += 1 if current_assignment: assignment_chunk.append(l) assignment_day_chunk.append(l) # TODO synapses # TODO volume return result, day_result