19_Tests #40
68
codelist/management/commands/export_codelist.py
Normal file
68
codelist/management/commands/export_codelist.py
Normal file
@ -0,0 +1,68 @@
|
||||
"""
|
||||
Author: Michel Peltriaux
|
||||
Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany
|
||||
Contact: michel.peltriaux@sgdnord.rlp.de
|
||||
Created on: 10.11.21
|
||||
|
||||
"""
|
||||
import csv
|
||||
|
||||
from codelist.models import KonovaCodeList
|
||||
from konova.management.commands.setup import BaseKonovaCommand
|
||||
|
||||
|
||||
class Command(BaseKonovaCommand):
|
||||
help = "Exports a single list of internal codes. Codelist identifier must be provided as argument"
|
||||
list_id = 'list_id'
|
||||
save_to = 'save_to'
|
||||
|
||||
def add_arguments(self, parser):
|
||||
try:
|
||||
parser.add_argument(self.list_id, type=int)
|
||||
except ValueError:
|
||||
self._write_error("No list id provided")
|
||||
exit(-1)
|
||||
try:
|
||||
parser.add_argument(self.save_to, type=str)
|
||||
except ValueError:
|
||||
self._write_error("No save to path given")
|
||||
exit(-1)
|
||||
|
||||
def handle(self, *args, **options):
|
||||
try:
|
||||
list_id = options[self.list_id]
|
||||
self.save_to = options[self.save_to]
|
||||
self._write_warning("Fetching codes...")
|
||||
code_list = KonovaCodeList.objects.get(
|
||||
id=list_id,
|
||||
)
|
||||
codes = code_list.codes.filter(
|
||||
is_selectable=True,
|
||||
).order_by(
|
||||
"parent"
|
||||
)
|
||||
header_row = [
|
||||
"Parent long name",
|
||||
"Parent short name",
|
||||
"Code long name",
|
||||
"Code short name",
|
||||
"Code ID",
|
||||
]
|
||||
with open(self.save_to, 'w', newline='') as csvfile:
|
||||
writer = csv.writer(
|
||||
csvfile,
|
||||
delimiter=' ',
|
||||
quoting=csv.QUOTE_MINIMAL,
|
||||
)
|
||||
writer.writerow(header_row)
|
||||
for code in codes:
|
||||
if code.parent is not None:
|
||||
row = [code.parent.long_name, code.parent.short_name, code.long_name, code.short_name, code.id]
|
||||
else:
|
||||
row = ["", "", code.long_name, code.short_name, code.id]
|
||||
#row = f"{code.parent.long_name};{code.parent.short_name};{code.long_name};{code.short_name};{code.id}"
|
||||
writer.writerow(row)
|
||||
|
||||
except KeyboardInterrupt:
|
||||
self._break_line()
|
||||
exit(-1)
|
@ -23,7 +23,7 @@ bool_map = {
|
||||
|
||||
|
||||
class Command(BaseKonovaCommand):
|
||||
help = "Performs test on collisions using the identifier generation"
|
||||
help = "Updates internal codelist by external API"
|
||||
|
||||
def handle(self, *args, **options):
|
||||
try:
|
||||
|
Loading…
Reference in New Issue
Block a user