fixing js form for trade

This commit is contained in:
Cayo Puigdefabregas 2022-02-10 13:22:47 +01:00
parent cd16baaadb
commit f3ffcd89ca
4 changed files with 59 additions and 10 deletions

View file

@ -622,11 +622,29 @@ class DataWipeForm(NewActionForm):
class TradeForm(NewActionForm):
supplier = StringField(u'Supplier', [validators.DataRequired()],
description="Please enter the supplier's email address")
receiver = StringField(u'Receiver', [validators.DataRequired()],
description="Please enter the receiver's email address")
supplier = StringField(u'Supplier', [validators.Optional()],
description="Please enter the supplier's email address",
render_kw={'data-email': ""})
receiver = StringField(u'Receiver', [validators.Optional()],
description="Please enter the receiver's email address",
render_kw={'data-email': ""})
confirm = BooleanField(u'Confirm', [validators.Optional()],
default=True,
description="I need confirmation from the other user for every device and document.")
code = StringField(u'Code', [validators.Optional()],
description="If you don't need confirm, you need put a code for trace the user in the statistics.")
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.supplier.render_kw['data-email'] = g.user.email
self.receiver.render_kw['data-email'] = g.user.email
def validate(self, extra_validators=None):
is_valid = super().validate(extra_validators)
if not self.confirm and not self.code:
self.code.errors = ["If you don't want confirm, you need a code"]
is_valid = False
return is_valid

View file

@ -1,4 +1,5 @@
import flask
from flask import g
from flask import Blueprint, request, url_for
from flask.views import View
from flask_login import current_user, login_required
@ -38,7 +39,12 @@ class DeviceListMix(View):
form_new_action = NewActionForm(lot=lot.id)
form_new_allocate = AllocateForm(lot=lot.id)
form_new_datawipe = DataWipeForm(lot=lot.id)
form_new_trade = TradeForm(lot=lot.id)
form_new_trade = TradeForm(
lot=lot.id,
receiver=g.user.email,
supplier=g.user.email,
type='Trade'
)
else:
devices = Device.query.filter(
Device.owner_id == current_user.id).filter(
@ -47,7 +53,11 @@ class DeviceListMix(View):
form_new_action = NewActionForm()
form_new_allocate = AllocateForm()
form_new_datawipe = DataWipeForm()
form_new_trade = TradeForm()
form_new_trade = TradeForm(
receiver=g.user.email,
supplier=g.user.email,
type='Trade'
)
action_devices = form_new_action.devices.data
list_devices = []
@ -301,6 +311,7 @@ class NewActionView(View):
def dispatch_request(self):
self.form = self.form_class()
# import pdb; pdb.set_trace()
if self.form.validate_on_submit():
instance = self.form.save()

View file

@ -63,6 +63,27 @@ function removeTag() {
}
}
function newTrade(action) {
var title = "Trade "
var receiver = $("#receiver").data("email");
var supplier = $("#supplier").data("email");
if (action == 'supplier') {
title = 'Trade Incoming';
$("#receiver").attr('disabled', 'disabled');
$("#supplier").prop('disabled', false);
$("#supplier").val('');
$("#receiver").val(receiver);
} else if (action == 'receiver') {
title = 'Trade Outgoing';
$("#supplier").attr('disabled', 'disabled');
$("#receiver").prop('disabled', false);
$("#receiver").val('');
$("#supplier").val(supplier);
}
$("#tradeLotModalModal #title-action").html(title);
$("#activeTradeModal").click();
}
function newAction(action) {
$("#actionModal #type").val(action);
$("#actionModal #title-action").html(action);

View file

@ -49,6 +49,7 @@
Lots
<span class="caret"></span>
</button>
<span class="d-none" id="activeTradeModal" data-bs-toggle="modal" data-bs-target="#tradeLotModal"></span>
<ul class="dropdown-menu" aria-labelledby="btnLots">
{% if lot and lot.is_temporary and not lot.devices %}
<li>
@ -74,15 +75,13 @@
</li>
{% if lot.is_temporary %}
<li>
<a href="javascript:void()" class="dropdown-item"
data-bs-toggle="modal" data-bs-target="#tradeLotModal">
<a href="javascript:newTrade('supplier')" class="dropdown-item">
<i class="bi bi-plus"></i>
Add supplier
</a>
</li>
<li>
<a href="javascript:void()" class="dropdown-item"
data-bs-toggle="modal" data-bs-target="#tradeLotModal">
<a href="javascript:newTrade('receiver')" class="dropdown-item">
<i class="bi bi-plus"></i>
Add receiver
</a>