|
| 1 | +def get_event_date(event): |
| 2 | + return event.date |
| 3 | + |
| 4 | + |
| 5 | +def current_users(events): |
| 6 | + events.sort(key=get_event_date) |
| 7 | + machines = {} |
| 8 | + for event in events: |
| 9 | + if event.machine not in machines: |
| 10 | + machines[event.machine] = set() |
| 11 | + if event.type == "login": |
| 12 | + machines[event.machine].add(event.user) |
| 13 | + elif event.type == "logout" and event.user in machines[event.machine]: |
| 14 | + machines[event.machine].remove(event.user) |
| 15 | + return machines |
| 16 | + |
| 17 | + |
| 18 | +def generate_report(machines): |
| 19 | + for machine, users in machines.items(): |
| 20 | + if len(users) > 0: |
| 21 | + user_list = ", ".join(users) |
| 22 | + print("{}: {}".format(machine, user_list)) |
| 23 | + |
| 24 | + |
| 25 | +class Event: |
| 26 | + def __init__(self, event_date, event_type, machine_name, user): |
| 27 | + self.date = event_date |
| 28 | + self.type = event_type |
| 29 | + self.machine = machine_name |
| 30 | + self.user = user |
| 31 | + |
| 32 | + |
| 33 | +events = [ |
| 34 | + Event('2020-01-21 12:45:56', 'login', 'myworkstation.local', 'jordan'), |
| 35 | + Event('2020-01-22 15:53:42', 'logout', 'webserver.local', 'jordan'), |
| 36 | + Event('2020-01-21 18:53:21', 'login', 'webserver.local', 'lane'), |
| 37 | + Event('2020-01-22 10:25:34', 'logout', 'myworkstation.local', 'jordan'), |
| 38 | + Event('2020-01-21 08:20:01', 'login', 'webserver.local', 'jordan'), |
| 39 | + Event('2020-01-23 11:24:35', 'logout', 'mailserver.local', 'chris'), |
| 40 | +] |
| 41 | + |
| 42 | +users = current_users(events) |
| 43 | +print(users) |
| 44 | +generate_report(users) |
0 commit comments