Browse Source

added vendor autocorrect

funding-tag
Holger Frey 5 years ago
parent
commit
c1de269705
  1. 3
      ordr3/events.py
  2. 9
      ordr3/schemas/orders.py
  3. 37
      ordr3/static/script.js
  4. 2
      ordr3/templates/deform/textinput.pt
  5. 2
      ordr3/templates/deform/textinput_disabled.pt
  6. 4
      ordr3/templates/orders/view.jinja2
  7. 23
      ordr3/views/orders.py
  8. 4
      ordr3/views/root.py

3
ordr3/events.py

@ -95,7 +95,8 @@ def notify_user(event): @@ -95,7 +95,8 @@ def notify_user(event):
@subscriber(BeforeRender)
def add_global(event):
request = event["request"]
event.rendering_val["new_user_badge"] = request.repo.count_new_users()
if not request.is_xhr:
event.rendering_val["new_user_badge"] = request.repo.count_new_users()
def emit(request, event):

9
ordr3/schemas/orders.py

@ -63,7 +63,8 @@ class OrderItem(colander.Schema): @@ -63,7 +63,8 @@ class OrderItem(colander.Schema):
widget=deform.widget.TextInputWidget(
item_css_class="row",
label_css_class="col-sm-3 col-form-label o3-form-copy",
css_class="col-sm-9",
css_class="col-sm-9 o3-vendor",
attributes={"data-url": "",}, # noqa: E231
),
)
package_size = colander.SchemaNode(
@ -192,4 +193,10 @@ class EditOrderSchema(CSRFSchema): @@ -192,4 +193,10 @@ class EditOrderSchema(CSRFSchema):
label_css_class="col-sm-3 col-form-label",
css_class="col-sm-9",
)
# set the url for vendor check
vendor_url = request.resource_url(request.context.__parent__, "vendor")
vendor_widget = form["item"]["vendor"].widget
vendor_widget.attributes["data-url"] = vendor_url
return form

37
ordr3/static/script.js

@ -112,7 +112,6 @@ $(function() { @@ -112,7 +112,6 @@ $(function() {
$temp.val($(target).html()).select();
document.execCommand("copy");
$temp.remove();
//$(target).fadeOut( 100 ).delay( 100 ).fadeIn( 100 );
$(target).fadeTo(100, 0).delay(100).fadeTo(100, 1);
});
@ -136,7 +135,6 @@ $(function() { @@ -136,7 +135,6 @@ $(function() {
// set status to multiple items
var target = $(event.delegateTarget);
var selects = $(".o3-data-edit-multiple select");
console.log(target.attr("data-multi-value"))
selects.val(target.attr("data-multi-value"))
});
@ -178,7 +176,40 @@ $(function() { @@ -178,7 +176,40 @@ $(function() {
});
$('label.o3-form-copy').attr('title', 'copy to clipboard');
$("label.o3-form-copy").attr("title", "copy to clipboard");
$(".o3-vendor").on("blur", function(event) {
// autocorrect vendor
var target = $(event.delegateTarget);
var input_value = target.val()
var url = target.attr("data-url")
$.post( url, { vendor: input_value }, function( data ) {
var corrected_name = data["name"];
if (data["found"] && (corrected_name != input_value)) {
info = $('.o3-vendor-cancel')
if( info.length) {
info.find("a").text('"' + input_value + '"')
} else {
info = $('<span>');
info.addClass("o3-vendor-cancel col-sm-9 offset-sm-3 small text-secondary");
info.html('Use <a href="#">"' + input_value + '"</a> instead.');
target.parent().append(info);
link = info.find("a");
link.on("click", function() {
var link_text = link.text();
var vendor = link_text.substring(1, link_text.length-1);
target.val(vendor)
info.remove()
return false;
});
}
target.val(corrected_name);
} else {
var info = $('.o3-vendor-cancel');
info.remove();
}
});
});
var infinite = new Waypoint.Infinite({
element: $('.infinite-container')[0]

2
ordr3/templates/deform/textinput.pt

@ -9,7 +9,7 @@ @@ -9,7 +9,7 @@
tal:omit-tag="">
<input type="text" name="${name}" value="${cstruct}"
tal:attributes="required required|None;
class string: form-control ${css_class or ''} ${'is-invalid' if field.error else ''}
class string: form-control ${css_class or ''} ${'is-invalid' if field.error else ''};
style style;
attributes|field.widget.attributes|{};"
id="${oid}"/>

2
ordr3/templates/deform/textinput_disabled.pt

@ -7,7 +7,7 @@ @@ -7,7 +7,7 @@
"
tal:omit-tag="">
<input type="text" name="${name}" value="${cstruct}"
tal:attributes="class string: form-control ${css_class or ''} ${'is-invalid' if field.error else ''}
tal:attributes="class string: form-control ${css_class or ''} ${'is-invalid' if field.error else ''};
style style"
id="${oid}"
readonly="readonly"/>

4
ordr3/templates/orders/view.jinja2

@ -36,10 +36,10 @@ @@ -36,10 +36,10 @@
<p class="mt-4 mb-4">&nbsp;</p>
<p>
{% if request.has_permission("reorder", context) %}
<a href="{{ context|resource_url('reorder') }}" class="btn btn-outline-primary">Reorder</a>
<a href="{{ context|resource_url('reorder') }}" class="btn btn-outline-primary">Reorder Item</a>
{% endif %}
{% if request.has_permission("delete", context) %}
<a href="{{ context|resource_url('delete') }}" class="btn btn-outline-danger">Delete</a>
<a href="{{ context|resource_url('delete') }}" class="btn btn-outline-danger">Delete Order</a>
{% endif %}
<a href="{{ context.__parent__|resource_url() }}" class="btn btn-outline-secondary o3-back">Go Back</a>
</p>

23
ordr3/views/orders.py

@ -238,6 +238,21 @@ def batch_edit_confirm(context, request): @@ -238,6 +238,21 @@ def batch_edit_confirm(context, request):
return HTTPFound(request.resource_url(context))
@view_config(
context="ordr3:resources.OrderList",
name="vendor",
permission="add",
request_method="POST",
xhr=True,
require_csrf=False,
renderer="json",
)
def check_vendor_name(context, request):
vendor = request.POST.get("vendor", "")
result = services.check_vendor_name(request.repo, vendor)
return result._asdict()
@view_config(
context="ordr3:resources.Order",
permission="view",
@ -251,8 +266,8 @@ def view_order(context, request): @@ -251,8 +266,8 @@ def view_order(context, request):
@view_config(
context="ordr3:resources.Order",
permission="edit",
name="edit",
permission="edit",
request_method="GET",
renderer="ordr3:templates/orders/edit.jinja2",
)
@ -292,8 +307,8 @@ def edit_order(context, request): @@ -292,8 +307,8 @@ def edit_order(context, request):
@view_config(
context="ordr3:resources.Order",
permission="edit",
name="edit",
permission="edit",
request_method="POST",
renderer="ordr3:templates/orders/edit.jinja2",
)
@ -351,8 +366,8 @@ def do_edit_order(context, request): @@ -351,8 +366,8 @@ def do_edit_order(context, request):
@view_config(
context="ordr3:resources.Order",
permission="delete",
name="delete",
permission="delete",
request_method="GET",
renderer="ordr3:templates/orders/delete.jinja2",
)
@ -362,8 +377,8 @@ def delete_order(context, request): @@ -362,8 +377,8 @@ def delete_order(context, request):
@view_config(
context="ordr3:resources.Order",
permission="delete",
name="delete",
permission="delete",
request_method="POST",
)
def delete_confirmed(context, request):

4
ordr3/views/root.py

@ -9,8 +9,8 @@ from pyramid.view import ( @@ -9,8 +9,8 @@ from pyramid.view import (
from pyramid.httpexceptions import HTTPFound
@forbidden_view_config()
@notfound_view_config()
# @forbidden_view_config()
# @notfound_view_config()
@view_config(
context="ordr3:resources.Root", permission="view",
)

Loading…
Cancel
Save