Уведомления

Группа в Telegram: @pythonsu

Уведомления

  • Found 3493 posts.

Web » Проблема с кодировками smtplib » Фев. 4, 2009 06:56:39

Всем доброго!
Честно говоря не пойму, где нужно поставить кодировку чтобы письма приходили в нормальном виде (кодировка: cp1251), вследующем скрипте
import urllib
import smtplib
def createhtmlmail (html, subject):
"""Create a mime-message that will render HTML in popular
MUAs, text in better ones"""
import MimeWriter
import mimetools
import cStringIO

out = cStringIO.StringIO() # output buffer for our message
htmlin = cStringIO.StringIO(html)

writer = MimeWriter.MimeWriter(out)
#
# set up some basic headers... we put subject here
# because smtplib.sendmail expects it to be in the
# message body
#
writer.addheader("Subject", subject)
writer.addheader("MIME-Version", "1.0")
#
# start the multipart section of the message
# multipart/alternative seems to work better
# on some MUAs than multipart/mixed
#
writer.startmultipartbody("alternative")
writer.flushheaders()
#
# start the html subpart of the message
#
subpart = writer.nextpart()
subpart.addheader("Content-Transfer-Encoding", "quoted-printable")
#
# returns us a file-ish object we can write to
#
pout = subpart.startbody("text/html", [("charset", 'cp-1251')])
mimetools.encode(htmlin, pout, 'quoted-printable')
htmlin.close()
#
# Now that we're done, close our writer and
# return the message body
#
writer.lastpart()
msg = out.getvalue()
out.close()
return msg

# Формирование файла weather.html
citycode = '27612'

_url = "http://www.gismeteo.ru/towns/" + citycode + ".htm"
skin = 'default'

u = urllib.urlopen(_url)
s = u.read()
p1 = s.find('var frc=\'') + 9
p2 = s.find('\'',p1)
s = s[p1:p2]

s = s.replace('align=center ', '')
s = s.replace('<span class=sml>', '')
s = s.replace('</span>', '')
s = s.replace('nowrap', 'nowrap="true"')
s = s.replace('<table', '<table class="tbl"')
s = s.replace('bgcolor=F0F0F0', 'class="cl1"')
s = s.replace('bgcolor=F0FFF0', 'class="cl2"')
s = s.replace('bgcolor=F0F0FF', 'class="cl3"')
s = s.replace('bgcolor=FFF0F0', 'class="cl4"')
s = s.replace('bgcolor=FFFFF0', 'class="cl5"')
s = s.replace('bgcolor=FFFFFF', 'class="cl6"')

b = 1
while b:
p1 = s.find('<img')
if p1 == -1:
b = 0
else:
p2 = s.find('>',p1)
if p2 == -1:
b = 0
else:
_oldstr = s[p1:p2+1]
_newstr = ''
pp1 = _oldstr.find('title="')
if pp1 > -1:
pp2 = _oldstr.find('"',pp1+7)
if pp2 > -1:
_newstr = _oldstr[pp1+7:pp2]
s = s.replace(_oldstr, _newstr)


f = open('weather.html', 'w')
f.write('<html>\n<head>\n<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">\n</head>\n<body>\n')
f.write(s+'\n')
f.write('</body>\n</html>')
f.close()

#Отправка почты
html = open("weather.html").read()
subject = "Погода сегодня!"
message = createhtmlmail(html, subject)
server = smtplib.SMTP("111.111.111.111")
server.sendmail('my@mail.ru', ['you@mail.ru'], message)
server.quit()

Python для новичков » решения проверки стойкости пароля » Янв. 29, 2009 22:38:57

hi.

Вопрос:

Существуют ли готовые решения проверки стойкости (надежности пароля). Чтобы не изобритать велосипед.

Спасибо.

Инструментальные средства разработки » Eric4 и консоль » Янв. 29, 2009 15:45:47

День добрый
Стоит русская Windows XP соотвественно в консоли сообщения на русском.
Как сделать чтобы в Eric4 выводился русский в терминале и консоле, а не кракозябры?

GUI » pyQt Redirecting output после вызова QtGui.QFileDialog.getOpenFileName » Янв. 22, 2009 17:35:50

После вызова функции QtGui.QFileDialog.getOpenFileName выводится сообщение
Redirecting output to win32trace remote collector
и соответсвенно не видно что печатает print или ошибки.
Из-за чего это?
Спасибо.

GUI » [wxWidgets 2.8.9] Перемещение графических примитивов » Янв. 22, 2009 15:00:27

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

GUI » Проблема с главным меню и статус баром, PyQt4 » Янв. 22, 2009 11:32:36

Сделал интерфейс с помощью сетки, примерно так же как здесь http://forum.script-coding.info/viewtopic.php?pid=15928#p15928
Но теперь появилась проблема с QStatusBar и QMenuBar
Пока их не добавишь на горизонтальный, вертикальный или табличный на форме они не появляются. А если добавить то встают не там где должный быть при привычном интерфейсе с большим отступом от краев окна.
Как поставить их на свое место?
Например, вот эти:
        exit = QtGui.QAction(QtGui.QIcon('icons/exit.png'), 'Exit', self)
exit.setShortcut('Ctrl+Q')
exit.setStatusTip('Exit application')
self.connect(exit, QtCore.SIGNAL('triggered()'), QtCore.SLOT('close()'))
QtGui.QStatusBar()
menubar = QtGui.QMenuBar()
file = menubar.addMenu('&File')
file.addAction(exit)
Может быть они там и есть, но их менеджеры перекрывают? Как это обойти тогда?

Флейм » Киев, привет :) » Янв. 20, 2009 10:19:11

Собрался я вот на следующей неделе посетить свою историческую родину, Украину. Что то где то рядом с Бердичевом :)
Кто подскажет, можно ли совершить марш-бросок из Бердичева в Киев, буквально на день. То есть с утра приехать и вечером уехать.
И самое главное, интересны места и красоты в Киеве, которые остануться в моей памяти. Проблема в сжатых сроках, поэтому экскурсии отпадают :(
Кто подскажет? (Можно со ссылками гугл мапса)

Django » Ограниченная выборка в ManyToManyFields » Янв. 20, 2009 06:22:39

Вопрос по кустомизации админки.
Нужно сделать так чтоб в одной из моделей в поле ManyToMany отображались только те элементы которые уже относятся к данному.
Т.е. добавляется новый элемент и его поле ManyToMany пустое, добавить в него элементы можно только новой загрузкой (Django 0.96.2).

GUI » QWebView сохранение запросов » Янв. 19, 2009 05:23:52

Хочу получить содержимое всех HTTP запросов QWebView (картинки, css, html, js, ..)
По идеи вызов networkReply.readAll() должен возвращать контент запроса, однако на практике в нём содержится лишь часть данных или их вовсе нет.

В чём может быть проблема?
Заранее спасибо!

import sys
from PyQt4 import QtWebKit, QtCore, QtGui, QtNetwork, Qt

class MainWindow(QtGui.QMainWindow):
def __init__(self):
super(MainWindow,self).__init__()

self.setFixedWidth(800)
self.setFixedHeight(652)

self.browser = QtWebKit.QWebView(self)
self.browser.setFixedWidth(800)
self.browser.setFixedHeight(652)
self.connect(self.browser.page().networkAccessManager(), QtCore.SIGNAL("finished(QNetworkReply*)"), self.finished)
self.browser.load(QtCore.QUrl("http://ya.ru"))

def finished(self, networkReply):
## Выводим URL
print networkReply.url().toString()

## Вывод содержимого запроса.
print networkReply.readAll()

if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
main = MainWindow()
main.show()
sys.exit(app.exec_())

GUI » Qt будет доступна теперь и под LGPL » Янв. 15, 2009 16:56:39

Новость на ЛОРе
Компания Nokia объявила о том, что, начиная с версии 4.5, кросс-платформенная библиотека Qt будет доступна также под лицензией LGPL.

P.S. На ЛОРе объявлен новый мем: “GTKапец” ;) :lol:.

GUI » Свое меню на основе (gtk.MenuBar) » Янв. 14, 2009 08:47:04

Всем привет. С python и ООП я не давно. Принял решение писаль диплом на связке python pygtk gtk glade. Для практики и тренировки решил реализовать какую штуку:
Вот такой код реализует горизонтальное меню под заголовком экрана с элементами File и Edit. gtk.MenuBar как и gtk.MenuItem - это подклассы абстрактного базового класса gtk.MenuShell()
	self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.mainMenu = gtk.MenuBar()

menuItem1 = gtk.MenuItem("_File")
menuItem2 = gtk.MenuItem("_Edit")

self.VBox1 = gtk.VBox(False, 0)
self.window.set_default_size(800,600)

self.window.add(self.VBox1)
self.VBox1.pack_start(self.mainMenu, False, False, 0)

list = [menuItem1, menuItem2]
for i in list:
self.mainMenu.append(menuItem1)

self.VBox1.show()
self.mainMenu.show()
menuItem1.show()
menuItem2.show()
self.window.show()
При организации такого меню необходимо добавлять элементы методом append, и отображать их.
Я хочу написать класс (наверное он должен быть наследником) подобный gtk.MenuBar, только который уже в своем определении имеет какие либо элементы меню, а также при вызове метода show() появлялись бы и меню и его элементы.
Начал так :), а вот дальше …
class myBar (gtk.MenuBar):
def __init__(self):
gtk.MenuBar.__init__(self)
Буду рад всем коментам.

Python для экспертов » nose + doctests » Янв. 10, 2009 16:31:33

Помогите, пожалуйста!

Не могу понять принципа работы этой связки.
Мне нужна очень простая вещь - в фикстуре setup определить окружение для доктестов, грубо говоря список переменных, которые будут видны на уровне doctest. Это может быть, скажем, connection к базе с тестовыми данными, импортированные модули, которые будут нужны для doctest-ов и так далее. Я не нашел как это сделать! То есть абсолютно! После часа поисков и смотрения в код nose у меня сложилось впечатление, что в моем подходе что-то не так концептуально. Насколько я вижу setup зовется, но от него не требуется чего-нибудь возвращать. Не понимаю! Через какие-то глобальные структуры что ли это передавать?

Разъясните, пожалуйста, как вообще это должно работать.

Примечание:
В последнем релизе nose фикстуры для doctest не поддерживаются. Я взял то, что у них в транке и игрался с ним.
http://python-nose.googlecode.com/svn/trunk/

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

Python для новичков » Audiere » Янв. 7, 2009 19:29:34

Требуется Audiere… Но максимальное, подо что она есть - Python 2.3
Сейчас пользую 2.4 но хочется. Обязательно ждать релиза, или можно быстро поправить?
Там такая структура - DLL и PYD.
http://audiere.sourceforge.net/download.php

Web » SSL - парсинг сертификата » Янв. 4, 2009 23:08:07

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

Сейчас используется PyOpenSSL для этих целей.
Но его возможностей просто не хватает: не понятно как получить доступ к X509v3 extensions и Certificate Signature Algorithm :(
Может кто посоветует другие способы работы с SSL сертификатами?

Python для новичков » аналог canvas.translate но с абсолютным переносом координат » Дек. 25, 2008 13:17:30

Всем привет,
кто нибудь встречал способ для переноса начала координат с указанием абсолютного значения
новых координат (от левого нижнего угла canvas?),
А не относительных которые предлагает метод:
canvas.translate()
относительно последней установленной точки начала координат.
P.S. или как восстановить начало координат в любой момент времени, в левый нижний угол?

Python проекты » django-NinjaPaginator » Дек. 22, 2008 21:44:03

Описание:
Джанго аппликация для лёгкого встраивания известных типов деления на страницы.

На данный момент имеются следующие виды пагинации:
* Digg.com
* Filmfeed.ru


Старница проекта:
http://www.assembla.com/spaces/ninja-paginator



Примеры использования:
# views.py

from ninjapaginator.util import NinjaPaginator
from annoying.decorators import render_to
from blog.models import Post


@render_to('blog_posts.html')
@NinjaPaginator(style='digg', per_page=15)
def list_posts(request):
posts = Post.objects.all()
return {'object_list': posts}
# blog_posts.html
{% for post in object_list %}
{{ post.title }}
{% endfor %}


<p>
{% include "paginator.html" %}
</p>

# that's it, your page now have "digg.com" style paginator.
Зависимости:
* python >= 2.4
* django >= 1.0
* render_to decorator


Интрукции установки:
* Скопировать папку ninjapaginator в папку проекта или положить куда нибудь в PYTHONPATH
* Прописать ‘ninjapaginator’ в INSTALLED_APPS
* Перенести файл paginator.css в папку ваших статических файлов и подключить его в html


Адрес mercurial репозитория
hg clone http://hg.assembla.com/ninja-paginator


Лицензия
BSD

Django » Безболезненное внесение изменений в модель » Дек. 21, 2008 15:38:00

Поделитесь опытом, кто как решает проблемы в случае если нужно внести изменение в модель? Скажем, добавление дополнительного поля.

Django » *args, **kwargs в определении super функции класса » Дек. 18, 2008 18:22:20

Hi.

Мой вопрос относительно этой строки
http://code.djangoproject.com/browser/django/trunk/django/forms/fields.py#L144
а именно этой части
.__init__(*args, **kwargs)
здесь параметр **kwargs и *args используются только для передачи переменных определенных во входных параметрах этого класса и род.класса?
Потому что другие параметры туда вставляемые дают ошибку.
Например как f = forms.CharField(f='test').

__init__() got an unexpected keyword argument 'f'

Request Method: POST
Request URL: http://127.0.0.1:8000/accounts/register/
Exception Type: TypeError
Exception Value:

__init__() got an unexpected keyword argument 'f'
Спасибо

Флейм » OpenOpt 0.21: Українське вільне ПЗ для чисельної оптимізації » Дек. 16, 2008 20:51:49

Вийшов черговий реліз 0.21 вільного (ліцензія BSD) ПЗ для чисельної оптимізації OpenOpt, що розробляється співробітниками відділу оптимізації ІК НАНУ.
http://openopt.blogspot.com/2008/12/openopt-release-021.html

Він написан мовою програмування Python, що на вiдміну від С та Fortran дозволяє RAD (Rapid application development).

Комерційні аналоги коштують тисячі та навіть десятки тисяч доларів, окрім того приблизно 10% доводиться витрачати на оновлення програмних бібліотек щорічно.

Докладніше про openopt:
українською мовою
http://scipy.org/scipy/scikits/wiki/OOdescr_ua
російською мовою
http://scipy.org/scipy/scikits/wiki/OOdescr_r

Наразі OpenOpt переноситься на новий хостінг від uafoss.org, де вже створено новий форум присвячений чисельній оптимізації та відповідного вільного программного забеспечення.
http://forum.openopt.org

За підтримку у створенні нового сайту та форуму для OpenOpt ми маємо подякувати Михайлу Даниленко (Mickhailo Danilenko) та Володимиру Лисівці (Volodimir M. Lisivka) з linux.org.ua (LOU) community, особлива подяка Вадиму Машкову (Wadim V. Mashkov) та Михайлу Шигоріну (Michael Shigorin) з linux.kiev.ua community.

– Розробники OpenOpt

GUI » Cairo: виджет работает, но невидим » Дек. 15, 2008 04:32:03

Здравствуйте!

Есть замечательный пример программирования Cairo, в котором рисуются великолепные часы: http://www.pygtk.org/articles/cairo-pygtk-widgets/clock_ex5.py
Из кода видно, что мышкой можно захватывать и вращать минутную стрелку, информация будет идти в консоль.

Я решил вставить такие часы в свое приложение (PyGTK + Glade):
    clock = EggClockFace()
clock.connect("expose_event", clock.expose)
clock.connect("button_press_event", clock.button_press)
clock.connect("button_release_event", clock.button_release)
clock.connect("time_changed", time_changed_cb)
clock.connect("motion_notify_event", clock.motion_notify)
clock.set_size_request (100, 100)
clock.show ()
main.wTree.get_widget ("table2").attach (clock, 11, 12, 1, 4)
main - экземпляр моего класса приложения.

В итоге, часы добавляются на мою форму приложения, но остаются невидимы, хотя и работают 100%, т.к. при попытках “наугад” покликать мышкой в их области в консоль попадают сообщения о захватах стрелки. Кроме того явно заметно, что выделяется область 100х100 в моем окне, но сам виджет часов по-прежнему невидим. Бьюсь уже всю ночь! Что это может быть? :(