2017-05-26 21 views
-1

匿名ユーザーが特定のフォームにデータを登録できるようにする必要があります。それは可能ですか?私はそれにどのようにアプローチできますか?匿名ユーザーに特定のフォームを使用させる方法を教えてください。 - Odoo 10

私がやっていることは、自分の組織に固有の特定の種類の連絡先に電子メールを送信するように大量メール送信モジュールを拡張することです。連絡先情報(例:名前、電子メール、連絡先が興味のあるトピック)を登録できるフォームを作成しました。私が必要とするのは、認証されていないユーザーがこのフォームに情報を入力して、ニュースレターを送ることができるということです。私はbase.group_publicにモデルパーミッションを設定しようとしましたが、まだログインフォームを取得しています。

ありがとう

+0

あなたが正確に何を求めていますか?どのようにフォームを作成しますか?匿名ユーザーのみをどのように許可しますか?何を試しましたか? –

+0

私がやっていることは、大量メール送信モジュールを拡張して、私の組織に固有の特定の種類の連絡先に電子メールを送信することです。連絡先情報(例:名前、電子メール、連絡先が興味のあるトピック)を登録できるフォームを作成しました。私が必要とするのは、認証されていないユーザーがこのフォームに情報を入力して、ニュースレターを送ることができるということです。私はbase.group_publicにモデルパーミッションを設定しようとしましたが、まだログインフォームを取得しています。今私は自分自身を明確にしていますか? – RVargas

+0

ポータルアクセスでビューを共有するだけです。メール受信者はフォームを表示できます。 – KbiR

答えて

0

多くの調査の後、私はこの作業を行うためにこの手順に従った。

  1. 私は、ポータルモジュールと同様にウェブサイトモジュールを導入しました。

  2. ウェブサイトのレイアウトを継承するテンプレートを作成しました(これは「公開フォーム」を作成します)。

  3. テンプレートからのパラメータを使用してモデルを作成するコントローラを作成しました。

テンプレートのコードは次のとおりです。

<template id="register"> 
<t t-call="iica_contacts.layout"> 
    <t t-set="title">Register</t> 
    <link href="/iica_contacts/static/libraries/js/multi_select/css/multi-select.css" media="screen" rel="stylesheet" type="text/css"/> 
    <form action="/contact/register" method="post" data-model_name="iica_contacts.contact" id="registration-form"> 
    <input type="hidden" name="csrf_token" t-att-value="request.csrf_token()"/> 
    <div class="container margin-top-20"> 
     <div class="row"> 
      <div class="col-md-6 form-group o_website_form_required_custom"> 
      <label for="name" class="control-label">Full name:</label> 
      <input type="text" name="name" class="form-control" data-validation="required" t-att-value="name or contact.name" /> 
      </div> 
     </div> 
     <div class="row"> 
      <div class="col-md-6"> 
      <div class="panel panel-default"> 
       <div class="panel-heading">Contact information</div> 
       <div class="panel-body"> 
       <div class="row"> 
        <div class="col-md-12 form-group o_website_form_required_custom"> 
        <label class="control-label" for="email">Email:</label> 
        <input type="email" name="email" class="form-control" data-validation="required,email" t-att-value="email or contact.email" /> 
        </div> 
       </div> 
       <div class="row"> 
        <div class="col-md-12 form-group"> 
        <label class="control-label" for="phone">Phone number:</label> 
        <input type="tel" name="phone" class="form-control" t-att-value="phone or contact.phone" /> 
        </div> 
       </div> 
       <div class="row"> 
        <div class="col-md-12 form-group o_website_form_required_custom"> 
        <label class="control-label" for="language">Language:</label> 
        <select name="language" class="form-control" data-validation="required"> 
         <option value=""> -- Select language -- </option> 
         <option value="1" t-att-selected="1 == language">Spanish</option> 
         <option value="2" t-att-selected="2 == language">English</option> 
        </select> 
        </div> 
       </div> 
       </div> 
      </div> 
      </div> 
      <div class="col-md-6"> 
      <div class="panel panel-default"> 
       <div class="panel-heading">Location information</div> 
       <div class="panel-body"> 
       <div class="row"> 
        <div class="col-md-12 form-group o_website_form_required_custom"> 
        <label class="control-label" for="country_id">Country:</label> 
        <select name="country_id" class="form-control" data-validation="required"> 
         <option value=""> -- Select country -- </option> 
         <t t-foreach="countries" t-as="country"> 
         <option t-att-value="country.id" t-att-selected="country.id == contact.country_id.id"> 
          <t t-esc="country.name" /> 
         </option> 
         </t> 
        </select> 
        </div> 
       </div> 
       <div class="row"> 
        <div class="col-md-12 form-group"> 
        <label for="company">Company:</label> 
        <input type="text" name="company" class="form-control" t-att-value="company or contact.company" /> 
        </div> 
       </div> 
       <div class="row"> 
        <div class="col-md-12 form-group"> 
        <label class="control-label" for="sector">Sector:</label> 
        <select name="sector" class="form-control"> 
         <option value=""> -- Select sector -- </option> 
         <option value="1" t-att-selected="1 == sector">Public</option> 
         <option value="2" t-att-selected="2 == sector">Private</option> 
         <option value="3" t-att-selected="3 == sector">ONG</option> 
         <option value="4" t-att-selected="4 == sector">International Organization</option> 
         <option value="5" t-att-selected="5 == sector">Financial</option> 
         <option value="6" t-att-selected="6 == sector">Other</option> 
        </select> 
        </div> 
       </div> 
       </div> 
      </div> 
      </div> 
     </div> 
     <div class="row"> 
      <div class="col-md-12"> 
      <ul class="nav nav-tabs"> 
       <li class="active"><a href="#products-interest" data-toggle="tab">Products of interest</a></li> 
       <li><a href="#areas-interest" data-toggle="tab">Areas of interest</a></li> 
       <li><a href="#topics-interest" data-toggle="tab">Topics of interest</a></li> 
      </ul> 
      <div class="tab-content"> 
       <div id="products-interest" class="tab-pane fade in active"> 
       <h3>Products of interest</h3> 
       <select name="products_interest" multiple="multiple" class="form-control elegant-multi-select"> 
        <t t-foreach="products_interest" t-as="product"> 
        <option t-att-value="product.id"> 
         <t t-esc="product.name" /> 
        </option> 
        </t> 
       </select> 
       </div> 
       <div id="areas-interest" class="tab-pane fade"> 
       <h3>Areas of interest</h3> 
       <select name="areas_interest" multiple="multiple" class="form-control elegant-multi-select"> 
        <t t-foreach="areas_interest" t-as="area"> 
        <option t-att-value="area.id"> 
         <t t-esc="area.name" /> 
        </option> 
        </t> 
       </select> 
       </div> 
       <div id="topics-interest" class="tab-pane fade"> 
       <h3>Topics of interest</h3> 
       <select name="topics_interest" multiple="multiple" class="form-control elegant-multi-select"> 
        <t t-foreach="topics_interest" t-as="topic"> 
        <option t-att-value="topic.id"> 
         <t t-esc="topic.name" /> 
        </option> 
        </t> 
       </select> 
       </div> 
      </div> 
      </div> 
     </div> 
     <div class="row"> 
      <div class="col-md-12"> 
      <button type="submit" class="btn btn-default azuliica hover-azuliica2 lt-blanco margin-top-10"> 
       Register <span class="fa fa-long-arrow-right" /> 
      </button> 
      </div> 
     </div> 
    </div> 
    </form> 
    <script src="/iica_contacts/static/libraries/js/node_modules/jquery/dist/jquery.min.js"></script> 
    <script src="/iica_contacts/static/libraries/js/node_modules/jquery-form-validator/form-validator/jquery.form-validator.min.js"></script> 
    <script src="/iica_contacts/static/libraries/js/multi_select/js/jquery.multi-select.js"></script> 
    <script src="/iica_contacts/static/src/js/registration.js"></script> 
    <script> 
    $.validate(); 
    loadMultiSelect('.elegant-multi-select'); 
    </script> 
</t> 

コントローラのためのコード:

class IICAContactsController(http.Controller): 
@http.route('/contact/register', type='http', auth='public', website='true') 
def register(self, redirect=None, **post): 
    countries = request.env['res.country'].sudo().search([]) 
    values = { 
     'countries' : countries, 
    } 

    if post: 
     error_message, valid = self._validate_form(post) 
     if valid == 1: 
      self._process_registration(post) 
      return request.redirect('/contact/register/success') 
     else: 
      return request.redirect('/contact/register/error') 
    else: 
     contact = request.env['iica_contacts.contact'] 
     values.update({ 
      'contact' : contact, 
     }) 

    return request.render("iica_contacts.register", values) 
関連する問題