diff --git a/archilance/settings/base.py b/archilance/settings/base.py index 5388b76..7d33f1e 100644 --- a/archilance/settings/base.py +++ b/archilance/settings/base.py @@ -40,6 +40,7 @@ THIRD_PARTY_APPS = [ 'password_reset', 'mathfilters', # Basic math operations in templates; https://pypi.python.org/pypi/django-mathfilters 'generic_relations', # https://github.com/Ian-Foote/rest-framework-generic-relations + 'hitcount', ] LOCAL_APPS = [ diff --git a/assets/js/chat.js b/assets/js/chat.js index b7fca99..93c8c3b 100644 --- a/assets/js/chat.js +++ b/assets/js/chat.js @@ -1,13 +1,13 @@ var SocketHandler = function () { domain = domain.replace(':' + port, ''); - var url = 'ws://' + domain + ':8888/chat/' + userId + '/'; + var url = 'ws://' + domain + '/chat/' + userId + '/'; var sock = new WebSocket(url); var intervalId; sock.onopen = function () { console.log("Start connect"); intervalId = setInterval(function () { sock.send('{"dummy": 1}'); - }, 150000); + }, 15000); }; sock.onmessage = function (event) { console.log(event.data); diff --git a/assets/js/main.js b/assets/js/main.js index dfc540c..29edb85 100644 --- a/assets/js/main.js +++ b/assets/js/main.js @@ -14,11 +14,11 @@ $(document).ready(function(){ if($('.slideRes').hasClass('activeSlide')) { $('.slideRes').slideUp(300); $(this).css('transform','rotate(180deg)'); - $.cookie('slideResVisible', '') + $.cookie('slideResVisible', '', {expires: new Date(new Date().getTime() + 300000)}) // 5 minutes } else { $('.slideRes').slideDown(300); $(this).css('transform','rotate(0deg)'); - $.cookie('slideResVisible', 'on') + $.cookie('slideResVisible', 'on', {expires: new Date(new Date().getTime() + 300000)}) } }); diff --git a/chat/chat.py b/chat/chat.py index 2645140..c4143ab 100644 --- a/chat/chat.py +++ b/chat/chat.py @@ -111,5 +111,5 @@ if __name__ == '__main__': future.result() http_server = HTTPServer(application) - http_server.listen(PORT, 'localhost') + http_server.listen(PORT, '127.0.0.1') ioloop.start() diff --git a/projects/models.py b/projects/models.py index fe202ec..4d7ce77 100644 --- a/projects/models.py +++ b/projects/models.py @@ -3,6 +3,7 @@ from django.contrib.contenttypes.models import ContentType from django.db import models from django.db.models import Q from django.utils import timezone +from hitcount.models import HitCountMixin from mptt.models import TreeForeignKey import pydash as _; _.map = _.map_; _.filter = _.filter_ @@ -61,7 +62,7 @@ class Realty(models.Model): verbose_name_plural = 'Объекты' -class Project(models.Model): +class Project(models.Model, HitCountMixin): WORK_TYPES = ( (1, 'Проектирование'), (2, 'Техническое сопровождение') @@ -102,6 +103,7 @@ class Project(models.Model): class Meta: verbose_name = 'Проект' verbose_name_plural = 'Проекты' + ordering = ('-created',) def secure_deal(self): return self.deal_type == 'secure_deal' diff --git a/projects/templates/project_filter.html b/projects/templates/project_filter.html index 9cdbebe..f125817 100644 --- a/projects/templates/project_filter.html +++ b/projects/templates/project_filter.html @@ -202,9 +202,12 @@
{realty_form}'
).format(realty_form=pformat(realty_form.errors)))
- paginator = Paginator(projects.all(), settings.PAGE_SIZE)
+ paginator = Paginator(projects if manual_sort else projects.all(), settings.PAGE_SIZE)
page = request.GET.get('page')
try:
diff --git a/requirements/base.txt b/requirements/base.txt
index cb63921..b64af10 100644
--- a/requirements/base.txt
+++ b/requirements/base.txt
@@ -40,3 +40,4 @@ natsort
django-mathfilters
gunicorn==19.6.0
rest-framework-generic-relations
+django-hitcount
diff --git a/templates/partials/base.html b/templates/partials/base.html
index 4fdd01b..511529f 100644
--- a/templates/partials/base.html
+++ b/templates/partials/base.html
@@ -82,14 +82,14 @@
if (queryString.indexOf('/chat') != 0) {
domain = domain.replace(':' + port, '');
- var url = 'ws://' + domain + ':8888/chat/' + userId + '/';
+ var url = 'ws://' + domain + '/chat/' + userId + '/';
var sock = new WebSocket(url);
var intervalId;
sock.onopen = function () {
console.log("Start connect");
intervalId = setInterval(function () {
sock.send('{"dummy": 1}');
- }, 150000);
+ }, 15000);
};
sock.onmessage = function (event) {
@@ -97,7 +97,7 @@
$.jGrowl("Вам пришло новое сообщение!" + notificationData.msg, {sticky: true});
};
}
- }
+ };
$(function () {
var userId = '{{ request.user.pk }}';
if (userId) {
diff --git a/templates/partials/pagination.html b/templates/partials/pagination.html
index db632a0..46043f1 100644
--- a/templates/partials/pagination.html
+++ b/templates/partials/pagination.html
@@ -1,4 +1,19 @@
{% if is_paginated %}
+ {% if TEMPLATE_DEBUG %}
+ page_obj.has_previous: {{ page_obj.has_previous }}
+page_obj.has_next: {{ page_obj.has_next }}
+ + +page_obj.previous_page_number: {% if page_obj.has_previous %}{{ page_obj.previous_page_number }}{% endif %}
+page_obj.next_page_number: {% if page_obj.has_next %}{{ page_obj.next_page_number }}{% endif %}
+ +page_obj.paginator.page_range: {{ page_obj.paginator.page_range }}
+page_obj.number: {{ page_obj.number }}
+page_obj.paginator.num_pages: {{ page_obj.paginator.num_pages }}
+