CA: auto-generating object IDs

Step-by-Step descriptions of how to do things.
Post Reply
User avatar
peter_b
Chatterbox
Posts: 383
Joined: Tue Nov 12, 2013 2:05 am

CA: auto-generating object IDs

Post by peter_b »

I'm currently setting up a CollectiveAccess providence v1.4 installation for a cultural institution.
They have an archive signature with a syntax and would like to have CA make it easy for their catalogers to input it - and that includes an automatically increasing serial number.

The syntax is like this:
OBJTYPE_YEAR_CAT_SUBCAT_SERIAL

Explanation:
  • Delimiter is "_"
  • OBJTYPE = Object type abbreviation (image = fot, video = vid, etc)
  • YEAR = year object was created/released
  • CAT = Institution category
  • SUBCAT = institution sub-category
  • SERIAL = auto-incrementing serial number per CAT/SUBCAT
I've used the "The MultiPartIDNumber ID Numbering plug-in" for this.
Sidenote: That plug-in is actually not a plug-in, but rather built-in, so it's activated by default although it doesn't show up in the plug-ins list on "Configuration Check". It also doesn't exist in app/plugins.

The configuration is done in "app/conf/multipart_id_numbering.conf".
Mine looks like this:

Code: Select all

formats = {
    ca_objects = {
        # Default is a regular FREE text field:
        __default__ = {
            separator =,

            elements = {
                accession_number = {
                    type = FREE,
                    width = 30,
                    editable = 1,

                    description = _(Accession number)
                }
            }
        }

        image = {
            # Special for Image to have "fot" CONSTANT at the beginning.
            separator = _,

            elements = {
                object_type = {
                    type = CONSTANT,
                    description = Objekttyp,
                    width = 3,
                    value = fot
                },
                accession_number = {
                    type = YEAR,
                    width = 4,
                    editable = 1,

                    description = _(Accession year)
                },
                wuk_category= {
                    type = LIST,
                    values = [ver, kb, bb, sel, geb, tra, ext, ubk],
                    default = ubk,
                    width = 3,
                    description = Bestand,
                    editable = 1
                },
                wuk_sub_category= {
                    type = LIST,
                    values = [
                        mit, vor, gv, ver, ---,
                        mus, per, kin, kex, gl, vwg, mar, ---,
                        ubk
                    ],
                    default = ubk,
                    width = 3,
                    description = Unterbestand,
                    editable = 1
                },
                object_number = {
                    type = SERIAL,
                    width = 4,
                    zeropad_to_length = 4,
                    description = _(Object number),
                    editable = 1,
                    table = ca_objects,
                    field = idno,
                    sort_field = idno_sort
                }
            }
        }
    },
This code shows a free input text field for all objects except those of type "image".
Since each category has its own subcategories, but the lists are non-conditional and flat, I've added "---" as visual delimiter. Drawback: A cataloger might actually select the "---" from the list. Yet, I assume they think when they do their work and should know not to. So that'll be fine ;)

For images, the CA object-identifier (archive signature) is now beautifully rendered showing the elements of the archive signature:
Screenshot of the auto-generated "Object Identifier" in CollectiveAccess providence
Screenshot of the auto-generated "Object Identifier" in CollectiveAccess providence
stuff_006.png (7.45 KiB) Viewed 18194 times
As you can see, it also shows the next serial number it has automatically incremented based on existing IDs in the database table.
I've also kept the "editable = 1" flags on all elements, in order for an operator/cataloger to be allowed to modify it manually whenever necessary. I think it's always good if humans have the option to override computer-generated "decisions" 8)
Post Reply