From 2225271af17511abcb715b5fa4eacd2a18b942e8 Mon Sep 17 00:00:00 2001 From: erickson Date: Fri, 18 Jan 2008 15:53:17 +0000 Subject: [PATCH] added my-picklist display, started cleaning up search git-svn-id: svn://svn.open-ils.org/ILS/branches/acq-experiment@8418 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../oilsweb/oilsweb/controllers/acq/__init__.py | 28 +++++++++++++++------- .../oilsweb/oilsweb/controllers/acq/picklist.py | 7 ++++++ Open-ILS/web/oilsweb/oilsweb/lib/acq/picklist.py | 9 +++++++ Open-ILS/web/oilsweb/oilsweb/lib/acq/search.py | 27 --------------------- .../public/oils/media/css/skin/default/acq.css | 10 +++++--- .../public/oils/media/css/theme/default/acq.css | 8 +++++-- .../templates/oils/default/acq/navigate.html | 1 + 7 files changed, 50 insertions(+), 40 deletions(-) diff --git a/Open-ILS/web/oilsweb/oilsweb/controllers/acq/__init__.py b/Open-ILS/web/oilsweb/oilsweb/controllers/acq/__init__.py index 60434642e7..dec48a48c7 100644 --- a/Open-ILS/web/oilsweb/oilsweb/controllers/acq/__init__.py +++ b/Open-ILS/web/oilsweb/oilsweb/controllers/acq/__init__.py @@ -8,29 +8,41 @@ import oilsweb.lib.acq.picklist class AcqContext(SubContext): def __init__(self): + + # ------------------------------------------------------------- + # URL params self.query = ContextItem(cgi_name='acq.q') self.search_class = ContextItem(cgi_name='acq.sc', multi=True) self.search_source = ContextItem(cgi_name='acq.ss', multi=True) self.picked_records = ContextItem(cgi_name='acq.sr', multi=True) - self.search_cache_key = ContextItem(cgi_name='acq.sk') + self.offset = ContextItem(cgi_name='acq.os', default_value=0) + self.limit = ContextItem(cgi_name='acq.li', default_value=10) + + #self.search_cache_key = ContextItem(cgi_name='acq.sk') #self.record_id = ContextItem(cgi_name='acq.ri') #self.record = ContextItem(cgi_name='acq.r') #self.picklist_item = ContextItem(cgi_name='acq.pi', multi=True) + + # ------------------------------------------------------------- + # shared objects and data self.prefix = ContextItem() self.z39_sources = ContextItem() self.search_classes = ContextItem() self.search_classes_sorted = ContextItem() - #self.picklist_id = ContextItem(cgi_name='acq.pl') - self.picklist = ContextItem() - self.picklist_entry = ContextItem() - self.offset = ContextItem(cgi_name='acq.os', default_value=0) - self.limit = ContextItem(cgi_name='acq.li', default_value=10) - self.extract_bib_field = ContextItem(default_value=oilsweb.lib.acq.search.extract_bib_field) - self.find_entry_attr = ContextItem(default_value=oilsweb.lib.acq.picklist.PicklistMgr.find_entry_attr) + self.picklist = ContextItem() # picklist object + self.picklist_list = ContextItem() # list of picklist objects + self.picklist_entry = ContextItem() # picklist_entry object + + # ------------------------------------------------------------- + # utility functions + self.find_entry_attr = ContextItem( + default_value=oilsweb.lib.acq.picklist.PicklistMgr.find_entry_attr) + self.picklist_entry_marc_html = ContextItem() def postinit(self): self.prefix = "%s/acq" % Context.getContext().core.prefix Context.applySubContext('acq', AcqContext) + diff --git a/Open-ILS/web/oilsweb/oilsweb/controllers/acq/picklist.py b/Open-ILS/web/oilsweb/oilsweb/controllers/acq/picklist.py index 60006856fe..d93e514f2a 100644 --- a/Open-ILS/web/oilsweb/oilsweb/controllers/acq/picklist.py +++ b/Open-ILS/web/oilsweb/oilsweb/controllers/acq/picklist.py @@ -28,6 +28,13 @@ class PicklistController(BaseController): r.ctx.acq.picklist_entry_marc_html = oilsweb.lib.bib.marc_to_html(entry.marc()) return r.render('acq/picklist/view_entry.html') + def list(self): + r = RequestMgr() + pl_manager = oilsweb.lib.acq.picklist.PicklistMgr(r) + r.ctx.acq.picklist_list = pl_manager.retrieve_list() + return r.render('acq/picklist/view_list.html') + + def search(self): return 'search interface' diff --git a/Open-ILS/web/oilsweb/oilsweb/lib/acq/picklist.py b/Open-ILS/web/oilsweb/oilsweb/lib/acq/picklist.py index 1c1b521061..11135c63d3 100644 --- a/Open-ILS/web/oilsweb/oilsweb/lib/acq/picklist.py +++ b/Open-ILS/web/oilsweb/oilsweb/lib/acq/picklist.py @@ -42,6 +42,15 @@ class PicklistMgr(object): self.picklist.entries(entries) + def retrieve_list(self): + ''' Returns my list of picklist objects ''' + list = self.ses.request( + 'open-ils.acq.picklist.user.retrieve', + self.request_mgr.ctx.core.authtoken).recv().content() + oils.event.Event.parse_and_raise(list) + return list + + def retrieve_entry(self, entry_id, **kwargs): args = {'flesh': kwargs.get('flesh')} entry = self.ses.request( diff --git a/Open-ILS/web/oilsweb/oilsweb/lib/acq/search.py b/Open-ILS/web/oilsweb/oilsweb/lib/acq/search.py index 9fc5c4a5ab..2364964795 100644 --- a/Open-ILS/web/oilsweb/oilsweb/lib/acq/search.py +++ b/Open-ILS/web/oilsweb/oilsweb/lib/acq/search.py @@ -18,18 +18,10 @@ def fetch_z39_sources(ctx): 'open-ils.search', EG_Z39_SOURCES, ctx.core.authtoken) return _z_sources -def flatten_record(marcxml): - import pylons - xslFile = os.path.join(os.getcwd(), pylons.config['oils_xsl_prefix'], pylons.config['oils_xsl_acq_bib']) - xformed = oilsweb.lib.util.apply_xsl(marcxml, xslFile) - return osrf.xml_obj.XMLFlattener(xformed, True).parse() - def multi_search(ctx, search): ses = osrf.ses.ClientSession(oils.const.OILS_APP_SEARCH) req = ses.request(EG_Z39_SEARCH, ctx.core.authtoken, search) - cache_id = 0 - results = [] while not req.complete: resp = req.recv(60) if not resp: @@ -44,22 +36,3 @@ def multi_search(ctx, search): return results, cache_search(search, results) -def cache_search(search, results): - key = md5.new() - key.update(unicode(search)) - key = key.hexdigest() - osrf.cache.CacheClient().put(key, results, pylons.config.get('oils_bib_cache_time', 900)) - return key - -def extract_bib_field(rec, field, all=False): - f = rec['extracts'].get("bibdata." + field) - if not f: return "" - obj = osrf.json.to_object(f) - if isinstance(obj, list): - if all: - return obj - else: - return obj[0] - else: - return obj - diff --git a/Open-ILS/web/oilsweb/oilsweb/public/oils/media/css/skin/default/acq.css b/Open-ILS/web/oilsweb/oilsweb/public/oils/media/css/skin/default/acq.css index 5bafe796a8..032b787bbf 100644 --- a/Open-ILS/web/oilsweb/oilsweb/public/oils/media/css/skin/default/acq.css +++ b/Open-ILS/web/oilsweb/oilsweb/public/oils/media/css/skin/default/acq.css @@ -23,7 +23,12 @@ #oils-acq-search-fields-label { margin-bottom: 10px; } #oils-acq-search-fields-submit-block { margin: 5px; text-align: center;} -/* bib search results / picklist builder interface */ +/* list of picklists */ +#oils-acq-picklist-list-table {width: 100%;} +#oils-acq-picklist-list-table td {padding: 3px;} + +/* a single picklist */ +#oils-acq-picklist-table { width: 100%; } #oils-acq-picklist-header { padding: 4px; margin-bottom: 20px; } .oils-acq-picklist-records-jacket-td { width: 46px; } .oils-acq-picklist-records-jacket { width: 42px; height: 54px; padding-left: 0px; } @@ -32,6 +37,7 @@ .oils-acq-picklist-records-phys_desc-row td { padding-left: 30px; } .oils-acq-picklist-records-phys_desc-row {} +/* picklist entry page */ #oils-acq-picklist-entry-header { padding: 4px; margin-bottom: 20px; } #oils-acq-picklist-entry-summary {} #oils-acq-picklist-entry-summary td {padding: 2px;} @@ -39,9 +45,7 @@ .oils-acq-picklist-entry-attr-type {} .oils-acq-picklist-entry-attr-name {} .oils-acq-picklist-entry-attr-value {} - #oils-acq-picklist-entry-marc-block { margin-top: 10px; padding: 6px; } -#oils-acq-picklist-table { width: 100%; } diff --git a/Open-ILS/web/oilsweb/oilsweb/public/oils/media/css/theme/default/acq.css b/Open-ILS/web/oilsweb/oilsweb/public/oils/media/css/theme/default/acq.css index c3c1ac2ea6..3e65f9165c 100644 --- a/Open-ILS/web/oilsweb/oilsweb/public/oils/media/css/theme/default/acq.css +++ b/Open-ILS/web/oilsweb/oilsweb/public/oils/media/css/theme/default/acq.css @@ -11,6 +11,11 @@ #oils-acq-search-subsources-label { font-weight: bold; } #oils-acq-search-fields-submit-block { border: 2px solid #A1A1A1; } +/* list of picklists */ +#oils-acq-picklist-list-table {width: 100%;} +#oils-acq-picklist-list-table thead td {font-weight:bold;} + +/* picklist display */ #oils-acq-picklist-table thead tr { border: 1px solid #A1A1A1; } #oils-acq-picklist-header {border: 1px solid #85C777;} #oils-acq-picklist-entry-header {border: 1px solid #85C777;} @@ -21,6 +26,5 @@ .oils-acq-picklist-picklist-td { border-style: solid; border-color: #A1A1A1; border-width: 0px 1px 0px 1px; } .oils-acq-picklist-records-service-td { font-size: 85%; } -.oils-acq-picklist-entry-attr-name {} - +/* entry display */ #oils-acq-picklist-entry-marc-block { border: 1px solid #6BA160; } diff --git a/Open-ILS/web/oilsweb/oilsweb/templates/oils/default/acq/navigate.html b/Open-ILS/web/oilsweb/oilsweb/templates/oils/default/acq/navigate.html index b1d22abb98..fabfd12f23 100644 --- a/Open-ILS/web/oilsweb/oilsweb/templates/oils/default/acq/navigate.html +++ b/Open-ILS/web/oilsweb/oilsweb/templates/oils/default/acq/navigate.html @@ -1,4 +1,5 @@ # -*- coding: utf-8 -*- ${_('Acquisitions Home')} ${_('Bib Search')} +${_('My Picklists')} -- 2.11.0