summaryrefslogtreecommitdiff
path: root/addons/website_crm_score/controllers/main.py
diff options
context:
space:
mode:
Diffstat (limited to 'addons/website_crm_score/controllers/main.py')
-rw-r--r--addons/website_crm_score/controllers/main.py43
1 files changed, 25 insertions, 18 deletions
diff --git a/addons/website_crm_score/controllers/main.py b/addons/website_crm_score/controllers/main.py
index 3707a8f648f..fe983c98d37 100644
--- a/addons/website_crm_score/controllers/main.py
+++ b/addons/website_crm_score/controllers/main.py
@@ -1,9 +1,10 @@
# -*- coding: utf-8 -*-
+import simplejson
from openerp import http, SUPERUSER_ID, fields
from openerp.http import request
from openerp.tools import html_escape
from openerp.addons.website.controllers.main import Website
-from openerp.addons.website_crm.controllers.main import contactus
+from openerp.addons.website_form.controllers.main import WebsiteForm
class PageController(Website):
@@ -33,27 +34,31 @@ class PageController(Website):
return response
-class ContactController(contactus):
+class ContactController(WebsiteForm):
+
+ @http.route('/website_form/<string:model_name>', type='http', auth="public", methods=['POST'], website=True)
+ def website_form(self, model_name, **kwargs):
+ response = super(ContactController, self).website_form(model_name, **kwargs)
+ if model_name != 'crm.lead':
+ return response
- @http.route(['/crm/contactus'], type='http', auth="public", website=True)
- def contactus(self, **kwargs):
- response = super(ContactController, self).contactus(**kwargs)
# the cookie is written here because the response is not available in the create_lead function
- if '_values' in response.qcontext: # contactus error : fields validation not passed
- # NOTE: this requires for the lead_id to be added to values in the parent controller
- lead_id = response.qcontext.get('_values').get('lead_id')
- if lead_id: # a new lead has been created
- lead_model = request.registry['crm.lead']
- # sign the lead_id
- sign = lead_model.encode(lead_id)
- response.set_cookie('lead_id', sign, domain=lead_model.get_score_domain_cookies())
+ response_data = simplejson.loads(response.data) # controller is json now
+ if 'id' in response_data: # a new lead has been created
+ lead_model = request.registry['crm.lead']
+ # sign the lead_id
+ sign = lead_model.encode(response_data['id'])
+ response.set_cookie('lead_id', sign, domain=lead_model.get_score_domain_cookies())
return response
- def create_real_lead(self, request, values, kwargs):
- """ Make this function overridable to create a lead with another function that create_lead from webiste_crm """
- return super(ContactController, self).create_lead(request, values, kwargs)
+ def create_real_lead(self, request, model, values, custom, meta=None):
+ """ Make this function overridable to create a lead with another function than insert_record from website_form """
+ return super(ContactController, self).insert_record(request, model, values, custom, meta)
+
+ def insert_record(self, request, model, values, custom, meta=None):
+ if model.model != 'crm.lead':
+ return super(ContactController, self).insert_record(request, model, values, custom, meta)
- def create_lead(self, request, values, kwargs):
cr, context = request.cr, request.context
lead_model = request.registry["crm.lead"]
@@ -91,6 +96,8 @@ class ContactController(contactus):
body += '<br/><b>%s</b>: <b>%s</b>' % (fieldname, html_escape(changed_values[fieldname]))
request.registry['crm.lead'].message_post(cr, SUPERUSER_ID, [lead_id], body=body, subject="Field value changed", context=context)
+ return lead_id
+
else:
# either no lead_id cookie OR the lead_id doesn't exist in db OR the current one is closed -> a lead is created
lang = context.get('lang', False)
@@ -115,7 +122,7 @@ class ContactController(contactus):
urls.append('<a href="%s" target="_blank"><b>%s</b></a>' % (url_encoded, url_encoded))
body = '<br/>'.join(urls)
- new_lead_id = self.create_real_lead(request, values, kwargs)
+ new_lead_id = self.create_real_lead(request, model, values, custom, meta)
# if pages were seen, a message is posted
if body: