sawine@0
|
1 |
#!/usr/bin/python
|
sawine@0
|
2 |
|
sawine@0
|
3 |
import dflowlog
|
sawine@0
|
4 |
from dflowlog import dflow_fields as fields
|
sawine@0
|
5 |
|
sawine@0
|
6 |
import sys
|
sawine@0
|
7 |
from optparse import OptionParser
|
sawine@0
|
8 |
|
sawine@0
|
9 |
def purge_zero(plans):
|
sawine@0
|
10 |
new_plans = []
|
sawine@0
|
11 |
for plan in plans:
|
sawine@0
|
12 |
if int(plan[10]) != 0:
|
sawine@0
|
13 |
new_plans.append(plan)
|
sawine@0
|
14 |
return new_plans
|
sawine@0
|
15 |
|
sawine@0
|
16 |
def purge_empty(plans):
|
sawine@0
|
17 |
new_plans = []
|
sawine@0
|
18 |
for plan in plans:
|
sawine@0
|
19 |
if len(plan) >= len(fields) and len(plan[fields["flow_point"]]) > 1:
|
sawine@0
|
20 |
new_plans.append(plan)
|
sawine@0
|
21 |
return new_plans
|
sawine@0
|
22 |
|
sawine@0
|
23 |
def purge_duplicates(plans):
|
sawine@0
|
24 |
new_plans = dict()
|
sawine@0
|
25 |
for plan in plans:
|
sawine@0
|
26 |
if len(plan) >= len(fields):
|
sawine@0
|
27 |
new_plans[(plan[fields["call_sign"]], plan[fields["atd"]])] = plan
|
sawine@0
|
28 |
return new_plans.itervalues()
|
sawine@0
|
29 |
|
sawine@0
|
30 |
def filter(column, value, plans):
|
sawine@0
|
31 |
new_plans = []
|
sawine@0
|
32 |
for plan in plans:
|
sawine@0
|
33 |
if len(plan) >= fields[column] and plan[fields[column]] == value:
|
sawine@0
|
34 |
new_plans.append(plan)
|
sawine@0
|
35 |
return new_plans
|
sawine@0
|
36 |
|
sawine@0
|
37 |
if __name__ == "__main__":
|
sawine@0
|
38 |
option_map = {str(purge_duplicates): purge_duplicates,
|
sawine@0
|
39 |
str(purge_empty): purge_empty,
|
sawine@0
|
40 |
str(purge_zero): purge_zero}
|
sawine@0
|
41 |
arg_parser = OptionParser(usage="usage: %prog [options] csv_logs ...")
|
sawine@0
|
42 |
arg_parser.add_option("-d", "--duplicate",
|
sawine@0
|
43 |
action="store_true", dest=str(purge_duplicates),
|
sawine@0
|
44 |
help="remove duplicate entries")
|
sawine@0
|
45 |
arg_parser.add_option("-e", "--empty",
|
sawine@0
|
46 |
action="store_true", dest=str(purge_empty),
|
sawine@0
|
47 |
help="remove entries with empty flow points")
|
sawine@0
|
48 |
arg_parser.add_option("-z", "--zero",
|
sawine@0
|
49 |
action="store_true", dest=str(purge_zero),
|
sawine@0
|
50 |
help="remove entries with empty flow points")
|
sawine@0
|
51 |
arg_parser.add_option("-f", "--files",
|
sawine@0
|
52 |
action="store_true", dest="files_mode",
|
sawine@0
|
53 |
help="arguments (csv_logs) are files")
|
sawine@0
|
54 |
arg_parser.set_defaults(purge_duplicates=False)
|
sawine@0
|
55 |
arg_parser.set_defaults(purge_empty=False)
|
sawine@0
|
56 |
arg_parser.set_defaults(purge_zero=False)
|
sawine@0
|
57 |
arg_parser.set_defaults(files_mode=False)
|
sawine@0
|
58 |
(options, args) = arg_parser.parse_args()
|
sawine@0
|
59 |
|
sawine@0
|
60 |
plans = []
|
sawine@0
|
61 |
|
sawine@0
|
62 |
if options.files_mode:
|
sawine@0
|
63 |
plans = dflowlog.parse_files(args)
|
sawine@0
|
64 |
options.files_mode = False
|
sawine@0
|
65 |
else:
|
sawine@0
|
66 |
plans = dflowlog.parse_pipe(args)
|
sawine@0
|
67 |
|
sawine@0
|
68 |
for option in options.__dict__:
|
sawine@0
|
69 |
if getattr(options, option):
|
sawine@0
|
70 |
plans = option_map[option](plans)
|
sawine@0
|
71 |
dflowlog.print_logs(plans)
|
sawine@0
|
72 |
|
sawine@0
|
73 |
|