Уведомления

Группа в Telegram: @pythonsu

Уведомления

  • Found 3493 posts.

Django » Кастомные вьюшки в админке. » Дек. 10, 2008 17:05:10

Предположим, есть такая задача:
Есть класс пользователей, есть их комменты.
Помимо полей редактирования пользователя, я хочу зделать листинг комментов с кнопками удалить(и последним элементом форму добавления коммента). Проблема в том, что я использую TabularInline, и комменты внизу отображаются сразу редактируемые, мне же нужно что бы они просто отображались простым текстом, и при этом была галочка(а лучше кнопка) “УДалить”. Полез в дебри формсетов и прочего, пытался изменять задефайненый шаблон, но что то совсем взорвал моск и ничего не получилось ((((
Может кто нибудь знает как примерно решить такую задачу(извеняюсь если вопрос глупый )) )
Вот код:

# -*- coding: utf-8 -*-
from django.db import models
from django.contrib import admin
from django.forms.models import modelformset_factory


#Clients
class Client(models.Model):
fname = models.CharField(max_length=255,verbose_name=u'\u0418\u043c\u044f')
lname = models.CharField(max_length=255,verbose_name=u'\u0424\u0430\u043c\u0438\u043b\u0438\u044f')
sname = models.CharField(max_length=255,verbose_name=u'\u041e\u0442\u0447\u0435\u0441\u0442\u0432\u043e')
email = models.EmailField(max_length=100,verbose_name=u'E-Mail')
phone = models.CharField(max_length=100,verbose_name=u'\u0422\u0435\u043b\u0435\u0444\u043e\u043d')
born = models.DateField()

STATUS_CHOICES = (
('0', u'\u041d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d'),
('1', u'\u041d\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439'),
('2', u'\u0410\u043a\u0442\u0438\u0432\u043d\u044b\u0439'),
('3', u'\u0414\u043e\u043b\u0436\u043d\u0438\u043a'),
('4', u'\u0421\u043e\u0442\u043e\u043d\u0430!'),
)
status = models.CharField(max_length=2, choices=STATUS_CHOICES,verbose_name=u'')
reg_date = models.DateField(auto_now_add=True,verbose_name=u'\u0414\u0430\u0442\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438')


def __unicode__(self):
mstr = self.fname + " " + self.lname + " " + self.sname
return mstr



class Comments(models.Model):
id_user = models.ForeignKey(Client)
subject = models.CharField(max_length=100,verbose_name=u'\u0422\u0435\u043c\u0430')
comment = models.TextField(max_length=500,verbose_name=u'\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435')
post_date = models.TimeField(auto_now_add=True,verbose_name=u'\u0414\u0430\u0442\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f')




class CommentsInline(admin.TabularInline):
model = Comments
extra = 1
#template = "admin/comment_list.html"


class clietnAdmin(admin.ModelAdmin):
#date_hierarchy = 'fname'
list_display = ['__unicode__','status']

fieldsets = [
(u'\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0435', {'fields': ['fname','lname','sname','born']}),
(u'\u041a\u043e\u043d\u0442\u0430\u043a\u0442\u044b', {'fields': ['phone','email','status']}),
]

inlines = [CommentsInline]


admin.site.register(Client,clietnAdmin)
P.S. Ещё интересно, возможно ли отображать TabularInline, грубо говоря как class:collapse? Что то совсем в тупик зашёл ((

Pyramid / Pylons / TurboGears » Вернуть файл » Дек. 9, 2008 10:48:41

Подскажите как вернуть файл клиенту из контроллера?
Скорее всего получится вернуть только потоком, но как не знаю.
положить файл в pubilc нельзя, т.к. он предназначен только определенному клиенту.

Web » Получение данных формы » Дек. 8, 2008 15:24:26

Написал простенький скрипт, который отображает форму:
def index(req):
req.content_type = 'text/html'
main = """<form method="POST">
<input type="text" name="test">
<input type="submit">"""
return main
Как вывести значение поля test?
(использую mod_python)

Django » HTTP-request и не-ascii символы » Дек. 4, 2008 01:21:56

Здраствуйте

При использовании в запросе символов не ascii а например русских букв джанго автоматом конвертит это уникод GET-HTTP запрос например так : (“GET /%D0%BF%D0%BE%D0%BB%D1%8F HTTP/1.1” 404 2386) используя функцию iri_to_url. Но как заставить воспринимать это в urls.py? Здесь нужно как я понял использовать decode и urllib.unquote. То есть как отловить нужный запрос когда в запросе есть не ascii символы?

Спасибо.

GUI » [pygtk] - виртуальный TreeDataStore » Дек. 2, 2008 13:56:38

Есть gtk.TreeView в котором отображается gtk.TreeStore.
Проблема в том, что запрос, возвращающий данные в этот TreeStore возвращает очень много данных.
Поэтому хотелось бы заполнять TreeStrore только теми данными, которые сейчас видны на экране, а оставшиеся данные подгружать по мере скролирования пользователем TreeView.

Вопрос - есть ли готовые механизмы для решения данной задачи или мне целиком самому надо реализовывать данный механизм?

Флейм » RSS Feed for the Python Job Board » Ноя. 27, 2008 16:57:53

The Python.org job board (http://www.python.org/community/jobs/) now
has an RSS feed which can be found at http://www.python.org/community/jobs/jobs.rss
which list the 20 most recent postings in summary form along with a
link to the posting on the jobs page.

The Python.org job board, a free resource for employers and job-
seekers alike, is maintained by volunteers from the Python community.
It is updated several times weekly and lists postings going back as
far as six months from many countries.

Pyramid / Pylons / TurboGears » Названия файлов с кирилицей » Ноя. 26, 2008 05:58:43

Подскажите, пожалуйста, как заставить Pylons выдергивать в браузер файлы с русскими буквами.
Например в public лежит файл “ыыы.doc”, есть на него ссылка, при клике возвращает 404, файлы с латинскими буквами возвращает нормально.

GUI » как из открытой вэбстраници в PyQt4 webkit webview сохранить картинку? » Ноя. 24, 2008 19:51:23

вот например как сохранить картинку google отсюда?
подскажите пожалуйста)))
from PyQt4 import QtWebKit, QtCore, QtGui, QtNetwork
import sys

class Webber(QtGui.QMainWindow):
def __init__(self):
##
self.view = QtWebKit.QWebView()
self.view.setGeometry(100, 200, 800, 500)
self.view.load(QtCore.QUrl('http://www.google.com.ua/'))
self.view.show()
app = QtGui.QApplication(sys.argv)
main = Webber()
sys.exit(app.exec_())

GUI » PyGTK и кодировка » Ноя. 24, 2008 19:26:52

вроде бы в pyGTK все должно быть в юниконе но по чему то если я кидаю в виджет поддерживающий драг н дроп файл в пути которого есть русский язык то получаю нечто подобное:
/%D1%80%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9/
если точнее то его возвращает data.data из drag_data_received
как это вылечить?
а ну и все дело происходит на винде

Django » Изменение админки » Ноя. 21, 2008 14:48:35

В админке для приложения book создал несколько объектов. Но объекты располагаются в том порядке в котором я их занес туда, а как можно поменять их порядок. Например, как вариант использовать кнопку поднять опустить объект. Подскажите как я могу это сделать?

Django » Error: No module named sql_server.base » Ноя. 17, 2008 21:19:34

Возобновил попытки заставить работать django с MS SQL server. Установил
http://code.google.com/p/django-pyodbc/
установил pyodbc.
если установить
DATABASE_ENGINE = 'sql_server.pyodbc'
получаю
C:\djproject\mysite>manage.py syncdb
Traceback (most recent call last):
File "C:\djproject\mysite\manage.py", line 11, in <module>
execute_manager(settings)
File "C:\Python25\lib\site-packages\django\core\management\__init__.py", line
340, in execute_manager
utility.execute()
File "C:\Python25\lib\site-packages\django\core\management\__init__.py", line
295, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "C:\Python25\lib\site-packages\django\core\management\base.py", line 77,
in run_from_argv
self.execute(*args, **options.__dict__)
File "C:\Python25\lib\site-packages\django\core\management\base.py", line 87,
in execute
translation.activate('en-us')
File "C:\Python25\lib\site-packages\django\utils\translation\__init__.py", lin
e 73, in activate
return real_activate(language)
File "C:\Python25\lib\site-packages\django\utils\translation\__init__.py", lin
e 43, in delayed_loader
return g['real_%s' % caller](*args, **kwargs)
File "C:\Python25\lib\site-packages\django\utils\translation\trans_real.py", l
ine 209, in activate
_active[currentThread()] = translation(language)
File "C:\Python25\lib\site-packages\django\utils\translation\trans_real.py", l
ine 198, in translation
default_translation = _fetch(settings.LANGUAGE_CODE)
File "C:\Python25\lib\site-packages\django\utils\translation\trans_real.py", l
ine 181, in _fetch
app = getattr(__import__(appname[:p], {}, {}, [appname[p+1:]]), appname[p+1:
])
File "C:\Python25\lib\site-packages\django\contrib\admin\__init__.py", line 1,
in <module>
from django.contrib.admin.options import ModelAdmin, HORIZONTAL, VERTICAL
File "C:\Python25\lib\site-packages\django\contrib\admin\options.py", line 5,
in <module>
from django.contrib.contenttypes.models import ContentType
File "C:\Python25\Lib\site-packages\django\contrib\contenttypes\models.py", li
ne 1, in <module>
from django.db import models
File "C:\Python25\lib\site-packages\django\db\__init__.py", line 34, in <modul
e>
(settings.DATABASE_ENGINE, ", ".join(map(repr, available_backends)), e_user)

django.core.exceptions.ImproperlyConfigured: 'sql_server.pyodbc' isn't an availa
ble database backend. Available options are: 'dummy', 'mysql', 'oracle', 'postgr
esql', 'postgresql_psycopg2', 'sql_server', 'sqlite3'
Error was: No module named sql_server.pyodbc.base
если
DATABASE_ENGINE = 'sql_server'
C:\djproject\mysite>manage.py syncdb
Error: No module named sql_server.base
дайте напутствия как установить этот модуль?

Pyramid / Pylons / TurboGears » smtp_server в ini » Ноя. 16, 2008 01:16:16

В ini файле есть упоминание smtp сервера. Задача стандартная : регистрация на сайте нового пользователя и отправка пароля на его email. Вообще для отправки почты есть в Pylons встроенные механизмы или лучше это делать по другому? Еще вопрос : А чем в Pylons формировать “картинку с циферками” (для контроля регистрации нового пользователя) если такого функционала нет, тогда что использовать? Подскажите плиз.

GUI » QNetworkAccessManager.post ( » Ноя. 10, 2008 22:22:15

http://www.riverbankcomputing.com/static/Docs/PyQt4/html/qnetworkaccessmanager.html#post



QNetworkAccessManager.post (self, QNetworkRequest request, QIODevice data)

This function is used to send an HTTP POST request to the destination specified by request. The contents of the data device will be uploaded to the server.

data must be opened for reading when this function is called and must remain valid until the finished() signal is emitted for this reply.

The returned QNetworkReply object will be open for reading and will contain the reply sent by the server to the POST request.

Note: sending a POST request on protocols other than HTTP and HTTPS is undefined and will probably fail.


QNetworkAccessManager.post (self, QNetworkRequest request, QByteArray data)

This is an overloaded member function, provided for convenience.

This function sends the contents of the data byte array to the destination specified by request.






Подскажите пожалуйста, как сформировать запрос на заполнение двух полей формы(user и pass)// я никак не могу понять, какой QByteArray или QIODevice надо сделать.. ((

Django » Элементы django-admin в пользовательской части сайта » Ноя. 9, 2008 23:53:52

Как можно вставить автоматически сгенерированный CRUD интерфейс в “обычную” часть сайта? Т.е. я например кастомизирую через admin.py внешний вид CRUD интерфейса и потом его просто вставляю для какого-то одного элемента модели. Такое возможно?

GUI » QtWebKit.QWebPage() //// click on link or button// or do something.. » Ноя. 9, 2008 21:11:07

class Webber(QtGui.QMainWindow):
def __init__(self,cookieFile):

QtGui.QMainWindow.__init__(self)
self.resize(800,600)

quit = QtGui.QPushButton('Cookies', self)
quit.setGeometry(10, 10, 60, 35)
self.connect(quit, QtCore.SIGNAL('clicked()'),self.printer)
cj = cookielib.LWPCookieJar()
if os.path.isfile(cookieFile):
cj.load(cookieFile)
self.view = QtWebKit.QWebView(self)
self.page=QtWebKit.QWebPage()
self.manager=QtNetwork.QNetworkAccessManager()
self.cj=QtNetwork.QNetworkCookieJar()
self.manager.setCookieJar(self.cj)
#manger.setProxy(QtWebKit.QNetworkProxy)
self.page.setNetworkAccessManager(self.manager)
self.view.setPage(self.page)

self.view.setGeometry(100, 200, 500, 300)
self.view.load(QtCore.QUrl('http://www.google.com.ua/'))
self.view.show()
def printer(self):
print self.cj.allCookies()
помоги пожалуйста,
можно ли и как чтото ввести в поле ввода и нажать кнопку поиск прям из программы,?
если да, то с помощью чего,?
з.ы. я читал справку.. но не нешел того, что надо.

GUI » Справка в PyGTK-приложении » Ноя. 8, 2008 09:32:30

Интересует такая тема. Создание справки к приложению, написанному на PyGTK (GTK+). Приложение работает как на Linux так и на Windows.

Есть ли какие-то стандартные инструменты, виджеты, может быть? Привязка к Gnome или еще к чему не самое лучшее решение, как вы понимаете, ведь в таком случае придется делать отдельную реализации для винды. Сам вообще никогда не занимался созданием пользовательской помощи к своим не многочисленным программам, для меня это что-то совершенно новоё.

Вам приходилось решать такую задачу, как вы поступали? Писали свой код для окна справки и навигации по ней? А быть с контекстной помощью? Сейчас интересует только PyGTK.

..bw

Web » применение make_msgid » Ноя. 7, 2008 17:32:13

У кого есть практический пример применения msgid
из django.core.mail. (…) def make_msgid(idstring=None):

функция генерирует что то типа этого : ‘<20081107152444.10520.11691@r>’
в доке написано что это уникальный идентификатор также читал о msgid http://ru.wikipedia.org/wiki/MSGID но мне пока непонятно его назначение. Или это только для фидо нет нужно ,?

Спасибо

GUI » Подкорректируйте пример gui-application » Ноя. 1, 2008 16:23:02

Привет коллегам!
Есть небольшой пример вьювера цифровых изображений (из книжки “WxPython in action”)
Ниже пример кода:
#!/usr/bin/python
"""Hello, wxPython! program."""
import wx
class Frame(wx.Frame):
"""Frame class that displays an image."""
def __init__(self, image, parent=None, id=­1,
pos=wx.DefaultPosition,
title='Hello, wxPython!'):
"""Create a Frame instance and display image."""
temp = image.ConvertToBitmap()
size = temp.GetWidth(), temp.GetHeight()
wx.Frame.__init__(self, parent, id, title, pos, size)
self.bmp = wx.StaticBitmap(parent=self, bitmap=temp)

class App(wx.App):
"""Application class."""
def OnInit(self):
image = wx.Image('wxPython.jpg', wx.BITMAP_TYPE_JPEG)
self.frame = Frame(image)
self.frame.Show()
self.SetTopWindow(self.frame)
return True

def main():
app = App()
app.MainLoop()
if __name__ == '__main__':
main()
При попытке “заранить” скрипт, получаю следующий output:

Traceback (most recent call last):
File “start1.py”, line 33, in <module>
main()
File “start1.py”, line 29, in main
app = App()
File “/usr/lib/python2.5/site-packages/wx-2.8-gtk2-unicode/wx/_core.py”, line 7836, in __init__
self._BootstrapApp()
File “/usr/lib/python2.5/site-packages/wx-2.8-gtk2-unicode/wx/_core.py”, line 7433, in _BootstrapApp
return _core_.PyApp__BootstrapApp(*args, **kwargs)
File “start1.py”, line 24, in OnInit
self.frame.Show()
AttributeError: ‘App’ object has no attribute ‘frame’


Кто-то сможет его прокоментировать?
PS: “ногами не бить”, только добрался до этого самого wxPython-a :)

Web » Помогите оценить разработку сайта - нужен веб дизайнер » Окт. 27, 2008 04:30:54

Помогите оценить сколько стоило бы создать сайт похожий своей функциональностью на http://www.hightechhire.com. Особенно важен их способ публикации гугл рекламных линков, которые при нажатии плавно переходят на новую страницу.

Ищу веб дизайнера/программера для похожего проекта.

Python для экспертов » С-расширения и SWIG. С-функция не хочет делиться. » Окт. 24, 2008 12:39:34

Здравствуйте
Решил попробовать написать С-расширение при помощи SWIG. ( у меня openSUSE 10.3)
Оговорюсь сразу: helloSWIG.c и potok.c мне удалось собрать.
potok.c: Что делает - запускается с -поток , 3 раза печатает си-поток( с интервалом в 1 секунду), затем поток завершается, запускается с-процесс, 3 раза печатается си-процесс, процесс завершается.

Файл: potok.c
/* potok.c */
#include <stdio.h>
#include <pthread.h>
#include <signal.h>
pthread_t potok_id;

void * mypotok()
{
while (1) { fprintf(stderr,"СиПоток\n"); sleep(1); }
}
void pusk() {

pthread_create(&potok_id,NULL,&mypotok,NULL);
sleep(3);

pthread_cancel(potok_id);
if( !pthread_equal( pthread_self(),potok_id ) )
{
printf("\n%d\n", pthread_equal( pthread_self(), potok_id ));
fprintf(stderr,"поток завершен\n");
pthread_join(potok_id,NULL);
}
int i;
for (i=0; i<3; i++) {
fprintf(stderr,"СиПроцесс\n"); sleep(1);
}
}
Файл: potok.i
%module potok
%include potok.c
Далее:
swig -python potok.i
И наконец компилирую и связываю:
gcc -shared potok.c potok_wrap.c -o _potokmodule.so -I/usr/include/python2.5 -DHAVE_CONFIG -I/usr/lib/python2.5/config

Запускаю python:
>>> import potok
>>> potok.pusk()
СиПоток
СиПоток
СиПоток

0
поток завершен
СиПроцесс
СиПроцесс
СиПроцесс
>>>
То есть - все нормально, все работает.

Пробую разбить функцию void pusk() на составляющие - void start(), void finish, void pusk()
 /* Npotok.c */
#include <stdio.h>
#include <pthread.h>
#include <signal.h>
pthread_t potok_id ; /* идентификатор потока */

void * mypotok()
{
while (1) { fprintf(stderr,"СиПоток\n"); sleep(1); }
}
void start()
{
pthread_create(&potok_id,NULL,&mypotok,NULL);
}
void finish()
{
pthread_cancel(potok_id);
if( !pthread_equal( pthread_self(),potok_id ) )
{
printf("\n%d\n", pthread_equal( pthread_self(), potok_id ));
fprintf(stderr,"поток завершен\n");
pthread_join(potok_id,NULL);
}
}
void pusk()
{
start();
sleep (3);
finish();
int i;
for (i=0; i<3; i++) {
fprintf(stderr,"СиПроцесс\n"); sleep(1);
}
}
Пытаюсь собрать( все как выше делал):
~> gcc -shared Npotok.c Npotok_wrap.c -o _Npotokmodule.so -I/usr/include/python2.5 -DHAVE_CONFIG -I/usr/lib/python2.5/config

Выдает:
Npotok_wrap.c: In function ‘potok_id_set’:
Npotok_wrap.c:2494: error: ‘potok_id’ undeclared (first use in this function)
Npotok_wrap.c:2494: error: (Each undeclared identifier is reported only once
Npotok_wrap.c:2494: error: for each function it appears in.)
Npotok_wrap.c: In function ‘potok_id_get’:
Npotok_wrap.c:2506: error: ‘potok_id’ undeclared (first use in this function


Почему ? Что ей надо ? Может кто-нибудь подобное делал ? ( под Windows может быть?)


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