libis / cag_tools

Collective access scripts and installation profile for CAG
1 stars 0 forks source link

object identificatiecode hernomen (dubbele idno) #90

Closed roxannewyns closed 10 years ago

roxannewyns commented 10 years ago

Het veld "object identificatiecode" (idno) wordt automatisch aangemaakt door CA volgens de settings in de multipart_id_numbering.conf. Gebruikt formaat:

formats = { ca_objects = { default = {

        separator =,
        elements = {
            object_number = {
                type = SERIAL, 
                width = 15, 
                description = _(Object identificatiecode), 
                editable = 0,
                table = ca_objects,
                field = idno,
                sort_field = idno_sort,
                zeropad_to_length = 8
            }
        }
    }
},

Hoewel de code uniek moet zijn, wordt deze door het systeem hernomen waardoor er je een error krijgt dat de nummer reeds in gebruik is. CAG heeft gisteren objecten met object identificatiecode 00007665 tot 00007668 aangemaakt. Hoewel een nieuw record nu de code 00007669 zou moeten krijgen, begint de nummering opnieuw bij 00007666.

Voorlopig heb ik het veld op editable gezet waardoor CAG de nummer manueel kan corrigeren tot we ene oplossing hebben.

samalloing commented 10 years ago

Misschien eens kijken naar de sort_field of dat opnieuw indexeren: Uit de handleiding: "The automatically issued SERIAL values should always be one more than the largest extant value in your database. If you are getting values that are less than the maximum check that the sort_field element parameter is correct. The plug-in relies upon this field to properly sort the existing numbers in order to choose the largest existing value."

samalloing commented 10 years ago

Een andere oplossing zou kunnen zijn om een specifieke oplossing uit te werken voor de objecten, aangezien er objecten en concepten zijn. Misschien gebeurt de toewijzing niet juist hierdoor. Je moet voor de syntax kijken naar http://wiki.collectiveaccess.org/wiki/Multipart_id_numbering.conf. Het stuk over video:

Here's a specialized number format for objects of type "video" (where "video" is the idno of the object_type)

    video = {
aruijmen commented 10 years ago

Ik heb dit even zitten bekijken, en een mogelijke oplossing zou kunnen zijn (om te vermijden dat alle idno's aangepast moeten worden): laat het nummer (van 8 cijfers) voorafgaan door een letter (bijv. X_). Dan komen de nieuwe nummers in de idno_sort helemaal bovenaan te staan, en werkt (ten minste bij mij lokaal) de nummering wel. In multipart_id_numbering.conf plaatse ik het volgende: formats = { caobjects = { default = { separator =,

        elements = {
                            code = {
                type = CONSTANT,
                value = X,
            },
            objectnummer = {
                type = SERIAL,
                                    table = ca_objects,
                field = idno,
                                    sort_field = idno_sort,
                                    width = 8,
                                    editable = 0,
                                    zeropad_to_length = 8,

                description = _(objectnummer)
            }
        }
    }
},

De keuze voor de letter T is niet willekeurig, want als je de kolom idno_sort descending sorteert, dan komen de test- nummers bovenaan te staan, en je moet minstens een letter kiezen waarvan de numerieke waarde hoger ligt. In de kolom idno_stub van de ca_xx tabel komt dan eveneens 'X' te staan.

Een specifieke code uitwerken voor de objecten en de concepten lukt wel (deze hebben een afzonderlijk object_type). Maar binnen de objecten zijn de idno (en dus ook de idno_sort) in de oplaadprogramma's niet gevormd volgens de logica van de multipart_id_numbering.conf. Hopelijk is dit duidelijk.

samalloing commented 10 years ago

Maar werkt het omgekeerde ook niet de idno van sint-truiden aanpassen zodat de letters weg zijn? Bekijk je ook de sortering in CollectiveAccess en niet in de databank

aruijmen commented 10 years ago

Op 16/07 werden volgende wijzigingen doorgevoerd op produktie:

  1. in app/conf/multipart_id_numbering.conf werd editable = 0 gezet;
  2. in gebruikersinterface van de objecten werd bij de object_identificatiecode (idno) de optie 'alleen lezen' uitgevinkt. Deze combinatie schijnt te werken (Sam vraagt wel om dit aan Seth te melden omdat hij zich de vraag stelt of dit een feature of een bug is)