From 7e47eec4ae18442188128a0c65feb97749b85c75 Mon Sep 17 00:00:00 2001 From: Tris Forster Date: Sat, 10 Dec 2022 10:18:45 +1100 Subject: [PATCH] Orchestration cleanup --- app/library/imslp.py | 21 +++++++++++++++++---- app/library/models.py | 12 ------------ app/library/views.py | 12 +++++++----- 3 files changed, 24 insertions(+), 21 deletions(-) diff --git a/app/library/imslp.py b/app/library/imslp.py index d31f838..7cfc667 100644 --- a/app/library/imslp.py +++ b/app/library/imslp.py @@ -42,6 +42,7 @@ crt Cornet crtt Cornett (Zink) cv Child's voice db Double Bass +drum Drumset dlcn Dulcian dom Domra dulc Dulcimer @@ -139,6 +140,18 @@ xyl Xylophone zith Zither """ +ORCHESTRATIONS = { + 'SATB': ('S', 'A', 'T', 'B'), + 'String Quartet': ('Vln1', 'Vln2', 'Vla', 'Vc'), + 'String Orchestra': ('Vln1', 'Vln2', 'Vla', 'Vc', 'Cb'), + 'Chamber Orchestra': ('Vln1', 'Vln2', 'Vla', 'Vc', 'Cb', + 'Fl1', 'Fl2', 'Cl1', 'Cl2', 'Hn1', 'Hn2', + 'Tpt1', 'Tpt2', 'Tbn1', 'Tbn2', 'Tuba', + 'Timp', 'Drum', 'Perc'), + 'Custom': (), +} + + INSTRUMENTS = [] for line in ABBREVIATIONS.split('\n'): parts = line.strip().split(maxsplit=1) @@ -146,8 +159,8 @@ for line in ABBREVIATIONS.split('\n'): name, _, _ = parts[1].partition('(') INSTRUMENTS.append((parts[0], name)) -INSTRUMENT_LOOKUP = dict(INSTRUMENTS) -TAG_LOOKUP = dict( ( (x[1].lower(), x[0]) for x in INSTRUMENTS ) ) +INSTRUMENT_NAMES = dict(INSTRUMENTS) +INSTRUMENT_TAGS = dict( ( (x[1].lower(), x[0]) for x in INSTRUMENTS ) ) class Instrument(namedtuple('Instrument', ('name', 'variant'), defaults=[None])): @@ -162,7 +175,7 @@ class Instrument(namedtuple('Instrument', ('name', 'variant'), defaults=[None])) Instrument(name='Jaws Harp', variant=None) """ abbr, _, variant = tag.partition('-') - name = INSTRUMENT_LOOKUP.get(abbr.lower(), abbr) + name = INSTRUMENT_NAMES.get(abbr.lower(), abbr) if variant: return cls(name, variant) @@ -176,7 +189,7 @@ class Instrument(namedtuple('Instrument', ('name', 'variant'), defaults=[None])) >>> Instrument('Double Bass').abbreviate() 'db' """ - tag = TAG_LOOKUP.get(self.name.lower()) + tag = INSTRUMENT_TAGS.get(self.name.lower()) if self.variant: tag = f"{tag}-{self.variant}" return tag diff --git a/app/library/models.py b/app/library/models.py index 4c1c7ad..8923a08 100644 --- a/app/library/models.py +++ b/app/library/models.py @@ -25,18 +25,6 @@ logger = logging.getLogger(__name__) #logger.info("Library storage: %s", library_storage.__class__.__name__) -''' -ORCHESTRATIONS = { - 'SATB': ('S', 'A', 'T', 'B'), - 'String Quartet': ('Vln1', 'Vln2', 'Vla', 'Vc'), - 'String Orchestra': ('Vln1', 'Vln2', 'Vla', 'Vc', 'Cb'), - 'Chamber Orchestra': ('Vln1', 'Vln2', 'Vla', 'Vc', 'Cb', - 'Fl1', 'Fl2', 'Cl1', 'Cl2', 'Hn1', 'Hn2', - 'Tpt1', 'Tpt2', 'Tbn1', 'Tbn2', 'Tuba', - 'Timp', 'Drum', 'Perc'), - 'Custom': (), -} -''' DOCTYPES = [ (1, 'PDF'), diff --git a/app/library/views.py b/app/library/views.py index 4efb23b..39409b8 100644 --- a/app/library/views.py +++ b/app/library/views.py @@ -16,7 +16,7 @@ import re from interface.views import EnsembleMixin, ProjectMixin from interface.models import Project from .models import Collection, Work, Document, Section -from .imslp import INSTRUMENTS, TAG_LOOKUP +from .imslp import INSTRUMENT_TAGS, INSTRUMENTS from . import forms, models from .pdf_utils import extract_pages, extract_and_concat @@ -277,13 +277,15 @@ class WorkAddDocumentView(EnsembleMixin, CreateView): # auto tag the document name, _ = os.path.splitext(os.path.basename(doc.upload.name)) - parts = re.split(r'[^A-Za-z]+', name.lower()) + parts = re.split(r'[^A-Za-z]+', name) parts.reverse() for word in parts: - print(word) - if word in TAG_LOOKUP: - doc.sections.create(tag=TAG_LOOKUP[word]) + try: + tag = INSTRUMENT_TAGS[word.lower()] + doc.sections.create(tag=tag) break + except KeyError: + pass if self.request.headers['Accept'] == 'application/json':