|
|
@ -10,12 +10,18 @@ from openerp import http, SUPERUSER_ID |
|
|
|
from openerp.http import request |
|
|
|
from openerp.tools.translate import _ |
|
|
|
|
|
|
|
_TECHNICAL = ['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 |
|
|
|
# Only use for behavior, don't stock it |
|
|
|
_TECHNICAL = ['view_from', 'view_callback'] |
|
|
|
# Allow in description |
|
|
|
_BLACKLIST = ['id', 'create_uid', 'create_date', 'write_uid', 'write_date', |
|
|
|
'user_id', 'active'] |
|
|
|
|
|
|
|
|
|
|
|
class WebsiteSubscription(http.Controller): |
|
|
|
|
|
|
|
@http.route(['/page/become_cooperator','/become_cooperator'], type='http', auth="public", website=True) |
|
|
|
@http.route(['/page/become_cooperator', |
|
|
|
'/become_cooperator'], |
|
|
|
type='http', auth="public", website=True) |
|
|
|
def display_become_cooperator_page(self, **kwargs): |
|
|
|
values = {} |
|
|
|
if request.env.user.login != 'public': |
|
|
@ -31,11 +37,13 @@ class WebsiteSubscription(http.Controller): |
|
|
|
values.update(kwargs=kwargs.items()) |
|
|
|
return request.website.render("easy_my_coop.becomecooperator", values) |
|
|
|
|
|
|
|
@http.route(['/page/become_company_cooperator','/become_company_cooperator'], type='http', auth="public", website=True) |
|
|
|
@http.route(['/page/become_company_cooperator', |
|
|
|
'/become_company_cooperator'], |
|
|
|
type='http', auth="public", website=True) |
|
|
|
def display_become_company_cooperator_page(self, **kwargs): |
|
|
|
values = {} |
|
|
|
|
|
|
|
values = self.fill_values(values,True,True) |
|
|
|
values = self.fill_values(values, True, True) |
|
|
|
|
|
|
|
for field in ['is_company','company_register_number','company_name','company_email','company_type','email','firstname','lastname','birthdate','iban','share_product_id','no_registre','address','city','zip_code','country_id','phone','lang','nb_parts','total_parts','error_msg']: |
|
|
|
if kwargs.get(field): |
|
|
@ -54,10 +62,10 @@ class WebsiteSubscription(http.Controller): |
|
|
|
values = self.preRenderThanks(values, kwargs) |
|
|
|
return request.website.render(kwargs.get("view_callback", "easy_my_coop.cooperator_thanks"), values) |
|
|
|
|
|
|
|
def get_date_string(self,birthdate): |
|
|
|
def get_date_string(self, birthdate): |
|
|
|
if birthdate: |
|
|
|
birthdate = datetime.strptime(birthdate,"%Y-%m-%d") |
|
|
|
return datetime.strftime(birthdate,"%d/%m/%Y") |
|
|
|
birthdate = datetime.strptime(birthdate, "%Y-%m-%d") |
|
|
|
return datetime.strftime(birthdate, "%d/%m/%Y") |
|
|
|
return False |
|
|
|
|
|
|
|
def get_values_from_user(self, values, is_company): |
|
|
@ -105,11 +113,11 @@ class WebsiteSubscription(http.Controller): |
|
|
|
def fill_values(self, values, is_company, load_from_user=False): |
|
|
|
company = request.website.company_id |
|
|
|
if load_from_user: |
|
|
|
values = self.get_values_from_user(values,is_company) |
|
|
|
values = self.get_values_from_user(values, is_company) |
|
|
|
values['countries'] = self.get_countries() |
|
|
|
values['langs'] = self.get_langs() |
|
|
|
values['products'] = self.get_products_share(is_company) |
|
|
|
fields_desc = request.env['subscription.request'].sudo().fields_get(['company_type','gender']) |
|
|
|
fields_desc = request.env['subscription.request'].sudo().fields_get(['company_type', 'gender']) |
|
|
|
values['company_types'] = fields_desc['company_type']['selection'] |
|
|
|
values['genders'] = fields_desc['gender']['selection'] |
|
|
|
values['company'] = company |
|
|
@ -151,16 +159,23 @@ class WebsiteSubscription(http.Controller): |
|
|
|
langs = request.env['res.lang'].sudo().search([]) |
|
|
|
return langs |
|
|
|
|
|
|
|
@http.route(['/subscription/get_share_product'], type='json', auth="public", methods=['POST'], website=True) |
|
|
|
@http.route(['/subscription/get_share_product'], |
|
|
|
type='json', |
|
|
|
auth="public", |
|
|
|
methods=['POST'], website=True) |
|
|
|
def get_share_product(self, share_product_id, **kw): |
|
|
|
product = request.env['product.template'].sudo().browse(int(share_product_id)) |
|
|
|
return {product.id: {'list_price':product.list_price,'min_qty':product.minimum_quantity,'force_min_qty':product.force_min_qty}} |
|
|
|
return {product.id: {'list_price': product.list_price, 'min_qty': product.minimum_quantity, 'force_min_qty': product.force_min_qty}} |
|
|
|
|
|
|
|
@http.route(['/subscription/subscribe_share'], type='http', auth="public", website=True) |
|
|
|
@http.route(['/subscription/subscribe_share'], |
|
|
|
type='http', |
|
|
|
auth="public", website=True) |
|
|
|
def share_subscription(self, **kwargs): |
|
|
|
user_obj = request.env['res.users'] |
|
|
|
post_file = [] # List of file to add to ir_attachment once we have the ID |
|
|
|
post_description = [] # Info to add after the message |
|
|
|
# List of file to add to ir_attachment once we have the ID |
|
|
|
post_file = [] |
|
|
|
# Info to add after the message |
|
|
|
post_description = [] |
|
|
|
values = {} |
|
|
|
|
|
|
|
for field_name, field_value in kwargs.items(): |
|
|
@ -168,10 +183,11 @@ class WebsiteSubscription(http.Controller): |
|
|
|
post_file.append(field_value) |
|
|
|
elif field_name in request.registry['subscription.request']._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 |
|
|
|
# allow to add some free fields or blacklisted field like ID |
|
|
|
elif field_name not in _TECHNICAL: |
|
|
|
post_description.append("%s: %s" % (field_name, field_value)) |
|
|
|
|
|
|
|
logged = kwargs.get("logged")=='on' |
|
|
|
logged = kwargs.get("logged") == 'on' |
|
|
|
if logged: |
|
|
|
partner = request.env.user.partner_id |
|
|
|
values['partner_id'] = partner.id |
|
|
@ -188,22 +204,25 @@ class WebsiteSubscription(http.Controller): |
|
|
|
|
|
|
|
values["is_company"] = is_company |
|
|
|
|
|
|
|
if not kwargs.has_key('g-recaptcha-response') or not request.website.is_captcha_valid(kwargs['g-recaptcha-response']): |
|
|
|
values = self.fill_values(values,is_company) |
|
|
|
values["error_msg"] = _("the captcha has not been validated, please fill in the captcha") |
|
|
|
if 'g-recaptcha-response' not in kwargs or not request.website.is_captcha_valid(kwargs['g-recaptcha-response']): |
|
|
|
values = self.fill_values(values, is_company) |
|
|
|
values["error_msg"] = _("the captcha has not been validated," |
|
|
|
" please fill in the captcha") |
|
|
|
|
|
|
|
return request.website.render(redirect, values) |
|
|
|
return request.website.render(redirect, values) |
|
|
|
|
|
|
|
if not logged and email: |
|
|
|
user = user_obj.sudo().search([('login','=',email)]) |
|
|
|
if user: |
|
|
|
values = self.fill_values(values,is_company) |
|
|
|
values.update(kwargs) |
|
|
|
values["error_msg"] = _("There is an existing account for this mail address. Please login before fill in the form") |
|
|
|
user = user_obj.sudo().search([('login', '=', email)]) |
|
|
|
if user: |
|
|
|
values = self.fill_values(values, is_company) |
|
|
|
values.update(kwargs) |
|
|
|
values["error_msg"] = _("There is an existing account for this" |
|
|
|
" mail address. Please login before " |
|
|
|
"fill in the form") |
|
|
|
|
|
|
|
return request.website.render(redirect, values) |
|
|
|
return request.website.render(redirect, values) |
|
|
|
|
|
|
|
# fields validation : Check that required field from model subscription_request exists |
|
|
|
# Check that required field from model subscription_request exists |
|
|
|
required_fields = request.env['subscription.request'].sudo().get_required_field() |
|
|
|
error = set(field for field in required_fields if not values.get(field)) |
|
|
|
|
|
|
@ -214,7 +233,7 @@ class WebsiteSubscription(http.Controller): |
|
|
|
return request.website.render(kwargs.get("view_from", redirect), values) |
|
|
|
|
|
|
|
if kwargs.get("already_cooperator") == 'on': |
|
|
|
already_cooperator = True |
|
|
|
values["already_cooperator"] = True |
|
|
|
|
|
|
|
lastname = kwargs.get("lastname").upper() |
|
|
|
firstname = kwargs.get("firstname").title() |
|
|
@ -230,15 +249,15 @@ class WebsiteSubscription(http.Controller): |
|
|
|
product = request.env['product.template'].sudo().browse(int(product_id)).product_variant_ids[0] |
|
|
|
values["share_product_id"] = product.id |
|
|
|
|
|
|
|
#check the subscription's amount |
|
|
|
# check the subscription's amount |
|
|
|
company = request.website.company_id |
|
|
|
max_amount = company.subscription_maximum_amount |
|
|
|
total_amount = float(kwargs.get('total_parts')) |
|
|
|
|
|
|
|
if max_amount > 0 and total_amount > max_amount: |
|
|
|
values = self.fill_values(values,is_company) |
|
|
|
values["error_msg"] = _("You can't subscribe for an amount that exceed ") + str(max_amount) + company.currency_id.symbol |
|
|
|
return request.website.render("easy_my_coop.becomecooperator", values) |
|
|
|
values = self.fill_values(values, is_company) |
|
|
|
values["error_msg"] = _("You can't subscribe for an amount that exceed ") + str(max_amount) + company.currency_id.symbol |
|
|
|
return request.website.render("easy_my_coop.becomecooperator", values) |
|
|
|
|
|
|
|
if is_company: |
|
|
|
if kwargs.get("company_register_number", is_company): |
|
|
@ -249,7 +268,7 @@ class WebsiteSubscription(http.Controller): |
|
|
|
values["no_registre"] = re.sub('[^0-9a-zA-Z]+', '', kwargs.get("no_registre")) |
|
|
|
subscription_id = request.env['subscription.request'].sudo().create(values) |
|
|
|
|
|
|
|
values.update(subscription_id = subscription_id) |
|
|
|
values.update(subscription_id=subscription_id) |
|
|
|
|
|
|
|
if subscription_id: |
|
|
|
for field_value in post_file: |
|
|
@ -261,7 +280,6 @@ class WebsiteSubscription(http.Controller): |
|
|
|
'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) |
|
|
|
request.registry['ir.attachment'].sudo().create(attachment_value) |
|
|
|
|
|
|
|
return self.get_subscription_response(values, kwargs) |
|
|
|
|