LINUX.ORG.RU

Сообщения djnoob

 

Связи для нескольких БД в django

Здравствуй, ЛОР!

Вот, разбираюсь с поддержкой нескольких БД в django'e (https://docs.djangoproject.com/en/dev/topics/db/multi-db/). Прошу многоуважаемое сообщество объяснить новичку один нетривиальный момент.

Есть две БД (settings.py):

DATABASES = {

    "default": {
        "ENGINE": "django.db.backends.mysql",
        "NAME": "service_db",
        "USER": "service_db_user",
        "PASSWORD": "SR7RMxKCVNxw8L3x",
    },

    "clients": {
        "ENGINE": "django.db.backends.mysql",
        "NAME": "clients_db",
        "USER": "clients_db_user",
        "PASSWORD": "J9qbq8VH3SCD4r74",
    },

}
DATABASE_ROUTERS = ["clients.router.ClientsRouter"]

Есть роутер (routers.py):

class ClientsRouter(object):
    def db_for_read(self, model, **hints):
        if model._meta.app_label == 'clients':
            return 'clients'
        return None

    def db_for_write(self, model, **hints):
        if model._meta.app_label == 'clients':
            return 'clients'
        return None

    def allow_relation(self, obj1, obj2, **hints):
        db_list = ('default', 'clients')
        if obj1._state.db in db_list and obj2._state.db in db_list:
            return True
        return None

    def allow_syncdb(self, db, model):
        if db == 'clients':
            return model._meta.app_label == 'clients'
        elif model._meta.app_label == 'clients':
            return False
        return None

Есть связи - некоторые поля таблиц базы default связаны FK с некоторыми полями таблиц базы clients. Но когда в админке я создаю объект в базе default, который связан с объектом базы clients - выпадает ошибка - не может сохранить объект в базу clients. Хотя, по идее, данный объект должно все сохраняться в базу default.

Как подправить роутер для того, чтобы объекты базы defaults (нк поля которых связаны с полями clients) сохранялись в базе defaults и наоборот.

 , ,

djnoob
()

Почтовый сервер не шлет почту.

На VPS, в качестве почтового сервера использую postfix, web-морду - roundcube. При попытки написать себе письмо - ничего не происходит. Письмо отправляется, но не доставляется. Однако, спустя какое-то время на почту приходит уведомление от почтового сервера:

This is the mail system at host mail.

I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.

For further assistance, please send mail to postmaster.

If you do so, please include this problem report. You can
delete your own text from the attached returned message.

                   The mail system

<contact@mydomain.ru>: connect to 127.0.0.1[127.0.0.1]:10024: Connection
    refused

Reporting-MTA: dns; mail
X-Postfix-Queue-ID: 8B6CC901766
X-Postfix-Sender: rfc822; contact@mydomain.ru
Arrival-Date: Wed, 19 Mar 2014 14:58:28 +0400 (MSK)

Final-Recipient: rfc822; contact@mydomain.ru
Original-Recipient: rfc822;contact@mydomain.ru
Action: failed
Status: 4.4.1
Diagnostic-Code: X-Postfix; connect to 127.0.0.1[127.0.0.1]:10024: Connection
    refused

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

 , , , ,

djnoob
()

Python. Конвертировать множество в список.

Как, собственно осуществить сабж?

[code]
a = set([1, 2, 3, 4, 5])
[/code]

 

djnoob
()

Django + ajax = error

Помогите разобраться, почему не отрабатывается success.

js:

    function test(){
      alert("Hello");
    }

    $(".s_b").click(function() {
        var material = $(".bt_material option:selected").text();
        var color = $(".bt_color option:selected").text();
        var size = $(".bt_size option:selected").text();

        var data = {material: material, color: color, size: size}

        $.ajax({

            type: "POST",
            url: "/test_ajax/",
            data: data,
            dataType: 'json',
            success: test
        });
    });

views.py:

@csrf_exempt
def my_view(request):
    if request.is_ajax() and request.method == 'POST':

        material = request.POST["material"]
        color = request.POST["color"]
        size = request.POST["size"]

        if color and material and size:

            try:
                bg_list = Bg.objects.filter(material=material).filter(color=color)
                bg_article = {"bg_article": baguette_list.article}
            except:
                bg_article = ""

            render_to_response("units/bg_list.html", json.dumps(bg_data))

Функцию test() сделал специально «тестовую», чтобы проверить отработается или нет. Так почему она не трабатывается, а отрабатывается колбэк на error? WTF?

 , , ,

djnoob
()

Django + ajax

Пояcните новичку на простом примере, как с помощью ajax выводить в шаблон данные? В сети инфа очень расплывчата и пестрит одними и теми же примерами, которые не проясняют ситуаци.

Использую https://github.com/yceruto/django-ajax.

Есть js:

$(".search_bt").click(function() {

      var material = $(".bt_material option:selected").text();
      var color = $(".bt_color option:selected").text();
      var size = $(".bt_size option:selected").text();

      ajaxPost('/test_ajax/',

              {"material": material, "color": color, "size": size},

              function(content){
                alert(content.bt_list[0]);
              }
      );
});

ajax.py:

@ajax
def my_view(request):
    if request.is_ajax() and request.method == 'POST':

        material = request.POST["material"]
        color = request.POST["color"]
        size = request.POST["size"]

        print(material, color, size)

        if color and material and size:

            try:
                bt_list = Bt.objects.filter(material=material).filter(color=color)
            except:
                bt_list = ""

            return render_to_response('pages/calculator.html', {"bt_list": bt_list, "ajax": True})

template:

  <span>
    {% for bt in bt_list %}
      {{ bt }}
    {% endfor %}
  </span>

Но не работет!

Через JS я могу достуть данные:

...
function(content) {
   alert(content.bt_list[0]);
}
...

Как передать данные в шаблон через ajax. Мне что через javascript выбирать блоки и втавлять туду данные? Что за бред. Поясните, плиз.

 , ,

djnoob
()

Помогите найти одни штуку!

Всем привет!

Не получается найти пример использования стрелочного счетчика для сайта следующего типа

<<[ 1 ]>>, где << и >> декрементирую и инкрементируют перемнную стоящую в поле «неактивный инпут» на 1.

Знаю, задачу не сложно реализовать самому, но может у кого есть готовые примеры?

 ,

djnoob
()

Вывод формы в шаблон через templatetags

Всем привет!

Столкнулся с нетривиальной для меня задачей. Есть модальное, бутстреповское окно (для обратной связи), которое можно вызвать с любой страницы сайта. Шаблон модального окна инклудится в основной шаблон. Есть вьюха, которая обрабатывает введенные в форму данные и отправляет писмо на указанный e-mail.

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

В голову пришла мысль использовать форму для каптчи и собственный шаблонный тег (которые я частенок использую в данном проекте), но как быть с функцией проверки формы? там ведь фигурирует request? Короче, вот что я имею:

forms.py:

from django import forms
from captcha.fields import CaptchaField

class CaptchaForm(forms.Form):
    captcha = CaptchaField()

modela.html

<div class = "modal fade" id = "contactsModal" role = "dialog">
  <div class = "modal-dialog">
    <div class = "modal-content">
      <form class = "form-horizontal" action="/feedback/" method="post">
        {% csrf_token %}
        <div class = "modal-header gom_modal_header">
          <button type="button" class="close gom_modal_close" data-dismiss="modal" aria-hidden="true">&times;</button>
          <b>{% trans "Форма обратной связи" %}</b>
        </div>
        <div class = "modal-body">
          <div class = "form-group">
            <label for = "contact-name" class = "col-lg-2 control-label">
                {% trans "Имя" %}:
            </label>
            <div class = "col-lg-10">
              <input type = "text" class = "form-control" id = "contact-name" placeholder
                      = "{% trans "Ваше полное имя" %}" name="fb_name">
            </div>
          </div>
          <div class = "form-group">
            <label for = "contact-email" class = "col-lg-2 control-label">E-mail:</label>
            <div class = "col-lg-10">
              <input type = "email" class = "form-control" id = "contact-email" placeholder =
                      "{% trans "Ваш e-mail" %}" name="fb_email">
            </div>
          </div>
          <div class = "form-group">
            <label for = "contact-msg" class = "col-lg-2 control-label">
                {% trans "Текст" %}:
            </label>
            <div class = "col-lg-10">
              <textarea class = "form-control" rows = "8" name="fb_text"></textarea>
            </div>
          </div>
        </div>
        <div class = "modal-footer gom_modal_footer">
          <button class = "btn btn-warning" type = "submit">{% trans "Отправить" %}</button>
          <a class = "btn btn-default" data-dismiss = "modal">{% trans "Закрыть" %}</a>
        </div>
      </form>
    </div>
  </div>
</div>

Была бы возможность использовать для модалки виюху, было бы все просто. Но такой возможности нет. Посему вопрос: «Как можно втулить форму каптчи и функцию проверки оной в модалку»?

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

 

djnoob
()

Django сортировка а алфавитном порядке

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

MyModel.objects.order_by(«my_filed») - не работает (соритрует по id)

 ,

djnoob
()

Debian NFS

Не могу примонтировать nfs-шару, выдается:
[code]
mount.nfs: No such device
[/code]

Смотрю расшареные директории - все OK:
[code]
showmount -e aa.bb.ccc.ddd
Export list for aa.bb.ccc.ddd
/NFSShare (everyone)
[/code]

Дистр - debian 7.4

 ,

djnoob
()

Django и внешнее хранилище статики

Кто подскажет как получить доступ к ресурсам, расположенным во внешнем (не внутри проета) хранилище.

Например есть каталог для статики (внешнее хранилище): /media/my_site/static, в нем есть файл test.png.

Есть settings.py:

STATIC_URL = '/static/'
STATIC_ROOT = "/media/mysite/static"
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"),
)

Есть шаблон:

<img src="{{ STATIC_URL }}new_image.png">

Но - болт! «GET /static/test_image.png HTTP/1.1» 404 1691

django что, ищет в картинку в каталог_проекта/static ?

Что за Х? Как обращаться к внешним директориям с файлами?

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

 ,

djnoob
()

Django 404!

Почему получаю 404!

urls.py:
[code=python]
url(r'^(?P<first_id>\d+)/(?P<second_hash>\w+)$', views.showImage, name='showImage'),
[/code]

views.py
[code=python]
def showImage(request, first_id, second_hash):
print(first_id, second_hash)
link = "http://my_domain/gallery/%s/%s/" % (address_id, gallery_hash)
gallery_obj = get_object_or_404(Gallery, link=link)
return render(request, «pages/image.html», {«gallery_obj»: gallery_obj})
[/code]

Даже принт ничего не распечатывает!

 ,

djnoob
()

Не работает почта

Всем привет!

Не могу настроить почту (на базе postfix). Сообщения отправляются, но не доставляются и не принимаются. В чем может быть проблема?

/var/log/mail.log

Feb 17 02:06:38 vm6670 postfix/master[9011]: daemon started -- version 2.9.6, configuration /etc/postfix
Feb 17 02:08:12 vm6670 postfix/master[9011]: terminating on signal 15
Feb 17 02:08:40 vm6670 postfix/master[3164]: daemon started -- version 2.9.6, configuration /etc/postfix
Feb 17 02:09:48 vm6670 postfix/smtpd[3361]: connect from localhost.localdomain[127.0.0.1]
Feb 17 02:09:48 vm6670 postfix/trivial-rewrite[3363]: warning: do not list domain globus-mg.ru in BOTH mydestination and virtual_mailbox_domains
Feb 17 02:09:48 vm6670 postfix/smtpd[3361]: B20AD4302FF: client=localhost.localdomain[127.0.0.1], sasl_method=LOGIN, sasl_username=postmaster@globus-mg.ru
Feb 17 02:09:49 vm6670 postfix/cleanup[3376]: B20AD4302FF: message-id=<d72dcde5d6393df59091073ef94c6698@globus-mg.ru>
Feb 17 02:09:49 vm6670 postfix/qmgr[3169]: B20AD4302FF: from=<postmaster@my-domain.ru>, size=544, nrcpt=1 (queue active)
Feb 17 02:09:49 vm6670 roundcube: User postmaster@my-domain.ru [80.80.109.211]; Message for ahohlov035@gmail.com; 250: 2.0.0 Ok: queued as B20AD4302FF
Feb 17 02:09:49 vm6670 postfix/smtp[3382]: connect to 127.0.0.1[127.0.0.1]:10024: Connection refused
Feb 17 02:09:49 vm6670 postfix/smtp[3382]: B20AD4302FF: to=<ahohlov035@gmail.com>, relay=none, delay=1.3, delays=1.3/0.01/0/0, dsn=4.4.1, status=deferred (connect to 127.0.0.1[127.0.0.1]:10024: Connection refused)
Feb 17 02:09:50 vm6670 postfix/smtpd[3361]: disconnect from localhost.localdomain[127.0.0.1]

/etc/postfix/main.cfg:

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no

append_dot_mydomain = no

readme_directory = no

smtpd_tls_cert_file = /etc/ssl/certs/iRedMail_CA.pem
smtpd_tls_key_file = /etc/ssl/private/iRedMail.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache


myhostname = my-domain.ru
alias_maps = hash:/etc/postfix/aliases
alias_database = hash:/etc/postfix/aliases
myorigin = my-domain.ru
mydestination = $myhostname, localhost, localhost.localdomain, localhost.$myhostname
relayhost = 
mynetworks = 127.0.0.0/8
mailbox_command = /usr/lib/dovecot/deliver
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = ipv4
virtual_alias_domains = 
allow_percent_hack = no
swap_bangpath = no
mydomain = my-domain.ru
mynetworks_style = host
smtpd_data_restrictions = reject_unauth_pipelining
smtpd_reject_unlisted_recipient = yes
smtpd_reject_unlisted_sender = yes
smtp_tls_security_level = may
smtp_tls_CAfile = $smtpd_tls_CAfile
smtpd_sender_restrictions = permit_mynetworks, reject_sender_login_mismatch, permit_sasl_authenticated
delay_warning_time = 0h
maximal_queue_lifetime = 4h
bounce_queue_lifetime = 4h
proxy_read_maps = $canonical_maps $lmtp_generic_maps $local_recipient_maps $mydestination $mynetworks $recipient_bcc_maps $recipient_canonical_maps $relay_domains $relay_recipient_maps $relocated_maps $sender_bcc_maps $sender_canonical_maps $smtp_generic_maps $smtpd_sender_login_maps $transport_maps $virtual_alias_domains $virtual_alias_maps $virtual_mailbox_domains $virtual_mailbox_maps $smtpd_sender_restrictions
smtp_data_init_timeout = 240s

Дистр Debian 7.4

 ,

djnoob
()

Помогите с nfs client

Доброго времени суток, ЛОР!

Есть локальна сеть. На одной из машин установлен win (2003). На моей - xubuntu. Есть задача получить доступ к расшареному каталогу win из под lin, используя nfs (именно nfs, samba'у не предлагать). На вин. машине утановлен freenfs, настроен должными образом (прописан путь до шары, указан ip моей машинки в качестве allow). Сканирую nmap'ом комп вин. машины - нфс поднят на 2049 порту. Windows-ный брендмауэр отключен.

Пытаюсь примонтировать расшареную директорию на лин. машине:

mount -t nfs 192.168.86.125:/share /mnt

mount.nfs: access denied by server while mounting 192.168.86.125:/share

пытаюсь получить список расшареных директорий:

showmount -e 192.168.86.125

rpc mount export: RPC: Procedure unavailable

В чем может быть проблема?

Заранее спасибо за ответ.

 ,

djnoob
()

Вопрос по Jquery

Всем привет!

Нужно получить, последовательно, имена классов группы инпутов.

Есть код: http://jsfiddle.net/Vey5y/4/

Но эт фигня не работает. Почему-то всегда берется имя только последнего инпута из группы. В чем косяк?

 ,

djnoob
()

Jquery

Вопрос jquery'истам!

function chainedCityByRegion() {

    $('input[name="region"]').click (function () {
        if ( $(this).is (':checked') ) {
            var class_name = $(this).attr("class");

            if ( $('input[name="city"].class_name').not(':checked') ) {
                console.log( $('input[name="city"].class_name').attr("name") )
                $('input[name="city"].class_name').prop('checked', true);
            }

        }
    });

}

Почему я не могу получить (прочесть или установить) атрибуты у элемента $('input[name=«city»].class_name')? Однако в if'e это сделать удается (поверка на не чекед). В чем может быть причина? В консольке получаю undefined.

 

djnoob
()

Зависимые checkbox

Кто подскажет, есть ли готовы библиотеки (наподобие Chained Select [http://www.appelsiini.net/projects/chained] ) только для checkbox'ов?

 

djnoob
()

Javascript Выбрать все checkbox

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

Кто хорошо знаком с js и jquery, подскажите, пожалуйста. Есть куча чекбоксов, нужно иметь кнопочку «Выбрать все» такую, чтобы она «довыбирала» те, которые еще не checked.

У меня есть код http://jsfiddle.net/9k6pR/2/

Но если выбрать сначала one, а потом нажать «Выбрать все», то все не выбирится а просто сбросится. Я так понимаю, просто нужно втиснуть в функцию блок проверки (дескать, если поле уже checked, то его выбирать не нужно), но как - хз(.

 , ,

djnoob
()

Django и внешнее хранилище для медиа

Доброго времени суток, ЛОР!

Суть проблемы такова: есть внешнее (выделенный ip) хранилище (доступное по ftp) меда-файлов (картинок). Как настроить web-сервер (apache2) и django'у соответствунно, чтобы он искал медию не на локальном компе в каталоге /x/ а на удаленном, доступном по фтп. Думаю, такой вопрос актуален для могих. Кто как его решал, поделитесь соображениями, пожалуйста:).

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

 , , ,

djnoob
()

DjangoAdmin

Всем привет.

Подскажите, каким образом лучше редактировать список моделей приложений в админке джанго? Например, я хочу, чтобы модели приложений A и B - находились в админке в одном блоке, а не в разных. Как добитсья такой функциональности?

 ,

djnoob
()

Django + Apache + mod_wsgi

Доброго времени суток, ЛОР!

Развернул на сервере apache(2.4.6)+mod_wsgi+django(1.6.1), но есть одна чертова проблема - не работает статика для админки!

Что я только уже не перепробовал! Несколько раз перечитал: https://docs.djangoproject.com/en/1.6/howto/deployment/wsgi/modwsgi/ - нифига! На сайте статика работет - все OK, а админка выглядит убого - не видит свою статику.

Собственно settings.py:

STATIC_URL = '/static/'
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"),
)
MEDIA_ROOT = (os.path.join(BASE_DIR, "media"))
MEDIA_URL = "/media/"

Апачевский конфиг сайта:

WSGIScriptAlias / /var/www/mysite/mysite/wsgi.py
WSGIPythonPath /var/www/mysite/
WSGIPythonPath /var/www/mysite/lib/python2.7/site-packages


<VirtualHost mysite.ru:80>
    ServerName mysite.ru
    ServerAlias www.mysite.ru
    ServerAdmin admin@mysite.ru

    AliasMatch ^/([^/]*\.css) /var/www/mysite/mysite/static/css/$1
    Alias /media/ /var/www/mysite/mysite/meida/
    Alias /static/ /var/www/mysite/mysite/static/

    <Directory /var/www/mysite/mysite/static>
           Order deny,allow
           Allow from all
    </Directory>

   <Directory /var/www/mysite/mysite/meida>
           Order deny,allow
           Allow from all
   </Directory>


        <Directory /var/www/mysite/mysite>
                <Files wsgi.py>
                        Order deny,allow
                        Require all granted
                </Files>
        </Directory>

</VirtualHost>

Вроде все ok. Дклаю collectstatic, перезапускаю сервер - убогая админка без статики(.

В чем может быть проблема? Поможите чем можите, сами мы новички :) Заранее спасибо!

 , , , ,

djnoob
()

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