<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
{% extends "developerpage.html" %}

{% block content %}

<h1>Please enter your product information:</h1>
<form method="POST" action="/developer/newProduct">
	Dataset:<br>
	<select class="form-control" name="product_dataset" id='id_product_dataset' placeholder='Select Dataset' required>
		<option value="" style="display:none;"></option>
		<option value="volvo">Volvo</option>
		<option value="saab">Saab</option>
		<option value="husqvarna">Husqvarna</option>
	</select><br>
	Product URL:<br>
	<input class="form-control" name="product_url" id='id_product_url' type='url' placeholder='Enter the product url' size="60" required/><br>
	Team:<br>
	<input class="form-control" name="product_team" id='id_product_team' placeholder='Enter the team name' size="60" required/><br>
	Product Name:<br>
	<input class="form-control" name="product_name" id='id_product_name' placeholder='Enter the product name' size="60" required/><br>
	Product Version:<br>
	<input class="form-control" name="product_version" id='id_product_version' placeholder="Product version number" size="25" required/><br>
	Instructions URL:<br>
	<input class="form-control" name="product_instructions" id='id_product_instructions' type='url' placeholder='Enter the url for the product instructions' size="60" required/><br>
	<br>
	<input class="btn btn-primary" type="submit" value="Submit"/>
	{% csrf_token %}
</form>

{% endblock %}