dicom-anon icon indicating copy to clipboard operation
dicom-anon copied to clipboard

Add unique constraints to audit tables for extra safety

Open cancan101 opened this issue 9 years ago • 1 comments

CREATE_NON_LINKED_TABLE = 'CREATE TABLE %s (id INTEGER PRIMARY KEY AUTOINCREMENT, original, cleaned, UNIQUE(original))'
CREATE_LINKED_TABLE = 'CREATE TABLE %s (id INTEGER PRIMARY KEY AUTOINCREMENT, original, cleaned, study INTEGER, UNIQUE(original, study), FOREIGN KEY(study) REFERENCES studyinstanceuid(id))'

and then:

def audit_save(tag, cleaned, study_uid_pk=None):
...
    try:
        if tag.name.lower() == 'study instance uid':
            db.execute(INSERT_OTHER % table_name(tag), (original, cleaned))
            return cleaned
        else:
            db.execute(INSERT_LINKED % table_name(tag), (original, cleaned, study_uid_pk))
            return cleaned
    except sqlite3.IntegrityError:
        return audit_get(tag=tag, study_uid_pk=study_uid_pk)

cancan101 avatar Apr 03 '15 04:04 cancan101

Could you submit this as a pull request?

jeffmax avatar Apr 03 '15 14:04 jeffmax