#ARC-15 Add sortable ajax view

remotes/origin/setup
Mukhtar 10 years ago
parent eb496b28c4
commit 205abceb2b
  1. 32
      projects/templates/comparison.html
  2. 2
      projects/urls.py
  3. 36
      projects/views.py

@ -29,10 +29,10 @@
</thead>
<tbody>
{% for cand in object.candidates.all %}
<tr style="cursor:pointer" class="items[]_{{ cand.pk }}" data-class="items[]_{{ cand.pk }}">
<td>{{ forloop.counter }}</td>
<tr style="cursor:move;" class="items[]_{{ cand.pk }}" data-class="items[]_{{ cand.pk }}">
<td>{{ cand.position }}</td>
<td>
{{ cand.answer.contractor.get_full_name }} {{ cand.answer.contractor.username }}
{{ cand.answer.author.username }}
</td>
<td>{{ cand.answer.budget }} <i class="fa fa-rub"></i></td>
@ -69,8 +69,14 @@
<td>
<div class="tableButtons disTab">
<div class="btnTab btnTab1"></div>
<a href="/test">
<div class="btnTab btnTab2"></div>
</a>
<a href="/delete">
<div class="btnTab btnTab3"></div>
</a>
<div class="btnTab btnTab4"></div>
</div>
</td>
@ -102,10 +108,28 @@
update: function () {
var serial = $('#compTable tbody').sortable('serialize', {key: 'items[]', attribute: 'data-class'});
console.log(serial);
$.ajax({
url: '/projects/candidate/comparison/sort/',
method: 'POST',
beforeSend: function (xhr) {
xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'));
},
data: serial,
dataType: 'json',
success: function (json) {
console.log(json);
},
error: function (jqXHR, e) {
console.log(jqXHR);
console.log(e);
}
});
},
helper: fixHelper,
}).disableSelection();;
}).disableSelection();
;
});
</script>
{% endblock %}

@ -3,6 +3,7 @@ from django.views.generic import TemplateView
from .views import (
add_candidate,
sort_candidates,
contractor_portfolio_create,
ContractorPortfolioTrashView,
ContractorPortfolioUpdateView,
@ -34,6 +35,7 @@ urlpatterns = [
urls.url(r'^portfolio/(?P<pk>\d+)/edit/$', ContractorPortfolioUpdateView.as_view(), name='contractor-portfolio-edit'),
urls.url(r'^candidate/add/(?P<answer_id>(\d+))/(?P<project_id>(\d+))/$', add_candidate, name='add-candidate'),
urls.url(r'^candidate/comparison/sort/$', sort_candidates, name='comparison-sort'),
urls.url(r'^candidate/comparison/(?P<pk>\d+)/$', ProjectComparisonView.as_view(), name='comparison'),
urls.url(r'^offerorder/(?P<answer_id>(\d+))/(?P<project_id>(\d+))/$', OfferOrderView.as_view(), name='offer-order'),

@ -11,7 +11,10 @@ from django.views.generic import ListView, DetailView, CreateView, View, UpdateV
from django.views.generic.base import ContextMixin
from pprint import pprint, pformat
import json
import pydash as _; _.map = _.map_; _.filter = _.filter_
import pydash as _;
_.map = _.map_;
_.filter = _.filter_
import re
from .mixins import LastAccessMixin
@ -57,8 +60,10 @@ class ProjectDetailWithContractorAnswerView(BaseMixin, View):
team = None
answer = None
try: team = contractor.team
except Team.DoesNotExist: pass
try:
team = contractor.team
except Team.DoesNotExist:
pass
if team:
answer = team.answers.first()
@ -255,7 +260,8 @@ class CustomerProjectCreateView(BaseMixin, View):
return render(request, self.template_name, context)
def post(self, request, *args, **kwargs):
form = self.form_class(request.POST, request=request) # Passing `request.FILES` seems unnecessary here. Files are added manually below
form = self.form_class(request.POST,
request=request) # Passing `request.FILES` seems unnecessary here. Files are added manually below
form.is_valid()
realty = form.cleaned_data.get('realty')
@ -350,7 +356,8 @@ class CustomerProjectEditView(BaseMixin, View):
if form.is_valid() and realty_form.is_valid():
project = form.save(commit=False)
project.customer = request.user
project.files = form.cleaned_data.get('files') # TODO: Should we somehow get rid of this explicit assignment?
project.files = form.cleaned_data.get(
'files') # TODO: Should we somehow get rid of this explicit assignment?
project.save()
form.save_m2m()
@ -496,6 +503,22 @@ def add_candidate(request, answer_id, project_id):
return HttpResponseRedirect(reverse('projects:detail', args=[project_id]))
def sort_candidates(request):
if request.is_ajax():
items = request.POST.getlist('items[]')
i = 1
for item in items:
candidate = Candidate.objects.get(pk=item)
candidate.position = i
candidate.save()
i += 1
data = {
'success': 'ok',
}
return HttpResponse(json.dumps(data), content_type='application/json')
class OfferOrderView(View):
template_name = 'chattest.html'
@ -537,9 +560,10 @@ class ContractorPortfolioUpdateView(UpdateView):
from django.views.generic import DeleteView
class PortfolioDelete(DeleteView):
model = Portfolio
success_url = reverse_lazy('users:contractor-profile')
# import code; code.interact(local=dict(globals(), **locals()))

Loading…
Cancel
Save