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 |
- |
+ |
|
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: