summaryrefslogtreecommitdiff
path: root/addons/website_crm/controllers/main.py
diff options
context:
space:
mode:
authorDavid Monjoie <dmo@odoo.com>2015-08-25 21:50:31 +0200
committerDavid Monjoie <dmo@odoo.com>2015-08-26 16:01:19 +0200
commita77f5cf42faa75a2dd3931d83ad8ea86648248c0 (patch)
tree29590b9351bf73ac573928be7f0dbaa5ea8505a8 /addons/website_crm/controllers/main.py
parent57c4787d09eacc548140d7a552a76264eae21a55 (diff)
[ADD] website_form: generic form controller
Contains a new ajax post function that comes from mdo's original code and that I was not able to get rid of.
Diffstat (limited to 'addons/website_crm/controllers/main.py')
-rw-r--r--addons/website_crm/controllers/main.py109
1 files changed, 0 insertions, 109 deletions
diff --git a/addons/website_crm/controllers/main.py b/addons/website_crm/controllers/main.py
deleted file mode 100644
index e92a2483f37..00000000000
--- a/addons/website_crm/controllers/main.py
+++ /dev/null
@@ -1,109 +0,0 @@
-# -*- coding: utf-8 -*-
-import base64
-
-import werkzeug
-import werkzeug.urls
-
-from openerp import http, SUPERUSER_ID
-from openerp.http import request
-from openerp.tools.translate import _
-
-
-class contactus(http.Controller):
-
- def generate_google_map_url(self, street, city, city_zip, country_name):
- url = "http://maps.googleapis.com/maps/api/staticmap?center=%s&sensor=false&zoom=8&size=298x298" % werkzeug.url_quote_plus(
- '%s, %s %s, %s' % (street, city, city_zip, country_name)
- )
- return url
-
- @http.route(['/page/website.contactus', '/page/contactus'], type='http', auth="public", website=True)
- def contact(self, **kwargs):
- values = {}
- for field in ['description', 'partner_name', 'phone', 'contact_name', 'email_from', 'name']:
- if kwargs.get(field):
- values[field] = kwargs.pop(field)
- values.update(kwargs=kwargs.items())
- return request.website.render("website.contactus", values)
-
- def create_lead(self, request, values, kwargs):
- """ Allow to be overrided """
- cr, context = request.cr, request.context
- return request.registry['crm.lead'].create(cr, SUPERUSER_ID, values, context=dict(context, mail_create_nosubscribe=True))
-
- def preRenderThanks(self, values, kwargs):
- """ Allow to be overrided """
- company = request.website.company_id
- return {
- 'google_map_url': self.generate_google_map_url(company.street, company.city, company.zip, company.country_id and company.country_id.name_get()[0][1] or ''),
- '_values': values,
- '_kwargs': kwargs,
- }
-
- def get_contactus_response(self, values, kwargs):
- values = self.preRenderThanks(values, kwargs)
- return request.website.render(kwargs.get("view_callback", "website_crm.contactus_thanks"), values)
-
- @http.route(['/crm/contactus'], type='http', auth="public", website=True)
- def contactus(self, **kwargs):
- def dict_to_str(title, dictvar):
- ret = "\n\n%s" % title
- for field in dictvar:
- ret += "\n%s" % field
- return ret
-
- _TECHNICAL = ['show_info', 'view_from', 'view_callback'] # Only use for behavior, don't stock it
- _BLACKLIST = ['id', 'create_uid', 'create_date', 'write_uid', 'write_date', 'user_id', 'active'] # Allow in description
- _REQUIRED = ['name', 'contact_name', 'email_from', 'description'] # Could be improved including required from model
-
- post_file = [] # List of file to add to ir_attachment once we have the ID
- post_description = [] # Info to add after the message
- values = {}
-
- values['medium_id'] = request.registry['ir.model.data'].xmlid_to_res_id(request.cr, SUPERUSER_ID, 'crm.crm_medium_website')
-
- for field_name, field_value in kwargs.items():
- if hasattr(field_value, 'filename'):
- post_file.append(field_value)
- elif field_name in request.registry['crm.lead']._fields and field_name not in _BLACKLIST:
- values[field_name] = field_value
- elif field_name not in _TECHNICAL: # allow to add some free fields or blacklisted field like ID
- post_description.append("%s: %s" % (field_name, field_value))
-
- if "name" not in kwargs and values.get("contact_name"): # if kwarg.name is empty, it's an error, we cannot copy the contact_name
- values["name"] = values.get("contact_name")
- # fields validation : Check that required field from model crm_lead exists
- error = set(field for field in _REQUIRED if not values.get(field))
-
- if error:
- values = dict(values, error=error, kwargs=kwargs.items())
- return request.website.render(kwargs.get("view_from", "website.contactus"), values)
-
- # description is required, so it is always already initialized
- if post_description:
- values['description'] += dict_to_str(_("Custom Fields: "), post_description)
-
- if kwargs.get("show_info"):
- post_description = []
- environ = request.httprequest.headers.environ
- post_description.append("%s: %s" % ("IP", environ.get("REMOTE_ADDR")))
- post_description.append("%s: %s" % ("USER_AGENT", environ.get("HTTP_USER_AGENT")))
- post_description.append("%s: %s" % ("ACCEPT_LANGUAGE", environ.get("HTTP_ACCEPT_LANGUAGE")))
- post_description.append("%s: %s" % ("REFERER", environ.get("HTTP_REFERER")))
- values['description'] += dict_to_str(_("Environ Fields: "), post_description)
-
- lead_id = self.create_lead(request, dict(values, user_id=False), kwargs)
- values.update(lead_id=lead_id)
- if lead_id:
- for field_value in post_file:
- attachment_value = {
- 'name': field_value.filename,
- 'res_name': field_value.filename,
- 'res_model': 'crm.lead',
- 'res_id': lead_id,
- 'datas': base64.encodestring(field_value.read()),
- 'datas_fname': field_value.filename,
- }
- request.registry['ir.attachment'].create(request.cr, SUPERUSER_ID, attachment_value, context=request.context)
-
- return self.get_contactus_response(values, kwargs)