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