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 django.conf.urls import *
from .views import (InvoiceViews, AktRabotViews, AktSverkiViews, DoverViews, PlatejkaViews, NakladnViews, FakturaViews) 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', 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_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_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_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 .platejka import PlatejkaViews
from .nakladn import NakladnViews from .nakladn import NakladnViews
from .faktura import FakturaViews 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 #from .sfv import SfvViews

@ -55,4 +55,25 @@ def get_client_by_invoice(request, invoice_id):
invoice = Invoice.objects.get(pk=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_class = forms.LoginForm
form_prefix = 'login' form_prefix = 'login'
template_name = 'myauth/login.html' template_name = 'myauth/login.html'
success_url = 'customer_profile_view' success_url = 'customer_index'
if request.method == 'POST': if request.method == 'POST':
form = form_class(data=request.POST, prefix=form_prefix) 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;} #menu ul li {display:inline;}
.preview {width:780px;height:500px;overflow:scroll;float:left;} .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;} .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 doc_rows = $('tr.doc-row', table);
var panels = $('.doc-panel'); var panels = $('.doc-panel');
var row_pointer = $('#row_pointer'); var row_pointer = $('#row_pointer');
// on mouse entering thead - hide pointer and panels, and show filters // on mouse entering thead - hide pointer and panels, and show filters
$('thead', table).mouseenter(function() { $('thead', table).mouseenter(function() {
row_pointer.hide(); row_pointer.hide();
@ -54,4 +54,30 @@ $(document).ready(function() {
var panel_id = doc_panel_id_prefix + doc_id; var panel_id = doc_panel_id_prefix + doc_id;
return $('#'+panel_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:'copy' id=obj.pk as url_copy %}
{% url url_prefix|add:'delete' id=obj.pk as url_delete %} {% 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:'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:'pdf' id=obj.pk as url_pdf %}
{% url url_prefix|add:'xls' id=obj.pk as url_xls %} {% 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_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 %} {% 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 %} {% 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.doc_num }}</td>
<td>{{ obj.client.name }}</td> <td>{{ obj.client.name }}</td>
<td>{{ obj.doc_sum|default:"---" }}</td> <td>{{ obj.doc_sum|default:"---" }}</td>

@ -25,7 +25,7 @@
<td>{{ obj.invoice.doc_num }}</td> <td>{{ obj.invoice.doc_num }}</td>
<td>{{ obj.client.name }}</td> <td>{{ obj.client.name }}</td>
<td>{{ obj.doc_sum|default:"---" }}</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 %} {% endblock %}
{% block panel_copy %} {% block panel_copy %}

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

@ -25,7 +25,7 @@
<td>{{ obj.invoice.doc_num }}</td> <td>{{ obj.invoice.doc_num }}</td>
<td>{{ obj.client.name }}</td> <td>{{ obj.client.name }}</td>
<td>{{ obj.doc_sum|default:"---" }}</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 %} {% endblock %}
{% block no-docs-create-new %} {% block no-docs-create-new %}

@ -6,8 +6,8 @@
{% endblock %} {% endblock %}
{% block table_obj_cells_extra %} {% block table_obj_cells_extra %}
<td>{{ obj.get_paid_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>{{ obj.get_closed_status_display }}</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 %} {% endblock %}
{% block panel_copy_extra %} {% block panel_copy_extra %}

@ -25,7 +25,7 @@
<td>{{ obj.invoice.doc_num }}</td> <td>{{ obj.invoice.doc_num }}</td>
<td>{{ obj.client.name }}</td> <td>{{ obj.client.name }}</td>
<td>{{ obj.doc_sum|default:"---" }}</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 %} {% endblock %}
{% block no-docs-create-new %} {% block no-docs-create-new %}

Loading…
Cancel
Save