diff --git a/addons/base_calendar/__init__.py b/addons/base_calendar/__init__.py index a736d491b0e..425fb2ed375 100644 --- a/addons/base_calendar/__init__.py +++ b/addons/base_calendar/__init__.py @@ -21,6 +21,6 @@ import base_calendar import crm_meeting -import service +import controllers # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/base_calendar/base_calendar.py b/addons/base_calendar/base_calendar.py index cfb4fe7ba21..205ad1ca3dc 100644 --- a/addons/base_calendar/base_calendar.py +++ b/addons/base_calendar/base_calendar.py @@ -404,25 +404,17 @@ property or property parameter."), attendee_add.value = 'MAILTO:' + (attendee.email or '') res = cal.serialize() return res + def meeting_invitation(self, cr, uid, ids,context=None): partner_obj = self.browse(cr,uid, ids,context=context) - for event_id in self.browse(cr, uid, ids, context): - event_id = event_id.ref.id + action_id=self.pool.get('ir.actions.act_window').search(cr, uid, [('res_model','=','crm.meeting')], context=context) + base_url = self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url', default='http://localhost:8069', context=context) for partner in partner_obj: - if partner and partner.user_id: - related_user = partner.user_id - base_url = self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url') - query = {'db': cr.dbname} - fragment = { - 'login': related_user.login, - 'model': "crm.meeting", - 'view_type' : "form", - 'res_id': event_id, - } - url = urljoin(base_url, "?%s#%s" % (urlencode(query), urlencode(fragment))) + if partner and partner.ref.user_id: + base_url += '/meeting/meeting_invitation?db=%s&debug=&token=%s&action=%s' % (cr.dbname, ids[0],action_id[0]); else : - url = "https://openerp.my.openerp.com/#" - return url + base_url += "/auth_signup" + return base_url def _send_mail(self, cr, uid, ids, mail_to, email_from=tools.config.get('email_from', False), context=None): """ @@ -532,15 +524,16 @@ property or property parameter."), """ if context is None: context = {} - + meeting_obj = self.pool.get('crm.meeting') for vals in self.browse(cr, uid, ids, context=context): if vals.ref and vals.ref.user_id: mod_obj = self.pool[vals.ref._name] res=mod_obj.read(cr,uid,[vals.ref.id],['duration','class'],context) defaults = {'user_id': vals.user_id.id, 'organizer_id': vals.ref.user_id.id,'duration':res[0]['duration'],'class':res[0]['class']} - mod_obj.copy(cr, uid, vals.ref.id, default=defaults, context=context) +# mod_obj.copy(cr, uid, vals.ref.id, default=defaults, context=context) + meeting_id = meeting_obj.search(cr, uid, [('attendee_ids','=',vals.id)],context = context) + meeting_obj.message_post(cr, uid, meeting_id, body=_(("%s has Accept the meeting") % (vals.cn)), context=context) self.write(cr, uid, vals.id, {'state': 'accepted'}, context) - return True def do_decline(self, cr, uid, ids, context=None, *args): @@ -555,6 +548,10 @@ property or property parameter."), """ if context is None: context = {} + meeting_obj = self.pool.get('crm.meeting') + vals=self.browse(cr, uid, ids, context=context)[0] + meeting_id = meeting_obj.search(cr, uid, [('attendee_ids','=',vals.id)],context = context) + meeting_obj.message_post(cr, uid, meeting_id, body=_(("%s has Reject the meeting") % (vals.cn)), context=context) return self.write(cr, uid, ids, {'state': 'declined'}, context) def create(self, cr, uid, vals, context=None): diff --git a/addons/base_calendar/base_calendar_data.xml b/addons/base_calendar/base_calendar_data.xml index 80ec77ba6e0..bb9a51b2ae3 100644 --- a/addons/base_calendar/base_calendar_data.xml +++ b/addons/base_calendar/base_calendar_data.xml @@ -177,7 +177,7 @@
You, %(organizer)s - Organizer
%(attendees)s
-
Accept | Decline
+
Accept | Decline
--
Sent by %(responsible)s from %(company)s.View this meeting detail directly in OpenERP
diff --git a/addons/base_calendar/controllers/__init__.py b/addons/base_calendar/controllers/__init__.py new file mode 100644 index 00000000000..9f828025b8e --- /dev/null +++ b/addons/base_calendar/controllers/__init__.py @@ -0,0 +1,3 @@ +import main + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/base_calendar/controllers/main.py b/addons/base_calendar/controllers/main.py new file mode 100644 index 00000000000..4762ededd05 --- /dev/null +++ b/addons/base_calendar/controllers/main.py @@ -0,0 +1,22 @@ +import simplejson +import urllib +import openerp.addons.web.http as oeweb +import openerp.addons.web.controllers.main as webmain + +class crm_meetting_importstatus(oeweb.Controller): + _cp_path = '/meeting' + + @oeweb.httprequest + def meeting_invitation(self, req, db, token, action, status): + print 'FFFFFFFFFFFFF' + js = "\n ".join('' % i for i in webmain.manifest_list(req,'js', db=db)) + css = "\n ".join('' % i for i in webmain.manifest_list(req,'css',db=db)) + + return webmain.html_template % { + 'js': js, + 'css': css, + 'modules': simplejson.dumps(webmain.module_boot(req, db)), + 'init': 's.base_calendar.do_accept("%s","%s", "%s", "%s");'% (db,token,action,status), + } + + diff --git a/addons/base_calendar/crm_meeting_view.xml b/addons/base_calendar/crm_meeting_view.xml index d9b659b91fa..4298b193ea7 100644 --- a/addons/base_calendar/crm_meeting_view.xml +++ b/addons/base_calendar/crm_meeting_view.xml @@ -181,6 +181,10 @@ +
+ + +
diff --git a/addons/base_calendar/service.py b/addons/base_calendar/service.py deleted file mode 100644 index 0d781ddbe0d..00000000000 --- a/addons/base_calendar/service.py +++ /dev/null @@ -1,14 +0,0 @@ -import simplejson -import openerp.addons.web.http as oeweb -import openerp.addons.web.controllers.main as webmain - -class crm_meetting_importstatus(oeweb.Controller): - _cp_path = '/meeting' - @oeweb.httprequest - def meeting_invitation(self, req, db='may_29'): - return webmain.html_template % { - 'js': "\n ".join('' % i for i in webmain.manifest_list(req, 'js',db= db)), - 'css': "\n ".join('' % i for i in webmain.manifest_list(req, 'css', db=db)), - 'modules': simplejson.dumps(webmain.module_boot(req, db)), - 'init': 'var wc = new s.web.WebClient();wc.appendTo($(document.body)); s.base_calendar.meeting_invitation();' - } diff --git a/addons/base_calendar/static/src/js/base_calendar.js b/addons/base_calendar/static/src/js/base_calendar.js index 0c7642bdf0b..f3c40537f0b 100644 --- a/addons/base_calendar/static/src/js/base_calendar.js +++ b/addons/base_calendar/static/src/js/base_calendar.js @@ -1,6 +1,69 @@ -openerp.base_calendar = function(openerp) { - - openerp.base_calendar.meeting_invitation = function(){ - console.log("daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); - } +openerp.base_calendar = function(instance) { +var _t = instance.web._t; +instance.base_calendar = {} + + instance.base_calendar.DoAccept = instance.web.Widget.extend({ + + init: function(parent,db,token,action,status) { + this._super(); + this.db = db; + this.token = token; + this.status = status; + this.action = action; + this.ds_attendee = new instance.web.DataSetSearch(this, 'calendar.attendee'); + }, + start: function() { + var self = this; + if (instance.session.session_is_valid(self.db)) { + self.show_meeting(); + } else { + self.show_login() + } + }, + show_login: function(action) { + var self = this; + this.destroy_content(); + this.login = new instance.web.Login_extended(this,self.action); + this.login.appendTo(this.$el); + this.login.on('db_loaded',self,function(db,login){ + if (instance.session.session_is_valid(db)) { + (self.show_meeting()).done(function(){ + self.login.off('db_loaded'); + }); + } + else{ + self.show_login(); + } + }) + }, + destroy_content: function() { + _.each(_.clone(this.getChildren()), function(el) { + el.destroy(); + }); + this.$el.children().remove(); + }, + show_meeting : function(){ + var db = this.db; + var att_status = "do_decline"; + var self = this; + if(self.status === 'accepted'){att_status = "do_accept";} + return this.ds_attendee.call(att_status,[[parseInt(this.token)]]).done(function(res){ + location.replace(_.str.sprintf('/?db=%s&debug=#view_type=calendar&model=crm.meeting&action=%s',self.db,self.action)); + }); + }, + }); + instance.web.Login_extended = instance.web.Login.extend({ + do_login: function (db, login, password) { + var self = this; + (this._super.apply(this,arguments)).done(function(){ + self.trigger('db_loaded',db,login) + }); + } + }); + instance.base_calendar.do_accept = function (db, token, action, status) { + instance.session.session_bind(instance.session.origin).done(function () { + new instance.base_calendar.DoAccept(null,db,token,action,status).appendTo($("body").addClass('openerp')); + }); + } }; +//vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax: