From f389aeb57e9f38a59679ac4b6c257648f7550070 Mon Sep 17 00:00:00 2001 From: djfiander Date: Sun, 9 Mar 2008 00:40:47 +0000 Subject: [PATCH] Add support for specifying # of copies to order on picklist view git-svn-id: svn://svn.open-ils.org/ILS/branches/acq-experiment@8929 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../oilsweb/oilsweb/controllers/acq/__init__.py | 7 +- .../oilsweb/oilsweb/controllers/acq/picklist.py | 49 ++++++++- .../public/oils/media/css/skin/default/acq.css | 15 ++- .../templates/oils/default/acq/picklist/view.html | 113 ++++++++++----------- 4 files changed, 113 insertions(+), 71 deletions(-) diff --git a/Open-ILS/web/oilsweb/oilsweb/controllers/acq/__init__.py b/Open-ILS/web/oilsweb/oilsweb/controllers/acq/__init__.py index 4baca915dc..ed198eca9f 100644 --- a/Open-ILS/web/oilsweb/oilsweb/controllers/acq/__init__.py +++ b/Open-ILS/web/oilsweb/oilsweb/controllers/acq/__init__.py @@ -28,13 +28,16 @@ class AcqContext(SubContext): self.picklist = ContextItem() # picklist object self.picklist_list = ContextItem() # list of picklist objects self.picklist_id_list = ContextItem(cgi_name='acq.plil', multi=True) # list of picklist IDs - self.lineitem = ContextItem() # lineitem object self.picklist_name = ContextItem(cgi_name='acq.pln') - self.lineitem_id_list = ContextItem(cgi_name='acq.pleil', multi=True) self.picklist_action = ContextItem(cgi_name='acq.pla') self.picklist_source_id = ContextItem(cgi_name='acq.plsi') self.picklist_dest_id = ContextItem(cgi_name='acq.pldi') + self.lineitem = ContextItem() # lineitem object + self.lineitem_id = ContextItem(cgi_name='acq.liid') + self.lineitem_item_count = ContextItem(cgi_name='acq.pllic') + self.lineitem_id_list = ContextItem(cgi_name='acq.pleil', multi=True) + self.currency_types = ContextItem() self.fund = ContextItem() diff --git a/Open-ILS/web/oilsweb/oilsweb/controllers/acq/picklist.py b/Open-ILS/web/oilsweb/oilsweb/controllers/acq/picklist.py index d07dd2291d..98f74744f2 100644 --- a/Open-ILS/web/oilsweb/oilsweb/controllers/acq/picklist.py +++ b/Open-ILS/web/oilsweb/oilsweb/controllers/acq/picklist.py @@ -16,7 +16,12 @@ class PicklistController(BaseController): r = RequestMgr() pl_manager = oilsweb.lib.acq.picklist.PicklistMgr(r, picklist_id=kwargs['id']) pl_manager.retrieve() - pl_manager.retrieve_lineitems(flesh_provider=True, offset=r.ctx.acq.offset.value, limit=r.ctx.acq.limit.value) + # sort by author suppresses lineitems that don't have an author + pl_manager.retrieve_lineitems(flesh_provider=True, + #sort_attr="author", + #sort_dir="asc", + offset=r.ctx.acq.offset.value, + limit=r.ctx.acq.limit.value) r.ctx.acq.picklist.value = pl_manager.picklist r.ctx.acq.picklist_list.value = pl_manager.retrieve_list() return r.render('acq/picklist/view.html') @@ -99,7 +104,9 @@ class PicklistController(BaseController): ses.connect() page = None - if r.ctx.acq.picklist_action.value == 'move_selected': + if r.ctx.acq.lineitem_id: + page = self._update_lineitem_count(r, ses) + elif r.ctx.acq.picklist_action.value == 'move_selected': page = self._move_selected(r, ses) if not page: @@ -108,6 +115,41 @@ class PicklistController(BaseController): ses.disconnect() return page + def _update_lineitem_count(self, r, ses): + ''' Updates # of copies to order for single lineitem ''' + + picklist_id = r.ctx.acq.picklist_source_id.value + lineitem_id = r.ctx.acq.lineitem_id.value + new_count = int(r.ctx.acq.lineitem_item_count.value) + + lineitem = ses.request('open-ils.acq.lineitem.retrieve', + r.ctx.core.authtoken.value, + lineitem_id).recv().content() + lineitem = Event.parse_and_raise(lineitem) + + # Can't remove detail records yet + assert (lineitem.item_count() <= new_count), "Can't delete detail records" + + for i in range(new_count - lineitem.item_count()): + detail = osrf.net_obj.NetworkObject.acqlid() + detail.lineitem(lineitem.id()) + detail = ses.request('open-ils.acq.lineitem_detail.create', + r.ctx.core.authtoken.value, + detail, dict()) + Event.parse_and_raise(detail) + + if (lineitem.item_count() != new_count): + # Update the number of detail records + lineitem.item_count(new_count) + lineitem = ses.request('open-ils.acq.lineitem.update', + r.ctx.core.authtoken.value, + lineitem) + Event.parse_and_raise(lineitem) + + # fail() + return redirect_to(controller='acq/picklist', action='view', + id=picklist_id) + def _move_selected(self, r, ses): ''' Moves the selected picklist lineitem's to the destination picklist ''' for lineitem_id in r.ctx.acq.lineitem_id_list.value: @@ -124,6 +166,7 @@ class PicklistController(BaseController): r.ctx.core.authtoken.value, lineitem).recv().content() Event.parse_and_raise(status) - return redirect_to(controller='acq/picklist', action='view', id=r.ctx.acq.picklist_dest_id.value) + return redirect_to(controller='acq/picklist', action='view', + id=r.ctx.acq.picklist_dest_id.value) 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 4fea54adfa..0c2876d420 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 @@ -1,3 +1,4 @@ +.spacer {clear: both} #oils-acq-index-block { font-weight:bold; } /* @@ -30,16 +31,14 @@ /* 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-td { width: 46px; height: 54px; } .oils-acq-picklist-records-jacket { width: 42px; height: 54px; padding-left: 0px; } -.oils-acq-picklist-records-title-row {} -.oils-acq-picklist-records-author-row td { padding-left: 30px; } -.oils-acq-picklist-records-phys_desc-row td { padding-left: 30px; } -.oils-acq-picklist-records-phys_desc-row {} - -#oils-acq-picklist-paging-block { width: 50%; text-align: left;} -#oils-acq-picklist-actions-block { width: 50%; text-align: right;} +.oils-acq-picklist-records-title {vertical-align: top} +.oils-acq-picklist-records-copies {text-align: right; width: 200px} +#oils-acq-picklist-paging-block { width: 25%; float: left; position: relative; } +#oils-acq-picklist-actions-block { width: 75%; text-align: right; float: right; position: relative; } #oils-acq-picklist-header-subtable { width: 100%; } +#oils-acq-picklist-header-block { width: 100%; display: block } /* list of pos */ #oils-acq-po-list-table {width: 100%;} diff --git a/Open-ILS/web/oilsweb/oilsweb/templates/oils/default/acq/picklist/view.html b/Open-ILS/web/oilsweb/oilsweb/templates/oils/default/acq/picklist/view.html index 909883c2a3..5911e7086c 100644 --- a/Open-ILS/web/oilsweb/oilsweb/templates/oils/default/acq/picklist/view.html +++ b/Open-ILS/web/oilsweb/oilsweb/templates/oils/default/acq/picklist/view.html @@ -15,65 +15,62 @@ from oilsweb.lib.acq.picklist import PicklistMgr %> -
- - - - - - - - - % for lineitem in c.oils.acq.picklist.value.entries(): - - - - - - - - - - - - +
+
 
+
+ ${widget.paging(c.oils.acq.offset.value, c.oils.acq.limit.value, + c.oils.acq.picklist.value.entry_count())} +
+
+ +   +
+
 
+
+
+
- - - -
- ${widget.paging(c.oils.acq.offset.value, - c.oils.acq.limit.value, - c.oils.acq.picklist.value.entry_count())} - - - - -
-
- - - ${h.util.html_escape(PicklistMgr.find_lineitem_attr(lineitem, "title"))} - - % if lineitem.provider(): - ${lineitem.provider().name()} - % endif -
${PicklistMgr.find_lineitem_attr(lineitem, "author")}
- ${PicklistMgr.find_lineitem_attr(lineitem, "isbn")} | - ${PicklistMgr.find_lineitem_attr(lineitem, "pubdate")} | - ${PicklistMgr.find_lineitem_attr(lineitem, "pagination")} - ${_('Delete')} -
+ + + + + + + % for lineitem in c.oils.acq.picklist.value.entries(): + + + + + % endfor - +
Item Description# of Copies
+ + ${h.util.html_escape(PicklistMgr.find_lineitem_attr(lineitem, "title"))} + ${PicklistMgr.find_lineitem_attr(lineitem, "publisher")} + ${PicklistMgr.find_lineitem_attr(lineitem, "pubdate")} + ${PicklistMgr.find_lineitem_attr(lineitem, "pagination")} + ${PicklistMgr.find_lineitem_attr(lineitem, "isbn")} + ${PicklistMgr.find_lineitem_attr(lineitem, "price")} + + + + + + +
- + -- 2.11.0