[python-win32] "Property '%s.%s' can not be set" on read/write attribute
Tim Johnson
tojo2000 at gmail.com
Wed Jan 30 01:51:29 CET 2008
Thanks, I always forget about makepy (what a terrible name). I'm still
relatively new to Python.
On Jan 29, 2008 4:39 PM, Mark Hammond <mhammond at skippinet.com.au> wrote:
> I can't see docs for that property, but if it takes optional params, it
> might have been transformed to a SetRuleName() method. You could try
> adding:
>
>
>
> rule_obj. _print_details_()
>
>
>
> and see what is dumped. Finally, if you can use makepy, the generated
> file should make it clearer to see what is going on.
>
>
>
> Cheers,
>
>
>
> Mark
>
>
>
> *From:* python-win32-bounces at python.org [mailto:
> python-win32-bounces at python.org] *On Behalf Of *Tim Johnson
> *Sent:* Wednesday, 30 January 2008 11:18 AM
> *To:* python-win32 at python.org
> *Subject:* [python-win32] "Property '%s.%s' can not be set" on read/write
> attribute
>
>
>
> So I'm trying to automate some tasks with SMS, and I've run into a
> roadblock when creating new collection membership rules. The code below is
> a method of a Collection object. It's a rough draft, so don't worry too
> much about the top half unless you think it might be screwing something up.
> My problem is that I go to create a new SMS_CollectionRuleDirect object (at
> the bottom of the code provided) and I get the following error:
>
>
>
> >>> coll.AddMembershipRule(rule)
> Traceback (most recent call last):
> File "<stdin>", line 1, in ?
> File "H:\p4rootw\lib\ops\sms.py", line 495, in AddMembershipRule
> rule_obj.RuleName = name
> File "C:\Python24\Lib\site-packages\win32com\client\dynamic.py", line
> 550, in __setattr__
> raise AttributeError, "Property '%s.%s' can not be set." %
> (self._username_, attr)
>
>
>
> If you look in the SMS 2003 SDK v3.1 or here (
> http://www.microsoft.com/technet/prodtechnol/sms/sms2003/opsguide/ops_854m.mspx?mfr=true)
> you can see that the property is indeed Read/Write. Is there any way to
> override this or some workaround that I can use to fix this? I'm about
> ready to start hopping up and down in my office chair like an angry
> chimpanzee.
>
>
>
>
>
>
>
>
>
>
>
> # This is a method of an sms.Collection object.
>
> #
>
> # self.parent.wmi_connection is an object created via wmi.WMI() with the
>
> # namespace set to \\server\root\sms\site_S01,
>
> # and I can retrieve information fine, as well as add/edit Collection,
>
> # advertisement, and other objects just fine.
>
> #
>
> # self.parent.db_connection is an object created via odbc.odbc(),
> connected to the SMS database
>
>
>
> def AddMembershipRule(self, rule):
> """Adds a membership rule using an sms.MemberShipRule object.
>
> Note: this method only supports adding System Resources through direct
> membership, not User or Group Resources.
>
> Args:
> rule: an sms.CollectionMembershipRule object
>
> Raises:
> TypeError: if rule is not an sms.CollectionMembershipRule object
> SmsUnsupportedResourceType: if a direct membership rule for a
> non-system
> resource type is passed
>
> Returns:
> True on Success
> None on Failure
>
> TODO: Remove object type limitation for direct membership rules
> """
> if not isinstance(rule, CollectionMembershipRule):
> raise TypeError
>
> self.parent.ConnectWmi()
> self.parent.ConnectDb()
> conn = self.parent.wmi_connection
>
> if rule.type == 'direct':
> if rule.resource_type != 5:
> raise SmsUnsupportedResourceType
>
> cursor = self.parent.db_connection.cursor()
> cursor.execute('SELECT Netbios_Name0, Name0 from v_R_System '
> 'WHERE ResourceID = %s' % rule.resource_id)
> names = cursor.fetchall()
> name = None
>
> if names[0]:
> name = names[0]
> else:
> name = names[1]
>
>
>
> # This is the problem section
>
> rule_obj = conn.Get('SMS_CollectionRuleDirect').SpawnInstance_()
> rule_obj.ResourceClassName = 'SMS_R_System'
> rule_obj.RuleName = name
> rule_obj.ResourceID = rule.resource_id
> coll_obj = conn.Get('SMS_Collection.CollectionID="%s"'
> % self.collection_id)
> coll_obj.AddMembershipRule(rule_obj)
>
>
>
>
>
> --
> _____________________
> Ceci n'est pas un email.
>
--
_____________________
Ceci n'est pas un email.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/python-win32/attachments/20080129/ba63412d/attachment.htm
More information about the python-win32
mailing list