commit
4c395bbec4
|
@ -0,0 +1,41 @@
|
||||||
|
from django.core.management.base import BaseCommand
|
||||||
|
|
||||||
|
from regluit.core.models import Subject
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class Command(BaseCommand):
|
||||||
|
'''funny syntax in yaml has resulted in spurious headings'''
|
||||||
|
help = "fix subjects with authority tags in the name"
|
||||||
|
|
||||||
|
def handle(self, **options):
|
||||||
|
clean_headings('lcc')
|
||||||
|
clean_headings('lcsh')
|
||||||
|
clean_headings('bisac')
|
||||||
|
|
||||||
|
def clean_headings(authority):
|
||||||
|
subjects = Subject.objects.filter(name__startswith="!{}:".format(authority))
|
||||||
|
pos=len(authority)+2
|
||||||
|
for subject in subjects:
|
||||||
|
the_subject = subject.name[pos:].strip()
|
||||||
|
new_subject = None
|
||||||
|
for prev_subject in Subject.objects.filter(name=the_subject, authority=authority):
|
||||||
|
new_subject = prev_subject
|
||||||
|
if not new_subject:
|
||||||
|
for prev_subject in Subject.objects.filter(name=the_subject):
|
||||||
|
new_subject = prev_subject
|
||||||
|
if not new_subject.authority:
|
||||||
|
new_subject.authority=authority
|
||||||
|
new_subject.save()
|
||||||
|
if new_subject:
|
||||||
|
for work in subject.works.all():
|
||||||
|
new_subject.works.add(work)
|
||||||
|
subject.delete()
|
||||||
|
continue
|
||||||
|
subject.name=the_subject
|
||||||
|
subject.authority=authority
|
||||||
|
subject.save()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue