Posted by Kamidev ![]() |
|
Hi again!
Something appears to be broken now. Here is the backwards-incompatible change: http://code.djangoproject.com/wiki/BackwardsIncompatibleChanges#Signalrefactoring I haven't tried to patch it myself yet. But this is my traceback: ~/projects/communitydraft/community$ .py runserver /Users/jonas/projects/communitytools/sphenecoll/sphene/community/__init__.py:7: DeprecationWarning: django.newforms is no longer new. Import django.forms instead. from django import newforms as djangoforms /Users/jonas/projects/communitytools/sphenecoll/sphene/community/models.py:602: DeprecationWarning: dispatcher.connect() is deprecated; use Signal.connect() instead. dispatcher.connect(community_profile_edit_init_form, signal = profile_edit_init_form, sender = EditProfileForm) Traceback (most recent call last): File "manage.py", line 17, in <module> execute_manager(settings) File "/Library/Python/2.5/site-packages/django/core/management/__init__.py", line 301, in execute_manager utility.execute() File "/Library/Python/2.5/site-packages/django/core/management/__init__.py", line 248, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/Library/Python/2.5/site-packages/django/core/management/base.py", line 77, in run_from_argv self.execute(*args, **options.__dict__) File "/Library/Python/2.5/site-packages/django/core/management/base.py", line 86, in execute translation.activate('en-us') File "/Library/Python/2.5/site-packages/django/utils/translation/__init__.py", line 73, in activate return real_activate(language) File "/Library/Python/2.5/site-packages/django/utils/translation/__init__.py", line 43, in delayed_loader return g['real_%s' % caller](*args, **kwargs) File "/Library/Python/2.5/site-packages/django/utils/translation/trans_real.py", line 209, in activate _active[currentThread()] = translation(language) File "/Library/Python/2.5/site-packages/django/utils/translation/trans_real.py", line 198, in translation default_translation = _fetch(settings.LANGUAGE_CODE) File "/Library/Python/2.5/site-packages/django/utils/translation/trans_real.py", line 181, in _fetch app = getattr(__import__(appname[], {}, {}, [appname[p+1:]]), appname[p+1:]) File "/Users/jonas/projects/communitytools/sphenecoll/sphene/community/__init__.py", line 11, in <module> from sphene.community.sphutils import get_sph_setting File "/Users/jonas/projects/communitytools/sphenecoll/sphene/community/sphutils.py", line 7, in <module> from sphene.community.middleware import get_current_request, get_current_sphdata File "/Users/jonas/projects/communitytools/sphenecoll/sphene/community/middleware.py", line 5, in <module> from sphene.community.models import Group File "/Users/jonas/projects/communitytools/sphenecoll/sphene/community/models.py", line 602, in <module> dispatcher.connect(community_profile_edit_init_form, signal = profile_edit_init_form, sender = EditProfileForm) File "/Users/jonas/projects/djtrunk/django/dispatch/dispatcher.py", line 210, in connect return signal.connect(receiver, sender, weak) AttributeError: 'object' object has no attribute 'connect' --- Last Edited by Kamidev at 2008-08-08 06:40:15 --- |
|
Posted by dbickett ![]() |
|
I have this problem as well.
I updated my copy of django to the svn trunk revision after reading the installation & tutorial, but the version of django seems to be the problem in this case. If you look at the module which the code is using when the error is thrown (speaking of the present django trunk, again), you'll find that Signal is an object which you'll have to instantiate first, then call "connect" -- it's method. You may need to create three objects, because SCT calls "connect" as though it is a function of the module "dispatcher" three times in sequence. (I don't understand yet whether or not this object needs to stay alive, though my intuition tells me it does.) In Django 0.96, dispatcher.py is different, in that the SCT code in this case would not cause an exception. This is interesting because the tutorial (or install doc) specifically told me that SCT would not work with django 0.96, as I recall, though this probably owes to more than one reason. This is a list of files in the SCT trunk which are incompatible with the present django trunk: [dbickett@web25 ~]$ grep -rF "dispatcher.connect" ~/checkouts/communitytools/sphenecoll/sphene/ /home/dbickett/checkouts/communitytools/sphenecoll/sphene/community/models.py:dispatcher.connect(community_profile_edit_init_form, signal = profile_edit_init_form, sender = EditProfileForm) /home/dbickett/checkouts/communitytools/sphenecoll/sphene/community/models.py:dispatcher.connect(community_profile_edit_save_form, signal = profile_edit_save_form, sender = EditProfileForm) /home/dbickett/checkouts/communitytools/sphenecoll/sphene/community/models.py:dispatcher.connect(community_profile_display, signal = profile_display) /home/dbickett/checkouts/communitytools/sphenecoll/sphene/community/__init__.py:dispatcher.connect(community_advprofile_edit_init_form, signal = profile_edit_init_form, sender = EditProfileForm) /home/dbickett/checkouts/communitytools/sphenecoll/sphene/community/__init__.py:dispatcher.connect(community_advprofile_edit_save_form, signal = profile_edit_save_form, sender = EditProfileForm) /home/dbickett/checkouts/communitytools/sphenecoll/sphene/community/__init__.py:dispatcher.connect(community_advprofile_display, signal = profile_display) /home/dbickett/checkouts/communitytools/sphenecoll/sphene/community/management.py:dispatcher.connect(init_data, sender=models, signal=signals.post_syncdb) /home/dbickett/checkouts/communitytools/sphenecoll/sphene/community/management.py:dispatcher.connect(do_changelog, signal=signals.post_syncdb) /home/dbickett/checkouts/communitytools/sphenecoll/sphene/community/management.py:dispatcher.connect(create_permission_flags ,signal=signals.post_syncdb) /home/dbickett/checkouts/communitytools/sphenecoll/sphene/community/groupaware_templateloader.py:dispatcher.connect(clear_template_cache, /home/dbickett/checkouts/communitytools/sphenecoll/sphene/sphcomments/models.py:dispatcher.connect(clear_root_category_cache, /home/dbickett/checkouts/communitytools/sphenecoll/sphene/sphcomments/models.py:dispatcher.connect(clear_root_category_cache, /home/dbickett/checkouts/communitytools/sphenecoll/sphene/sphboard/models.py:dispatcher.connect(update_heat, /home/dbickett/checkouts/communitytools/sphenecoll/sphene/sphboard/models.py:dispatcher.connect(update_thread_information, /home/dbickett/checkouts/communitytools/sphenecoll/sphene/sphboard/models.py:dispatcher.connect(update_post_count, /home/dbickett/checkouts/communitytools/sphenecoll/sphene/sphboard/models.py:dispatcher.connect(clear_signature_cache, /home/dbickett/checkouts/communitytools/sphenecoll/sphene/sphboard/models.py:dispatcher.connect(board_profile_edit_init_form, signal = profile_edit_init_form, sender = EditProfileForm) /home/dbickett/checkouts/communitytools/sphenecoll/sphene/sphboard/models.py:dispatcher.connect(board_profile_edit_save_form, signal = profile_edit_save_form, sender = EditProfileForm) /home/dbickett/checkouts/communitytools/sphenecoll/sphene/sphboard/models.py:dispatcher.connect(board_profile_display, signal = profile_display) /home/dbickett/checkouts/communitytools/sphenecoll/sphene/sphboard/templatetags/sphboard_extras.py:dispatcher.connect(clear_authorinfo_cache, /home/dbickett/checkouts/communitytools/sphenecoll/sphene/sphboard/templatetags/sphboard_extras.py:dispatcher.connect(clear_authorinfo_cache_postcount, /home/dbickett/checkouts/communitytools/sphenecoll/sphene/sphboard/templatetags/sphboard_extras.py:dispatcher.connect(clear_posts_render_cache, /home/dbickett/checkouts/communitytools/sphenecoll/sphene/sphboard/management.py:dispatcher.connect(do_changelog, sender=models, signal=signals.post_syncdb) /home/dbickett/checkouts/communitytools/sphenecoll/sphene/sphboard/management.py:dispatcher.connect(init_data, sender=models, signal=signals.post_syncdb) --- Last Edited by dbickett at 2008-08-21 05:47:26 --- |
|
Posted by dbickett ![]() |
|
I have gotten this close to a solution, insofar as temporary workarounds are solutions. This slightly rewrites how sphene constructs djano's dispatcher signals, in accordance with the present django trunk. However it results in a further exception I supply below.
I made the change to two files: ...\sphene\community\models.py [dbickett@web25 ~]$ diff -u ~/checkouts/communitytools/sphenecoll/sphene/community/models.py ~/lib/python2.5/sphene/community/models.py --- /home/dbickett/checkouts/communitytools/sphenecoll/sphene/community/models.py 2008-08-19 11:34:06.000000000 -0500 +++ /home/dbickett/lib/python2.5/sphene/community/models.py 2008-08-21 00:03:37.000000000 -0500 @@ -576,10 +576,10 @@ value.save() else: if value.id: value.delete() - + request.user.message_set.create( message = _("Successfully saved community profile.") ) -def community_profile_display(sender, signal, request, user): +def community_profile_display(sender, signal, request, user, **kwargs): try: profile = CommunityUserProfile.objects.get( user = user, ) except CommunityUserProfile.DoesNotExist: @@ -596,11 +596,15 @@ 'value': value.value, }) except CommunityUserProfileFieldValue.DoesNotExist: continue - + return ret -dispatcher.connect(community_profile_edit_init_form, signal = profile_edit_init_form, sender = EditProfileForm) -dispatcher.connect(community_profile_edit_save_form, signal = profile_edit_save_form, sender = EditProfileForm) -dispatcher.connect(community_profile_display, signal = profile_display) +s1 = dispatcher.Signal((profile_edit_init_form,)) +s1.connect(community_profile_edit_init_form, sender = EditProfileForm) +# dispatcher.Signal().connect(community_profile_edit_save_form, signal = profile_edit_save_form, sender = EditProfileForm) +s2 = dispatcher.Signal((profile_edit_save_form,)) +s2.connect(community_profile_edit_save_form, sender = EditProfileForm) +s3 = dispatcher.Signal((profile_display,)) +s3.connect(community_profile_display) ...\sphene\community\__init__.py [dbickett@web25 ~]$ diff -u ~/checkouts/communitytools/sphenecoll/sphene/community/__init__.py ~/lib/python2.5/sphene/community/__init__.py --- /home/dbickett/checkouts/communitytools/sphenecoll/sphene/community/__init__.py 2008-08-19 11:34:06.000000000 -0500 +++ /home/dbickett/lib/python2.5/sphene/community/__init__.py 2008-08-21 00:07:03.000000000 -0500 @@ -69,7 +69,7 @@ instance.fields['community_advprofile_avatar'] = djangoforms.ImageField( label = _(u'Avatar'), required = False, ) instance.clean_community_advprofile_avatar = lambda : clean_community_advprofile_avatar(instance) -def community_advprofile_edit_save_form(sender, instance, signal, request): +def community_advprofile_edit_save_form(sender, instance, signal, request, **kwargs): data = instance.cleaned_data user = instance.user try: @@ -117,8 +117,13 @@ return ret -dispatcher.connect(community_advprofile_edit_init_form, signal = profile_edit_init_form, sender = EditProfileForm) -dispatcher.connect(community_advprofile_edit_save_form, signal = profile_edit_save_form, sender = EditProfileForm) -dispatcher.connect(community_advprofile_display, signal = profile_display) +s1 = dispatcher.Signal((community_advprofile_edit_init_form,)) +s1.connect(profile_edit_init_form, sender = EditProfileForm) + +s2 = dispatcher.Signal((community_advprofile_edit_save_form,)) +s2.connect(profile_edit_save_form, sender = EditProfileForm) + +s3 = dispatcher.Signal((community_advprofile_display,)) +s3.connect(profile_display) ... resulting exception: [dbickett@web25 ~]$ python webapps/djangotrunk/bcaucus/manage.py syncdb Traceback (most recent call last): File "webapps/djangotrunk/bcaucus/manage.py", line 11, in <module> execute_manager(settings) File "/home/dbickett/webapps/djangotrunk/lib/python2.5/django/core/management/__init__.py", line 334, in execute_manager utility.execute() File "/home/dbickett/webapps/djangotrunk/lib/python2.5/django/core/management/__init__.py", line 295, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/home/dbickett/webapps/djangotrunk/lib/python2.5/django/core/management/base.py", line 77, in run_from_argv self.execute(*args, **options.__dict__) File "/home/dbickett/webapps/djangotrunk/lib/python2.5/django/core/management/base.py", line 87, in execute translation.activate('en-us') File "/home/dbickett/webapps/djangotrunk/lib/python2.5/django/utils/translation/__init__.py", line 73, in activate return real_activate(language) File "/home/dbickett/webapps/djangotrunk/lib/python2.5/django/utils/translation/__init__.py", line 43, in delayed_loader return g['real_%s' % caller](*args, **kwargs) File "/home/dbickett/webapps/djangotrunk/lib/python2.5/django/utils/translation/trans_real.py", line 209, in activate _active[currentThread()] = translation(language) File "/home/dbickett/webapps/djangotrunk/lib/python2.5/django/utils/translation/trans_real.py", line 198, in translation default_translation = _fetch(settings.LANGUAGE_CODE) File "/home/dbickett/webapps/djangotrunk/lib/python2.5/django/utils/translation/trans_real.py", line 181, in _fetch app = getattr(__import__(appname[:p], {}, {}, [appname[p+1:]]), appname[p+1:]) File "/home/dbickett/lib/python2.5/sphene/community/__init__.py", line 121, in <module> s1.connect(profile_edit_init_form, sender = EditProfileForm) File "/home/dbickett/webapps/djangotrunk/lib/python2.5/django/dispatch/dispatcher.py", line 68, in connect assert inspect.getargspec(receiver)2 is not None, \ File "/usr/local/lib/python2.5/inspect.py", line 743, in getargspec raise TypeError('arg is not a Python function') TypeError: arg is not a Python function Haven't tackled this yet! --- Last Edited by dbickett at 2008-08-21 05:18:29 --- |
|
Posted by Herbert Poul ![]() |
|
grml.. google mail suddenly decided to put my email alerts of new board posts into spam .. :(
anyway .. SCT trunk should now again be compatible with django trunk (i've just updated both on this website.. and it seems to work so far :) ) Hey, we have Signatures !!! Great, isn't it ? ;) |
|
Posted by Kamidev ![]() |
|
Yes, spamfilters can really be a bitch sometimes.
Anyway, I am up and running too. |
Please login to post a reply.