Уведомления

Группа в Telegram: @pythonsu

Уведомления

  • Found 3492 posts.

Python для экспертов » python+opengl » Июнь 27, 2010 06:28:33

здравствуйте,недавно пришлось столкнуться с графикой в питоне и как оказалось документации по этому делу весьма и весьма мало,подскажите как в opengl создать каркасный куб?

Инструментальные средства разработки » Eric5 » Июнь 26, 2010 19:52:49

приветствую всех.

успешно установил питон 3.1.2
и ерик5.

в эрике, зашел в меню project/new создал проект test

создался файл __init__.py

в нем я написал print(“Hi”);

далее запустил из start/run script и ни чего не произошло.

выдал чушь какую-то
Traceback (most recent call last):
File “C:\Python31\Lib\site-packages\eric5\DebugClients\Python3\DebugClient.py”, line 38, in <module>
debugClient.main()
File “C:\Python31\Lib\site-packages\eric5\DebugClients\Python3\DebugClientBase.py”, line 1903, in main
self.__interact()
File “C:\Python31\Lib\site-packages\eric5\DebugClients\Python3\DebugClientBase.py”, line 962, in __interact
self.eventLoop()
File “C:\Python31\Lib\site-packages\eric5\DebugClients\Python3\DebugClientBase.py”, line 990, in eventLoop
self.readReady(self.readstream.fileno())
File “C:\Python31\Lib\site-packages\eric5\DebugClients\Python3\AsyncIO.py”, line 66, in readReady
self.handleLine(s)
File “C:\Python31\Lib\site-packages\eric5\DebugClients\Python3\DebugClientBase.py”, line 754, in handleLine
socket.gethostname(), self.variant))))
UnicodeDecodeError: ‘utf8’ codec can't decode bytes in position 0-1: invalid data


как запустить и что делать?

Django » django-cms, передача параметров » Июнь 18, 2010 15:00:48

Решил добавить на свой сайт сделанный на django-cms страничку с flash играми.
Сделал плагин который из базы выводит список игр все Ок.
Теперь надо сделать так что бы при клике на игру показывалась страница с игрой.

Добавил в cms раздел страницу и убрал у нее признак отображения в меню.
На ней разместил плагин который отображает игру ипо параметру id игры.

Затупил на том как передать id игры из странички со списком игр, на страничку с игрой.

Подскажите плиз как это лучше сделать… Может я в принципе неправильно общую схему работы сделал ?

На чистой джанге было проще, там я через urls разрулил передачу параметра…
А как в CMS это сделать нифига непонятно…

Python для новичков » Ctypes WinDLL не открывает библиотеки » Июнь 16, 2010 17:32:35

Доброго времени суток! Столкнулся со следующей проблемой:
ОС - Windows XP Professional SP2 х86(это ещё не сама проблемма, хотя… ;) )
Есть проект, написанный на С и собранный при помощи MS Visual Studio 2005 (8.0). В рамках проекта собраны несколько dll'ек, которые необходимо зацепить из питона.
Скачал и поставил питон 2.5(требование заказчика). Качал вот отсюда http://www.python.org/ftp/python/2.5/python-2.5.msi.

Далее, пытаемся открыть собранную библиотеку следующим образом:
import ctypes
mylib = ctypes.WinDLL('D:\\dir\\with\\project\\library.dll')

На что получаем окошко с извещением об ошибке следующего содержания:

Runtime Error!

Program:C:\Python25\python.exe

R6034
An application has made an attempt to load the C runtime library incorrectly.
Please contact the application's support team for more information.


Подскажите пожалуйста, в какую сторону копать, чтобы подцепить библиотеку успешно?

З.Ы. Предвидя посылы в различные места:
1. Гуглил упорно. Нашёл мало и ничего не помогало.
2. Поиск по форуму делал, тоже не помогло.
3. При сборке DLL, генерируются манифесты, так что проблемм с зависимостями возникать не должно.
4. DLL'ки собраны корректно и работают замечательно. Линковка и работа с ними из
C-шного кода не вызывает проблемм на протяжении нескольких лет.
5. Интереса ради пробовал проделать то же самое питоном версии 2.6. Результат тот же.
6. Вот описание возникающей ошибки в msdn http://msdn.microsoft.com/en-us/library/ms235560%28VS.80%29.aspx, но оно, увы, ответов не даёт.
7. Загонять манифесты внутрь dll'ек тоже пробовал, тоже не помогает.
8. на Windows XP x86_64 + сборка с помощью MS Visual Studio 9.0 работает замечательно, со всем линкуется и даже почти бегает за пивом =)

Инструментальные средства разработки » Eclipse templates key binding » Июнь 16, 2010 12:45:05

1. Можно ли в Эклипсе как нибудь забиндить какой нибудь темплэйт на горячую клавишу??
2. Как мне в темплейтах заменять выделенный текст? К примеру хочу тэмплейт чтобы заменял dfdf на ‘dfdf’ к примеру чтобы я выделил слова dfdf нажал какую нибудь горячую клавишу и выделение “окружилось” кавычками (ну или скобками или чем либо другим)

оффтоп: В TextMate с биндингами очень удобно, но там для питона дебаггера нету, вернее корявый он какой то

Python для новичков » Аффинное преобразование участка изображения в PIL » Июнь 12, 2010 21:43:41

Расскажите, пожалуйста, как можно преобразовать(растянуть) кусок изображения например с координатами (x1,y1,x2,y2) в (x11,y11,x22,y22).
Вот текст из документации
transform(xs, ys, Image.AFFINE, (a,b,c,d,e,f))
Affine transformation. The values a through f are the first two rows of an affine transform matrix.
Each pixel at (x,y) in the resulting image comes from position (ax+by+c,dx+ey+f) in the input
image, rounded to the nearest pixel.
никак не пойму, что нужно делать >.<

Web » Настройка FastCGI для Python проекта » Июнь 11, 2010 16:09:21

Есть версия скриптов под mod_apache, нужно переделать под FastCGI, но никак не получается сделать “одно окно” для fastcgi, хотя хорошо работает для mod_python.
Код mod_python:
<VirtualHost z.world.com:80>
DocumentRoot "/var/www/z
ServerName z.world.com:80
<Directory "/var/www/z">
AddDefaultCharset utf-8
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from all

SetHandler mod_python
PythonHandler util.publisher
PythonDebug on
PythonPath "sys.path + ['/var/www/z']"
PythonOption basedir "/var/www/z"
PythonOption baseurl "/"
PythonAutoReload on
PythonOption mod_python.session.session_type "FileSession"
PythonOption mod_python.file_session.database_directory "/var/www/z/run/sessions"
</Directory>
</VirtualHost>
Код для fastcgi (правильнее сказать попытка кода):
<VirtualHost z2.world.com:80>
ServerAdmin a@b.c
DocumentRoot /var/www/z2
ServerName z2.world.com:80
ErrorLog /var/www/log/error.log
<Directory />
Options FollowSymLinks +ExecCGI
AllowOverride All
</Directory>
#<Files app.py>
# SetHandler fastcgi-script
#</Files>

<Directory />
Options FollowSymLinks +ExecCGI
AllowOverride All
SetHandler fastcgi-script
PythonHandler util.publisher
DirectoryIndex util/publisher.py
PythonDebug on
PythonPath "sys.path + ['/var/www/z2']"
PythonOption basedir "/var/www/z2"
PythonOption baseurl "/"
PythonAutoReload on
PythonOption fastcgi-script.session.session_type "FileSession"
PythonOption fastcgi-script.file_session.database_directory "/var/www/z2/run/sessions"
</Directory>
</VirtualHost>

Django » Кэширование » Июнь 10, 2010 12:28:12

Настроил автокэширование с REDIS, все замечательно. Но хочется ручками обновлять кэш, точнее удалять старый. Например, когда я изменил данные в базе. А для этого нужно знать ключ. Может кто сталкивался с такой задачей? Подаскажите пожалуйста.

Django » хитрое агрегатное выражение » Июнь 9, 2010 09:04:34

Добрый день.
Никак не могу найти решения. Подскажите, кто знает, пожалуйста.
В таблице имеется список операций за месяц. Модель для операции:
class Operation(models.Model):
check_time = models.DateTimeField("Дата проверки")
success = models.BooleanField("Результат проверки", default=True)
Нужно посчитать количество неудачных операций за каждый день.
Считаем просто количество операций по дням:
Operation.objects.extra({'check_date' :"date(check_time)"}).values('check_date').annotate(oper_count=Count('id'))
Добавляем фильтр, чтобы считать только неудачные операции:
Operation.objects.extra({'check_date' :"date(check_time)"}).values('check_date').annotate(oper_count=Count('id')).filter(success=False)
Но, тут из списка исчезают дни, в которые не было неудачных операций (что вполне логично). А мне нужно выводить *все* дни, а у тех, когда не было неудачных операций - показывать их количество 0.
Как это можно сделать?
Спасибо

Django » Проблема с сигналами, не вызывается pre_delete » Июнь 9, 2010 07:39:35

Имеются модели:
class Model1(models.Model):
pass

class Model2(models.Model):
model1 = models.ForeignKey(Model1)

class Model3(models.Model):
model2 = models.ForeignKey(Model2)
Я хочу сделать, чтобы Model2 нельзя удалить, если есть Model3 ссылающиеся на данную модель, и соответственно нельзя удалить Model1, если есть Model2 ссылающиеся на Model1
написал обработчики сигналов:
def model1_delete_handler(sender, instance, **kwargs):
if instance.model2_set.all().count() != 0:
...

def model2_delete_handler(sender, instance, **kwargs):
if instance.model3_set.all().count() != 0:
...

signals.pre_delete.connect(model1_delete_handler, sender=Model1, dispatch_uid = 'model1_delete')
signals.pre_delete.connect(model2_delete_handler, sender=Model2, dispatch_uid = 'model2_delete')
Проблема в том, что почему-то при удалении объектов Model1 сигнал не вызывается, а вызывается только model2_delete_handler. Если закоментировать регистрацию обработчика model2_delete_handler, то model1_delete_handler вызывается. Не понимаю что не так. Раньше подобное было с другими моделями (тоже сигнал pre_delete) но каким-то магическим образом все стало работать, при чем я ничего не менял.
Если кто сталкивался, помогите, срочно надо

Django » Сохранение файла » Июнь 8, 2010 14:28:03

Хочу провернуть такое дело. В upload_to вбить путь с id объекта. Но когда объект первый раз сохраняется, этот id в None, и получается фигня. По этому я написал следующий фокус:
from django.db.models import FileField as DjFileField

class FileField(DjFileField):

# блокирую сохранение
def pre_save(self, model_instance, add):
return getattr(model_instance, self.attname)

# генератор пути к файлу
def generate_filename(self, instance, filename):
return os.path.join(self.upload_to,
str(instance.id),
self.get_filename(filename))

class ItemImage(models.Model):
file = ImageField(upload_to="uploads")

def save(self, *args, **kwargs):
super(ItemImage, self).save(*args, **kwargs)
if self.file:
# генерирую имя и повторно сохраняю
self.file.name = self.file.field.generate_filename(self, self.file.name)
self.file.save(self.file.name, self.file, save=False)
ItemImage.objects.filter(id=self.id).update(file=self.file)
Жуткова-то получается. Как бы это сделали вы?

GUI » [PySide] где uic? » Июнь 7, 2010 10:53:04

Пытаюсь сделать импорт формы из QtDesigner в PySide. Прикол в том, что даже в официальных примерах из git есть импорт from PySide import uic, но он не работает, “Cannot import name”. Нашел, что вроде бы за импорт форм отвечает класс QUiLoader, однако такой вот код не работает, причем даже ошибок не выдает, просто завершается и все.
from PySide import QtCore, QtGui
from PySide.QtUiTools import QUiLoader

class MainWindow(QtGui.QMainWindow):
def __init__(self, *args):
loader = QUiLoader()
file = QFile('file.ui')
file.open(QFile.ReadOnly)
myWidget = loader.load(file, self)
file.close()
self.addWidget(myWidget)

def main():
app = QtGui.QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
Ну и вопрос, следовательно - что я делаю не так?

Django » выборка объектов » Июнь 5, 2010 00:16:57

привет!

начал делать сайт и возникло несколько вопросов по выборке объектов.

вот модели:
class Task(Named):
proj = models.ForeignKey(Proj)
type = models.ForeignKey(TaskType)
tags = models.ManyToManyField(Tag, null=True, blank=True)
description = models.TextField(blank=True)

TASK_RELATINGS = (
(0, 'косвенно зависит'),
(1, 'включает в себя'),
(2, 'является частью'),
(3, 'является следствием'),
(4, 'является предшедственником'),
)

class TaskRelating(Named):
task_from = models.ForeignKey("Task", related_name="from_task")
task_to = models.ForeignKey("Task", related_name="to_task")
description = models.TextField(blank=True)
tags = models.ManyToManyField(Tag, null=True, blank=True)
type = models.IntegerField(choices=TASK_RELATINGS)


class Proj(Named):
authors = models.ManyToManyField(User)
tags = models.ManyToManyField(Tag, null=True, blank=True)
specifications = models.TextField(blank=True)
проект, к которому прикреплены задачи посредством foreign key;
так же задачи могут быть связаны друг с другом через TaskRelating

1 вопрос:

в шаблоне необходимо вывести список проектов с задачами
сейчас я формирую этот список так:
    projects = Proj.objects.filter(authors=user)
for project in projects:
project.tasks = Task.objects.filter(proj=project)
но чую, что это неправильно. как правильно это сделать, чтобы на выходе получилось, что у каждой записи в projects появилось поле tasks со списком связанных с ним задач?

2 вопрос:
каким образом можно выбрать задачи проекта, на которые ссылаются объекты класса TaskRelating с определённым значением type?

3 вопрос:
возможно ли выбрать задачи проекта, на которые не ссылаются объекты TaskRelating?

4 вопрос:
есть ли в джанге возможность построения дерева ссылок заданной глубины?
т.е. допустим, у объекта project есть несколько задач, у которых есть несколько дочерних задач (дочерность определяется объектами task_relating) - можно ли построить запрос, чтобы создался объект примерно такого содержания?
project.tasks.tasks.task_relating_type…

т.е. первая задача проекта, содержащая первую подзадачу типа task_relating_type?

5 вопрос:
есть ли велосипед для вывода подобного рода (древообразных) структур?

Django » Очередной вопрос про русские буквы » Июнь 4, 2010 22:54:23

Излазил все но так чтото и не догадался.
Использую django + psycopg2
в базе postgresql название столбцов русские буквы
сначала делал enconv models.py -не помогло
когда пишу
u“ название_столбца_русскими буквами” пишет cant assign to litteral
u“бла-бла”.encode(UTF-8) - cant assign to function call

как быть?
в начале файла стоит что енкодинг ютф-8

Django » как организовать закачку прикреплённых фото? » Июнь 4, 2010 13:23:23

имеется модель:
class FlatSell(models.Model):
#...
class Image(models.Model):
#...
owner = models.ForeignKey(FlatSell, blank=True, null=True)
т.е. к объекту FlatSell могут быть добавлены несколько фото.
теперь как это на практике: юзер давит “добавить FlatSell”, я даю ему форму AddFlatSell для заполнения многих полей FlatSell и ссылочку “добавить фото”, по которой вывожу форму PhotoUploadForm для закачки одного файла фото через , н.п., следующий вид:
def upload(request, owner_id, form_class=PhotoUploadForm,
template_name="upload.html"):
# upload form for photos
#
photo_form = form_class()
if request.method == 'POST':
if request.POST["action"] == "upload":
photo_form = form_class(request.user, request.POST, request.FILES)
if photo_form.is_valid():
photo = photo_form.save(commit=False)
photo.ownerflat = owner_id
photo.save()
request.user.message_set.create(message=_("Successfully uploaded photo '%s'") % photo.title)
return HttpResponseRedirect(reverse('photo_details', args=(photo.id,)))

return render_to_response(template_name, {
"photo_form": photo_form,
}, context_instance=RequestContext(request))
и тут возникают две проблемы:
1) объкт FlatSell еще не создан, ибо submit на форме AddFlatSell еще никто не жал и owner_id еще не определен.
2) уйдя с формы AddFlatSell на PhotoUploadForm надо запоминать введенные поля, чтобы вернуться назад с ними.

Первый вопрос можно решать в лоб, но очень коряво получится:
запоминать Id новой фотографий, н.п. в какой-то временной таблице, потом по submit в AddFlatSell их прикреплять к FlatSell.
А как с формы AddFlatSell уходить по рэфу и запомнить заполненные поля? я еще не придумал.

Вопрос: Как решается вопрос по организации таких схем по уму?

Django » Context и повторное использование данных » Июнь 3, 2010 10:02:13

Уважаемые Гуру… возник ряд вопросов касательно работы Django
1. Прописал в settings.py переменные:
LOGIN_URL = '/login/'
LOGOUT_URL ='/logout/'
И если LOGIN_URL работает (через декоратор @login_required) - то с LOGOUT_URL засада… в шаблоне {{LOGOUT_URL}} пусто.
2. Там же
PROJECT_ROOT = os.path.normpath(os.path.dirname(__file__))
Опять же использовать ее в шаблоне {{PROJECT_ROOT}} не получается… пустота
Подозреваю, что где-то здесь должна появиться передача Context - но где и как понять пока не получилось. Подскажите куда копать..
3. Решил за основу взять дизайн Админки (простенько и со вкусом)… создал свой base.html в котором выводится основная шапка с именем пользователя… все остальные страницы идут как {% extends “base.html” %}. Но вот в чем проблема - приходится постоянно вычислять данные авторизованного пользователя в каждой из процедур во view.py выводящей страницу - подозреваю, что есть более изящное решение.
4. Кто нибудь может пояснить как организована навигация в Админке (хочу такую же рализовать) - в коде Админки она идет как
{% block breadcrumbs %}<div class="breadcrumbs"><a href="/">{% trans 'Home' %}</a>{% if title %} &rsaquo; {{ title }}{% endif %}</div>{% endblock %}
У меня никак не получается создать аналогичную цепочку открытых страниц.

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

Django » reverse url для Flatpages » Июнь 2, 2010 23:04:28

Можно ли задать имя флетпейджам чтобы можно было делать reverse url не привязываясь к url
Нашел примеры, но они не подходят:
from django.conf.urls.defaults import *

urlpatterns = patterns('',
('^pages/', include('django.contrib.flatpages.urls')),
)
from django.core.urlresolvers import reverse

reverse('django.contrib.flatpages.views.flatpage', kwargs={'url': '/about-us/'})
# Gives: /pages/about-us/
<a href='{% url django.contrib.flatpages.views.flatpage url="/about-us/" %}'>About Us</a>
Как быть если я не буду явно указывать

urlpatterns = patterns('',
('^pages/', include('django.contrib.flatpages.urls')),
)

Django » Сохранение traceback » Июнь 2, 2010 17:44:18

Здравствуйте.
Подскажите, как лучше всего сохранять traceback (sys.exc_info())
Пробовал cgitb, но может есть вариант с бОльшей информативностью. Возможно, было бы правильно использовать сбственный обработчик exception из django.views.debug, но не выходит, вылетает с ошибкой. Ему request нужен, а у меня его нет там, где нужно traceback сохранять.

Python для экспертов » Пропатчить метод » Июнь 2, 2010 01:01:02

Да вот только не простой метод, а enclosed функцию метода.
Вот такое не работает, ессно, но показывает чего хотелось бы добиться:
class A():
def af(self):
def bf():
print 'bf'
bf()

a = A()
def cf(x,y):
print 'cf'

#
a.af.bf = cf
#
a.af()
>>> 'cf'
UPD: написал, потом подумал :) контекст же неоткуда взять, так что низя. Разве что передавать ему locals …

Network » отправка почты - smtplib.SMTPAuthenticationError: (334, 'UGFzc3dvcmQ6' » Июнь 1, 2010 21:53:01

Пытаюсь отправлять почту через smtp.km.ru:

import smtplib
from email.MIMEText import MIMEText
from extract import MAILS


def send(to):
you = to
# текст письма
text = 'Здравствуйте!'
# заголовок письма
subj = 'САБЖ'
server = "smtp.km.ru"
name,pwd,me = "pythont","123456","pythont@km.ru"
user_name = name
user_passwd = pwd
msg = MIMEText(text, "", "utf-8")
msg['Subject'] = subj
msg['From'] = me
msg['To'] = you

s = smtplib.SMTP(server, port)
s.starttls()
s.login(user_name, user_passwd)
s.sendmail(me, you, msg.as_string())
s.quit()


send("youmail@yandex.ru")
Выдает:

s.login(user_name, user_passwd)
File “C:\Python25\lib\smtplib.py”, line 591, in login
raise SMTPAuthenticationError(code, resp)
smtplib.SMTPAuthenticationError: (334, ‘UGFzc3dvcmQ6’)

Кто нибудь знает в чем тут дело?

ps.
На другие серверы (smtp.mail.ru,mail.rambler.ru) отправляется.