toggle docs statuses

remotes/origin/yandex
Bachurin Sergey 12 years ago
parent 95dac8b593
commit fefb2e88b7
  1. 3
      project/docs/urls.py
  2. 2
      project/docs/views/__init__.py
  3. 23
      project/docs/views/ajax.py
  4. 2
      project/myauth/views.py
  5. 3
      project/static/css/style.css
  6. 28
      project/static/js/docs/list.panels.js
  7. 5
      project/templates/docs/_base/base_list.html
  8. 2
      project/templates/docs/aktrabot/list.html
  9. 2
      project/templates/docs/aktsverki/list.html
  10. 2
      project/templates/docs/faktura/list.html
  11. 4
      project/templates/docs/invoice/list.html
  12. 2
      project/templates/docs/nakladn/list.html

@ -2,7 +2,7 @@
from django.conf.urls import *
from .views import (InvoiceViews, AktRabotViews, AktSverkiViews, DoverViews, PlatejkaViews, NakladnViews, FakturaViews)
from .views import getview, index, get_pair, get_invoices, get_tbl_items, get_client_by_invoice
from .views import getview, index, get_pair, get_invoices, get_tbl_items, get_client_by_invoice, toggle_doc_status
urlpatterns = patterns('docs.views',
@ -65,6 +65,7 @@ for name, klass in klasses:
url(r'^ajax_get_invoices/(?P<client_id>\d+)/$', get_invoices, name='ajax_get_invoices'),
url(r'^ajax_get_tbl_items/(?P<invoice_id>\d+)/$', get_tbl_items, name='ajax_get_tbl_items'),
url(r'^ajax_get_client_by_invoice/(?P<invoice_id>\d+)/$', get_client_by_invoice, name='ajax_get_client_by_invoice'),
url(r'^ajax_toggle_doc_status/(?P<doc_type>\w+)/(?P<doc_id>\d+)/(?P<doc_attr>\w+)/$', toggle_doc_status, name='ajax_get_client_by_invoice'),
)
# доп. обработчики: создать Документ по Счету

@ -11,7 +11,7 @@ from .dover import DoverViews
from .platejka import PlatejkaViews
from .nakladn import NakladnViews
from .faktura import FakturaViews
from .ajax import get_pair, get_invoices, get_tbl_items, get_client_by_invoice
from .ajax import get_pair, get_invoices, get_tbl_items, get_client_by_invoice, toggle_doc_status
#from .sfv import SfvViews

@ -55,4 +55,25 @@ def get_client_by_invoice(request, invoice_id):
invoice = Invoice.objects.get(pk=invoice_id)
return HttpResponse(json.dumps([invoice.client.id,]), mimetype='application/json')
return HttpResponse(json.dumps([invoice.client.id,]), mimetype='application/json')
def toggle_doc_status(request, doc_type, doc_id, doc_attr):
if not request.is_ajax() or request.method != 'POST':
return HttpResponseBadRequest()
model_ = get_model('docs', doc_type)
doc = model_.objects.get(pk=doc_id)
choices_ = doc._meta.get_field_by_name(doc_attr)[0].get_choices()
choices = [i[0] for i in choices_[1:]]
prev_val = getattr(doc, doc_attr)
try:
next_index = choices.index(prev_val) + 1
next_val = choices[next_index]
except:
next_val = choices[0]
setattr(doc, doc_attr, next_val)
doc.save()
next_text = dict(choices_)[next_val]
return HttpResponse(json.dumps([next_text, next_val]), mimetype='application/json')

@ -209,7 +209,7 @@ def login(request):
form_class = forms.LoginForm
form_prefix = 'login'
template_name = 'myauth/login.html'
success_url = 'customer_profile_view'
success_url = 'customer_index'
if request.method == 'POST':
form = form_class(data=request.POST, prefix=form_prefix)

@ -216,3 +216,6 @@ div.blockMsg { width: 100%; height: 100%; top: 0; left: 0; text-align: center; }
#menu ul li {display:inline;}
.preview {width:780px;height:500px;overflow:scroll;float:left;}
.list-col2 {float: left; width: 180px; margin-left: 16px; padding: 0 10px 10px 10px; border-left: solid 1px #797979;}
.doc_status1, .doc_statusFalse, .doc_statusfalse {color:red;}
.doc_status3, .doc_statusTrue, .doc_statustrue {color:green;}
.doc_status2 {color:blue;}

@ -6,7 +6,7 @@ $(document).ready(function() {
var doc_rows = $('tr.doc-row', table);
var panels = $('.doc-panel');
var row_pointer = $('#row_pointer');
// on mouse entering thead - hide pointer and panels, and show filters
$('thead', table).mouseenter(function() {
row_pointer.hide();
@ -54,4 +54,30 @@ $(document).ready(function() {
var panel_id = doc_panel_id_prefix + doc_id;
return $('#'+panel_id);
}
$('.toggle_doc_status').on('click', function(e){
e.preventDefault();
$this = $(this);
var doc_id = $this.closest("tr").data("id")
var doc_type = $this.data("doctype")
var doc_attr = $this.data("attr")
$.post('/my/docs/ajax_toggle_doc_status/' + doc_type + '/' + doc_id + '/' + doc_attr + '/', function(data){
$this.text(data[0]);
$this.removeClass('doc_status1');
$this.removeClass('doc_status2');
$this.removeClass('doc_status3');
$this.removeClass('doc_statustrue');
$this.removeClass('doc_statusTrue');
$this.removeClass('doc_statusFalse');
$this.removeClass('doc_statusfalse');
$this.addClass('doc_status' + data[1]);
})
});
$('.toggle_invoice_closed').on('click', function(e){
e.preventDefault();
alert(1);
});
});

@ -45,6 +45,7 @@
{% url url_prefix|add:'copy' id=obj.pk as url_copy %}
{% url url_prefix|add:'delete' id=obj.pk as url_delete %}
{% url url_prefix|add:'email' id=obj.pk as url_email %}
{% url url_prefix|add:'img' id=obj.pk as url_img %}
{% url url_prefix|add:'pdf' id=obj.pk as url_pdf %}
{% url url_prefix|add:'xls' id=obj.pk as url_xls %}
@ -52,9 +53,9 @@
{% url 'docs_nakladn_add_by_invoice' invoice_id=obj.pk as url_nakladn_by_invoice %}
{% url 'docs_faktura_add_by_invoice' invoice_id=obj.pk as url_faktura_by_invoice %}
<tr id="doc_row_{{ obj.pk }}" class="doc-row {% cycle 'even' 'odd' %}">
<tr id="doc_row_{{ obj.pk }}" class="doc-row {% cycle 'even' 'odd' %}" data-id="{{ obj.pk }}">
{% block table_obj_cells %}
<td><a href="{{ url_edit }}">{{ obj.doc_date|date:"d.m.Y" }}</a></td>
<td><a href="{{ url_img }}">{{ obj.doc_date|date:"d.m.Y" }}</a></td>
<td>{{ obj.doc_num }}</td>
<td>{{ obj.client.name }}</td>
<td>{{ obj.doc_sum|default:"---" }}</td>

@ -25,7 +25,7 @@
<td>{{ obj.invoice.doc_num }}</td>
<td>{{ obj.client.name }}</td>
<td>{{ obj.doc_sum|default:"---" }}</td>
<td>{{ obj.get_signed_status_display }}</td>
<td><a href="#" class="toggle_doc_status doc_status{{ obj.signed_status }}" data-doctype="aktrabot" data-attr="signed_status">{{ obj.get_signed_status_display }}</a></td>
{% endblock %}
{% block panel_copy %}

@ -19,7 +19,7 @@
<td>{{ obj.doc_num }}</td>
<td>{{ obj.client.name }}</td>
<td{% if obj.total_saldo < 0 %} style="color: red;"{% endif %}>{{ obj.total_saldo|default:"---" }}</td>
<td>{{ obj.get_signed_status_display }}</td>
<td><a href="#" class="toggle_doc_status doc_status{{ obj.signed_status }}" data-doctype="aktsverki" data-attr="signed_status">{{ obj.get_signed_status_display }}</a></td>
{% endblock %}
{# важно! tfoot (также как и thead), нужен в js для показа/скрытия боковой панели #}

@ -25,7 +25,7 @@
<td>{{ obj.invoice.doc_num }}</td>
<td>{{ obj.client.name }}</td>
<td>{{ obj.doc_sum|default:"---" }}</td>
<td>{{ obj.get_signed_status_display }}</td>
<td><a href="#" class="toggle_doc_status doc_status{{ obj.signed_status }}" data-doctype="faktura" data-attr="signed_status">{{ obj.get_signed_status_display }}</a></td>
{% endblock %}
{% block no-docs-create-new %}

@ -6,8 +6,8 @@
{% endblock %}
{% block table_obj_cells_extra %}
<td>{{ obj.get_paid_status_display }}</td>
<td>{{ obj.get_closed_status_display }}</td>
<td><a href="#" class="toggle_doc_status doc_status{{ obj.paid_status }}" data-doctype="invoice" data-attr="paid_status">{{ obj.get_paid_status_display }}</a></td>
<td><a href="#" class="toggle_doc_status doc_status{{ obj.closed_status }}" data-doctype="invoice" data-attr="closed_status">{{ obj.get_closed_status_display }}</a></td>
{% endblock %}
{% block panel_copy_extra %}

@ -25,7 +25,7 @@
<td>{{ obj.invoice.doc_num }}</td>
<td>{{ obj.client.name }}</td>
<td>{{ obj.doc_sum|default:"---" }}</td>
<td>{{ obj.get_signed_status_display }}</td>
<td><a href="#" class="toggle_doc_status doc_status{{ obj.signed_status }}" data-doctype="nakladn" data-attr="signed_status">{{ obj.get_signed_status_display }}</a></td>
{% endblock %}
{% block no-docs-create-new %}

Loading…
Cancel
Save