Can not select drop down menu using python Selenium - python

Hi I am working with selenium and have successfully set the text field with id historicalDatePicker but unable to select options from drop down menu in <div class="dropdown historical__month"> and <div class="dropdown historical__year"> I am confused because there is no id and I am not good at using xpath. Here is the HTML code
<div class="section section--green">
<div class="forms">
<div class="form">
<div class="form__fields form__fields--widthAuto">
<div class="form__field">
<div class="form__field__label">SEARCH BY DATE</div>
<div class="form__field__text">
<input type="text" name="date" autocomplete="new-password" id="historicalDatePicker" data-latest="1577448902000">
</div>
</div>
<div class="form__field">
<button class="form__button" id="historicalSearchBtn">SEARCH</button>
</div>
<div class="form__field"></div>
<div class="form__field"></div>
</div>
</div>
<div class="form__ruler form__ruler--vertical"></div>
<div class="form">
<div class="form__fields form__fields--widthAuto">
<div class="form__field">
<div class="form__field__label">SEARCH BY SYMBOL</div>
<div class="historical__search autocomplete">
<input id="historicalSymbolSearch" autocomplete="new-password" type="text" placeholder="Search for symbols or company"><i class="icon-search"></i></div>
</div>
<div class="form__field">
<div class="form__field__label"> </div>
<div class="dropdown historical__month">
<select class="dropdown__select" name="sector">
<option value="">Month</option>
<option value="1">January</option>
<option value="2">February</option>
<option value="3">March</option>
<option value="4">April</option>
<option value="5">May</option>
<option value="6">June</option>
<option value="7">July</option>
<option value="8">August</option>
<option value="9">September</option>
<option value="10">October</option>
<option value="11">November</option>
<option value="12">December</option>
</select>
</div>
</div>
<div class="form__field">
<div class="form__field__label"> </div>
<div class="dropdown historical__year">
<select class="dropdown__select" name="sector">
<option value="">Year</option>
<option value="2019">2019</option>
<option value="2018">2018</option>
<option value="2017">2017</option>
<option value="2016">2016</option>
<option value="2015">2015</option>
</select>
</div>
</div>
<div class="form__field">
<button class="form__button" id="historicalSymbolBtn">SEARCH</button>
</div>
</div>
</div>
<div class="form__ruler form__ruler--vertical"></div>
<div class="form">
<div class="form__fields">
<div class="form__field">
<div class="form__field__label"> </div><span> To download daily market summary, visit <br> <strong>Daily Downloads</strong> page.</span></div>
</div>
</div>
</div>
</div>
my python code is
from selenium import webdriver
from selenium.webdriver.support.ui import Select
chromedriver = "chromedriver.exe"
driver = webdriver.Chrome(chromedriver)
driver.get("https://dps.psx.com.pk/historical")
textField = driver.find_element_by_id("historicalSymbolSearch")
textField.send_keys('DWAE')
select = Select(driver.find_element_by_xpath("//select[#name='sector']"))
# all_options = select.find_elements_by_tag_name("option")
Any Help?

You can use the below xpath for the dropdown:
select = Select(driver.find_element_by_xpath("//div[#class='dropdown historical__month']//select[#class='dropdown__select']"))

Related

Django POST method is not receiving all input fields from HTML

please I would like to ask for help. I'm creating a web-based application and I'm having a hard time when I try to get the data from the HTML form and receive it through the POST method in Django.
It's pulling data only from one field and I really appreciate your help in figuring out why it's not pulling information from the other fields only from the location field. Thank you very much!
HTML = create-request.html
<form action="{% url 'save_request' %}" id="checklistForm" name="checklistForm" enctype="multipart/form-data" method="POST">
{% csrf_token %}
<section id="step-1" class="form-step">
<div class="mt-3">
{% include 'home/1_resource-request.html' %}
</div>
</section>
</form>
HTML = home/1_resource-request.html
{% block stylesheets %}{% endblock stylesheets %} {% block content %}
<div class="pcoded-content">
<div class="pcoded-inner-content">
<div class="main-body">
<div class="page-wrapper">
<div class="row">
<div class="col-sm-12">
<div class="card">
<div class="card-header">
<h5>Resource Request</h5>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-6">
<form>
<div class="form-group">
<label for="checklistID">Checklist Number</label>
<input type="text" class="form-control" id="checklistID" name="checklistnum" placeholder="123456" disabled/>
</div>
<div class="form-group">
<label for="location_ID">CMPA Location</label>
<select class="form-control" id="location_ID" name="location">
<option selected>Select</option>
<option>Brazil</option>
<option>Canada</option>
<option>Mexico</option>
<option>SSA</option>
<option>United States</option>
</select>
</div>
</form>
</div>
<div class="col-md-6">
<form>
<div class="form-group">
<label for="support_id">CMPA Support Needed</label>
<select class="form-control" id="support_id" name="support">
<option selected>Select</option>
<option>Both</option>
<option>PMA - Financial Management</option>
<option>PMO - Project Administration</option>
</select>
</div>
<div class="form-group">
<label for="band_pma_id">Band (PMA)</label>
<select class="form-control" id="band_pma_id" name="band_pma">
<option selected>Select</option>
<option>4</option>
<option>5</option>
<option>6</option>
<option>7</option>
</select>
<small id="textInfo1" class="form-text text-muted">There is no B4 for US and CA - in progress.</small>
</div>
<div class="form-group">
<label for="band_pmo_id">Band (PMO)</label>
<select class="form-control" id="band_pmo_id" name="band_pmo">
<option selected>Select</option>
<option>4</option>
<option>5</option>
<option>6</option>
<option>7</option>
</select>
<small id="textInfo2" class="form-text text-muted"
>There is no B4 for US and CA - in progress.</small
>
</div>
<div class="mt-3">
<button class="button btn-navigate-form-step" type="button" step_number="2">Next</button>
<button class="button2 btn btn-outline-primary " type="submit">Save</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock content %}
Django/Python = views.py
def save_request(request):
#print(request.POST)
if request.method == 'POST':
context = {}
location = request.POST.get('location', None)
support = request.POST.get('support', None)
band_PMA = request.POST.get('bandPMA', None)
band_PMO = request.POST.get('bandPMO', None)
ippf = request.POST.get('ippf', None)
print(location, support, band_PMA, band_PMO, ippf)
return render(request, 'home/create-request.html', context=context)
That html defines many different forms. The first form has the location input element, the second form has the support input element, and so on.
Only one form can be submitted at a time. By default it is the first form on the page, so that's why you only see the location element.
I think you need to rewrite the html to have only one form.
That is because you have many tags.
You need to keep only one, the one wrapping your include, so do that :
<form action="{% url 'save_request' %}" id="checklistForm" name="checklistForm" enctype="multipart/form-data" method="POST">
{% csrf_token %}
<section id="step-1" class="form-step">
<div class="mt-3">
{% include 'home/1_resource-request.html' %}
</div>
</section>
</form>
and that :
HTML = home/1_resource-request.html
{% block stylesheets %}{% endblock stylesheets %} {% block content %}
<div class="pcoded-content">
<div class="pcoded-inner-content">
<div class="main-body">
<div class="page-wrapper">
<div class="row">
<div class="col-sm-12">
<div class="card">
<div class="card-header">
<h5>Resource Request</h5>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label for="checklistID">Checklist Number</label>
<input type="text" class="form-control" id="checklistID" name="checklistnum" placeholder="123456" disabled/>
</div>
<div class="form-group">
<label for="location_ID">CMPA Location</label>
<select class="form-control" id="location_ID" name="location">
<option selected>Select</option>
<option>Brazil</option>
<option>Canada</option>
<option>Mexico</option>
<option>SSA</option>
<option>United States</option>
</select>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="support_id">CMPA Support Needed</label>
<select class="form-control" id="support_id" name="support">
<option selected>Select</option>
<option>Both</option>
<option>PMA - Financial Management</option>
<option>PMO - Project Administration</option>
</select>
</div>
<div class="form-group">
<label for="band_pma_id">Band (PMA)</label>
<select class="form-control" id="band_pma_id" name="band_pma">
<option selected>Select</option>
<option>4</option>
<option>5</option>
<option>6</option>
<option>7</option>
</select>
<small id="textInfo1" class="form-text text-muted">There is no B4 for US and CA - in progress.</small>
</div>
<div class="form-group">
<label for="band_pmo_id">Band (PMO)</label>
<select class="form-control" id="band_pmo_id" name="band_pmo">
<option selected>Select</option>
<option>4</option>
<option>5</option>
<option>6</option>
<option>7</option>
</select>
<small id="textInfo2" class="form-text text-muted"
>There is no B4 for US and CA - in progress.</small
>
</div>
<div class="mt-3">
<button class="button btn-navigate-form-step" type="button" step_number="2">Next</button>
<button class="button2 btn btn-outline-primary " type="submit">Save</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock content %}

First Modal works, but second modal doesn't work

I have a table to display and in which i'm creating two buttons inside a column and each has its modals to be open.
Button 1 - "Update"; its modal is "modaledit" - doesn't work
Button 2 - "Generic Tech Skills"; its modal is "modalgts" - works fine
What I don't understand is that, when I Place the "modaledit's" code before "modalgts's" code. It works fine. Can somebody please try to help in this regard?
<thead class="text-center">
<tr>
<th>Employee ID</th>
<th>Name</th>
<th>Experience</th>
<th>Manager</th>
<th>Team</th>
<th>General Action</th>
<th>Enter Score</th>
</tr>
</thead>
<tbody id="myTable" class="text-center">
{% for row in employees %}
<tr>
<td>{{row.employee_id}}</td>
<td>{{row.name}}</td>
<td>{{row.experience}}</td>
<td>{{row.manager}}</td>
<td>{{row.team}}</td>
<td>
Edit
Generic Tech Skills
</td>
<td>
</td>
</tr>
</tbody>
<div id="modalgts{{row.employee_id}}" class="modal fade" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title text-dark"> Enter Generic Tech Skills Score </h4>
</div>
<div class="modal-body">
<form action="{{url_for('gts')}}" method="POST">
<div class="form-group">
<label>Employee ID</label>
<input type="Number" class="form-control " name="employee_id" value="{{row.employee_id}}" readonly>
</div>
<div class="form-group">
<label>Name</label>
<input type="text" class="form-control" name="name" value="{{row.name}}">
<div class="form-group">
<label>Experience</label>
<select type="text" class="form-control" name="experience" value="{{row.experience}}">
<option selected>{{row.experience}}</option>
<option>Less than 3 years</option>
<option>3 to 6 Years</option>
<option>6 to 9 years</option>
<option>More than 9 Years</option>
</select>
</div>
<div class="form-group">
<label>Manager</label>
<select type="text" class="form-control" name="manager" value="{{row.manager}}">
<option selected>{{row.manager}}</option>
<option>Ravindra</option>
<option>Subash</option>
<option>Subhandh</option>
<option>Amulya</option>
<option>Dinesh</option>
</select>
</div>
<div class="form-group">
<label>Team</label>
<select class="form-control" name="team" value="{{row.team}}">
<option selected>{{row.team}}</option>
<option>SAN Engineering</option>
<option>Cloud Engineering</option>
<option>Hypervisor Systems Engineering</option>
<option>Automation Engineering</option>
</select>
</div>
<div class="form-group">
<button class="btn btn-outline-primary" type="submit">Update</button>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
<!-- Modal Edit Employee-->
<div id="modaledit{{row.employee_id}}" class="modal hide fade" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title text-dark"> Update Employee </h4>
</div>
<div class="modal-body">
<form action="{{url_for('update')}}" method="POST">
<div class="form-group">
<label>Employee ID</label>
<input type="Number" class="form-control " name="employee_id" value="{{row.employee_id}}" readonly>
</div>
<div class="form-group">
<label>Name</label>
<input type="text" class="form-control" name="name" value="{{row.name}}">
<div class="form-group">
<label>Experience</label>
<select type="text" class="form-control" name="experience" value="{{row.experience}}">
<option selected>{{row.experience}}</option>
<option>Less than 3 years</option>
<option>3 to 6 Years</option>
<option>6 to 9 years</option>
<option>More than 9 Years</option>
</select>
</div>
<div class="form-group">
<label>Manager</label>
<select type="text" class="form-control" name="manager" value="{{row.manager}}">
<option selected>{{row.manager}}</option>
<option>Ravindra</option>
<option>Subash</option>
<option>Subhandh</option>
<option>Amulya</option>
<option>Dinesh</option>
</select>
</div>
<div class="form-group">
<label>Team</label>
<select class="form-control" name="team" value="{{row.team}}">
<option selected>{{row.team}}</option>
<option>SAN Engineering</option>
<option>Cloud Engineering</option>
<option>Hypervisor Systems Engineering</option>
<option>Automation Engineering</option>
</select>
</div>
<div class="form-group">
<button class="btn btn-outline-primary" type="submit">Update</button>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
{% endfor %}
</table>
</div>

Inserting data to SQL Server from HTML form using Python?

I am building an app using Flask and part of what I am currently working on is a registration form for new employees.
I am trying to get the registration forms to send to a SQL server table but I get 42000 pyodbc.ProgrammingError when I hit the submit button.
Here is the debugger page - Image
Here is the route and function in app.py
#app.route('/add-employee', methods=['GET', 'POST'])
def add_employee():
if request.method == "POST":
employee_id = request.form['employee_id']
first_name = request.form['first_name'],
surname = request.form['surname'],
job_title = request.form['job_title']
location = request.form['location'],
reports_to = request.form['reports_to'],
business_unit = request.form['business_unit'],
address_1 = request.form['address_1'],
address_2 = request.form['address_2'],
address_3 = request.form['address_3'],
eircode = request.form['eircode'],
mobile_number = request.form['mobile_number'],
alt_email_address = request.form['alt_email_address'],
pps_number = request.form['pps_number'],
part_orfulltime = request.form['part_orfulltime']
insert_query = '''INSERT INTO hr_employee_data (employee_id, first_name, surname, address_1, address_2, address_3, eircode, mobile_number, pps_number, alt_email_address, job_title, location, reports_to, business_unit, part_orfulltime) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);'''
cursor = cnxn.cursor()
cursor.execute(insert_query, (employee_id, first_name, surname, job_title, location, reports_to, business_unit, part_orfulltime, address_1 , address_2, address_3, eircode, mobile_number, alt_email_address, pps_number))
cnxn.commit()
return redirect (url_for('hr_homepage'))
return render_template("add-employee.html")
And the HTML form is here -
<form class="form-detail" action="{{ url_for('add_employee') }}" method="POST" id="myform">
<div class="form-left">
<h2>General Infomation</h2>
<div class="form-group">
<div class="form-row form-row-1">
<input type="text" name="first_name" id="first_name" class="input-text" placeholder="First Name" required>
</div>
<div class="form-row form-row-2">
<input type="text" name="surname" id="surname" class="input-text" placeholder="Surname" required>
</div>
<div class="form-row form-row-2">
<input type="text" name="job_title" id="job_title" class="input-text" placeholder="Job Title" required>
</div>
</div>
<div class="form-row">
<div class="form-row form-row-5">
<input type="text" name="pps_number" id="pps_number" class="input-text" placeholder="PPS Number" required>
</div>
<div class="form-row form-row-5">
<input type="text" name="employee_id" id="employee_id" class="input-text" placeholder="Employee ID" required>
</div>
</div>
<div class="form-row">
<i class="fas fa-warehouse"></i>
<select name="location">
<option class="option" value="location" selected disabled>Select Location</option>
<option class="option" value="Ballyhaunis">Ballyhaunis</option>
<option class="option" value="Kiltimagh">Kiltimagh</option>
<option class="option" value="Dublin">Dublin</option>
<option class="option" value="Store">Store</option>
<option class="option" value="On The Road">On The Road</option>
<option class="option" value="Home">Home</option>
</select>
<span class="select-btn">
<i class="fas fa-chevron-down"></i>
</span>
</div>
<div class="form-row">
<i class="fas fa-user-tie"></i>
<select name="reports_to">
<option value="position" selected disabled>Select Line Manager</option>
<option value="Manager A">Manager A</option>
<option value="Manager B">Manager B</option>
<option value="Manager C">Manager C</option>
<option value="Manager D">Manager D</option>
<option value="Manager E">Manager E</option>
<option value="Manager F">Manager F</option>
</select>
<span class="select-btn">
<i class="fas fa-chevron-down"></i>
</span>
</div>
<div class="form-group">
<div class="form-row form-row-5">
<select name="business_unit">
<option value="department" selected disabled>Select Department</option>
<option value="IT">IT</option>
<option value="Warehouse">Warehouse</option>
<option value="Purchasing">Purchasing</option>
<option value="Sales">Sales</option>
<option value="Maintenance">Maintenance</option>
<option value="Driver">Driver</option>
<option value="Management">Management</option>
</select>
<span class="select-btn">
<i class="fas fa-chevron-down"></i>
</span>
</div>
<div class="form-row form-row-5">
<select name="part_orfulltime">
<option value="time" selected disabled>Part/Full Time</option>
<option value="Part">Part Time</option>
<option value="Full">Full Time</option>
</select>
<span class="select-btn">
<i class="fas fa-chevron-down"></i>
</span>
</div>
</div>
</div>
<div class="form-right">
<h2>Contact Details</h2>
<div class="form-row-2">
<input type="text" name="address_1" class="input-text" id="address_1" placeholder="Street" required>
</div>
<div class="form-row-2">
<input type="text" name="address_2" class="input-text" id="address_2" placeholder="Town" required>
</div>
<div class="form-row-2">
<input type="text" name="address_3" class="input-text" id="address_3" placeholder="County" required>
</div>
<div class="form-row-2">
<input type="text" name="eircode" class="input-text" id="eircode" placeholder="Eircode" required>
</div>
<div class="form-group">
<div class="form-row form-row-2">
<input type="text" name="mobile_number" class="mobile_number" id="mobile_number" placeholder="Phone Number" required>
</div>
</div>
<div class="form-row">
<input type="text" name="alt_email_address" id="alt_email_address" class="input-text" required pattern="[^#]+#[^#]+.[a-zA-Z]{2,6}" placeholder="External Email">
</div>
<div class="form-row-last">
<input type="submit" name="register" class="register" value="Next">
</div>
</div>
</form>
The debugger says that each field is invalid data types but that shouldn't be the case as I have checked all those on MSSMS and nothing seems to be out of place?
I know I had one or two field names that needed to be fixed but I got all those too so out of ideas as to what might be wrong.
I looked for answers on other questions such as these -
Python Flask - Receive data from form with multiple textboxes
Recommendations for handling HTML form data using PHP - and may Python?
Python form drop down options populated by sql
However those questions don't seem to have what I am looking for. Can you see where I am going wrong?
Any advice (or previously posted solutions) would be mighty, thank you!
(Edit) P.S. Forgot to add in, if I change cursor to executemany, I get TypeError: ('Params must be in a list, tuple, or Row', 'HY000') as an error.

How to scrpay web which need to login in with python?

I want to write a spider for scrapying http://bbs.pinggu.org/. But signing in this web should select security question yourself and answer it.
part of the web codes is:
<p class="">
<img src="/static/images/yonghu.png" class="img1">
<img src="/static/images/yonghu-btn.png" class="img2">
<input type="text" id="username" name="username" placeholder="请输入用户名或者手机号"/>
<img src="/static/images/qingchu.png" class="fl-r">
</p>
Here need to input username.
<p class="">
<img src="/static/images/password.png" class="img1">
<img src="/static/images/password-btn.png" class="img2">
<input type="password" id="password" name="password" placeholder="请输入密码"/>
</p>
Here need to input password.
<p id="select_bady">
<img src="/static/images/anquan.png" class="img1">
<img src="/static/images/anquan-btn.png" class="img2">
<input type="hidden" id="questionid" name="questionid" value="0">
<!--<select id="questionid" name="questionid" style="right:200rem;">
<option value="0" >安全提问(未设置请忽略)</option>
<option value="1">母亲的名字</option>
<option value="2" >爷爷的名字</option>
<option value="3">父亲出生的城市</option>
<option value="4">你其中一位老师的名字</option>
<option value="5">你个人计算机的型号</option>
<option value="6">你最喜欢的餐馆名称</option>
<option value="7">驾驶执照最后四位数字</option>
</select>-->
<img src="/static/images/sanjiao_03.png" class="fl-sj">
</p>
<div class="select">
<div class="input_in">
<input type="text" value="安全提问(未设置请忽略)" />
</div>
<div class="city hide">
<ul>
<li v="0">安全提问(未设置请忽略)</li>
<li v="1">母亲的名字</li>
<li v="2">爷爷的名字</li>
<li v="3">父亲出生的城市</li>
<li v="4">你其中一位老师的名字</li>
<li v="5">你个人计算机的型号</li>
<li v="6">你最喜欢的餐馆名称</li>
<li v="7">驾驶执照最后四位数字</li>
</ul>
</div>
</div>
Here need to select the questionid from 0 to 7.
<p class="answer-k answer-bottom">
<img src="/static/images/mibao-tu.png" class="img1">
<img src="/static/images/mibao-tu-btn.png" class="img2">
<input type="text" name="answer" id="answer" placeholder="请输入问题答案">
</p>
Here need to input your answer of the selected questionid.
How to semulate to login in for webs like this.

Inserting into model from controller - Odoo 10

I need to create a form in my Odoo website so external users can register for a newsletter that is sent from my Odoo. So far I have created a website template and a controller. Thus far I have managed to display the form and do a Post as well as preload some additional many2many fields I need to fill the form but the data is not saved to the database when I hit submit. I have seen the website_portal and website_hr_recruitment models that have forms for people to fill out but I can't figure out where is the data saved and how it is done.
I include the following code from my own controller for reference:
My controller:
#http.route('/contact/register', type='http', auth='public', website='true')
def register(self, redirect=None, **post):
areas_interest = request.env['iica_contacts.area_interest'].sudo().search([])
topics_interest = request.env['iica_contacts.topic_interest'].sudo().search([])
products_interest = request.env['iica_contacts.products_interest'].sudo().search([])
countries = request.env['res.country'].sudo().search([])
if post:
return request.redirect('/contact/register/success')
values = {
'areas_interest' : areas_interest,
'topics_interest' : topics_interest,
'products_interest' : products_interest,
'countries' : countries,
}
return request.render("iica_contacts.register", values)
My Template:
<template id="register">
<t t-call="website.layout">
<t t-set="title">Register</t>
<form action="/contact/register" method="post">
<input type="hidden" name="csrf_token" t-att-value="request.csrf_token()"/>
<div class="container">
<div class="row">
<div class="col-md-6 form-group">
<label for="first_name">First name:</label>
<input type="text" name="first_name" class="form-control" t-att-value="first_name" />
</div>
<div class="col-md-6 form-group">
<label for="last_name">Last name:</label>
<input type="text" name="last_name" class="form-control" t-att-value="last_name" />
</div>
</div>
<div class="row">
<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">
<label class="control-label" for="country_id">Country:</label>
<select name="country_id" class="form-control">
<option value=""> -- Select country -- </option>
<t t-foreach="countries" t-as="country">
<option t-att-value="country.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" />
</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">Public</option>
<option value="2">Private</option>
<option value="3">ONG</option>
<option value="4">International Organization</option>
<option value="5">Financial</option>
<option value="6">Other</option>
</select>
</div>
</div>
<div class="row">
<div class="col-md-12 form-group">
<label class="control-label" for="language">Language:</label>
<select name="sector" class="form-control">
<option value=""> -- Select language -- </option>
<option value="1">Spanish</option>
<option value="2">English</option>
</select>
</div>
</div>
</div>
</div>
</div>
<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">
<label class="control-label" for="email">Email:</label>
<input type="email" name="email" class="form-control" />
</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" />
</div>
</div>
<div class="row">
<div class="col-md-12 form-group">
<label class="control-label" for="contact_preference">Contact preference:</label>
<select name="contact_preference" class="form-control">
<option value=""> -- Select preference -- </option>
<option value="1">Telephone</option>
<option value="2">Email</option>
<option value="3">Text message (SMS)</option>
<option value="2">All of the above</option>
<option value="2">Dont contact me</option>
</select>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<ul class="nav nav-tabs">
<li class="active">Products of interest</li>
<li>Areas of interest</li>
<li>Topics of interest</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">
<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">
<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">
<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 btn-primary">
Register <span class="fa fa-long-arrow-right" />
</button>
</div>
</div>
</div>
</form>
</t>
I will really appreciate any help.
After investigating and trying a lot of stuff I managed to do this the following way:
def register(self, redirect=None, **post):
areas_interest = request.env['iica_contacts.area_interest'].sudo().search([])
topics_interest = request.env['iica_contacts.topic_interest'].sudo().search([])
products_interest = request.env['iica_contacts.products_interest'].sudo().search([])
countries = request.env['res.country'].sudo().search([])
values = {
'areas_interest' : areas_interest,
'topics_interest' : topics_interest,
'products_interest' : products_interest,
'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)
The function that inserts to the model:
def _process_registration(self, post):
request.env['iica_contacts.contact'].create({
'name' : post.get('name'),
'company' : post.get('company'),
'country_id': post.get('country_id'),
'sector' : post.get('sector'),
'language' : post.get('language'),
'email' : post.get('email'),
'phone' : post.get('phone'),
'area_interest_ids' : self._process_many2may(request.httprequest.form.getlist('areas_interest')),
'product_interest_ids' : self._process_many2may(request.httprequest.form.getlist('products_interest')),
'topic_interest_ids' : self._process_many2may(request.httprequest.form.getlist('topics_interest')),
})

Categories