Уведомления

Группа в Telegram: @pythonsu

Уведомления

  • Found 3486 posts.

Django » post_save » Май 5, 2011 21:31:09

Имеется расширенная стандартная модель юзера и соответственно сигнал(создание профиля), но он почему-то не всегда срабатывает. В чем загвоздка? Напишите свою версию сигнала

class UserProfile(models.Model):
user = models.OneToOneField(User, unique=True)
photo = models.CharField(max_length=255, blank=True)
position = models.CharField(max_length=255, blank=True)

def user_post_save(created, instance, **kwargs):
if created:
UserProfile(user = instance).save()

post_save.connect(user_post_save, sender=User)

GUI » [PyQwt] Несколько графиков с одной легендой » Май 5, 2011 12:26:25

День добрый.

есть QwtPlot с кучей графиков. Графики отображаются/скрываются посредством legendChecked. Но есть одна проблема - в легенде один график - одна запись (соответственно один curve). Вот только графики не все разрознены - каждому графику соответствует еще один, того же цвета, но с другими настройками пера (штриховой вместо сплошного). Мне нужно, чтобы связанные графики отображались одной записью в легенде и соответственно скрывались/отображались вместе.

В данный момент код выглядит так:
    # legend
legend = Qwt.QwtLegend()
legend.setFrameStyle(Qt.QFrame.Box)
legend.setItemMode(Qwt.Qwt.QwtLegend.CheckableItem)
self.ui.qwtSegPlot.insertLegend(legend, Qwt.QwtPlot.RightLegend)
# Axis
self.ui.qwtSegPlot.setAxisScaleDraw(
Qwt.QwtPlot.xBottom, TextScaleDraw(funcLabel))
self.ui.qwtSegPlot.setAxisMaxMajor(Qwt.QwtPlot.xBottom, 35)
self.ui.qwtSegPlot.setAxisMaxMinor(Qwt.QwtPlot.xBottom, 0)

....

for key in lSeg.keys():
# Левое полушарие
curvL[key] = Qwt.QwtPlotCurve(key)
curvL[key].attach(self.ui.qwtSegPlot)
curvL[key].setRenderHint(Qwt.QwtPlotItem.RenderAntialiased)
curvL[key].setPen(Qt.QPen(cols[key], 2, Qt.Qt.DotLine))
curvL[key].setData(range(len(lSeg[key])), lSeg[key])
self.showCurve(curvL[key], False)
# Правое полушарие
curvR[key] = Qwt.QwtPlotCurve(key)
curvR[key].attach(self.ui.qwtSegPlot)
curvR[key].setRenderHint(Qwt.QwtPlotItem.RenderAntialiased)
curvR[key].setPen(Qt.QPen(cols[key], 2))
curvR[key].setData(range(len(rSeg[key])), rSeg[key])
self.showCurve(curvR[key], False)
Т.е. для каждого из 2-х связанных графиков создаётся свой curve со своим пером, общий у них только ключ.
Может если кто и никогда не делал подобное, то по крайней мере есть идеи какой класс наследовать для изменения и в какую сторону.
Или это есть в стандартной библиотеке, да я проглядел.

Спасибо за понимание.

Web » xmlrpc и классы » Май 4, 2011 13:39:44

Есть например xmlrpc сервер и надо подключить для клиентов методы из этих классов. Например есть модуль modul.py в нем класс class1 и метод класса foo.
На стороне сервера я его регистрирую как
import modul
...
s.register_function(modul.class1.foo)
После запуска сервер стартует ни на что не ругается.
Но если законнектится например с ipython и попытать вызвать x.modul.class1.foo(), то пишет, что данный метод не поддерживается сервером. Если методы объявляет прямо внутри модуля сервера, то все отлично работает.

Django » Разработчик Python+Django » Май 3, 2011 14:34:11

Умения и навыки
-Хорошее знание Python/Django
-Аналитический склад ума
-Умение работать с чужим кодом
-Умение рефакторить и оптимизировать код
-ООП и прочее
-Верстка и знание CSS приветствуется
-HTML, CSS, Javascript (в частности jQuery).
Желательно знакомство с linux, git, mysql и другими веб-технологиями,

Идеальный вариант - работа в офисе в Екатеринбурге, Россия
Рассматриваемый - постоянная удаленная работа.



Зарплата по итогам собеседовния. вилка $500-1000.
Контакты: почта: info@zavode.ru

GUI » [PyQt] Небольшой модуль для работы с потоками » Май 1, 2011 13:12:21

Написал небольшой модуль, упрощающий (ну, как мне кажется :)) работу с потоками.
В двух словах: можно заставить метод класса (потомка QObject) выполняться в отдельном потоке. При этом метод может обращаться к атрибутам (ограниченно) и методам класса реентерабельно.

Пример работы с модулем:
#!/usr/bin/python
# -*- coding: UTF-8 -*-

from PyQt4.QtCore import *
from PyQt4.QtGui import *
import sys, time
from simple_thread import SimpleThread, closeThreads

MAX = 10
BAR_COUNT = 4
class MainFrame(QFrame):
def __init__(self):
QFrame.__init__(self)

layout = QVBoxLayout(self)

self.barList = []
for i in range(BAR_COUNT):
bar = QProgressBar(self)
bar.setRange(0, MAX)
layout.addWidget(bar)
self.barList.append(bar)

button = QPushButton('Go', self)
button.clicked.connect(self.goClick)
layout.addWidget(button)

def goClick(self):
for i in range(BAR_COUNT):
self.go(i, thr_start = True)

@SimpleThread
def go(self, barNum):
for progress in range(MAX+1):
if self.thr_stopFlag:
break
self.setProgress(barNum, progress)
time.sleep(0.5)

def setProgress(self, barNum, progress):
self.barList[barNum].setValue(progress)

def closeEvent(self, event):
closeThreads()

if __name__ == "__main__":
app = QApplication(sys.argv)
mainFrame = MainFrame()
mainFrame.show()
app.exec_()
Здесь метод go обертывается декоратором @SimpleThread.
	@SimpleThread
def go(self, barNum):
for progress in range(MAX+1):
if self.thr_stopFlag:
break
self.setProgress(barNum, progress)
time.sleep(0.5)
В методе каждые 0.5 секунд увеличивается значение одного из прогрессбаров на единицу. Номер прогрессбара в списке self.barList передается аргументом barNum.

При вызове метода go
self.go(i, thr_start = True)
создается отдельный поток, в контексте которого выполняется код этого метода. Именованный аргумент thr_start запускает поток сразу же после создания.

Изменение значения прогрессбара происходит непосредственно в методе setProgress.
	def setProgress(self, barNum, progress):
self.barList[barNum].setValue(progress)
Несмотря на то, что вызов setProgress мы производим из отдельного потока, его код выполняется в контексте основного потока и не вызывает проблем с доступом к GUI.

Функция closeThreads
	def closeEvent(self, event):
closeThreads()
необходима для корректного завершения всех потоков при закрытии главного окна.

В методе, который будет выполняться в отдельном потоке, мы можем безопасно:
- вызывать другие методы класса
- получать неизменяемые аттрибуты
- получать аттрибуты типа list и dict (при этом происходит копирование значения аттрибута)
- устанавливать аттрибуты.

Хотелось бы услышать ваше мнение и прояснить несколько вопросов:
1) Не велосипед ли это? Если да, то ткните, пожалуйста, ссылкой.
2) Нужно ли это вообще? :)
3) В чем косяки?

P. S. Что-то не получается приаттачить файл. Здесь модуль и приведенный выше пример.

Python для новичков » Помогите разобратся с установкой сайта на питоне » Апрель 28, 2011 09:04:49

Есть веб сервер с 2мя сайтами, 1 на php d-t-c.ru, другой topmarine-south.ru по всей видимости написан на python фреймверк flask
В папке апача sites-enabled лежат 2 конфигурационных файла.
dtc тут мне все понятно, виртуальный хостинг апача который определяет сайт по имени, указана папка с документами /var/php_apps/dtc
для переноса скопировал папку, в скрипте нашел конф файл с доступом к бд, сделал бэкап бд для переноса. Перенес на другой хостинг все заработало.
#<VirtualHost d-t-c.ru:80>
# ServerAdmin demmsnt@gmail.com
# <Proxy *>
# Order deny,allow
# Allow from all
# </Proxy>
#
# ProxyPass / http://127.0.0.1:5001/
# ProxyPassReverse / http://127.0.0.1:5001/
#</VirtualHost>
<VirtualHost *:80>
ServerName d-t-c.ru
ServerAdmin webmaster@localhost
DocumentRoot /var/php_apps/dtc
AddDefaultCharset windows-1251
<Directory />
Options FollowSymLinks
AddDefaultCharset windows-1251

RewriteEngine On
RewriteBase /
RewriteRule ^.htaccess$ - [F]

RewriteRule ^load/url=(.+)$ /index.php?uri=files&do=download&fileurl=$1
RewriteRule ^go/url=(.+)$ /index.php?uri=files&do=redirect&url=$1

RewriteCond %{REQUEST_URI} !\.(jpg|jpeg|ico|gif|png|css|xml|js|pl|txt)$ [NC]
RewriteCond %{REQUEST_URI} !^/go/url=
RewriteCond %{REQUEST_URI} !^/load/url=
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ /index.php?uri=$1 [L]

</Directory>

ErrorLog /var/log/apache2/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
</VirtualHost>
topmatine тут дело обстоит иначе, сайт определяется по имени и перенаправляет запрос на локальный адресс с портом 5000, что происходит дальше мне неизвестно, как я понимаю на 5000 порту работает веб сервер который обрабатывает запрос, но что это за вебсервер и как он настроен я не смог выяснить.
<VirtualHost *:80>
ServerName www.topmarine-south.ru
ServerAdmin demmsnt@gmail.com
<Proxy *>
Order deny,allow
Allow from all
</Proxy>

ProxyPass / http://127.0.0.1:5000/
ProxyPassReverse / http://127.0.0.1:5000/
</VirtualHost>

<VirtualHost *:80>
ServerName topmarine-south.ru
ServerAdmin demmsnt@gmail.com
<Proxy *>
Order deny,allow
Allow from all
</Proxy>

ProxyPass / http://127.0.0.1:5000/
ProxyPassReverse / http://127.0.0.1:5000/
</VirtualHost>
Я хочу перенести их, с php мне все понятно т.к. есть опыт работы.
А вот с другим сайтом проблема, не предстовляю что воабще нужно чтобы заработал такой сайт

Путем переименования =) выяснил что папка со скриптом сайта находится в /var/django_apps/topmarine2 я её заархивировал вот ссылка http://narod.ru/disk/11336029001/topmarine2.zip.html

Скажите пожалуйста, как мне запустить этот скрипт на другом хостинге? я не знаю как настроить виртуальный хост апача на другом сервере и какие манипуляции надо провести с python чтобы запустить скрипт.

Заранее извиняюсь если где есть бред, я 3 день застопорился с этим сайтом и не могу найти решения.

GUI » высота меню пуск » Апрель 27, 2011 19:42:59

Народ, подскажите как можно узнать высоту меню “Пуск” в винде средствами питона?

Python для новичков » послветуйте инструментарий для работы с JS и CSS » Апрель 26, 2011 08:29:52

всем привет, я начинающий джанго питонист

хочу делать свои собственные проекты - сайты и веб-приложения

выбрал джанго как основной инструмент
понравилось то что отпала необходимость изучать СУБД

ищу максимально удобный инструмент для работы с JS
обязательно с хорошими учебниками на русском языке (английский не бельмес)
так чтобы как в джанго было всё просто и удобно, без необходимости глубоко вникать в JS

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

спасибо

Django » Авторизация и регистрация пользователей. » Апрель 25, 2011 23:53:19

Первая неделя моего изучения фреймворка-Django.
Написал систему авторизации-логина, но чувствую, что вышло криво.
Используется django-registration.
Прошу оценить, покритиковать, обругать, etc.

http://srcboard.com/qkld07tm
Пароль: private

Тут лежит проект полностью:
http://db.tt/5j4GD8r

Спасибо.

Флейм » Форум о работе... ? » Апрель 24, 2011 12:08:23

Привет, ищу программиста на не сложный проект, может кто подскажет где мне это лучше сделать?
На форуме такого топика нет, на python.su/job/ не зарегистрироваться ни как :(((

Спасибо.

Инструментальные средства разработки » Докстринги в pycharm » Апрель 24, 2011 09:52:08

Можно ли сделать так, чтобы, когда используется автодополнение, справа от окошечка с вариантами дополнения показывались их докстринги?
И еще, я не очень понял, что делает комбинация Ctrl+Q. Когда бы я ее ни нажимал, она ничего не показывает, появляется пустое окошечко с Documentation for %название%.

Python для новичков » Нужна помощь с задачей на графы... » Апрель 24, 2011 00:26:18

Task
В связи с невероятной жарой и отсутствием осадков, маленькую страну на небольшом
острове «Ярз и Ева» охватили ужасные пожары. Благодаря слаженным действиям
спасателей все жители страны были эвакуированы на близлежащие планеты.
Спасать же страну остался маленький пожарный робот. Ему удалось потушить все
города кроме столицы. Для тушения была истрачена вся жидкость, поэтому страна обречена
сгореть.
Пламя распространяется очень быстро, поэтому каждый день огонь пожирает все города,
соединенные дорогой с уже горящими городами. Тушить робот уже ничего не может,
единственное, что ему остается — это бежать от огня. Скорость робота совпадает со
скоростью огня, поэтому за один день робот может перебраться в соседний город.
Роботом посменно управляют два пилота Николай и Владимир, которые находятся на
естественном спутнике Земли. Не смотря на то, что робота уже не спасти и пользы от него
никакой нет, пилоты очень заинтересованы, чтобы он был уничтожен не в их смену. За
потерю робота полагается приличный вычет из заработной платы.
В первый день робот находится в столице (городе номер 1). Николай управляет роботом
в первый день и может направить его в произвольный город соединенный с 1. Далее пилоты
чередуются. Таким образом, каждый день единственное что может сделать робот — это
передвинуться на любой соседний с его текущим положением город.
В первый день горит только столица. Каждый следующий день дополнительно
загораются все города, соединенные дорогами с уже горящими.
Если пилот оставляет робота в горящем городе или направляет его в уже горящий
город, то робот не выдерживает огня и уничтожается. Попробуйте определить, кто при
оптимальном поведении обоих пилотов уплатит штраф за потерянного робота. Учтите, что
загоревшись однажды, город продолжает гореть длительное время (большее чем период
времени, рассматриваемый в задаче).

Формат входного файла
В первой строке задано количество городов n и дорог m в стране 2 <= n,m <= 1000).
В следующих m строках описаны дороги: a, b — номера городов, соединенных дорогами
Дороги являются двусторонними, между любой парой городов
существует не более одной дороги. Между любыми двумя городами существует путь.

Формат выходного файла
В выходной файл выведите имя пилота, который заплатит штраф при оптимальном
поведении обоих пилотов. («Nikolay» — если это Николай, «Vladimir» — если это Владимир)

Ввод:
4 3
1 2
1 3
2 4

Вывод:
Vladimir
В принципе понятно, что надо делать, однако…
Задачка на графы… сначала надо “жечь города” или искать путь?
Тут нужен будет обход в ширину, в глубину или и то и другое…
Прошу не говорить, что всё решится в первый же день, т.к. путь в графе не есть дорога между городами…. (Cap.Obv.)
Нужна помощь, пожалуйста!

Python для экспертов » [JOB] Работа: серверная часть онлайн игры » Апрель 22, 2011 09:42:02

Требуется опытный программист для написания сервера управления аккаунтами и счетами игроков (User Server).
двунаправленное общение Game Client/Game Server <-> User Server
обязательно: опыт разработки многопоточных приложений в т.ч. использование stackless/gevent, sqlalchemy/django orm, postgres - psycopg2
желательно: django, google protobuffers

Работа удаленная, связь через инет, полная занятость, полный рабочий день.
З/П по договоренности (от 60К рублей на исп срок)

Вопросы и резюме кидать сюда: info@whiteteam.ru

GUI » Навигация табом в QTableWidget » Апрель 22, 2011 08:09:23

имеется обыкновенный QTableWidget. С помощью свойства TabKeyNavigation мы можем установить навигацию, а именно:

* при включенном этом свойстве - при переходе фокуса на таблицу - далее движемся по ячейкам
* при выключенном этом свойстве - при переходе фокуса на таблицу - попадаем на первую ячейку - далее фокус покидает таблицу

нужно чтобы при переходе фокуса на таблицу - далее двигались по _строкам_ таблицы. Как быть?

Python для новичков » PIL без Image и остального » Апрель 22, 2011 02:32:38

Проблема решена,переустановкой Н раз.

Python для новичков » Как узнать имя процесса для текущего окна? » Апрель 21, 2011 23:46:32

Здравствуйте, хотелось бы узнать как можно получить имя процесса, которому принадлежит текущее (читай, активное) окно. Платформа - Windows.
Разъясню на примере: имеется фоновая программа на Python. Надо чтобы когда будет активно, к примеру, окно Проводника, то фоновая программа сделала какую-либо команду, к примеру, увеличила какую-то переменную на единицу.
Вот, собственно, как узнать что активное окно принадлежит тому или иному процессу.
Спасибо.

Центр помощи » Вывод даты » Апрель 21, 2011 21:47:25

Помогите реализовать такую задачу:
Нужно вывести текущую дату с NTP сервера.

Python для новичков » skype4py » Апрель 21, 2011 20:10:01

Друзья, кто-нибудь пользовался сим замечательным модулем в 64-битной версии?
У меня просто не аттачиться к скайпу, то есть skype.Attach() висит без каких-то признаков жизни. windows xp, x64.
Поставил 32-битную версию с сайта - всё окей, прекрасно работает. Это баг или что?

Python для новичков » чтение RTF файлов » Апрель 21, 2011 09:34:01

Пока все что я нашел для чтения “ртф” файлов - это PyRTF-ng, но что-то он мне не нравиться, уже нашел опечатку в парсере, да и просто разобраться не могу. Может кто-нибудь подскажет lheujq способ чтения ртф файлов (собственно потом нужна будет и запись в файл, но это вроде не проблема), или покажет какой-нибудь пример работы с PyRTF-ng.