Уведомления

Группа в Telegram: @pythonsu

Уведомления

  • Found 3483 posts.

Django » Templatetags Directory » Фев. 21, 2010 09:31:39

Всем привет.
Можно ли как-то изменить директорию templatetags?
У меня несколько приложений в проекте и они все используют одни и те же таги. Я хотел папку templatetags расположить в корне проекта. Можно ли как-то это сделать?

Python для новичков » кодировка в pydoc » Фев. 16, 2010 16:32:56

У меня файл в utf-8 и док-строки на русском языке (читать доки будут только несколько человек и не вижу смысла делать их en). По-умолчанию в браузере при открытии док-файла кодировка iso-8859-5. Возможно ли как-то изменить кодировку страницы, кроме как патчинг pydoc (добавить туда тег meta)?

GUI » [PyGTK] Как скопировать текст вместе со стилем? » Фев. 15, 2010 16:59:47

Виджет gtk.TextView()
Выводим в виджет текст с нужным шрифтом (с помощью tags).
Текст копируем в буфер ОС, вставляем в другое приложение - текст вставлен, стили не скопировались. Хелп.

GUI » Tkinter: Векторная графика » Фев. 15, 2010 15:12:47

Всем доброго. Подскажите пожалуйста, есть ли возможность в Tkinter использовать векторную графику? Например SVG.

Python для новичков » как грамотно закрыть коннект ? » Фев. 15, 2010 10:39:49

Привет всем!!!
Есть небольшой скрипт который держит постоянный коннект к БД (mysql) и telnet-коннект на voip switch. Как правильно/грамотно закрыть коннект к БД? Я конечно понимаю,что БД сама по таймауту рубанет нективные коннекты, но все же хотелось бы знать как надо делать.
Код выглядит так, прошу указать на ошибки:

#!/usr/bin/env python
# -*- coding: utf8 -*-

import telnetlib
import re
import time
import datetime
from MySQLdb import connections
import signal
import sys

sleep_time = 10

voip_host = "192.168.1.1"
voip_port = 23
voip_user = "voip_user"
voip_pass = ""

db_user = 'voip'
db_pass = '12345'
db_host = 'localhost'
db_name = 'voip_switch'

class VoipSwitch():
def __init__(self):
self.tn = telnetlib.Telnet(voip_host, voip_port)
self.tn.read_until("login: ")
self.tn.write(voip_user + "\n")
self.tn.read_until("password: ")
self.tn.write(voip_pass + "\n")

def get_port(self):
self.tn.write("line -print" + "\n")
text = self.tn.read_until("usr/config$ ")
matches = re.findall(r"Busy", text)
return len(matches)

def close(self):
self.tn.write("quit" + "\n")
self.tn.close()

class VoipDatabase():
def __init__(self):
self.con = connections.Connection(db=db_name, host=db_host, user=db_user, passwd=db_pass)
self.cu = self.con.cursor()

def add(self, port):
sql = """INSERT INTO main(port, cur_time) VALUES(%d, NOW());""" % (int(port))
self.cu.execute(sql)
self.con.commit()

def get(self):
sql = """SELECT port, cur_date FROM main;"""
self.cu.execute(sql)
data = []
for tmp in self.cu.fetchaall():
data.append(tmp[0])
return data

def close(self):
self.con.close()

if __name__ == "__main__":

def signal_handler(signal, frame):
global db
global voip
db.close()
voip.close()
sys.exit(0)

def signal_handler2(signal, frame):
global db
global voip
db.close()
voip.close()
sys.exit(0)

voip = VoipSwitch()
db = VoipDatabase()
signal.signal(signal.SIGINT, signal_handler)
signal.signal(signal.SIGTERM, signal_handler2)

while(1):
port = voip.get_port()
print port, datetime.datetime.now()
db.add(port)
time.sleep(sleep_time)
И нужно ли вообще отлавливать SIGINT, SIGTERM? Как в данном случае правильно закрыть telnet-коннект ? И не является все это дело излишеством?

Python для новичков » как убить дерево процессов запущенное через subprocess.Popen? » Фев. 12, 2010 19:58:32

запустил скрипт(1) через p = subprocess.Popen, а тот ещё позапускал всякого(2)

если применить p.terminate() или p.kill() то умирает только (1) запущенный скрипт, а его дети остаются работать

как убить всех?

Базы данных » SQLAlchemy column type » Фев. 12, 2010 14:39:28

#!/usr/bin/env python

from sqlalchemy import MetaData, create_engine, select
from sqlalchemy.orm import sessionmaker

engine = create_engine(“mysql://user:passwd@localhost/shema”, echo=False)

meta = MetaData(engine, True)

Session = sessionmaker(engine, autoflush=True, transactional=True)

ssn = Session()

tb = meta.tables

q = select()

res = ssn.execute(q)

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

А теперь как можно узнать типы данных в колонках результата запроса res. Именно запроса, а не таблицы из метаданных
Что нибудь вроде …. res.type

????????????????

Инструментальные средства разработки » Eclipse вставка html тэгов » Фев. 12, 2010 08:46:23

Есть ли возможность в elipse назначить нот кеи на популярные html тэги?
То есть чтобы при нажатии например CTRL-1 выделение обрамлялось тегами <h1>…</h1>
По ctrl-enter вставлялся <br>
и так далее, причем назначаемое пользователем?

Python для новичков » Pyparsing и почтовые сообщения » Фев. 9, 2010 16:07:18

Знатоки, кто подскажет как правильно подготовить текст сообщения электронной почты для его дальнейшего парсинга модулем pyparsing?
Сейчас делаю так и ничего не выходит:

lat=Regex("LAT")+number

payload = m.get_payload(decode=True)
charset = m.get_content_charset('')

#Строка с сообщением
content=payload.decode(charset)
#Разбор сообщения
llat=lat.parseString(content)

GUI » python3.0 PyQt Ubuntu » Фев. 9, 2010 06:57:22

Кто нибудь ставил на убунту 3-ий питон с pyqt? В репозитарии все на вторую ветку. Пробовал ставить с исходников: замучался и бросил. Если у кого-то есть реальный опыт (а не советы, вроде поискать другие версии) большая просьба поделиться.

Python для новичков » GPIO » Фев. 8, 2010 15:43:10

Кто-нибудь работал General Purpose Input and Output. Можете дать пару советов с чего начать?

Network » PPPoE подключение на питоне (python) » Фев. 7, 2010 22:51:38

Возник такой момент нарыл программку http://www.raspppoe.com/99beta/README2K.HTM , что привело меня на мысль , автоматизировать на питоне и чтоб сохранить логин_пароль, название итд, типа переустановил винду нажал на ярлычёк , и ничего настраивать не надо… нарыл в сети еще AutoConnector_PPPoE , однако чтоб под меня подстройку сделали надо платить.. вот и думаю теперь что с этим делать.

Python для новичков » Раблота с потоками и таймаутом соединения urllib2 » Фев. 7, 2010 16:24:23

Добрый день, подскажите как заставить говнокод работать!

Ниже кусок одного класса.
Вызов метода Start запускает 500 потоков, которые начинают разбирать очередь состоящую из проксей,
делая запросы на 2 сайта, если они получают html, то кладут его в другую очередь и идут дальше.

В принципе все работает, но после того как очередь обработалась (proxylist.join()), остается несколько потоков которые почему-то остаются запущенными. Не могу понять почему так происходит.

В принципе я могу собрать все потоки в лист дождаться окончания очереди, а потом сделать всем затупившим нитям что-то типа thread._Thread__stop.
Но мне кажется это не правильные метод.

1. Где то место в моем коде, которое может вызвать зависание потока?
2. Как выйти из потока по времени его выполнения (сказать Worker, что он может насиловать итем из очереди не более X времени)?


    def Opener(self, url, headers, post=None, proxy=None, timeout=None):
socket.setdefaulttimeout(timeout)
upars = urlparse.urlparse(url)
self.headers['Host']= upars.netloc
if proxy:
proxy_handler = urllib2.ProxyHandler({'http':proxy})
opener = urllib2.build_opener(proxy_handler)
urllib2.install_opener(opener)
socket.setdefaulttimeout(self._Setting.proxy['TimeOut'])
if post:
post = urllib.urlencode(post)
req = urllib2.Request(url, post, headers)
try:
conn = urllib2.urlopen(req)
html, info = conn.read(), conn.info()
if html
return(html, info)
else: return False
except:
return False


def Worker(self):
while not self.proxylist.empty():
try: prox = self.proxylist.get()
except: prox = False
if prox:
curentproxy = prox.split(':')[0]
scripthtml = self.Opener(url='http://site1.ru/', headers=self.headers, post = {'zpost':'zpost'}, proxy = prox)
if scripthtml:
kthtml = self.Opener(url='http://site2.ru/', headers=self.headers, post = None, proxy=prox, timeout=20)
if kthtml:
self.htmlForParse.put_nowait((prox, scripthtml[0], kthtml[0]))
self.proxylist.task_done()
time.sleep(0.1)

def Start(self):
for x in xrange(500):
p = threading.Thread(target = self.Worker)
p.setName('Worker' + str(x))
p.start()

self.proxylist.join()

GUI » [PyQt] Статусбар в QDialog » Фев. 7, 2010 12:13:54

Нужно в диалоговое окно QDialog добавить строку статуса QStatusBar. Сейчас сделал добавление в коде. Но т.к. диалог создается в QtDesigner, хотелось бы и статусбар там же добавлять и настраивать. Возможно ли такое, если да то как?

И второй вопрос. В определеном месте статусбара нужно поместить прогрессбар (например, в крайней правой части), а левую часть оставить под вывод сообщений. Пробовал, но по умолчанию прогрессбар вставляется в крайнее левое положение. Временно решил вставкой двух виджетов: QLabel для сообщений (с большим значением stretch) и QProgressBar. Есть другие способы получить нужный результат?

Python для новичков » Потоки » Фев. 5, 2010 22:09:27

Почему swing-интерфейс блокируется даже если вызывать медленные функции так:
import thread

tread.start_new_thread(self.long, ())

Django » Сохранение по связанным таблицам » Фев. 3, 2010 12:05:13

Имеются модели:
class Item(models.Model):
name = models.CharField(_('Name'), max_length=200)
points = models.IntegerField(_('Points'), default=0)
cluster = models.ForeignKey(Cluster, verbose_name=_('Cluster'))
costumerservice = models.BooleanField(_('Customer Service'), blank=True, default=False)

class Meta:
verbose_name = _('Item')
verbose_name_plural = _('Items')

def __unicode__(self):
return u'%s (%d points)' % (self.name, self.points)

class Report(models.Model):
user = models.ForeignKey(User)
date = models.DateTimeField(_('Date'), default=datetime.now())
country = models.ForeignKey(Country)
publication = models.BooleanField(_('Publication'), blank=True, default=False)
total = models.IntegerField(default=0)

class Meta:
verbose_name = _('Report')
verbose_name_plural = _('Reports')

def cluster_name(self):
return self.country.cluster

def __unicode__(self):
return self.country.country

def save(self, *args, **kwargs):
self.total = 0
for report_item in ReportItem.objects.filter(report=self):
self.total += report_item.item.points * report_item.total
reports = Report.objects.filter(country=self.country, publication=True).all()
super(Report, self).save(*args, **kwargs)


class ReportItem(models.Model):
item = models.ForeignKey(Item)
total = models.IntegerField(default=0)
report = models.ForeignKey(Report, related_name='items', verbose_name=_('Report Item'))
У меня не изменяется при сохранении сразу же результаты report.total чтобы они обновились нужно дважды сохранить модель через админку. Как можно этого избежать? Помогите пожалуйста.

Web » "видимость" хостинга на динамическом ip и dns » Фев. 2, 2010 10:01:59

у меня сайт на динамическом ip и динамическом днс, меня поисковики не регистрируют и не ходят ко мне.
есть ли какой способ сделать сайт “видимым”? или кроме того что покупать статику варианта нет?

Python проекты » commbrowser » Янв. 31, 2010 00:25:31

Простой браузер, умеющий читать файлы описаний Descript.ion, созданные FAR.
Можно редактировать, создавать новые комментарии. Два графических режима - сжатый (только откомментированные файлы) и полный. Есть закладки, сохранение в юникодный файл desc.utf.
Требует PyGTK.

http://commbrowser.googlecode.com/files/commbrowser.tgz

Прошу помочь советом.

GUI » [PyGTK] Как избежать перехвата события key_press_event? » Янв. 30, 2010 20:11:46

Я определил коллбэк функцию для запуска файлов из первой TreeView колонки на нажатие юзером клавиши ‘Return’. Но из-за этого перехватывается управление редактирования второй колонки. Для второй колонки установлено:

self.cell_renderer2.set_property('editable', True)
self.cell_renderer2.connect('edited', edited_cb, self.model)

Можно ли сделать отдельный обработчик для каждой колонки?

Есть другой вариант: определить другой хот-кей для редактирования (напр. ctrl + e).
Но не смог разобраться с CellRenderer.start_editing()
Вот эти два параметра: background_area, cell_area так и не понял, как задать.

Python проекты » Twitter Plasmoid » Янв. 28, 2010 23:32:36

Изучаю питон, и по ходу пишу плазмоид для твиттера
сайт
http://code.google.com/p/twitter-plasmoid/