Merge master -> artur

remotes/origin/PR-39
ArturBaybulatov 9 years ago
commit 37dca26024
  1. 8
      assets/css/main.css
  2. 2
      assets/js/chat.js
  3. 5
      projects/forms.py
  4. 5
      reviews/serializers.py
  5. 2
      templates/partials/base.html
  6. 4
      users/templates/partials/contractor_profile_tabs.html
  7. 3
      users/templates/partials/customer_profile_info_block.html
  8. 24
      users/templatetags/user_tags.py
  9. 17
      users/views.py

@ -921,6 +921,10 @@ footer:after {
margin-right: 0;
}
.desPro li a:hover {
text-decoration: underline !important;
}
.textPro {
width: 100%;
float: left;
@ -5693,7 +5697,7 @@ input[type="radio"]:checked + span {
font-weight: normal;
line-height: 1.42857143;
color: #333333;
white-space: nowrap;
/*white-space: nowrap;*/
}
.select2-results .select2-result-label:hover{
background-color: #f2f2f2;
@ -5977,7 +5981,7 @@ a.linkS2[data-target="#withdraw-money"]{
margin-top: 0px;
}
.changeBlock {
/*min-height: 650px;*/
min-height: 500px;
display: table;
padding: 143px 20px 120px 20px;
}

@ -781,7 +781,7 @@ function dialog (message, yesCallback, notCallback) {
console.log(json);
$("#review-add").modal('hide');
$("#leaveReview").hide();
var currOrder = json.project;
var currOrder = json.order;
var currRecipent = json.target_user;
socket.send_stages_approve({

@ -85,6 +85,7 @@ class ProjectFilterRealtyForm(forms.ModelForm):
self.fields['construction_type'].required = False
self.fields['location'].queryset = Location.objects.root_nodes()[0].get_descendants()
self.fields['building_classification'].queryset = BuildingClassfication.objects.root_nodes()[0].get_descendants()
# self.fields['location'].queryset = Location.objects # Migrate with this enabled
@ -152,8 +153,8 @@ class CustomerProjectEditForm(forms.ModelForm):
class RealtyForm(forms.ModelForm):
building_classification = TreeNodeChoiceField(
BuildingClassfication.objects.all(),
label="", initial='',
BuildingClassfication.objects.exclude(name='_root'),
label="ll", initial='',
widget=forms.Select(attrs={
'class': 'selectpicker',
'id': 'realtyBuildingClassificationId'

@ -7,6 +7,7 @@ from users.serializers import UserSerializer, TeamSerializer
class ReviewSerializer(ModelSerializer):
target_user = serializers.SerializerMethodField(read_only=True)
order = serializers.SerializerMethodField(read_only=True)
class Meta:
model = Review
@ -24,8 +25,12 @@ class ReviewSerializer(ModelSerializer):
'target_contractor',
'target_team',
'target_user',
'order',
)
def get_order(self, obj):
return obj.project.order.pk
def get_target_user(self, obj):
if obj.target_customer:
return obj.target_customer.pk

@ -84,7 +84,7 @@
var port = '{{ request.META.SERVER_PORT }}';
var queryString = '{{ request.get_full_path }}';
if ((queryString.indexOf('/chat') != 0) && (queryString.indexOf('/users/contractor-office/510/work-projects') != 0)) {
if ((queryString.indexOf('/chat') != 0) && (queryString.indexOf('/users/contractor-office/work-projects') != 0)) {
domain = domain.replace(':' + port, '');
var url = 'ws://' + domain + '/chat/' + userId + '/';
var sock = new WebSocket(url);

@ -5,6 +5,8 @@
{% url 'users:contractor-office-open-projects' as contractor_office_open_projects_url %}
{% url 'users:contractor-office-chat-projects' as contractor_office_chat_projects_url %}
{% load user_tags %}
<div class="profileTabs">
<ul class="nav nav-tabs nav-justified">
<li role="presentation">
@ -30,7 +32,7 @@
<a href="{{ contractor_office_chat_projects_url }}">Проекты в работе</a>
<div class="roundsCount">
<div class="countG">0</div>
<div class="countG">{% get_customer_chat_open_projects request.user %}</div>
</div>
</li>
</ul>

@ -1,6 +1,7 @@
{% load specializtions_tags %}
{% load user_tags %}
{% load thumbnail %}
{% load user_tags %}
<div class="col-lg-12">
@ -69,7 +70,7 @@
<a href="{{ c }}">Отзывы</a>
<div class="roundsCount">
<div class="countG">0</div>
<div class="countG">{% get_reviews_count request.user %}</div>
</div>
</li>
</ul>

@ -1,9 +1,13 @@
from chat.models import NewMessage
from django import template
from django.core.paginator import Page
from django.db.models import Count
from django.db.models import Q, Count
import math
from reviews.models import Review
from projects.models import Order
register = template.Library()
@ -86,6 +90,24 @@ def get_new_count_for_team(current_user, team_id, order_id=None):
return count
@register.simple_tag
def get_reviews_count(user):
if user.is_customer():
count = Review.objects.filter(target_customer=user).count()
else:
count = Review.objects.filter(target_contractor=user).count()
return count
@register.simple_tag
def get_customer_chat_open_projects(user):
team_ids = []
if user.is_owner_team():
team_ids.append(user.team.pk)
count = Order.objects.filter(Q(contractor=user) | Q(team_id__in=team_ids)).count()
return count
@register.filter
def get_project_message_count(user):
if user.is_customer():

@ -486,24 +486,9 @@ class ContractorChatProjectsView(View):
team_ids = []
if request.user.is_owner_team():
team_ids.append(request.user.team.pk)
team_orders = request.user.team.orders.all()
else:
teams = Team.objects.filter(contractors__id=request.user.pk).all()
team_orders = Order.objects.filter(team_id__in=[team.pk for team in teams]).all()
orders = Order.objects.filter(Q(contractor=request.user) | Q(team_id__in=team_ids)).all()
contractor_contacts = Message.objects.values_list('sender_id', 'recipent_id').filter(
Q(recipent_id=request.user.pk) | Q(sender_id=request.user.pk)).filter(Q(team_id=None)).distinct()
users_ids = []
for msg in contractor_contacts:
a, b = msg
if a != request.user.pk:
users_ids.append(a)
if b != request.user.pk:
users_ids.append(b)
# contacts_users = User.objects.filter(pk__in=users_ids)
chat_messages = Message.objects.filter(Q(sender=request.user.pk) | Q(recipent=request.user.pk)).order_by(
'created')
context['orders'] = orders
return render(request, self.template_name, context)

Loading…
Cancel
Save