diff options
Diffstat (limited to 'addons/website_crm/controllers/main.py')
| -rw-r--r-- | addons/website_crm/controllers/main.py | 109 |
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) |
