details:   https://code.openbravo.com/erp/devel/pi/rev/42e0ebfeecb7
changeset: 13308:42e0ebfeecb7
user:      Antonio Moreno <antonio.moreno <at> openbravo.com>
date:      Wed Jul 27 18:28:44 2011 +0200
summary:   Fixed issue 18104. Export to CSV will work without access to ad_tab

diffstat:

 
modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/DataSourceServlet.java
 |  55 +++++----
 1 files changed, 30 insertions(+), 25 deletions(-)

diffs (66 lines):

diff -r 8ece2e79d7cc -r 42e0ebfeecb7 
modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/DataSourceServlet.java
--- 
a/modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/DataSourceServlet.java
      Wed Jul 27 16:45:30 2011 +0200
+++ 
b/modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/DataSourceServlet.java
      Wed Jul 27 18:28:44 2011 +0200
@@ -196,32 +196,37 @@
         }
         if ("csv".equals(exportAs)) {
           try {
-            Window window = parameters.get("tab") == null
-                || parameters.get("tab").equals("undefined") ? null : 
OBDal.getInstance()
-                .get(Tab.class, parameters.get("tab")).getWindow();
-            String encoding = 
Preferences.getPreferenceValue("OBSERDS_CSVTextEncoding", true,
-                OBContext.getOBContext().getCurrentClient(), 
OBContext.getOBContext()
-                    .getCurrentOrganization(), 
OBContext.getOBContext().getUser(), OBContext
-                    .getOBContext().getRole(), window);
-            response.setContentType("text/csv; charset=" + encoding);
-          } catch (PropertyNotFoundException e) {
-            // There is no preference for encoding, using standard one which 
works on Excel
-            response.setContentType("text/csv; charset=iso-8859-1");
-          }
-          response.setHeader("Content-Disposition", "attachment; 
filename=ExportedData.csv");
-          if (getDataSource(request) instanceof DefaultDataSourceService) {
-            QueryJSONWriterToCSV writer = new QueryJSONWriterToCSV(request, 
response, parameters,
-                getDataSource(request).getEntity());
-            ((DefaultDataSourceService) 
getDataSource(request)).fetch(parameters, writer);
-          } else {
-            String result = getDataSource(request).fetch(parameters);
-            JSONObject jsonResult = new JSONObject(result);
-            JSONArray data = 
jsonResult.getJSONObject("response").getJSONArray("data");
-            QueryJSONWriterToCSV writer = new QueryJSONWriterToCSV(request, 
response, parameters,
-                getDataSource(request).getEntity());
-            for (int i = 0; i < data.length(); i++) {
-              writer.write(data.getJSONObject(i));
+            OBContext.setAdminMode();
+            try {
+              Window window = parameters.get("tab") == null
+                  || parameters.get("tab").equals("undefined") ? null : 
OBDal.getInstance()
+                  .get(Tab.class, parameters.get("tab")).getWindow();
+              String encoding = 
Preferences.getPreferenceValue("OBSERDS_CSVTextEncoding", true,
+                  OBContext.getOBContext().getCurrentClient(), 
OBContext.getOBContext()
+                      .getCurrentOrganization(), 
OBContext.getOBContext().getUser(), OBContext
+                      .getOBContext().getRole(), window);
+              response.setContentType("text/csv; charset=" + encoding);
+            } catch (PropertyNotFoundException e) {
+              // There is no preference for encoding, using standard one which 
works on Excel
+              response.setContentType("text/csv; charset=iso-8859-1");
             }
+            response.setHeader("Content-Disposition", "attachment; 
filename=ExportedData.csv");
+            if (getDataSource(request) instanceof DefaultDataSourceService) {
+              QueryJSONWriterToCSV writer = new QueryJSONWriterToCSV(request, 
response, parameters,
+                  getDataSource(request).getEntity());
+              ((DefaultDataSourceService) 
getDataSource(request)).fetch(parameters, writer);
+            } else {
+              String result = getDataSource(request).fetch(parameters);
+              JSONObject jsonResult = new JSONObject(result);
+              JSONArray data = 
jsonResult.getJSONObject("response").getJSONArray("data");
+              QueryJSONWriterToCSV writer = new QueryJSONWriterToCSV(request, 
response, parameters,
+                  getDataSource(request).getEntity());
+              for (int i = 0; i < data.length(); i++) {
+                writer.write(data.getJSONObject(i));
+              }
+            }
+          } finally {
+            OBContext.restorePreviousMode();
           }
         } else {
           log.error("Unsupported export format: " + exportAs);

------------------------------------------------------------------------------
Got Input?   Slashdot Needs You.
Take our quick survey online.  Come on, we don't ask for help often.
Plus, you'll get a chance to win $100 to spend on ThinkGeek.
http://p.sf.net/sfu/slashdot-survey
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to