Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Dimitri Podborski
AutomationTools
Commits
8566ba19
Commit
8566ba19
authored
Jan 20, 2021
by
Lukasz Kondrad
Browse files
Add a script to parse ballot document and create issue for each NB comment
parent
c9fd621c
Changes
2
Show whitespace changes
Inline
Side-by-side
README.md
View file @
8566ba19
...
...
@@ -4,6 +4,9 @@ MDMS and GitLab modules are curretnly under development. An example how to use t
A
**very quick hack**
for automatic issue creaton (used for FF group during last meeting) can be found in
`./hack.py`
.
A simple script to generate issues for each ballot comment from a document received from ISO.
`./generate_ballot_issues.py`
.
New ideas are welcome. Open new issues for your ideas.
The general idea is to fire requests to MDMS, process the information, use gitlab API to open issues.
...
...
@@ -26,6 +29,7 @@ The general idea is to fire requests to MDMS, process the information, use gitla
-
[
python-gitlab
](
https://python-gitlab.readthedocs.io/en/stable/
)
-
[
bs4
](
https://www.crummy.com/software/BeautifulSoup/bs4/doc/
)
-
[
csv
](
https://docs.python.org/3/library/csv.html
)
(
Python
Standard Library)
-
[
docx
](
https://python-docx.readthedocs.io/en/latest/
)
You can install these using
`pip`
for example:
...
...
generate_ballot_issues.py
0 → 100644
View file @
8566ba19
import
os
import
gitlab
from
docx
import
Document
from
enum
import
Enum
,
unique
PROJECT_ID
=
321
# this ID is my private repo for testing. The ID can be found on the main project webpage
BALLOT_DOC
=
'ISO_IEC DIS 23090-10 Collated Comments.doc'
@
unique
class
ColumType
(
Enum
):
NC
=
0
LINE_NUMBER
=
1
CLAUSE
=
2
PARAGRAPH
=
3
TYPE
=
4
COMMENT
=
5
PROPOSAL
=
6
def
get_gitlab
():
# constants
TOKEN
=
os
.
environ
.
get
(
'GITLAB_TOKEN'
)
if
not
TOKEN
:
print
(
"No private token found, please set the GITLAB_TOKEN environment variable"
)
sys
.
exit
(
1
)
# private token authentication
return
gitlab
.
Gitlab
(
'http://mpegx.int-evry.fr/software'
,
private_token
=
TOKEN
)
def
open_issue
(
gl
,
project_id
,
title
,
description
,
labels
=
[]):
project
=
gl
.
projects
.
get
(
project_id
)
issue
=
project
.
issues
.
create
({
'title'
:
title
,
'description'
:
description
,
'labels'
:
labels
})
issue
.
save
()
if
__name__
==
"__main__"
:
gl
=
get_gitlab
()
document
=
Document
(
BALLOT_DOC
)
for
table
in
document
.
tables
:
for
r
,
row
in
enumerate
(
table
.
rows
):
title
=
""
description
=
""
labels
=
[
"BallotComment"
]
for
c
,
column
in
enumerate
(
row
.
cells
):
if
(
c
==
ColumType
.
NC
.
value
):
title
+=
str
(
table
.
cell
(
r
,
c
).
text
.
rstrip
())
elif
(
c
==
ColumType
.
LINE_NUMBER
.
value
):
description
+=
"Line: "
+
str
(
table
.
cell
(
r
,
c
).
text
.
rstrip
())
+
str
(
"
\n\n
"
)
elif
(
c
==
ColumType
.
CLAUSE
.
value
):
title
+=
" clause "
+
str
(
table
.
cell
(
r
,
c
).
text
)
elif
(
c
==
ColumType
.
PARAGRAPH
.
value
):
description
+=
"Paragraph: "
+
str
(
table
.
cell
(
r
,
c
).
text
.
rstrip
())
+
str
(
"
\n\n
"
)
elif
(
c
==
ColumType
.
TYPE
.
value
):
if
(
str
(
table
.
cell
(
r
,
c
).
text
).
lower
().
find
(
"te"
)
!=
-
1
):
labels
.
append
(
"Technical"
)
if
(
str
(
table
.
cell
(
r
,
c
).
text
).
lower
().
find
(
"ge"
)
!=
-
1
):
labels
.
append
(
"General"
)
if
(
str
(
table
.
cell
(
r
,
c
).
text
).
lower
().
find
(
"ed"
)
!=
-
1
):
labels
.
append
(
"Editorial"
)
elif
(
c
==
ColumType
.
COMMENT
.
value
):
description
+=
"Comment:
\n
> "
+
str
(
table
.
cell
(
r
,
c
).
text
.
rstrip
())
+
str
(
"
\n\n
"
)
elif
(
c
==
ColumType
.
PROPOSAL
.
value
):
description
+=
"Proposal:
\n
> "
+
str
(
table
.
cell
(
r
,
c
).
text
.
rstrip
())
+
str
(
"
\n\n
"
)
description
+=
"
\n
_automatically generated issue_"
open_issue
(
gl
,
PROJECT_ID
,
title
,
description
,
labels
)
\ No newline at end of file
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment