72 lines
2.4 KiB
Python
72 lines
2.4 KiB
Python
|
|
from pathlib import Path
|
|
from django.core.management.base import BaseCommand, CommandError
|
|
import argparse
|
|
|
|
from oef.models import Entry
|
|
from bs4 import BeautifulSoup
|
|
|
|
class Command(BaseCommand):
|
|
help = "Imports the RCR spreadsheet"
|
|
|
|
def add_arguments(self, parser):
|
|
# parser.add_argument("poll_ids", nargs="+", type=int)
|
|
parser.add_argument('--file', type=argparse.FileType('r'))
|
|
|
|
|
|
|
|
def handle(self, *args, **options):
|
|
#with open(options["file"]) as f:
|
|
soup = BeautifulSoup(options["file"], "html.parser")
|
|
|
|
Entry.objects.all().delete()
|
|
rows = 0
|
|
for row in soup.find_all("tr"):
|
|
if rows > 0:
|
|
entry.questions = entry.questions + "\n" + row.find_all("td")[0].text
|
|
rows = rows - 1
|
|
if rows == 0:
|
|
entry.questions_original = entry.questions
|
|
entry.save()
|
|
continue
|
|
|
|
cells = row.find_all("td")
|
|
|
|
if cells[0].text == "Modality":
|
|
continue
|
|
|
|
|
|
entry = Entry()
|
|
entry.modality = cells[0].text
|
|
entry.exam_code = cells[1].text
|
|
entry.exam_name = cells[2].text
|
|
entry.questions = cells[3].text
|
|
entry.oef_name = cells[4].text
|
|
entry.comments = cells[5].text
|
|
|
|
if cells[0].has_attr("rowspan"):
|
|
rows = int(cells[0]["rowspan"]) - 1
|
|
else:
|
|
entry.questions_original = entry.questions
|
|
entry.save()
|
|
|
|
#Entry.objects.all().delete()
|
|
|
|
#for row in soup.find_all("tr"):
|
|
# cells = row.find_all("td")
|
|
# if len(cells) == 6:
|
|
# entry = Entry()
|
|
# entry.modality = cells[0].text
|
|
# entry.exam_code = cells[1].text
|
|
# entry.exam_name = cells[2].text
|
|
# entry.questions = cells[3].text
|
|
# #entry.
|
|
# entry.comments = cells[5].text
|
|
# entry.save()
|
|
# self.stdout.write(
|
|
# self.style.SUCCESS(f"Entry added: {entry.pk}/{entry.exam_name}")
|
|
# )
|
|
# else:
|
|
# self.stdout.write(
|
|
# self.style.WARNING(f"Skipping row: {row}")
|
|
# ) |