|
|
|
@ -1,19 +1,26 @@
|
|
|
|
|
|
|
|
|
|
from wtforms import (
|
|
|
|
|
BooleanField,
|
|
|
|
|
validators,
|
|
|
|
|
FloatField
|
|
|
|
|
)
|
|
|
|
|
from wtforms.fields.choices import RadioField
|
|
|
|
|
from wtforms.fields.form import FormField
|
|
|
|
|
from wtforms.form import Form
|
|
|
|
|
from wtforms.validators import ValidationError
|
|
|
|
|
|
|
|
|
|
from changedetectionio.forms import processor_text_json_diff_form
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class RestockSettingsForm(Form):
|
|
|
|
|
# Could be both, "in_stock_only" either
|
|
|
|
|
in_stock_only = BooleanField('Only trigger when product goes BACK to in-stock', default=True)
|
|
|
|
|
price_change_min = FloatField('Minimum amount to trigger notification', [validators.Optional()],
|
|
|
|
|
in_stock_processing = RadioField(label='Re-stock detection', choices=[
|
|
|
|
|
('in_stock_only', "In Stock only (Out Of Stock -> In Stock only)"),
|
|
|
|
|
('all_changes', "Any availability changes"),
|
|
|
|
|
('off', "Off, don't follow availability/restock"),
|
|
|
|
|
], default="in_stock_only")
|
|
|
|
|
|
|
|
|
|
price_change_min = FloatField('Below price to trigger notification', [validators.Optional()],
|
|
|
|
|
render_kw={"placeholder": "No limit", "size": "10"})
|
|
|
|
|
price_change_max = FloatField('Maximum amount to trigger notification', [validators.Optional()],
|
|
|
|
|
price_change_max = FloatField('Above price to trigger notification', [validators.Optional()],
|
|
|
|
|
render_kw={"placeholder": "No limit", "size": "10"})
|
|
|
|
|
price_change_threshold_percent = FloatField('Threshold in % for price changes since the original price', validators=[
|
|
|
|
|
|
|
|
|
@ -24,10 +31,8 @@ class RestockSettingsForm(Form):
|
|
|
|
|
follow_price_changes = BooleanField('Follow price changes', default=True)
|
|
|
|
|
|
|
|
|
|
class processor_settings_form(processor_text_json_diff_form):
|
|
|
|
|
|
|
|
|
|
restock_settings = FormField(RestockSettingsForm)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def extra_tab_content(self):
|
|
|
|
|
return 'Restock & Price Detection'
|
|
|
|
|
|
|
|
|
@ -36,35 +41,32 @@ class processor_settings_form(processor_text_json_diff_form):
|
|
|
|
|
{% from '_helpers.html' import render_field, render_checkbox_field, render_button %}
|
|
|
|
|
<script>
|
|
|
|
|
$(document).ready(function () {
|
|
|
|
|
toggleOpacity('#follow_price_changes', '.price-change-minmax', true);
|
|
|
|
|
toggleOpacity('#restock_settings-follow_price_changes', '.price-change-minmax', true);
|
|
|
|
|
});
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<fieldset id="restock-fieldset-price-group">
|
|
|
|
|
<div class="pure-control-group">
|
|
|
|
|
<fieldset class="pure-group">
|
|
|
|
|
{{ render_checkbox_field(form.restock_settings.in_stock_only) }}
|
|
|
|
|
<span class="pure-form-message-inline">Only trigger re-stock notification when page changes from <strong>out of stock</strong> to <strong>back in stock</strong></span>
|
|
|
|
|
<fieldset class="pure-group inline-radio">
|
|
|
|
|
{{ render_field(form.restock_settings.in_stock_processing) }}
|
|
|
|
|
</fieldset>
|
|
|
|
|
<fieldset class="pure-group">
|
|
|
|
|
{{ render_checkbox_field(form.restock_settings.follow_price_changes) }}
|
|
|
|
|
<span class="pure-form-message-inline">Changes in price should trigger a notification</span>
|
|
|
|
|
<br>
|
|
|
|
|
<span class="pure-form-message-inline">When OFF - Only care about restock detection</span>
|
|
|
|
|
</fieldset>
|
|
|
|
|
<fieldset class="pure-group price-change-minmax">
|
|
|
|
|
{{ render_field(form.restock_settings.price_change_min, placeholder=watch.get('restock', {}).get('price')) }}
|
|
|
|
|
<span class="pure-form-message-inline">Minimum amount, only trigger a change when the price is less than this amount.</span>
|
|
|
|
|
<span class="pure-form-message-inline">Minimum amount, Trigger a change/notification when the price drops <i>below</i> this value.</span>
|
|
|
|
|
</fieldset>
|
|
|
|
|
<fieldset class="pure-group price-change-minmax">
|
|
|
|
|
{{ render_field(form.restock_settings.price_change_max, placeholder=watch.get('restock', {}).get('price')) }}
|
|
|
|
|
<span class="pure-form-message-inline">Maximum amount, only trigger a change when the price is more than this amount.</span>
|
|
|
|
|
<span class="pure-form-message-inline">Maximum amount, Trigger a change/notification when the price rises <i>above</i> this value.</span>
|
|
|
|
|
</fieldset>
|
|
|
|
|
<fieldset class="pure-group price-change-minmax">
|
|
|
|
|
{{ render_field(form.restock_settings.price_change_threshold_percent) }}
|
|
|
|
|
<span class="pure-form-message-inline">Price must change more than this % to trigger a change.</span><br>
|
|
|
|
|
<span class="pure-form-message-inline">Price must change more than this % to trigger a change since the first check.</span><br>
|
|
|
|
|
<span class="pure-form-message-inline">For example, If the product is $1,000 USD originally, <strong>2%</strong> would mean it has to change more than $20 since the first check.</span><br>
|
|
|
|
|
</fieldset>
|
|
|
|
|
</div>
|
|
|
|
|
</fieldset>
|
|
|
|
|
"""
|
|
|
|
|
"""
|
|
|
|
|