We can now edit the provider of a lineitem
authordjfiander <djfiander@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 14 Mar 2008 00:48:58 +0000 (00:48 +0000)
committerdjfiander <djfiander@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 14 Mar 2008 00:48:58 +0000 (00:48 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/branches/acq-experiment@9005 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/web/oilsweb/oilsweb/controllers/acq/picklist.py
Open-ILS/web/oilsweb/oilsweb/templates/oils/default/acq/picklist/lineitem_summary.html
Open-ILS/web/oilsweb/oilsweb/templates/oils/default/acq/picklist/view_lineitem.html
Open-ILS/web/oilsweb/oilsweb/templates/oils/default/common/widgets.html

index cf32032..48a88ee 100644 (file)
@@ -11,6 +11,7 @@ from oils.org import OrgUtil
 from oilsweb.lib.request import RequestMgr
 from oilsweb.lib.acq.fund import FundMgr
 from oilsweb.lib.acq.picklist import PicklistMgr
+from oilsweb.lib.acq import provider_mgr
 
 class PicklistController(BaseController):
 
@@ -55,7 +56,9 @@ class PicklistController(BaseController):
         r.ctx.acq.lineitem.value = lineitem
         r.ctx.acq.lineitem_marc_html.value = oilsweb.lib.bib.marc_to_html(lineitem.marc())
 
+        r.ctx.acq.provider_list.value = provider_mgr.list(r)
         r.ctx.acq.fund_list.value = fmgr.retrieve_org_funds()
+
         return r.render('acq/picklist/view_lineitem.html')
 
     def list(self):
@@ -142,6 +145,17 @@ class PicklistController(BaseController):
                                  r.ctx.core.authtoken.value,
                                  detail).recv().content()
             Event.parse_and_raise(detail)
+        elif r.ctx.acq.provider_id.value:
+            lineitem = ses.request('open-ils.acq.lineitem.retrieve',
+                                   r.ctx.core.authtoken.value,
+                                   r.ctx.acq.lineitem_id.value).recv().content()
+            lineitem = Event.parse_and_raise(lineitem)
+
+            lineitem.provider(r.ctx.acq.provider_id.value)
+            lineitem = ses.request('open-ils.acq.lineitem.update',
+                                   r.ctx.core.authtoken.value,
+                                   lineitem).recv().content()
+            Event.parse_and_raise(lineitem)
             
         return redirect_to(controller='acq/picklist', action='view_lineitem',
                            id=r.ctx.acq.lineitem_id.value)
index 168c9e8..aefcd21 100644 (file)
@@ -1,16 +1,30 @@
+<%namespace file='../../common/widgets.html' name='widget' />
 <div id='oils-acq-lineitem-header'>
     ${_('Picklist Entry')}
     <div class='oils-acq-lineitem-attributes'>
         <%
-        provider = c.oils.acq.lineitem.value.provider() or ''
-        if provider: provider.name() 
-        meta = _("Source %(data)s") % {"data":c.oils.acq.lineitem.value.source_label()}
-        meta2 = _("Provider %(data)s") % {"data":provider}
-        meta3 = _("Create date %(data)s") % {"data":c.oils.acq.lineitem.value.create_time()}
-        meta4 = _("Last update time %(data)s") % {"data":c.oils.acq.lineitem.value.edit_time()}
+       provider_map = [(provider.id(), provider.name()) for provider in c.oils.acq.provider_list.value]
+
+        provider = c.oils.acq.lineitem.value.provider()
+       if provider:
+            provider = provider.id()
+        meta = _("Source %s") % c.oils.acq.lineitem.value.source_label()
+        meta3 = _("Create date %s") % c.oils.acq.lineitem.value.create_time()
+        meta4 = _("Last update time %s") % c.oils.acq.lineitem.value.edit_time()
         %>
         <div>${meta}</div>
-        <div>${meta2}</div>
+        <div>
+           <form method="post"
+                 action="${c.oils.acq.prefix.value}/picklist/update_lineitem">
+               ${_("Provider")}
+               ${widget.build_selector(c.oils.acq.provider_id.cgi_name, provider_map, provider)}
+               <button name="${c.oils.acq.lineitem_id.cgi_name}"
+                       value="${c.oils.acq.lineitem.value.id()}">
+                   ${_("Update")}
+               </button>
+                 
+           </form>
+       </div>
         <div>${meta3}</div>
         <div>${meta4}</div>
     </div>
index d1776a3..a20095c 100644 (file)
@@ -1,36 +1,19 @@
 # -*- coding: utf-8 -*-
 <%inherit file='../base.html'/>
+<%namespace file='../../common/widgets.html' name='widget' />
 <%namespace file='picklist_summary.html' name='picklist' />
 
 <%def name="page_title()">${_('Evergreen Picklist Entry')}</%def>
 <%def name="block_content()">
 
-${picklist.summary(c.oils.acq.picklist.value, link=True)}
-
-<%include file='lineitem_summary.html'/>
-
 <%
      fund_map = [(fund.id(), fund.name()) for fund in c.oils.acq.fund_list.value]
-     selection_prefix = "<select name='" + c.oils.acq.fund_id.cgi_name + "'>\n"
-     selection_suffix = "\n</select>"
-     option_format = "<option %s value='%s'>%s</option>"
-
-     def fund_selection(selected_id):
-         if not selected_id:
-             optionlist = ["<option value='' selected='selected'>%s</option>\n" % _("-- Select Fund --")]
-         else:
-             optionlist = []
+%>
 
-         for (id, name) in fund_map:
-             if id == selected_id:
-                 sel = "selected='selected'"
-             else:
-                 sel = ""
+${picklist.summary(c.oils.acq.picklist.value, link=True)}
 
-             optionlist.append(option_format % (sel, id, name))
+<%include file='lineitem_summary.html'/>
 
-         return selection_prefix + "\n".join(optionlist) + selection_suffix
-%>
 <table id='oils-acq-lineitem-summary'>
     % for attr in c.oils.acq.lineitem.value.attributes():
         <tr>
@@ -56,10 +39,10 @@ ${picklist.summary(c.oils.acq.picklist.value, link=True)}
                          action="${c.oils.acq.prefix.value}/picklist/update_lineitem">
                        <input type="hidden"
                               name="${c.oils.acq.lineitem_id.cgi_name}"
-                              value="${c.oils.acq.lineitem.value.id()}">
+                              value="${c.oils.acq.lineitem.value.id()}" />
                        <button name='${c.oils.acq.lineitem_detail_id.cgi_name}'
                                value='${detail.id()}'>${_("Update")}</button>
-                       ${fund_selection(detail.fund())}
+                       ${widget.build_selector(c.oils.acq.fund_id.cgi_name, fund_map, detail.fund())}
                    </form>
                </td>
                <td>${detail.owning_lib() or '&nbsp;'}</td>
index 8e0458f..b6469bd 100644 (file)
         <a href='?${c.oils.acq.offset.cgi_name}=${end}'>&#187;</a>
     % endif
 </%def>
+
+<%def name='build_selector(name, optionmap, chosen=None)'>
+    <div style='display:none'>
+        NAME '${name}'
+       CHOSEN ${chosen}
+        OPTIONMAP ${optionmap}
+    </div>
+    <select name="${name}">
+
+    %if not selected:
+        <option value="" selected="selected">${_("-- Select --")}</option>
+    %endif
+
+    %for (id, name) in optionmap:
+        <option value="${id}"
+            %if id == chosen:
+                selected='selected'
+            %endif
+     >${name}</option>
+    %endfor
+    </select>
+</%def>