"Returns the first database BIB ID for the OAI identifier 'identifier', if it exists."
sysno=None
ifidentifier:
query="SELECT DISTINCT(bb.id_bibrec) FROM bib%sx AS bx, bibrec_bib%sx AS bb WHERE bx.tag='%s' AND bb.id_bibxxx=bx.id AND bx.value='%s'"%(CFG_OAI_ID_FIELD[0:2],CFG_OAI_ID_FIELD[0:2],CFG_OAI_ID_FIELD,identifier)
res=run_sql(query)
forrowinres:
sysno=row[0]
returnsysno
defoaigetsysnolist(set,fromdate,untildate):
"Returns list of system numbers for the OAI set 'set', modified from 'date_from' until 'date_until'."
out_dict={}# dict to hold list of out sysnos as its keys
ifset:
query="SELECT DISTINCT bibx.id_bibrec FROM bib%sx AS bx LEFT JOIN bibrec_bib%sx AS bibx ON bx.id=bibx.id_bibxxx LEFT JOIN bibrec AS b ON b.id=bibx.id_bibrec WHERE bx.tag='%s' AND bx.value='%s'"%(CFG_OAI_ID_FIELD[0:2],CFG_OAI_ID_FIELD[0:2],CFG_OAI_SET_FIELD,set)
else:
query="SELECT DISTINCT bibx.id_bibrec FROM bib%sx AS bx LEFT JOIN bibrec_bib%sx AS bibx ON bx.id=bibx.id_bibxxx LEFT JOIN bibrec AS b ON b.id=bibx.id_bibrec WHERE bx.tag='%s'"%(CFG_OAI_ID_FIELD[0:2],CFG_OAI_ID_FIELD[0:2],CFG_OAI_ID_FIELD)
ifuntildate:
query=query+" AND b.modification_date <= '%s'"%untildate
iffromdate:
query=query+" AND b.modification_date >= '%s'"%fromdate
res=run_sql(query)
forrowinres:
out_dict[row[0]]=1
returnout_dict.keys()
defoaigenresumptionToken():
"Generates unique ID for resumption token management."
returnmd5.new(str(time.time())).hexdigest()
defoaicachein(resumptionToken,sysnos):
"Stores or adds sysnos in cache. Input is a string of sysnos separated by commas."