#ARC-14 Fixes

remotes/origin/PR-39
ArturBaybulatov 10 years ago
parent b28524cef4
commit d87f61fe7e
  1. 64
      projects/templates/project_detail.html
  2. 4
      projects/urls.py
  3. 75
      projects/views.py

@ -244,7 +244,7 @@
<p>Опубликован: {{ answer.created|date:'M d, Y' }}</p>
</div>
<div class="col-lg-3 retts">
<form action="{% url 'projects:contractor-reject-project-answer' pk=project.pk answer_id=answer.pk %}" method="POST" novalidate>
<form action="{% url 'projects:contractor-reject-project-answer' pk=answer.pk %}" method="POST" novalidate>
{% csrf_token %}
<input type="hidden" name="next" value="{{ request.path }}">
<a href="#" onclick="$(this).closest('form').submit(); return false" class="candLink candLink3">отказ</a>
@ -321,7 +321,7 @@
</div>
</div>
{% else %}
<form action="{% url 'projects:detail' pk=project.pk %}" method="POST" enctype="multipart/form-data" novalidate class="-project-answer-form" s--tyle="display: none">
<form action="{% url 'projects:detail' pk=project.pk %}" method="POST" enctype="multipart/form-data" novalidate class="proj_answ_form -project-answer-form" s--tyle="display: none">
{% csrf_token %}
<input type="hidden" name="next" value="{% url 'projects:detail' pk=project.pk %}">
<input type="hidden" name="answer_as_team" value="{% if answer_as_team %}on{% endif %}">
@ -333,28 +333,28 @@
</div>
<div class="polsF1 disTab">
<div class="col-lg-3">
<div class="col-lg-4">
<div class="textAreaBlock2 text-nn box-sizing disTab">
<p>Стоимость <span style="color: red">{{ form.budget.errors.as_text }}</span></p>
<p class="titleResF1">Стоимость <span style="color: red">{{ form.budget.errors.as_text }}</span></p>
<input type="text" class="box-sizing" name="{{ form.budget.html_name }}" value="{{ form.budget.value }}">
</div>
</div>
<div class="col-lg-3">
<div class="col-lg-2">
<div class="textAreaBlock2 text-nn box-sizing disTab">
<p><span style="color: red">{{ form.currency.errors.as_text }}</span></p>
{{ form.currency }}
</div>
</div>
<div class="col-lg-3">
<div class="col-lg-4">
<div class="textAreaBlock2 text-nn box-sizing disTab">
<p>Срок <span style="color: red">{{ form.term.errors.as_text }}</span></p>
<input type="text" class="box-sizing" name="{{ form.term.html_name }}" value="{{ form.term.value }}">
</div>
</div>
<div class="col-lg-3">
<div class="col-lg-2">
<div class="textAreaBlock2 text-nn box-sizing disTab">
<p><span style="color: red">{{ form.term_type.errors.as_text }}</span></p>
{{ form.term_type }}
@ -363,7 +363,7 @@
</div>
<div class="polsF1 disTab searchF1">
<div class="col-lg-9">
<div class="col-lg-12">
<div class="textAreaBlock2 text-nn box-sizing disTab">
<p>Текст <span style="color: red">{{ form.text.errors.as_text }}</span></p>
<textarea name="{{ form.text.html_name }}" id="text-new">{{ form.text.value }}</textarea>
@ -383,20 +383,24 @@
</div>
<div class="polsF1 disTab searchF1">
<div class="col-lg-9">
<div class="col-lg-12 port_add_bl">
<p>Портфолио <span style="color: red">{{ form.portfolios.errors.as_text }}</span></p>
<ul>
{% for p in form.portfolios.field.queryset.all %}
<li>
<input
type="checkbox"
name="{{ form.portfolios.html_name }}"
value="{{ p.pk }}"
{% if p.pk|str in form.portfolios.value %}checked{% endif %}
class="answer-portfolio-select">
<label>
<input
type="checkbox"
name="{{ form.portfolios.html_name }}"
value="{{ p.pk }}"
{% if p.pk|str in form.portfolios.value %}checked{% endif %}
class="answer-portfolio-select">
<span></span>
</label>
{{ p.name }}
<p>{{ p.name }}</p>
</li>
{% endfor %}
</ul>
@ -404,7 +408,7 @@
</div>
<div class="polsF1 disTab searchF1">
<div class="col-lg-9">
<div class="col-lg-12">
<div id="fileUploadContainer">
<div>
<button type="button" id="fileUploadAddBtn">Добавить файл</button> Не более 10 файлов общим объемом до 500 Мб
@ -422,14 +426,22 @@
</div>
<div class="polsF1 disTab searchF1">
<div class="col-lg-9">
{{ form.secure_deal_only }} {{ form.secure_deal_only.label }}
<div class="col-lg-12">
<div class="check_bs">
<label>
{{ form.secure_deal_only }}
<span></span>
</label>
<p>{{ form.secure_deal_only.label }}</p>
</div>
</div>
</div>
<div class="polsF1 disTab searchF1">
<div class="col-lg-3">
<button type="submit">Опубликовать ответ</button>
<div class="col-lg-12">
<div class="send_req_block">
<button type="submit">Опубликовать ответ</button>
</div>
</div>
</div>
@ -550,12 +562,16 @@
<a href="{% url 'projects:add-candidate' answer_id=answer.pk project_id=project.pk %}" class="candLink candLink1">
Кандидат
</a>
<a href="{% url 'chat:chat-user' %}" class="candLink candLink2">
предложить проект
</a>
<a href="javascript:void(0)" class="candLink candLink3">
отказ
</a>
<form action="{% url 'projects:customer-reject-project-answer' pk=answer.pk %}" method="POST" novalidate>
{% csrf_token %}
<input type="hidden" name="next" value="{{ request.path }}">
<a href="#" onclick="$(this).closest('form').submit(); return false" class="candLink candLink3">отказ</a>
</form>
</div>
<div class="gallMini disTab">

@ -13,6 +13,7 @@ from .views import (
CustomerProjectEditView,
CustomerProjectRestoreView,
CustomerProjectTrashView,
CustomerRejectProjectAnswerView,
OfferOrderView,
ProjectAnswerCreateMessageView,
ProjectComparisonView,
@ -36,7 +37,8 @@ urlpatterns = [
urls.url(r'^(?P<pk>\d+)/delete/$', CustomerProjectDeleteView.as_view(), name='customer-project-delete'),
urls.url(r'^create-answer-message/(?P<pk>\d+)/$', ProjectAnswerCreateMessageView.as_view(), name='create-answer-message'),
urls.url(r'^(?P<pk>\d+)/contractor-reject-project-answer/(?P<answer_id>\d+)/$', ContractorRejectProjectAnswerView.as_view(), name='contractor-reject-project-answer'),
urls.url(r'^contractor-reject-project-answer/(?P<pk>\d+)/$', ContractorRejectProjectAnswerView.as_view(), name='contractor-reject-project-answer'),
urls.url(r'^customer-reject-project-answer/(?P<pk>\d+)/$', CustomerRejectProjectAnswerView.as_view(), name='customer-reject-project-answer'),
urls.url(r'^portfolio/create/$', contractor_portfolio_create, name='contractor-portfolio-create'),
urls.url(r'^portfolio/(?P<pk>\d+)/edit/$', ContractorPortfolioUpdateView.as_view(), name='contractor-portfolio-edit'),

@ -139,10 +139,19 @@ class ProjectAnswerCreateMessageView(BaseMixin, View):
message = form.save(commit=False)
if request.user.is_contractor():
answer = get_object_or_404(request.user.contractor_answers, pk=kwargs.get('pk'))
answer = get_object_or_404(Answer, pk=kwargs.get('pk'))
message.answer = answer
message.is_sender_customer = False
message.contractor_or_team = request.user
if isinstance(answer.author, User) and answer.author == request.user:
message.contractor_or_team = request.user
elif isinstance(answer.author, Team):
try: team = request.user.team
except Team.DoesNotExist: team = None
if team and answer.author == team:
message.contractor_or_team = team
elif request.user.is_customer():
answer = get_object_or_404(Answer, pk=kwargs.get('pk')) # TODO: Perform additional checks
message.answer = answer
@ -164,8 +173,6 @@ class ProjectAnswerCreateMessageView(BaseMixin, View):
class ContractorRejectProjectAnswerView(BaseMixin, View):
# form_class = ContractorRejectProjectAnswerForm
def dispatch(self, request, *args, **kwargs):
if request.user.is_authenticated() and request.user.is_contractor():
return super().dispatch(request, *args, **kwargs)
@ -173,41 +180,31 @@ class ContractorRejectProjectAnswerView(BaseMixin, View):
return HttpResponseForbidden('403 Forbidden')
def post(self, request, *args, **kwargs):
# form = self.form_class(request.POST, request=request)
#
# if form.is_valid():
# message = form.save(commit=False)
#
# if request.user.is_contractor():
# answer = get_object_or_404(request.user.contractor_answers, pk=kwargs.get('pk'))
# message.answer = answer
# message.is_sender_customer = False
# message.contractor_or_team = request.user
# elif request.user.is_customer():
# answer = get_object_or_404(Answer, pk=kwargs.get('pk')) # TODO: Perform additional checks
# message.answer = answer
# message.is_sender_customer = True
#
# message.save()
# form.save_m2m()
#
# messages.info(request, 'Сообщение успешно размещено')
# else:
# if form.errors:
# messages.info(request, (
# '<p>Произошла ошибка (form)</p>'
# '<pre>{form}</pre>'
# ).format(form=pformat(form.errors)))
# contractor = request.user
#
# projects = contractor.projects
#
# contractor.contractor_answers.filter(project=project).first()
#
# project = get_object_or_404(request.user.contractor_answers, pk=kwargs.get('pk'))
messages.info(request, 'OKOK')
answer = get_object_or_404(request.user.contractor_answers, pk=kwargs.get('pk'))
answer.delete()
messages.info(request, 'Вы успешно отказались от проекта')
redirect_to = request.POST.get('next')
return redirect(redirect_to)
class CustomerRejectProjectAnswerView(BaseMixin, View):
def dispatch(self, request, *args, **kwargs):
if request.user.is_authenticated() and request.user.is_customer():
return super().dispatch(request, *args, **kwargs)
else:
return HttpResponseForbidden('403 Forbidden')
def post(self, request, *args, **kwargs):
answer_id = kwargs.get('pk')
project = get_object_or_404(request.user.projects, answers__pk=answer_id)
answer = get_object_or_404(project.answers, pk=answer_id)
answer.delete()
messages.info(request, 'Вы успешно отказали пользователю в проекте')
redirect_to = request.POST.get('next')
return redirect(redirect_to)

Loading…
Cancel
Save