1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#!/usr/local/bin/python
import sys
import getopt
import re
from datetime import date, datetime
from redmine import Redmine, exceptions
def main(argv):
key = ''
vers = ''
descrpt = ''
try:
opts, args = getopt.getopt(argv, "hk:v:d:p:", ["key=", "version=", "description=", "project="])
except getopt.GetoptError:
print("create_version.py -k <key> -v <version> -d <description> -p <project>")
sys.exit(2)
for opt, arg in opts:
if opt == '-h':
print("create_version.py -k <key> -v <version> -d <description> -p <project>")
sys.exit(2)
elif opt in ("-k", "--key"):
key = arg
elif opt in ("-v", "--version"):
vers = arg
elif opt in ("-d", "--description"):
descrpt = arg
elif opt in ("-p", "--project"):
project = arg
if key == '':
print("<key> cannot be blank")
sys.exit(2)
if vers == '':
print("<version> cannot be blank")
sys.exit(2)
if project == '':
print("<project> cannot be blank")
sys.exit(2)
creation_date = re.match(r".*(\d{4})(\d{2})(\d{2})\d{4}", vers)
redmine = Redmine('https://bugs.freenas.org', key=key)
rm_project = redmine.project.get(project)
version = redmine.version.new()
version.project_id = rm_project.id
version.name = vers
version.description = descrpt
version.status = 'closed'
version.sharing = 'none'
if creation_date:
version.due_date = date(int(creation_date.group(1)), int(creation_date.group(2)), int(creation_date.group(3)))
else:
version.due_date = date(datetime.now().year, datetime.now().month, datetime.now().day)
result = ''
try:
result = version.save()
except exceptions.ValidationError:
print("Could not create version")
except exceptions.AuthError:
print("Error authenticating with server")
if result:
print("Version {0} successfully created".format(vers))
else:
print("Error creating version {0}".format(vers))
if __name__ == "__main__":
main(sys.argv[1:])