From: erickson Date: Fri, 10 Jul 2009 20:11:17 +0000 (+0000) Subject: script to pull object ids/barcodes from the db for generating a constrictor propertie... X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=1f279e0fe970d575f5f3790f460d8ce12b496227;p=working%2Frandom.git script to pull object ids/barcodes from the db for generating a constrictor properties file git-svn-id: svn://svn.open-ils.org/ILS-Contrib/constrictor/trunk@579 6d9bc8c9-1ec2-4278-b937-99fde70a366f --- diff --git a/contrib/evergreen/eg_prop_data_fetcher.py b/contrib/evergreen/eg_prop_data_fetcher.py new file mode 100755 index 000000000..7c6190773 --- /dev/null +++ b/contrib/evergreen/eg_prop_data_fetcher.py @@ -0,0 +1,91 @@ +#!/usr/bin/python + +# ------------------------------------------------------------------ +# Pulls data from an evergreen database for building constrictor +# property file entries. The data can be chopped up into unique +# data sets based on the segment size and count. For each +# segment count, create a new set of property key/value pairs. +# handles orgIds, patronIds, patronBarcodes, copyBarcodes, titleIds +# ------------------------------------------------------------------ +import sys, time, sets, string +from sqlalchemy import * +from sqlalchemy.orm import create_session, relation, mapper + +db_path = 'postgres://evergreen:evergreen@127.0.0.1:5432/evergreen' +# EDIT ME! ^-- + +segment_size = int(sys.argv[1]) +segment_count = int(sys.argv[2]) +context_org = sys.argv[3] + +max_rows = segment_size * segment_count + +db = create_engine(db_path) +db.echo = False +metadata = MetaData(db) +session = create_session() + +org_unit_table = Table('org_unit', metadata, + Column('id', Integer, primary_key=True), schema='actor') + +user_table = Table('usr', metadata, + Column('id', Integer, primary_key=True), + Column('home_ou', Integer), + schema='actor') + +card_table = Table('card', metadata, + Column('id', Integer, primary_key=True), + Column('usr', Integer), + Column('barcode', String), + schema='actor') + +copy_table = Table('copy', metadata, + Column('id', Integer, primary_key=True), + Column('barcode', String), + Column('circ_lib', Integer), + Column('status', Integer), + schema='asset') + +record_entry_table = Table('record_entry', metadata, + Column('id', Integer, primary_key=True), schema='biblio') + +class OrgUnit(object): pass +class Usr(object): pass +class Card(object): pass +class Copy(object): pass +class RecordEntry(object): pass + +org_unit_mapper = mapper(OrgUnit, org_unit_table) +org_unit_mapper = mapper(Usr, user_table) +org_unit_mapper = mapper(Card, card_table) +org_unit_mapper = mapper(Copy, copy_table) +org_unit_mapper = mapper(RecordEntry, record_entry_table) + +org_units = session.query(OrgUnit).all() +org_ids = [ str(obj.id) for obj in org_units ] + +users = session.query(Usr).filter(Usr.home_ou == context_org).limit(max_rows).all() +user_ids = [ str(obj.id) for obj in users ] + +cards = session.query(Card).filter(Card.usr.in_(user_ids)).limit(max_rows).all() +user_barcodes = [obj.barcode for obj in cards] + +copies = session.query(Copy).filter(Copy.circ_lib == context_org).filter(Copy.status == 0).limit(max_rows).all() +copy_barcodes = [obj.barcode for obj in copies] + +record_entries = session.query(RecordEntry).limit(max_rows).all() +bib_ids = [str(obj.id) for obj in record_entries] + +index = 0 +while index < max_rows: + print 'evergreen.orgIDs=%s' % ','.join(org_ids[index:segment_size+index]) + print 'evergreen.titleIDs=%s' % ','.join(bib_ids[index:segment_size+index]) + print 'evergreen.patronIDs=%s' % ','.join(user_ids[index:segment_size+index]) + print 'evergreen.copyBarcodes=%s' % ','.join(copy_barcodes[index:segment_size+index]) + print 'evergreen.patronBarcodes=%s' % ','.join(user_barcodes[index:segment_size+index]) + index += segment_size + print '-'*100 + + +session.close() +