[IMP] Improved code

- Remove methods(logout,records,fields_view_get) from base controller which are implemented for mobile.
- Use base dataset in to mobile code.

bzr revid: jra@tinyerp.com-20110614122626-sjodhex9ayp20ia1
This commit is contained in:
Jiten Rangwala (OpenERP) 2011-06-14 17:56:26 +05:30
parent f05e45fdd7
commit 779c588478
3 changed files with 33 additions and 76 deletions

View File

@ -99,11 +99,6 @@ class Session(openerpweb.Controller):
"uid": req.session._uid,
}
@openerpweb.jsonrequest
def logout(self,req):
req.session_id = False
req.session._uid = False
@openerpweb.jsonrequest
def sc_list(self, req):
return req.session.model('ir.ui.view_sc').get_sc(req.session._uid, "ir.ui.menu", {})
@ -620,33 +615,6 @@ class ListView(View):
fields_view = self.fields_view_get(req, model, view_id, 'tree', toolbar=toolbar)
return {'fields_view': fields_view}
@openerpweb.jsonrequest
def records(self, req, model, view_id, toolbar=False):
rows = DataSet().do_search_read(req, model,
offset=0, limit=False,
domain=None)
return {
'records': [
{'data': dict((key, {'value': value})
for key, value in row.iteritems())}
for row in rows
]
}
def fields_view_get(self, request, model, view_id, view_type="tree",
transform=True, toolbar=False, submenu=False):
""" Sets @editable on the view's arch if it isn't already set and
``set_editable`` is present in the request context
"""
view = super(ListView, self).fields_view_get(
request, model, view_id, view_type, transform, toolbar, submenu)
view_attributes = view['arch']['attrs']
if request.context.get('set_editable')\
and 'editable' not in view_attributes:
view_attributes['editable'] = 'bottom'
return view
def process_colors(self, view, row, context):
colors = view['arch']['attrs'].get('colors')

View File

@ -91,16 +91,12 @@ openerp.web_mobile.ListView = openerp.base.Controller.extend({
var self = this;
var view_id = action.views[0][0];
var model = action.res_model;
var context = action.context;
var domain = action.domain;
self.rpc('/base/listview/records', {
'model': model,
'view_id': view_id,
'toolbar': false,
self.rpc('/base/dataset/search_read', {
model: model
},function(result){
this.listview = new openerp.web_mobile.ListView(this.session, "oe_app");
self.$element.html(QWeb.render("ListView", {'list' : result}));
self.$element.html(QWeb.render("ListView", {'records' : result}));
});
}
});
@ -183,16 +179,12 @@ openerp.web_mobile.Options = openerp.base.Controller.extend({
start: function() {
var self = this;
this.$element.html(QWeb.render("Options", this));
self.$element.find("a").click(self.on_clicked);
self.$element.find("#logout").click(self.on_logout);
},
on_clicked: function(ev) {
$opt = $(ev.currentTarget);
current_id = $opt.attr('id');
if (current_id == 'logout') {
this.rpc('/base/session/logout', {});
this.login = new openerp.web_mobile.Login(this.session, "oe_app");
this.login.start();
}
on_logout: function(ev) {
this.session.logout();
this.login = new openerp.web_mobile.Login(this.session, "oe_app");
this.login.start();
}
});
openerp.web_mobile.Login = openerp.base.Controller.extend({
@ -206,34 +198,31 @@ openerp.web_mobile.Login = openerp.base.Controller.extend({
this.rpc("/base/session/get_databases_list", {}, function(result) {
self.db_list = result.db_list;
self.$element.html(QWeb.render("Login", self));
self.$element.find('#database').click(self.on_select);
self.$element.find("a").click(self.on_clicked);
self.$element.find('#database').click(self.on_db_select);
self.$element.find("#login").click(self.on_login);
$.mobile.initializePage();
})
},
on_select: function(ev) {
on_db_select: function(ev) {
var db = this.$element.find("#database option:selected").val();
jQuery("#db_text").html(db);
},
on_clicked: function(ev) {
$opt = $(ev.currentTarget);
current_id = $opt.attr('id');
if (current_id = "login") {
ev.preventDefault();
var self = this;
var $e = this.$element;
var db = $e.find("div select[name=database]").val();
var login = $e.find("div input[name=login]").val();
var password = $e.find("div input[name=password]").val();
//$e.hide();
// Should hide then call callback
this.session.session_login(db, login, password, function() {
if(self.session.session_is_valid()) {
self.on_login_valid();
} else {
self.on_login_invalid();
}
});
}
on_login: function(ev) {
ev.preventDefault();
var self = this;
var $e = this.$element;
var db = $e.find("div select[name=database]").val();
var login = $e.find("div input[name=login]").val();
var password = $e.find("div input[name=password]").val();
//$e.hide();
// Should hide then call callback
this.session.session_login(db, login, password, function() {
if(self.session.session_is_valid()) {
self.on_login_valid();
} else {
self.on_login_invalid();
}
});
},
on_login_invalid: function() {
this.$element

View File

@ -37,9 +37,9 @@
<span class="ui-icon ui-icon-arrow-d ui-icon-shadow"></span>
</span>
<select data-native-menu="false" id="database" name="database" tabindex="-1">
<option t-foreach="db_list" t-as="opt" t-value="opt">
<t t-esc="opt"/>
</option>
<t t-foreach="db_list" t-as="opt">
<option t-att-value="opt"><t t-esc="opt"/></option>
</t>
</select>
</div>
</div>
@ -68,11 +68,11 @@
<t t-name="ListView">
<div role="main" class="ui-content" data-role="content">
<ul data-role="listview" class="ui-listview">
<li data-theme="c" class="ui-btn ui-btn-icon-right ui-li ui-btn-up-c" t-foreach="list.records" t-as="record">
<li data-theme="c" class="ui-btn ui-btn-icon-right ui-li ui-btn-up-c" t-foreach="records" t-as="record">
<div class="ui-btn-inner ui-li">
<div class="ui-btn-text">
<a href="#" class="ui-link-inherit">
<span><t t-esc="record.data.name.value"/></span>
<span><t t-esc="record.name"/></span>
</a>
</div>
<span class="ui-icon ui-icon-arrow-r"></span>