Уведомления

Группа в Telegram: @pythonsu

Уведомления

  • Found 3469 posts.

Django » Наследование с Contenttype » Сен. 2, 2009 16:22:58

Есть модель:
class Photo(models.Model):

content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
object = generic.GenericForeignKey('content_type', 'object_id')
image = models.ImageField(upload_to=get_upload_to, max_length=1024)

class Common(models.Model):
# Поля...
photo = generic.GenericRelation(Photo)

class Class_common(Common):
# Поля...

class Class_car(Class_common):
# Поля...
при обращении к модели:
Class_car.objects.get(pk=1).photo.all()
запрос к Photo выглядит примерно так:
SELECT "media_photo"."id",
"media_photo"."content_type_id",
"media_photo"."object_id",
"media_photo"."image",
FROM "media_photo"
WHERE ("media_photo"."object_id" = 1 AND "media_photo"."content_type_id" = 41 )
c content_type_id Class_car(41)

а при запросе:
Class_car.objects.filter(photo__isnull=False)
sql выглядит примерно так:
SELECT DISTINCT T6."id",    
"advert_class_car"."class_common_ptr_id",
FROM "advert_class_car"
INNER JOIN "advert_class_common" ON ("advert_class_car"."class_common_ptr_id" = "advert_class_common"."common_ptr_id")
INNER JOIN "common_common" ON ("advert_class_common"."common_ptr_id" = "common_common"."id")
INNER JOIN "media_photo" ON ("common_common"."id" = "media_photo"."object_id")
INNER JOIN "common_common" T6 ON ("advert_class_car"."class_common_ptr_id" = T6."id")
WHERE ("media_photo"."id" IS NOT NULL AND "media_photo"."content_type_id" = 130 )
Я предпологал что content_type_id будет модели Class_car, то есть 41, а не 130

Если кто-то сталкивался с подобным, то как решалась такая задача

PS. если в Photo вместо Contenttypе использовать ForeignKey(Common, related_name='photo'), то все собственно корректо

Python для новичков » почему getopt.getopt не бросает exception » Авг. 31, 2009 08:36:50

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

Пример кода:

opts, args = getopt.getopt(sys.argv, “ht:i:v”, )
except getopt.GetoptError:
# print help information and exit:
#print str(err) # will print something like “option -a not recognized”
print(__doc__)
sys.exit(2)

print(“test”)

Если запускаю вот так, с несуществующими параметрами, тов се работает:

python.exe script.py –fdasfsd=fds

А, вот так, excepion не резится:

python.exe script.py fdasfsd

(т.е. отсутсвие ‘-’ и ‘–’ воспринимается как то иначе в функции getopt? не могли бы пояснить)

Инструментальные средства разработки » IDE для Zope3 » Авг. 30, 2009 17:06:54

Собственно, работаю Eclipse + Aptana Pydev (есть конечно Aptana Web Studio, но она хоть и на базе то же Затмения, но тормозит очень), в общем - то если настроить то можна с зоупом работать, но…

рылся в Угле, и не нашел ничего специализированного, мелькало какое-то Zope IDE для FF, но проект закрылся.
Может кто чего такого видел/знает/находил - подскажите, киньте ссылки.

Заранее благодарен.

Python для новичков » Хочу прояснить насчет io » Авг. 26, 2009 15:49:02

Сабжевый модуль, как я понимаю, появился в 2.6 . Что-то вроде сишного iostream. Не очень понял, при вызове, скажем, встроенной open() - вызывается стандартный или теперь уже тот, что в этом модуле? И стоит ли под 2.6 переписывать работу с файлами и потоками под этот модуль? Проясните, пожалуйста, что это такое и с чем едят.

Python для новичков » Произвольный декоратор на print в 2.6? » Авг. 24, 2009 00:34:19

Можно ли назначить декоратор функции, которая уже объявлена?
Можно ли назначить декоратор на команду print, как на функцию?

Django » Счетчик посещений » Авг. 20, 2009 20:02:57

Помогите найти, если такой имеется, счетчик посещений. Мне нужны исходники абсолютно любого, даже самого простого, аналога li.ru

Флейм » Небольшая презентация про ФП в языках от MS » Авг. 20, 2009 14:20:01

Может и не канонично это на питоновском форуме, но мне было интересно, может и другим.
http://cufp.galois.com/2008/slides/SymeDon.pdf

GUI » wxPropGrid » Авг. 18, 2009 14:51:59

У кого-нибудь получилось собрать под линуком сабж? поделитесь рецептом

Python для новичков » formalchemy+webpy+sqlalchemy » Авг. 17, 2009 19:58:24

Пытаюсь получить данные из формы в FieldSet:

order1 = session.query(Persons_Class).first()
fs = FieldSet(order1, i)

В доке:
dictionary-like object of user-submitted data to validate and/or sync to the model. Scalar attributes should have a single value in the dictionary; multi-valued relations should have a list, even if there are zero or one values submitted. Currently, pylons request.params() objects and plain dictionaries are known to work.
Но не могу понять как это должно выглядеть.

В качестве i пробовал указывать:
import cgi
i = cgi.parse_qs(web.webapi.data(), keep_blank_values=True)

import web
i = web.input()

Подскажите как должны выглядеть данные для FieldSet. Хорошо если найдется простой способ забрать их из post/get.

Mobile Python » RIL dll в WinCE » Авг. 17, 2009 15:43:31

Хочу попробовать подергать функици из RIL.dll (Radio Layer Interface)…

описание для RIL гласит что необходимо делать так…
// keep this handle handy as we need it for further RIL commands
HRIL rilHandle;

...

HRESULT hr = RIL_Initialize(
1, // index of the RIL port to use (e.g., 1 for RIL1:)
&resultCallBack, // this is a pointer to your result call back method
&notifyCallback, // this is a pointer to your notify call back method
RIL_NCLASS_ALL, // all notification (except device specific)
(DWORD) this, // custom param (could be a pointer to an instance of a class)
&rilHandle); // returned handle to RIL instance


...

void CALLBACK resultCallback(
DWORD dwCode,
HRESULT hrCmdID,
const void *lpData,
DWORD cbData,
DWORD dwParam)

{
// handle the results

...

void CALLBACK notifyCallback(
DWORD dwCode,
const void *lpData,
DWORD cbData,
DWORD dwParam)
{
// handle the notification
чем заменить CALLBACK на Python ?

Web » Написание простых RESTful Web Services на Питоне » Авг. 17, 2009 14:34:57

Здравствуйте, уважаемые форумчане! :)

Недавно озадачился такой задачей, как написание XML REST вебсервиса (пока только прототип). Хотелось сделать это максимально просто, но за пару дней не удалось найти очень простых средств для скриптовых языков. Решил написать на Питоне самостоятельно. Вот что получилось (пока что очень сырая версия, некоторые вещи еще хочется добавить): http://code.google.com/p/python-very-simple-web-services/

Пример вебсервиса:

#! /usr/bin/env python

from vsws import url_pattern, Controller
from webob import Request, Response

@url_pattern("/users")
@url_pattern("/all_users")
@url_pattern("/users/${username}/list", ['GET'])
def get_users (response):
response.status = 200
return "Inside get_users()"

@url_pattern("/users/${username}")
def get_user (username):
return {"body": "Inside get_user('%s')" % username, "status": 201}

@url_pattern("/users/${username}/plans", ['GET', 'PUT'])
def get_plans (username):
return "Inside get_plans('%s'), GET or PUT" % username

@url_pattern("/users/${username}/plans", ['POST'])
def get_plans (username):
return "Inside get_plans('%s'), POST" % username

@url_pattern("/users/${username}/plans/${year}")
def get_plan (username, year, method, param2 = ''):
return "Inside get_plan('%s', %s, %s, %s)" % (username, year, method, param2)

print Request.blank ('/users/john/plans/2009?param1=value1&param2=value2').get_response (Controller())
Мне кажется, что это я повторил что-то уже существующее, просто за целый день не смог найти, что именно :) Как бы то ни было, пользуйтесь на здоровье, кому надо. Принимается любая критика.

Инструментальные средства разработки » Komodo + threading » Авг. 17, 2009 13:14:26

Собственно проблема такая.

Берем код
import threading

def proc(p):
print "Start thread " + p

p1 = threading.Thread(target=proc, name="p1", args=["1"])
p2 = threading.Thread(target=proc, name="p2", args=["2"])

p1.start()
p2.start()
Делаем F5, получаем

ERROR: dbgp.client: 
The main thread of this application is exiting while there are still threads
alive. When the main thread exits, it is system defined whether the other
threads survive.

See Caveats at http://docs.python.org/lib/module-thread.html
И усе. В эклипсе например нормально все отрабатывает, IDLE - тоже все переваривает..

Что не так?

Флейм » Легальные книги » Авг. 12, 2009 14:23:58

Тут - сборник легатьной литературы в pdf. Качать можно бесплатно, но надо смотреть рекламу и, желательно, щелкать на ней.

Django » Удаление моделей по быстрому и упрощение подобных простых действий » Авг. 12, 2009 13:49:07

Вообщем есть модели, каждый раз для реализации удаления модели приходится повторять след вещи:
-писать урл в конфиге на вьюшку
-писать вьюшку, с логикой по проверке прав и удалении модели
-делать тег который рисует ссылку или не рисует ссылку если у юзера нет прав
-создавать шаблон для тега в котором отрисовывает ссылка
+еще возможно действия по возврату на страницу (передача next)

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

Вообщем кто как делает? может что дефолтное есть в джанге для этого, чтобы например напрямую контролер на методы напрямую отправлять, минуя написание конфигов, или что-то типа этого?

Инструментальные средства разработки » Eclipse.Не могу изменить файл » Авг. 11, 2009 22:58:06

Доброго времени суток!!!!
У меня есть Eclipse 3.2, WinXP SP3 32, Python 2.6, PyDev последний
Поставил джанго, сотворил новый прожект, далее import->general->file system выбрал файлы , где лежит проект джанго. Он заимпортился. А далее я изменяю файл а он не сохраняется, ничего не матерится. Проверял в блокноте - точно не сохраняется.

Как разблокировать файлы?

Спасибо!!!

Network » Работа с Cookies » Авг. 10, 2009 13:09:44

Создаю opener с автоустановкой cookies следующим образом:

def build_opener(debug=False):
http_handler = urllib2.HTTPHandler(debuglevel=debug)

cookie_jar = cookielib.CookieJar()
cookie_handler = urllib2.HTTPCookieProcessor(cookie_jar)

opener = urllib2.build_opener(http_handler,cookie_handler)
opener.cookie_jar = cookie_jar
return opener

opener = build_opener()

Появилась необходимость получить доступ к этим Cookies, не могу сообразить как это сделать. Точнее мне нужно, чтобы к Cookies, которые автоматически устанавливаются добавлялась моя строчка.

Python для новичков » хуки в Python » Авг. 9, 2009 15:15:13

Здравствуте.
Нужно, чтобы обрабатывались нажатия клавиатуры в других приложениях. Для этого, как я понял, нужно использовать хуки Windows, как это можно сделать? Пробовал с помощью PyWin32, но не смог найти в документации ничего про хуки.

GUI - Qt.

Python проекты » LinkExchange » Авг. 6, 2009 20:51:16

LinkExchange — это программная библиотека для языка Python, предназначенная для интеграции различных систем купли-продажи ссылок с сайтом, созданном на Python. Возможности библиотеки включают поддержку сервисов Sape.ru и LinkFeed.ru, а также гибкие возможности разделения ссылок на блоки и их форматирования.

LinkExchange состоит из следующих компонентов:

* клиенты к различным системам купли-продажи ссылок;
* классы форматирования блоков ссылок;
* драйвера подсистемы буферизации;
* вспомогательный код для интеграции с различными основанными на Python веб-приложениями и фреймворками.

Страница проекта: http://linkexchange.org.ua/
Автор: Кориков Константин
Лицензия: LGPL v2
Платформа: не зависит от платформы (но на данный момент есть одно ограничение http://linkexchange.org.ua/wiki/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8CLinkExchange )

Еще не выпущено ни одного релиза, версия 0.1 в разработке и близка к выходу, доступен SVN репозитории, а также срез в виде упакованных исходников.

Буду рад обсудить все замечания/предложения по данному проекту.

Python для новичков » класс с итератором » Авг. 6, 2009 11:33:33

Доброго времени суток всем.

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

вот код:
from itertools import chain

class cNode:
def __init__(self, name = "", attrs = {}):
self.name = name
self.attrs = attrs

def GetAttrs(self):
return self.attrs.keys()

def GetValue(self, attr):
value = None
try:
value = self.attrs[attr]
except KeyError:
pass

return value

class cTree:
class cData:
def __init__(self, data=None):
self.child = []
self.node = data

def __iter__(self):
#for nn in self.child:
# yield nn
for n in chain([self], *self.child):
yield n

def __init__(self):
self.data = cTree.cData()

def __iter__(self):
for n in self.data:
if isinstance(n.node, cNode):
yield n.node

def Append(self, parent, node):
temp = cTree.cData(node)

if parent is None:
self.data.child.append(temp)
else:
for n in self.data:
if n.node == parent:
n.child.append(temp)
break

tree = cTree()
node1 = cNode("root")
node2 = cNode("3")
node3 = cNode("4")
node4 = cNode("5")
node5 = cNode("1")
node6 = cNode("2")
node7 = cNode("10")
node8 = cNode("11")
node9 = cNode("12")

tree.Append(None, node1)
tree.Append(node1, node2)
tree.Append(node2, node3)
tree.Append(node2, node4)
tree.Append(node1, node5)
tree.Append(node1, node6)
tree.Append(node3, node7)
tree.Append(node3, node8)
tree.Append(node3, node9)

for tn in tree:
print tn.name
вывод программы:
root
3
4
10
11
12
5
1
2
Все замечательно работет если я использую дополнительно chain из itertools
for n in chain(, *self.child):
yield n
а если попытятся обойтись без этого и написать
for nn in self.child:
yield nn
то глубже 1го уровня я попасть немогу. Вот поэтому и есть ощющение - что последовательность кривая получается, а почему - понять немогу.

Всем спасибо.

Python для новичков » polling » Авг. 6, 2009 08:26:21

Добрый день.
Кто-нибудь работал с polling, можете описать общие принципы работы, что да как?

Заранее благодарен.