LINUX.ORG.RU

Сообщения djnoob

 

Поясните по backbone'y!

Всем привет!

Осваиваю библиотеку Backbone.js (только не надо советывать мне что-либо другое) и наткнулся на неочевидные для меня моменты. Есть ли среди лоровцес такие, кто сможет прояснить кое-что.

Есть код:


/*******************************************************************************
  GET_DATA SECTION
*/
$.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
    options.url = 'http://backbonejs-beginner.herokuapp.com' + options.url;
});
/********************************************************************************/


/*******************************************************************************
  COLECTIONS SECTION
*/
var Tasks = Backbone.Collection.extend({
    url: "/users"
});
/********************************************************************************/


/*******************************************************************************
  VIEW SECTION
*/
var TasksList = Backbone.View.extend({

    el: ".content",

    render: function() {
        var render_this = this;
        var tasks = new Tasks();
        tasks.fetch({
            success: function() {
                render_this.$el.html("<b>Item: </b>");
            }
        })
    }

});

var taskList = new TasksList();
/********************************************************************************/


/*******************************************************************************
  ROUTER SECTION
*/
var Router = Backbone.Router.extend({

    routes: {
        "": "index",
        "edit/:id": "edit",
        "delete/:id": "delete",
        "new/": "new",
    },

    index: function() {
        console.log("Hello, Index Page!");
        taskList.render();
    }

});

var router = new Router();
/*******************************************************************************/


Backbone.history.start();

// EOF

Вопрос 1: Как собственно связаны результат, полученный от функции ajaxPrefilter со всем остальным. Как в render() приходит этот результат?

Вопрос 2: Как вместо ajaxPrefilter использовать JQuery-функцию ajax()?

 , , , ,

djnoob
()

Django и удаление связанных полей

Всем здасьте!

Есть модель:

class A(models.Model):
    ...

class B(models.Model):
    ...
    field_1 = models.ForeignKey(A, related_name="field_1", blank=True, null=True)
    field_2 = models.ForeignKey(A, related_name="field_2", blank=True, null=True)
    ...

При вызове метода delete() для объекта модели A автоматически удаляются и все связзанные с нею объекты модели B. В документации по django нашел способ корректного удаления связанных моделей (для FK) - https://docs.djangoproject.com/en/dev/ref/models/relations/

a_obj = A.objects.get(id=xxx)
b_obj = B.objects.get(filed_1=a_obj)

b_obj.a_set.remove(a_obj)

AttributeError: 'B' object has no attribute 'a_set'

Понятно, что такого пол нет. Но почему не работает поиск связанных объктов по _set ? Как удалить такое Г?

Заранее спасибо.

 , , ,

djnoob
()

Jquery Datatables и пагинационные эелементы

Всем доброго времени суток!

Суть проблемы такова, есть таблица (data tables), настройка которой такова:

$('table.data-table.msgs').dataTable( {
    "bPaginate": true,
    "bLengthChange": true,
    "bFilter": true,
    "bSort": true,
    "bInfo": true,
    "bAutoWidth": false,
    "sDom": '<""f>t<"F"lp>',
    "sPaginationType": "bootstrap",
    "aLengthMenu": [
        [10, 25, 50, 100, -1],
        [10, 25, 50, 100, "Все"]
    ]
});

Данные для элементов таблицы получаю через аякс, после осуществления некоторых событий.

Все бы хорошо, вот только записи «ушедшие» на вторую и блолее страницу (настройка - максимум 10 элементов в таблице) теряют свойства элементов на первой странице.

Можно ли как-нибудь «отлавливать» в data tables событие измениения пагинации (переход на другую страницу или увеличение числа элементов в таблице)?

 , , , ,

djnoob
()

Не выводится error message при валидации (jquery).

Народ, подскажите, пожалуйста, почему не выводится сообщение при валидации.

http://jsfiddle.net/#&togetherjs=k36111pHqC

 ,

djnoob
()

Jquery и топорная анимация

Всем привет.

Как сделать так, чтобы панелька (навбар), по нажатию на «островок» выезжала плавно, а не так топорно и дергано как сейчас: http://jsfiddle.net/4UM5E/

 ,

djnoob
()

Странна ошибка в Django!

Люди добрые, помогите разобраться. Был одни проект на джанге, все работало. Но после одного пул-реквеста что-то сломалось. Теперь при попытке засинкать БД вываливается ошибка:

Traceback (most recent call last):
  File "./manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/my_poject/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 399, in execute_from_command_line
    utility.execute()
  File "/my_poject/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/my_poject/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 261, in fetch_command
    commands = get_commands()
  File "/my_poject/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 107, in get_commands
    apps = settings.INSTALLED_APPS
  File "/my_poject/local/lib/python2.7/site-packages/django/conf/__init__.py", line 54, in __getattr__
    self._setup(name)
  File "/my_poject/local/lib/python2.7/site-packages/django/conf/__init__.py", line 50, in _setup
    self._configure_logging()
  File "/my_poject/local/lib/python2.7/site-packages/django/conf/__init__.py", line 72, in _configure_logging
    from django.utils.log import DEFAULT_LOGGING
  File "/my_poject/local/lib/python2.7/site-packages/django/utils/log.py", line 7, in <module>
    from django.views.debug import ExceptionReporter, get_exception_reporter_filter
  File "/my_poject/local/lib/python2.7/site-packages/django/views/debug.py", line 10, in <module>
    from django.http import (HttpResponse, HttpResponseServerError,
  File "/my_poject/local/lib/python2.7/site-packages/django/http/__init__.py", line 2, in <module>
    from django.http.request import (HttpRequest, QueryDict, UnreadablePostError,
  File "/my_poject/local/lib/python2.7/site-packages/django/http/request.py", line 11, in <module>
    from django.core import signing
  File "/my_poject/local/lib/python2.7/site-packages/django/core/signing.py", line 45, in <module>
    from django.utils.crypto import constant_time_compare, salted_hmac
  File "/my_poject/local/lib/python2.7/site-packages/django/utils/crypto.py", line 6, in <module>
    import hmac
  File "/usr/lib/python2.7/hmac.py", line 8, in <module>
    from operator import _compare_digest as compare_digest
ImportError: cannot import name _compare_digest

WTF, господа?

 , ,

djnoob
()

Помогите разобраться с python-кодом!

Всем привет. Народ, подскажите, где в коде изъян(?

Необходимо из таблицы «Заказов» выбрать только попадающие в интервал времени (даты) от date_from до date_to включительно. В таблице заказов поле «date_order» является отбычным varchar и записи в нем имеют формат - dd.mm.yyyy (прмер: 07.05.2014).

def convert(number):
    """
    Конвертирует строку (день или месяц) в число
    """
    if (number[0] == "0"):
        month_num = int(number[1])
    else:
        month_num = int(number)
    return month_num


def unconvert(number):
    """
    Конвертирует число в сторку (день или месяц)
    """
    if len(str(number)) == 1:
        return "0%s" % number
    else:
        return "%s" % number

...
            # Получам данные из POST и разделяем на подстроки по точке.
            date_from = request.POST["date_from"].split(".")
            date_to = request.POST["date_to"].split(".")

            # Выбираем день, месяц и год даты начала и даты конца
            day_from = date_from[0]
            month_from = date_from[1]
            year_from = date_from[2]

            day_to = date_to[0]
            month_to = date_to[1]
            year_to = date_to[2]

            orders_list = []

            if year_from == year_to:

                if month_from == month_to:

                    for i in xrange( convert(day_from), convert(day_to) ):
                        date = "%s.%s.%s" % (unconvert(i), month_from, year_from)

                        try:
                            orders_list.append(Order.objects.get(date_order=date))
                        except:
                            print("not found")

                else:
                    for i in xrange( convert(month_from), convert(month_to)+1 ):

                        for j in xrange( convert(day_from), convert(day_to) ):
                            date = "%s.%s.%s" % (unconvert(j), unconvert(i), year_from)

                            try:
                                orders_list.append(Order.objects.get(date_order=date))
                            except:
                                print("not found")

           ...

Но код не работает в перделах более 1 месяца. Например, я хочу выбрать все заказы, начиная с 19.05.2014 и по 30.07.2014. В результате выбираются только заказы в месяце 05, а заказы в последующих месяцев не выбираюся. В пределах одного месяца все работает OK. В чем может быть косяк?

Заранее спасибо.

 , , ,

djnoob
()

Поддомены в апаче!

Всем привет.

Нужно создать виртуальный хост вида:

xx.yyy.zz.tt/new (где xx.yyy.zz.tt - адрес основного хоста)

Создаю файл конфигурации для апача:

...
<VirtualHost *:80>   
...          
#ServerAdmin hostmaster@sait1.ru 
ServerName xx.yyy.zz.tt/new
#ServerAlias
DocumentRoot /var/www/new
...
</VirtualHost>

Файл /etc/hosts:

xx.yyy.zz.tt/kcm xx.yyy.zz.tt ...

При заходе на адрес xx.yyy.zz.tt/new получаю ошибку 404, однако основной адрес (xx.yyy.zz.tt) работает.

Как решить данную проблему?

Заранее спасибо).

 , , , ,

djnoob
()

Django и динамически создаваемые поля в модели.

Всем доброго времени суток!

Есть интернет магазин, где куча наименований товаров, и у каждого товара куча свойств и атрибутов. Делать модели для каждого такого товара - дело гиблое, посему возник вопрос: Народ, кто как решает проблему динамически создаваемых полей в джанго? Вообще, какие костыли для этого существуют, какие проблемы могут возникнуть?

Заранее спасибо).

PS. В качестве СУБД используется MySQL.

 , ,

djnoob
()

Вывести в консоль данные профилировщика javascript!

Есть код:

console.profile('js');
my_func();
console.profileEnd();

Как просмотреть результат работы встроенного профилировщика?

P.S. Браузер Firefox.

 ,

djnoob
()

Перебор элементов массива в django template

Как осуществить перебор элементов (которые django objects list) в шаблоне?

Есть вьюха:

@csrf_exempt
def getOrdersPerMonth(request):
    if request.is_ajax() and request.method == "POST":
        sides_id = request.POST.getlist("sides_id[]")
        aim_month = request.POST["month"]

        orders_list = []
        orders_list_by_month = Order.objects.filter(month=aim_month)
        for i in xrange(len(sides_id)):
            order_list = orders_list_by_month.filter(side__side_id=sides_id[i])
            orders_list.append(order_list)
        orders_list = list(orders_list)
        html = render_to_string("service/units/sides_per_month.html", {"orders_list": orders_list})
        res = {"html": html}
        return HttpResponse(json.dumps(res))

И есть шаблон:

  {% for order in orders_list.0 %}
    ...
  {% endfor %}

Предположим, что в orders.list более 1 элемента. Как осуществить перебор по этим элементам в django template?

Нашел снипет (mkrange[https://djangosnippets.org/snippets/1926/]), но конструкция вида:

{% load range %}

{% mkrange 0 orders_list|length 1 as range %}
{% for i in range %}

  {% for order in orders_list.i %}
    ...
  {% endfor %}

{% endfor %}

не работает.

Как быть в таком случае?

Заранее спасибо.

 , ,

djnoob
()

Посоветуйте свитч для дома!

Собственно, сабж:)!

Дома пока два компьютера (в будущем, может будет больше), поэтому количество разъемов должно быть <= 5.
Интересует вообще надежный «середячок», чтоб стоил не дорого, работал надежно и не сильно грелся.

Заранее спасибо)!

 , , ,

djnoob
()

JQuery - Селекторы!

Помогите сформировать правильный селектор для вставки текста в нужный td: http://jsfiddle.net/FY7TL/

 , ,

djnoob
()

Javascript'еры, помогите!!!

Всем привет.

Что-то я запутался в этом джаваскрипт).

Суть задачи такова: необходимо реализоывать календарь в котором в каждый момент времени будут отображаться названия только 6 из 12 месяцев. Должны быть две кнопки промотки на месяц назад и на месяц вперед.

Понятно, что решение сводится к реализации алгоритмов сдвига массива на 1 влево и вправо.

Вроде бы я реализовал часть функций, однако сдвиг вправо (кнопка влево) у меня работает некорректно (при достижении декабря - последующие месяцы равны undefined)! Сдвиг влево работает OK, можно бесконечно проматывать месяца.

Как пофиксить промотку влево?

http://jsfiddle.net/W24L2/

Заранее, спасибо!

 , ,

djnoob
()

Bootstrap modal накапливается!!!

Всем доброго времени суток!

Суть проблемы такова:

есть бутстраповская модалка:

  <div id="eventInfo" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="eventInfo" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">

            <div class="modal-header">
              ...
            </div>

            <div class="modal-body">
              ...
            </div>

            <div class="modal-footer">

              <button type="submit" name="submit-button" class="btn btn-danger delete_event" data-dismiss="modal" aria-hidden="true">
                <i class="icon-remove-sign"></i>&nbsp;Удалить данный заказ&nbsp;<i class="icon-remove-sign"></i>
              </button>

              <button type="submit" name="submit-button" class="btn btn-primary" data-dismiss="modal" aria-hidden="true">
                Закрыть
              </button>

            </div>

          </div>
      </div>
  </div>

Я мониторю нажатие кнопки ".delete_event" и после нажатия выполняю функцию someFunction():

$(".delete_event").click(function() {
   ...
   someFunction();
});

function someFunction() {
   console.log("iter");
}

Проблема в том, что всякий раз, когда я вызываю новую модалку (при учете, что я не презегрузил страницу), собития нажатия ".delete_event" как бы накапливаются (где? в кеше браузера?) и, например, после пятого вызова модалки, и нажатия на кнопку ".delete_event" функция someFucntion() выполняется сразу пять раз подряд!!!

Однако, после перезагрузки страницы - история сбрасывается, но при последующих вызовах модалки (начиная со второго) опять происходит «накопление» (уж не знаю как выразиться) событий нажатия кнопки ".delete_event".

Нашел на so подобную проблема:http://stackoverflow.com/questions/13177426/how-to-destroy-bootstrap-modal-wi...

Но способ сброса данных модалки без перезагрузки страницы не работает.

В чем может быть проблема. Корифеи бустрепа и Jquery, подскажите, плиз(.

 , ,

djnoob
()

JavaScript! Почему ошибка?!


var data = "";

$.ajax({
    type: "POST",
    url: "/xxx/yyy/zzz/",
    data: data,
    dataType: "json",

    success: function(data) {

        for (var i = 0; i <= data.entities.length; i++) {
             ...
N             console.log(data.entities[i].id);
             ...
        }

    }
});

Консолька огнелиса печатает ошибку в строке N:

TypeError: data.entities[i] is undefined

В чем изъян?

 

djnoob
()

Отключить сортировку событий в FullCalendar

Всем привет.

Хочу отсортировать события в fullcalendar (v1.6.4) по некоторому параметру (весу). Провожу сртировку - все ок, однако при рендеринге, сам календарь отсортировывает события в алфавитом порядке по ключу «title»(!

Как переопределить или отключить дефолтную сортировку в fullcalendar, чтобы иметь возможность сортировать события по своим правилам?

var Organizer = (function() {

    var date = new Date();
    var d = date.getDate();
    var m = date.getMonth();
    var y = date.getFullYear();

    var events = [];

    return {

        init: function() {
            this.createEvents();
            this.setCalendarSettings(false);
        },

        setCalendarSettings: function(editable) {

            $("#calendar").fullCalendar({
                editable: editable,
                header: {
                    left:   "prevYear, nextYear",
                    center: "title",
                    right:  "today, prev,next, "
                },
                monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'],
                monthNamesShort: ['Янв.','Фев.','Март','Апр.','Май','Июнь','Июль','Авг.','Сент.','Окт.','Ноя.','Дек.'],
                dayNames: ["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"],
                dayNamesShort: ["ВС","ПН","ВТ","СР","ЧТ","ПТ","СБ"],
                buttonText: {
                    today: "Сегодня",
                    month: "Месяц",
                    week: "Неделя",
                    day: "День"
                },
                events: this.renderEvents()
            });

        },

        renderEvents: function() {
            var tmp_events = events.sort(function(a, b) {
                return a.weight == b.weight ? a > b : a.weight > b.weight;
            });
            return tmp_events;
        },

        createEvents: function() {
            ...
            events.push({ title: title_n, start: new Date(2014, 04, 10), color: "#aa0000", weight: 1 });
            ...
        },

    }
})();

 , ,

djnoob
()

Странная ошибка в django admin.

Всем привет!

Есть модель:

class Order(models.Model):
    order_id = models.CharField(u"Номер заказа", primary_key=True, auto_created=True, max_length=10)
    person = models.ForeignKey("clients.Person", blank=True, null=True)

    class Meta:
        verbose_name = u"Заказ"
        verbose_name_plural = u"Заказы"

    def __unicode__(self):
        return u"%s" % self.order_id

views.py:

@csrf_exempt
def makeNewOrder(request):
    if request.is_ajax() and request.method == "POST":

        ...

        client_id = request.POST["client_id"]

        try:
            person_obj = Person.objects.get(client__client_id=client_id)
        except:
            raise Http404

        order_object = Order(person=person_obj)

        order_object.save()

        ...

Все работает, сохраняется, ок. Но при попытки просмотреть казазы из админки выпадает ошибка:

NoReverseMatch at /admin/orders/order/

Reverse for 'orders_order_change' with arguments '(u'',)' and keyword arguments '{}' not found. 1 pattern(s) tried: [u'admin/orders/order/(.+)/$']

Кто подскажет, в чем может быть проблема?

Заранее спасибо.

 , ,

djnoob
()

Максимальный размер загружаемого файла в Django!

Всем привет!

Джанглисты, поделитесь своими костыликами)! Интересует оптимальное решение проблемы ограничения загрузки файлов большого размера для django-проекта.

Допустим есть форма с полем upload. Как ограничить размер загружаемого файла, скажем, не более чем 3 мегабайта?

Можно ли сделать проверку на стороне клиента, с помощью js, например? Короче, как решать такую проблему?

 , , ,

djnoob
()

Django + JQuery + AJax + картинка = 404!

Всем привет!

Есть вьюха (views.py):

...
res = {"image": "abs_path/to/image.jpg"}
return HttpResponse(json.dumps(res), content_type='image/jpeg')

js-ка:

...
success: function(data) {
   console.log(data.image);
   if (data.image && data.image.length != 0) {
       $(".selected_image").attr("src", data.image);
       console.log($(".selected_maket_for_montage").attr("src"));
   }
}

Дата приходи, все ок, однако, картинка не появляется:

/path/to/image.jpg HTTP/1.1" 404 6349

Хотя файл существует.

В чем может быть проблема (селекторы перепроверил - все ок)?

 , , ,

djnoob
()

RSS подписка на новые темы