[open-ils-commits] r579 - constrictor/trunk/contrib/evergreen (erickson)

svn at svn.open-ils.org svn at svn.open-ils.org
Fri Jul 10 16:11:21 EDT 2009


Author: erickson
Date: 2009-07-10 16:11:17 -0400 (Fri, 10 Jul 2009)
New Revision: 579

Added:
   constrictor/trunk/contrib/evergreen/eg_prop_data_fetcher.py
Log:
script to pull object ids/barcodes from the db for generating a constrictor properties file

Added: constrictor/trunk/contrib/evergreen/eg_prop_data_fetcher.py
===================================================================
--- constrictor/trunk/contrib/evergreen/eg_prop_data_fetcher.py	                        (rev 0)
+++ constrictor/trunk/contrib/evergreen/eg_prop_data_fetcher.py	2009-07-10 20:11:17 UTC (rev 579)
@@ -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()
+


Property changes on: constrictor/trunk/contrib/evergreen/eg_prop_data_fetcher.py
___________________________________________________________________
Name: svn:executable
   + *



More information about the open-ils-commits mailing list