#ARC-6 Fixes bugs

remotes/origin/PR-39
Mukhtar 10 years ago
parent 4dd71cff71
commit 84598a1d34
  1. 27
      chat/templates/chat_contractor.html
  2. 26
      chat/templates/chat_customer.html
  3. 5
      chat/testapp.py
  4. 2
      projects/forms.py
  5. 7
      projects/templates/contractor_portfolio_edit.html
  6. 24
      projects/views.py
  7. 5
      ratings/templates/templatetags/ratings_widget.html
  8. 20
      users/templates/contractor_filter.html
  9. 7
      users/templates/contractor_office.html
  10. 6
      users/templates/contractor_profile.html
  11. 9
      users/templates/portfolio_create_form.html

@ -50,21 +50,7 @@
<div><a href="#" style="color:black;">{{ contact.username }}</a></div>
</p>
<div class="modal fade" id="userModal" tabindex="-1" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button class="close" type="button" data-dismiss="modal">x</button>
<h4 class="modal-title" id="myModalLabel">Название модального
окна</h4>
</div>
<div class="modal-body">
<h3>Содержимое модального окна</h3>
</div>
</div>
</div>
</div>
<a href="#" data-target="#userModal" data-toggle="modal" class="conMess">Контакты</a>
<a href="#" class="conMess">Контакты</a>
<span>0</span>
<a href="javascript:void(0)" class="deleteMess">
@ -299,7 +285,7 @@
console.log(message.msg);
inbox.innerHTML += '<div class="col-lg-12 insetCommChat"><div class="topCommChat">' +
'<p class="nameCommChat">ВЫ</p> <span>13.0.2016</span></div>' +
'<p class="nameCommChat">ВЫ</p> <span>Сейчас</span></div>' +
'<p class="textCommChat">' + message.msg + '</p></div>';
};
@ -573,6 +559,11 @@
$('.user-block').on('click', function () {
var userId = $(this).attr('data-id');
$("#contact-chat-form #recipentId").val(userId);
$('.user-block').each(function () {
$(this).removeClass('mesAct');
});
$(this).addClass('mesAct');
var inbox = document.getElementById('message-chat-space');
inbox.innerHTML = '';
$.ajax({
@ -647,10 +638,6 @@
});
var inbox = $('#message-chat-space').html();
$('#message-chat-space').html(inbox + '<div class="col-lg-12 insetCommChat"><div class="topCommChat">' +
'<p class="nameCommChat">Вы</p> <span>Сейчас</span></div>' +
'<p class="textCommChat">' + chatMessage + '</p></div>');
$("#chat").val("");
});

@ -55,20 +55,6 @@
{% endfor %}
</div>
</div>
<div class="modal fade" id="userModal" tabindex="-1" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button class="close" type="button" data-dismiss="modal">x</button>
<h4 class="modal-title" id="myModalLabel">Название модального
окна</h4>
</div>
<div class="modal-body">
<h3>Содержимое модального окна</h3>
</div>
</div>
</div>
</div>
<div class="col-lg-6 commChat" id="contact-chat">
<div id="message-chat-space">
@ -473,6 +459,12 @@
$('.user-block').on('click', function () {
var userId = $(this).attr('data-id');
$("#contact-chat-form #recipentId").val(userId);
$('.user-block').each(function () {
$(this).removeClass('mesAct');
});
$(this).addClass('mesAct');
var inbox = document.getElementById('message-chat-space');
inbox.innerHTML = '';
$.ajax({
@ -564,13 +556,13 @@
console.log(event.data);
var message = JSON.parse(event.data);
var inbox;
if (message.answer_type == 'contact') {
if (message.answer_type == 'contact' || message.answer_type == 'add_message_contact') {
inbox = document.getElementById('message-chat-space');
} else if (message.answer_type == 'order' || message.answer_type == 'add_order') {
} else if (message.answer_type == 'order' || message.answer_type == 'add_message_order') {
inbox = document.getElementById('message-chat-order-space')
}
inbox.innerHTML += '<div class="col-lg-12 insetCommChat"><div class="topCommChat">' +
'<p class="nameCommChat">Иванов</p> <span>13.0.2016</span></div>' +
'<p class="nameCommChat">Вы</p> <span>Сейчас</span></div>' +
'<p class="textCommChat">' + message.msg + '</p></div>';
};

@ -61,12 +61,13 @@ class ChatHandler(websocket.WebSocketHandler):
answer_type = message_data['format_type']
private_type = 'true' if not order_id and not team_id else 'false'
is_new = 'true'
team_value = "NULL" if team_id is None else team_id
order_value = "NULL" if order_id is None else order_id
insert_sql = "INSERT INTO chat_message (id,text,created, sender_id,recipent_id, private_type,team_id, order_id) " \
"VALUES (DEFAULT,'{0}',NOW(),{1},{2},{3},{4},{5})".format(message, sender_id, recipent_id, private_type, team_value,order_value)
insert_sql = "INSERT INTO chat_message (id,text,created, sender_id,recipent_id, private_type,team_id, order_id,is_new) " \
"VALUES (DEFAULT,'{0}',NOW(),{1},{2},{3},{4},{5},{6})".format(message, sender_id, recipent_id, private_type, team_value,order_value,is_new)
yield self.db.execute(insert_sql)
waiters = tuple(w for c, w in self.waiters if c == recipent_id or c == sender_id)

@ -150,6 +150,8 @@ class RealtyForm(forms.ModelForm):
class PortfolioForm(forms.ModelForm):
duplicate = forms.BooleanField(required=False,label='Some label here')
class Meta:
model = Portfolio
fields = '__all__'

@ -81,13 +81,18 @@
<div class="polsF1 polsF2 disTab">
<p>Классификация здания</p>
{{ form.building_classification}}
</div>
<div class="textAreaBlock2 text-nn box-sizing disTab">
<input type="file" name="{{ form.img.html_name }}" >
{# <input type="file" name="{{ form.img.html_name }}" >#}
<input type="hidden" name="{{ form.user.html_name }}" value="{{ form.user.value }}" >
</div>
<div class="searchF1 polsF1 polsFF links-filter">
<input class="btn-submit-link" type="submit" value="Сохранить проект">
<input class="btn-submit-link" type="button" value="Отмена">
</div>
</form>

@ -18,7 +18,7 @@ from .mixins import LastAccessMixin
from .models import Project, ProjectFile, Portfolio, PortfolioPhoto, Candidate, Answer, AnswerFile, AnswerMessage, Realty, Order
from archilance.mixins import BaseMixin
from users.models import User, Team
from work_sell.models import Picture
from work_sell.models import Picture, WorkSell, WorkSellPhoto
from .forms import (
ContractorPortfolioTrashForm,
@ -577,8 +577,23 @@ def contractor_portfolio_create(request):
form = PortfolioForm(data=request.POST)
# import code; code.interact(local=dict(globals(), **locals()))
if form.is_valid():
duplicate = form.cleaned_data.get('duplicate')
instance = form.save(commit=False)
instance.user = request.user
instance.save()
if duplicate:
work_sell = WorkSell()
work_sell.name = instance.name
work_sell.budget = instance.budget
work_sell.building_classification = instance.building_classification
work_sell.construction_type = instance.construction_type
work_sell.currency = instance.currency
work_sell.description = instance.description
work_sell.term = instance.term
work_sell.term_type = instance.term_type
work_sell.contractor = instance.user
work_sell.save()
images_ids = request.POST.get('images-ids').split(';')[:-1]
for pk in images_ids:
picture = Picture.objects.get(pk=pk)
@ -588,6 +603,11 @@ def contractor_portfolio_create(request):
p_photo.img = temp_file
p_photo.portfolio = instance
p_photo.save()
if duplicate:
w_photo = WorkSellPhoto()
w_photo.img = temp_file
w_photo.worksell = work_sell
w_photo.save()
data = {'status': 'ok'}
else:
data = {'status': 'no', 'form_errors': form.errors}
@ -602,7 +622,7 @@ class ContractorPortfolioUpdateView(UpdateView):
template_name = 'contractor_portfolio_edit.html'
def get_success_url(self):
return reverse('proje')
return reverse('users:contractor-profile',kwargs={'pk':self.object.user_id})
class PortfolioDelete(DeleteView):

@ -1,6 +1,6 @@
<ul class="rettList {{ class_name }}">
<li><a href="javascript:void(0)">Рейтинг: <span> {{ ratings }}</span></a></li>
<li><a href="javascript:void(0)">Безопасные сделки: <span> 0</span></a></li>
<li>Рейтинг: <span> {{ ratings }}</span></li>
<li>Безопасные сделки: <span> 0</span></li>
<li>
<a href="javascript:void(0)">
Отзывы:
@ -10,3 +10,4 @@
</a>
</li>
</ul>

@ -233,6 +233,7 @@
<div class="col-lg-3 retts">
<ul class="rettList restList2">
<li>Рейтинг: <span> 1245</span></li>
<li>Безопасные сделки: <span> 5</span></li>
@ -335,13 +336,16 @@
смотреть профиль
</a>
</li>
{% if request.user.is_customer %}
<li>
<a href="javascript:void(0)">
предложить проект
</a>
</li>
{% endif %}
<li>
<a href="javascript:void(0)">
<a href="{% url 'chat:chat-user' %}?user_id={{ obj.pk }}">
написать сообщение
</a>
</li>
@ -384,21 +388,13 @@
<div class="col-lg-3 retts">
<ul class="rettList restList2">
<li>Рейтинг: <span> 1245</span></li>
<li>Безопасные сделки: <span> 5</span></li>
<li>
<a href="javascript:void(0)">Отзывы:
<span> + 385</span>
<small> 0</small>
<mark> - 0</mark>
</a>
</li>
</ul>
{% ratings_widget obj.pk 'restList2' %}
{% if obj.cro %}
<div class="sroUser sroExecutor">
<div class="iconSRO"></div>
<p>Есть допуск СРО</p>
</div>
{% endif %}
</div>

@ -68,7 +68,7 @@
</div>
<div class="menuUser disTab">
<a href="javascript:void(0)" class="add-man">
<a href="{% url 'users:contractor-filter' %}" class="add-man">
добавить участника
</a>
@ -86,7 +86,7 @@
</div>
<p class="nameMess">
<a href="#">{{ p.get_full_name }}</a>
<a href="{% url 'users:contractor-profile' p.pk %}">{{ p.get_full_name }}</a>
</p>
<span>Программист</span>
@ -123,10 +123,13 @@
{% if contractor.team %}
{% ratings_team_widget contractor.team.pk %}
{% endif %}
{% if contractor.cro %}
<div class="sroUser">
<div class="iconSRO"></div>
<p>Есть допуск СРО</p>
</div>
{% endif %}
</div>
</div>

@ -318,10 +318,11 @@
<div class="col-lg-12 wr-inset-pluss">
<div class="pluss-block" id="resume-text-out">
{{ contractor.contractor_resume.text }}
</div>
<a href="#" data-toggle="modal" data-target="#resume-text-edit">
<span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
</a>
</div>
<!-- Редактирование текста резюме (модальное окно)-->
<div id="resume-text-edit" class="modal fade">
@ -485,7 +486,8 @@
console.log(data);
if (data.status == 'ok') {
$("#resume-text-out").html(data.text);
$("#resume-text-edit").close();
$("#resume-text-edit").modal('hide');
}
},
error: function (jqXHR, exception) {

@ -41,7 +41,7 @@
<p>Бюджет{{ portfolio_form.budget.errors.as_text }}</p>
<div class="row">
<div class="col-lg-6">
<input type="text" class="box-sizing" name="{{ form.budget.html_name }}" value="{{ form.budget.value }}">
<input type="text" class="box-sizing" name="{{ portfolio_form.budget.html_name }}" value="{{ portfolio_form.budget.value }}">
</div>
<div class="col-lg-6">
{{ portfolio_form.currency}}
@ -53,7 +53,7 @@
<p>Срок выполнения{{ portfolio_form.budget.errors.as_text }}</p>
<div class="row">
<div class="col-lg-6">
<input type="text" class="box-sizing" name="{{ form.budget.html_name }}" value="{{ form.budget.value }}">
<input type="text" class="box-sizing" name="{{ portfolio_form.budget.html_name }}" value="{{ portfolio_form.budget.value }}">
</div>
<div class="col-lg-6">
{{ portfolio_form.term_type }}
@ -74,12 +74,11 @@
<div class="polsF1 polsF2 disTab">
<input type="hidden" name="{{ portfolio_form.user.html_name }}" value="{{ request.user.pk }}" />
</div>
<div class="polsF1 polsF2 disTab">
<input type="hidden" name="images-ids" id="upload-files-pk" />
{{ portfolio_form.duplicate }} Дублировать проект в готовые работы
</div>
<!-- The fileinput-button span is used to style the file input field as button -->
<span class="btn btn-success fileinput-button">

Loading…
Cancel
Save