From: Art Rhyno Date: Sat, 9 Jul 2011 03:15:47 +0000 (-0400) Subject: Support for prefix and suffix additions to call numbers. X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=3f676f2415c8dcb5effca7dd73d2db6e2d14df7d;p=syrup%2Fmasslnc.git Support for prefix and suffix additions to call numbers. Signed-off-by: Art Rhyno --- diff --git a/conifer/libsystems/evergreen/opensrf.py b/conifer/libsystems/evergreen/opensrf.py index 9db25da..cd5098b 100644 --- a/conifer/libsystems/evergreen/opensrf.py +++ b/conifer/libsystems/evergreen/opensrf.py @@ -103,7 +103,11 @@ def ils_item_info(barcode): call_num = req.send() if call_num: - return barcode_copy.circ_modifier(), barcode_copy.location().id(), call_num.label() + print "req", call_num + print "label", call_num.label() + print "prefix", call_num.prefix() + print "suffix", call_num.suffix() + return barcode_copy.circ_modifier(), barcode_copy.location().id(), call_num.prefix(), call_num.label(), call_num.suffix() except: print "problem retrieving item info" print "*** print_exc:" @@ -295,7 +299,7 @@ def ils_patron_lookup(name, is_staff=True, is_usrname=False, is_everyone=False): return out -def ils_item_update(barcode, callno, modifier, location): +def ils_item_update(barcode, prefix, callno, suffix, modifier, location): item_changed = False callno_changed = False @@ -346,7 +350,9 @@ def ils_item_update(barcode, callno, modifier, location): # on to call number if authtoken and callno_changed: + call_num.prefix(prefix) call_num.label(callno) + call_num.suffix(suffix) call_num.ischanged(True) # volume.fleshed.batch.update expects an array of call number objects @@ -356,7 +362,7 @@ def ils_item_update(barcode, callno, modifier, location): authtoken, acn, False, None) result = req.send() - # print "callno result", result + # print "callno result", result #clean up session session_cleanup(authtoken) diff --git a/conifer/syrup/migrations/0018_auto__add_field_item_orig_prefix__add_field_item_orig_suffix__chg_fiel.py b/conifer/syrup/migrations/0018_auto__add_field_item_orig_prefix__add_field_item_orig_suffix__chg_fiel.py new file mode 100644 index 0000000..9a32a1f --- /dev/null +++ b/conifer/syrup/migrations/0018_auto__add_field_item_orig_prefix__add_field_item_orig_suffix__chg_fiel.py @@ -0,0 +1,210 @@ +# encoding: utf-8 +import datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + +class Migration(SchemaMigration): + + def forwards(self, orm): + + # Adding field 'Item.orig_prefix' + db.add_column('syrup_item', 'orig_prefix', self.gf('django.db.models.fields.CharField')(max_length=25, null=True, blank=True), keep_default=False) + + # Adding field 'Item.orig_suffix' + db.add_column('syrup_item', 'orig_suffix', self.gf('django.db.models.fields.CharField')(max_length=25, null=True, blank=True), keep_default=False) + + # Changing field 'Item.circ_modifier' + db.alter_column('syrup_item', 'circ_modifier', self.gf('django.db.models.fields.CharField')(max_length=50)) + + + def backwards(self, orm): + + # Deleting field 'Item.orig_prefix' + db.delete_column('syrup_item', 'orig_prefix') + + # Deleting field 'Item.orig_suffix' + db.delete_column('syrup_item', 'orig_suffix') + + # Changing field 'Item.circ_modifier' + db.alter_column('syrup_item', 'circ_modifier', self.gf('django.db.models.fields.CharField')(max_length=10)) + + + models = { + 'auth.group': { + 'Meta': {'object_name': 'Group'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), + 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'blank': 'True'}) + }, + 'auth.permission': { + 'Meta': {'ordering': "('content_type__app_label', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + }, + 'auth.user': { + 'Meta': {'object_name': 'User'}, + 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), + 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'blank': 'True'}), + 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) + }, + 'contenttypes.contenttype': { + 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, + 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) + }, + 'syrup.config': { + 'Meta': {'object_name': 'Config'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '256'}), + 'value': ('django.db.models.fields.CharField', [], {'max_length': '8192'}) + }, + 'syrup.course': { + 'Meta': {'ordering': "['code']", 'object_name': 'Course'}, + 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'}), + 'coursenotes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'department': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['syrup.Department']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'last_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '1024'}) + }, + 'syrup.declaration': { + 'Meta': {'object_name': 'Declaration'}, + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'item': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['syrup.Item']"}), + 'last_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) + }, + 'syrup.department': { + 'Meta': {'ordering': "['name']", 'object_name': 'Department'}, + 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'last_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '256'}), + 'service_desk': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['syrup.ServiceDesk']"}) + }, + 'syrup.group': { + 'Meta': {'ordering': "['site__course__code', 'site__course__name', 'external_id']", 'object_name': 'Group'}, + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'external_id': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '2048', 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'last_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'site': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['syrup.Site']"}) + }, + 'syrup.item': { + 'Meta': {'ordering': "['title', 'author', 'published']", 'object_name': 'Item'}, + 'author': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '8192', 'null': 'True', 'blank': 'True'}), + 'barcode': ('django.db.models.fields.CharField', [], {'max_length': '14', 'null': 'True', 'blank': 'True'}), + 'bib_id': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'}), + 'circ_desk': ('django.db.models.fields.CharField', [], {'default': "'821'", 'max_length': '5', 'blank': 'True'}), + 'circ_modifier': ('django.db.models.fields.CharField', [], {'default': "'CIRC'", 'max_length': '50', 'blank': 'True'}), + 'copyright_status': ('django.db.models.fields.CharField', [], {'default': "'UK'", 'max_length': '2'}), + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'evergreen_update': ('django.db.models.fields.CharField', [], {'default': "'One'", 'max_length': '4', 'blank': 'True'}), + 'fileobj': ('django.db.models.fields.files.FileField', [], {'default': 'None', 'max_length': '255', 'null': 'True', 'blank': 'True'}), + 'fileobj_mimetype': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), + 'fileobj_origname': ('django.db.models.fields.CharField', [], {'max_length': '2048', 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'isbn': ('django.db.models.fields.CharField', [], {'max_length': '17', 'null': 'True', 'blank': 'True'}), + 'issue': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'item_type': ('django.db.models.fields.CharField', [], {'max_length': '7'}), + 'itemnotes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'itemtype': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '1', 'null': 'True', 'blank': 'True'}), + 'last_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'marcxml': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'orig_callno': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'orig_prefix': ('django.db.models.fields.CharField', [], {'max_length': '25', 'null': 'True', 'blank': 'True'}), + 'orig_suffix': ('django.db.models.fields.CharField', [], {'max_length': '25', 'null': 'True', 'blank': 'True'}), + 'pages': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'parent_heading': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['syrup.Item']", 'null': 'True', 'blank': 'True'}), + 'published': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'publisher': ('django.db.models.fields.CharField', [], {'max_length': '8192', 'null': 'True', 'blank': 'True'}), + 'site': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['syrup.Site']"}), + 'source_title': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '8192', 'null': 'True', 'blank': 'True'}), + 'suppress_item': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '8192', 'db_index': 'True'}), + 'url': ('django.db.models.fields.URLField', [], {'max_length': '2048', 'null': 'True', 'blank': 'True'}), + 'volume': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}) + }, + 'syrup.membership': { + 'Meta': {'ordering': "['user__username', 'group__site__course__code', 'group__site__course__name', 'group__external_id']", 'unique_together': "(('group', 'user'),)", 'object_name': 'Membership'}, + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['syrup.Group']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'last_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'role': ('django.db.models.fields.CharField', [], {'default': "'STUDT'", 'max_length': '6'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) + }, + 'syrup.servicedesk': { + 'Meta': {'ordering': "['name']", 'object_name': 'ServiceDesk'}, + 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'external_id': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'last_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'syrup.site': { + 'Meta': {'ordering': "['course__code', 'owner__last_name', '-start_term__start']", 'unique_together': "(('course', 'start_term', 'owner'),)", 'object_name': 'Site'}, + 'access': ('django.db.models.fields.CharField', [], {'default': "'ANON'", 'max_length': '5'}), + 'course': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['syrup.Course']"}), + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'end_term': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'end_term'", 'to': "orm['syrup.Term']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'last_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'owner': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}), + 'service_desk': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['syrup.ServiceDesk']"}), + 'sitenotes': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'start_term': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'start_term'", 'to': "orm['syrup.Term']"}) + }, + 'syrup.term': { + 'Meta': {'ordering': "['start', 'code']", 'object_name': 'Term'}, + 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'}), + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'finish': ('django.db.models.fields.DateField', [], {}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'last_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '256'}), + 'start': ('django.db.models.fields.DateField', [], {}) + }, + 'syrup.userprofile': { + 'Meta': {'ordering': "['user__username']", 'object_name': 'UserProfile'}, + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'external_memberships_checked': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'ils_userid': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}), + 'last_email_notice': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'null': 'True', 'blank': 'True'}), + 'last_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}), + 'wants_email_notices': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) + }, + 'syrup.z3950target': { + 'Meta': {'object_name': 'Z3950Target'}, + 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'database': ('django.db.models.fields.CharField', [], {'max_length': '50'}), + 'host': ('django.db.models.fields.CharField', [], {'max_length': '50'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'port': ('django.db.models.fields.IntegerField', [], {'default': '210'}), + 'syntax': ('django.db.models.fields.CharField', [], {'default': "'USMARC'", 'max_length': '10'}) + } + } + + complete_apps = ['syrup'] diff --git a/conifer/syrup/models.py b/conifer/syrup/models.py index fdabe85..230cfd8 100644 --- a/conifer/syrup/models.py +++ b/conifer/syrup/models.py @@ -676,7 +676,9 @@ class Item(BaseModel): #barcode barcode = m.CharField(max_length=14, null=True, blank=True) #orig_callno: this is a copy of the call number associated with the barcode + orig_prefix = m.CharField(max_length=25, null=True, blank=True) orig_callno = m.CharField(max_length=64, null=True, blank=True) + orig_suffix = m.CharField(max_length=25, null=True, blank=True) # Options for evergreen updates EVERGREEN_UPDATE_CHOICES = getattr(integration_class, 'UPDATE_CHOICES', diff --git a/conifer/syrup/views/items.py b/conifer/syrup/views/items.py index 3fdecb1..cda02bc 100644 --- a/conifer/syrup/views/items.py +++ b/conifer/syrup/views/items.py @@ -305,14 +305,16 @@ def item_add_cat_search(request, site_id, item_id): # TODO: the Leddy stuff here belongs in an integration-module function. [GF] # - no longer Leddy specific [AR] + eg_prefix = '' eg_callno = '' + eg_suffix = '' eg_modifier = '' eg_location = '' #TODO: use python bindings for these interactions if bar_num and hasattr(settings, 'OPENSRF_STAFF_USERID'): # TODO: we need an explicit 'we do updates' flag barcode = bar_num - eg_modifier, eg_location, eg_callno = opensrf.ils_item_info(barcode) + eg_modifier, eg_location, eg_prefix, eg_callno, eg_suffix = opensrf.ils_item_info(barcode) if bibid: item = site.item_set.create(parent_heading=parent_item, title=dublin.get('dc:title','Untitled'), @@ -323,7 +325,9 @@ def item_add_cat_search(request, site_id, item_id): barcode = barcode, circ_modifier = eg_modifier, circ_desk = eg_location, + orig_prefix = eg_prefix, orig_callno = eg_callno, + orig_suffix = eg_suffix, marcxml=raw_pickitem, **dct) else: @@ -335,7 +339,9 @@ def item_add_cat_search(request, site_id, item_id): barcode = barcode, circ_modifier = eg_modifier, circ_desk = eg_location, + orig_prefix = eg_prefix, orig_callno = eg_callno, + orig_suffix = eg_suffix, marcxml=raw_pickitem, **dct) item.save() @@ -382,12 +388,15 @@ def item_edit(request, site_id, item_id): update_option = request.POST.get('update_option') location_option = request.POST.get('location_option') modifier_option = request.POST.get('modifier_option') + prefix_option = request.POST.get('orig_prefix') callno_option = request.POST.get('orig_callno') + suffix_option = request.POST.get('orig_suffix') suppress_option = request.POST.get('suppress_item') update_status = True if update_option == 'Cat': - update_status = opensrf.ils_item_update(item.barcode, callno_option, + update_status = opensrf.ils_item_update(item.barcode, prefix_option, + callno_option, suffix_option, modifier_option, location_option) # we need to carry over suppress flag for instances where a call number # is modified for a second copy - this might be a common workflow @@ -401,7 +410,9 @@ def item_edit(request, site_id, item_id): if update_status and update_option == 'One': item.circ_desk = location_option item.circ_modifier = modifier_option + item.orig_prefix = prefix_option item.orig_callno = callno_option + item.orig_suffix = suffix_option item.save() if not update_status: @@ -411,7 +422,9 @@ def item_edit(request, site_id, item_id): if update_option == 'Zap': item.evergreen_update = '' item.barcode = '' + item.orig_prefix = '' item.orig_callno = '' + item.orig_suffix = '' item.circ_modifier = '' item.circ_desk = '' item.save() diff --git a/conifer/syrup/views/sites.py b/conifer/syrup/views/sites.py index 2523a13..2efc4f4 100644 --- a/conifer/syrup/views/sites.py +++ b/conifer/syrup/views/sites.py @@ -274,13 +274,15 @@ def _revert_parms(request, source_site): dct = dict((k,v) for k,v in item.__dict__.items() if not k.startswith('_')) dct['parent_heading_id'] = parent.id if parent else None barcode = dct['barcode'] + orig_prefix = dct['orig_prefix'] orig_call = dct['orig_callno'] + orig_suffix = dct['orig_suffix'] orig_desk = dct['circ_desk'] orig_modifier = dct['circ_modifier'] if barcode and orig_call and orig_desk and orig_modifier: - update_status = opensrf.ils_item_update(barcode, orig_call, - orig_modifier, orig_desk) + update_status = opensrf.ils_item_update(barcode, orig_prefix, orig_call, + orig_suffix, orig_modifier, orig_desk) if update_status: for sub in subitems: revert_item(parent, sub) diff --git a/conifer/templates/components/site.xhtml b/conifer/templates/components/site.xhtml index d346eab..90ccff6 100644 --- a/conifer/templates/components/site.xhtml +++ b/conifer/templates/components/site.xhtml @@ -120,7 +120,9 @@ searchtext = _('search this site...')
Source: ${item.circ_modifier}, + ${item.orig_prefix}, ${item.orig_callno}, + ${item.orig_suffix}, desk - ${item.circ_desk}
diff --git a/conifer/templates/item/common_metadata.xhtml b/conifer/templates/item/common_metadata.xhtml index e32d33e..16b9edd 100644 --- a/conifer/templates/item/common_metadata.xhtml +++ b/conifer/templates/item/common_metadata.xhtml @@ -80,11 +80,23 @@ if len(authors) < 2: + Call Number Prefix + + + + + Call Number + + Call Number Suffix + + + + diff --git a/docs/images/course_example.jpg b/docs/images/course_example.jpg new file mode 100755 index 0000000..4f8919c Binary files /dev/null and b/docs/images/course_example.jpg differ diff --git a/docs/images/course_examples.jpg b/docs/images/course_examples.jpg new file mode 100755 index 0000000..9117669 Binary files /dev/null and b/docs/images/course_examples.jpg differ diff --git a/docs/images/course_menu.jpg b/docs/images/course_menu.jpg new file mode 100755 index 0000000..1a04186 Binary files /dev/null and b/docs/images/course_menu.jpg differ diff --git a/docs/images/site_menu.jpg b/docs/images/site_menu.jpg new file mode 100755 index 0000000..373d36d Binary files /dev/null and b/docs/images/site_menu.jpg differ