1 | # |
||
2 | # SOFTWARE HISTORY |
||
3 | # |
||
4 | # Date Ticket# Engineer Description |
||
5 | # ------------- -------- --------- --------------------------------------------- |
||
6 | # Feb 13, 2017 6092 randerso Added StoreTimeAction |
||
7 | # |
||
8 | |||
9 | import argparse |
||
10 | import sys |
||
11 | import time |
||
12 | |||
13 | from dynamicserialize.dstypes.com.raytheon.uf.common.dataplugin.gfe.db.objects import DatabaseID |
||
14 | from dynamicserialize.dstypes.com.raytheon.uf.common.dataplugin.gfe.db.objects import ParmID |
||
15 | |||
16 | TIME_FORMAT = "%Y%m%d_%H%M" |
||
17 | |||
18 | |||
19 | class UsageArgumentParser(argparse.ArgumentParser): |
||
20 | """ |
||
21 | A subclass of ArgumentParser that overrides error() to print the |
||
22 | whole help text, rather than just the usage string. |
||
23 | """ |
||
24 | def error(self, message): |
||
25 | sys.stderr.write('%s: error: %s\n' % (self.prog, message)) |
||
26 | self.print_help() |
||
27 | sys.exit(2) |
||
28 | |||
29 | |||
30 | # Custom actions for ArgumentParser objects |
||
31 | class StoreDatabaseIDAction(argparse.Action): |
||
32 | def __call__(self, parser, namespace, values, option_string=None): |
||
33 | did = DatabaseID(values) |
||
34 | if did.isValid(): |
||
35 | setattr(namespace, self.dest, did) |
||
36 | else: |
||
37 | parser.error("DatabaseID [" + values + "] not a valid identifier") |
||
38 | |||
39 | |||
40 | View Code Duplication | class AppendParmNameAndLevelAction(argparse.Action): |
|
0 ignored issues
–
show
Duplication
introduced
by
![]() |
|||
41 | def __call__(self, parser, namespace, values, option_string=None): |
||
42 | tx = ParmID.parmNameAndLevel(values) |
||
43 | comp = tx[0] + '_' + tx[1] |
||
44 | if (hasattr(namespace, self.dest)) and (getattr(namespace, self.dest) is not None): |
||
45 | currentValues = getattr(namespace, self.dest) |
||
46 | currentValues.append(comp) |
||
47 | setattr(namespace, self.dest, currentValues) |
||
48 | else: |
||
49 | setattr(namespace, self.dest, [comp]) |
||
50 | |||
51 | |||
52 | View Code Duplication | class StoreTimeAction(argparse.Action): |
|
0 ignored issues
–
show
|
|||
53 | """ |
||
54 | argparse.Action subclass to validate GFE formatted time strings |
||
55 | and parse them to time.struct_time |
||
56 | """ |
||
57 | def __call__(self, parser, namespace, values, option_string=None): |
||
58 | try: |
||
59 | timeStruct = time.strptime(values, TIME_FORMAT) |
||
60 | setattr(namespace, self.dest, timeStruct) |
||
61 | except ValueError: |
||
62 | parser.error(str(values) + " is not a valid time string of the format YYYYMMDD_hhmm") |
||
63 |