The python error is correct in that you are trying to assign a value to a
python function call, which is outside the python syntax.  VB syntax uses
the () to indicate a index operation which you can assign to, there is often
an extra call in the Python interface to the com object to get around this,
use makegen.py to create the com stubs and look in there for the actual
function call.  Often there's a container object and it will have a Items()
or something on it to get into the container to set a value or whatever..

Stefan

-----Original Message-----
From: Anesh Madapoosi [mailto:[EMAIL PROTECTED]]
Sent: Monday, January 28, 2002 4:42 PM
To: [EMAIL PROTECTED]
Subject: how to call 'overloaded' COM methods


Hi,
 
  I am trying to invoke some calls on com objects, and I am getting
weird errors. The calls seem a little strange to me (overloaded
functions or something like that) and I was wondering if anyone can
help.

The interface is defined here
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmrm/ht
m/headerattribute.asp

If I use the python command line, here is what I get

>>> headerObj = win32com.client.Dispatch("Wmrmobjs.WMRMHeader")
>>> headerObj.Attribute("name") = "value"
Traceback (SyntaxError: can't assign to function call



As I need this to be run as an asp, I seem to be getting different
errors there. I get a 500 as the response and on the win32traceutil I
see a TypeError as shown below.

 Thanks.
 Anesh.


Object with win32trace dispatcher created (object=None)
 in _InvokeEx_ with SetScriptSite 0 1 (<PyIActiveScriptSite at 0x2469884
with obj at 0x1491f34>,) None None
in <win32com.axscript.client.pyscript.PyScript instance at
024E2ACC>._QueryInterface_ with unsupported IID
IActiveScriptProperty(unregistered)
({4954E0D0-FBC7-11D1-8410-006008C3FBFC})

in _InvokeEx_ with InitNew 0 1 () None None
in _InvokeEx_ with GetScriptDispatch 0 1 (None,) None None
in <win32com.axscript.client.pyscript.PyScript instance at
024E2ACC>._QueryInterface_ with unsupported IID <Unregistered interface>
({1D044690-8923-11D0-ABD2-00A0C911E8B2})

in _InvokeEx_ with AddNamedItem 0 1 ('Response', 66) None None
in _InvokeEx_ with AddNamedItem 0 1 ('Request', 66) None None
in _InvokeEx_ with AddNamedItem 0 1 ('Server', 66) None None
in _InvokeEx_ with AddNamedItem 0 1 ('Session', 66) None None
in _InvokeEx_ with AddNamedItem 0 1 ('Application', 66) None None
in _InvokeEx_ with AddNamedItem 0 1 ('ObjectContext', 66) None None
in _InvokeEx_ with AddNamedItem 0 1 ('ASPGLOBALTLB', 74) None None
in _InvokeEx_ with ParseScriptText 0 1 ('def getkeys():\r\n\timport
cPickle\r\n\treturn cPickle.loads(str(Application("keys")))\r\ndef
write(msg):\r\n\tResponse.Write(msg)\r\ndef getuser():\r\n\treturn
Session("user")\r\ndef getuserid():\r\n\treturn
int(Session("userid"))\r\ndef getdbconnstr():\r\n\treturn
Application("dbconnstr")\r\ndef getroot():\r\n\treturn
Application(\'inputfilesroot\')\r\ndef getdisplaypath(path):\r\n\troot =
getroot()\r\n\tif (path.startswith(root)):\r\n\t\tpath =
path[len(root)+1:]\r\n\treturn "\\"" + path +  "\\""\r\ndef
getinputpath():\r\n\timport os.path\r\n\tuserpath =
os.path.join(getroot(), getuser())\r\n\treturn userpath\r\ndef
getoutputpath():\r\n\timport os.path\r\n\treturn
os.path.join(getinputpath(), "protected")\r\ndef
getlogpath():\r\n\timport os.path\r\n\treturn
os.path.join(getinputpath(), "logs")\r\ndef getfilelist():\r\n\timport
os\r\n\timport os.path\r\n\tinputpath = getinputpath()\r\n\tif (not
os.path.isdir(inputpath)):\r\n\t\tos.makedirs(inputpath)\r\n\tallfiles =
os.listdir(inputpath)\r\n\tfilelist = []\r\n\tfor file in
allfiles:\r\n\t\tif (os.path.isfile(os.path.join(inputpath,
file))):\r\n\t\t\tfilelist.append(file)\r\n\tfilelist.sort()\r\n\treturn
filelist\r\ndef mkdir(dir):\r\n\timport os\r\n\timport os.path\r\n\tif
(not os.path.isdir(dir)):\r\n\t\tos.makedirs(dir)\r\ndef
getformparam(paramname):\r\n\tparam = Request.Form(paramname)\r\n\tif
(param == None):\r\n\t\treturn None\r\n\tparam = str(param)\r\n\tparam =
param.strip()\r\n\t# ok this "None" test sucks, but I don\'t know
why\r\n\t# its returning "None" instead of None\r\n\tif (len(param)==0
or param == "None"):\r\n\t\treturn None\r\n\telse:\r\n\t\treturn
str(param)\r\ndef fieldIsValid(field):\r\n\tif (field != None and field
!= "" and field != "None"):\r\n\t\treturn 1\r\n\telse:\r\n\t\treturn
0\r\ndef verifysession():\r\n\tuser = getuser()\r\n\tif (not
fieldIsValid(user)):\r\n\t\tResponse.Redirect("Login.asp")\r\ndef
getdata(keys=\'\'):\r\n\t\'\'\'\r\n\tpossible ways to call this
function:\r\n\tvalue=getdata(\'key\')\r\n\tdict=getdata((\'key1\',\'key2
\')) #get subset\r\n\tdict=getdata() #return everything\r\n\tIt assumes
you don\'t have the same key for\r\n\tGET and POST
methods\r\n\t\'\'\'\r\n\timport
types\r\n\tkey_type=type(keys)\r\n\td_data={} #initialize
dictionary\r\n\tif keys==\'\': #if they don\'t supply keys then return
everything\r\n\t\tfor key in
Request.Form:\r\n\t\t\td_data[key]=Request.Form(key)\r\n\t\tfor key in
Request.QueryString:\r\n\t\t\td_data[key]=Request.QueryString(key)\r\n\t
\treturn d_data\r\n\telif key_type == types.StringType: #if they provide
a single string\r\n\t\tvalue=Request.Form(keys)\r\n\t\tif (value !=
\'None\') and (str(value) == \'None\'):\r\n\t\t\treturn
Request.QueryString(keys)\r\n\t\telse:\r\n\t\t\treturn value\r\n\t#if
they provide a list then return a dictionary with all the
key/values\r\n\telif key_type == types.TupleType or key_type ==
types.ListType:\r\n\t\tfor key in
keys:\r\n\t\t\tvalue=Request.Form(key)\r\n\t\t\t#now check if the data
was empty, if so look at QueryString\r\n\t\t\tif (value != \'None\') and
(str(value) ==
\'None\'):\r\n\t\t\t\tvalue=Request.QueryString(key)\r\n\t\t\tdata[key]=
value\r\n\t\treturn d_data\r\nverifysession()\r\nResponse.Expires =
0\r\nfrom DBLib import DBLicense\r\nfrom DBConn import DBConn\r\nfrom
DRMConfig import ASPConfig\r\nimport os.path\r\nimport sys\r\nimport
win32traceutil\r\nimport pythoncom\r\nclass ProtectLog:\r\n\tdef
__init__(self):\r\n\t\tself.filename =
self.findFileName("protectlog.txt")\r\n\t\tself.file =
None\r\n\t\tself.file = open(self.filename, "a+")\r\n\tdef
__del__(self):\r\n\t\tif (self.file !=
None):\r\n\t\t\tself.file.close()\r\n\tdef findFileName(self,
filename):\r\n\t\toutputpath =
getlogpath()\r\n\t\tmkdir(outputpath)\r\n\t\toutputfile =
os.path.join(outputpath, filename)\r\n\t\tidx = 1\r\n\t\twhile
(os.path.exists(outputfile)):\r\n\t\t\t(root, ext) =
os.path.splitext(os.path.basename(filename))\r\n\t\t\toutputfile = root
+ "-" + str(idx) + ext\r\n\t\t\toutputfile = os.path.join(outputpath,
outputfile)\r\n\t\t\tidx = idx + 1\r\n\t\treturn outputfile\r\n\tdef
write(self,
msg):\r\n\t\tself.file.write(msg)\r\n\t\tself.file.write("\\r\\n")\r\n\t
def condwrite(self, msg, var):\r\n\t\tif (var !=
None):\r\n\t\t\tself.write(msg + var)\r\n\tdef
writeToResponse(self):\r\n\t\t# the write function here is not this
classes\' write()\r\n\t\twrite("Displaying protect log: " +
self.filename +
"<br>")\r\n\t\twrite("<br>")\r\n\t\tself.file.close()\r\n\t\tself.file =
None\r\n\t\tlines = open(self.filename, "r").readlines()\r\n\t\tfor line
in lines:\r\n\t\t\twrite(line + "<br>")\r\ndef doprotect():\r\n\t# set
up output path\r\n\toutputpath =
getoutputpath()\r\n\tmkdir(outputpath)\r\n\taspConfig =
ASPConfig(Server, Application)\r\n\tdebug = aspConfig.debug\r\n\t# set
up input path\r\n\tinputpath = getinputpath()\r\n\tkeys =
getkeys()\r\n\tsigning_key_id = keys["default"]\r\n\t(pubkey, privkey) =
keys[signing_key_id]\r\n\tsiteurl =
Application(\'siteurl\')\r\n\tfilelist = getfilelist()\r\n\tfor file in
filelist:\r\n\t\t# set up input path\r\n\t\tinputfile =
os.path.join(inputpath, file)\r\n\t\toutputfile =
os.path.join(outputpath, file)\r\n\t\tlog.write("Input File: " +
inputfile)\r\n\t\tlog.write("Output File: " + outputfile)\r\n\t\tkeygen
= Server.CreateObject("Wmrmobjs.WMRMKeys")\r\n\t\tseed =
keygen.GenerateSeed()\r\n\t\t# create a dblicense and populate
it\r\n\t\tdbLicense = DBLicense()\r\n\t\tdbLicense.license_key_id =
keygen.GenerateKeyID()\r\n\t\tdbLicense.creator_id =
getuserid()\r\n\t\t# skip creation date\r\n\t\t# skip modified
date\r\n\t\tdbLicense.key_seed_value =
seed\r\n\t\tdbLicense.signing_key_id =
signing_key_id\r\n\t\tdbLicense.zformat_id =
keygen.GenerateKeyID()\r\n\t\tdbLicense.date_available =
getformparam("availdate")\r\n\t\tdbLicense.date_expire =
getformparam("expiredate")\r\n\t\tdbLicense.num_plays_limit =
getformparam("allowedplays")\r\n\t\tif (dbLicense.num_plays_limit ==
None):\r\n\t\t\tdbLicense.num_plays_limit =
0\r\n\t\tdbLicense.license_term = -1\r\n\t\t# log the content
id\r\n\t\tlog.write("Content ID: " + dbLicense.zformat_id)\r\n\t\t# log
the protection settings (if the values
exist)\r\n\t\tlog.condwrite("Availability Date: ",
getformparam("availdate"))\r\n\t\tlog.condwrite("Expiration Date: ",
getformparam("expiredate"))\r\n\t\tlog.condwrite("Allowed Plays: ",
getformparam("allowedplays"))\r\n\t\t# create license
key\r\n\t\tkeygen.seed = dbLicense.key_seed_value\r\n\t\tkeygen.KeyId =
dbLicense.license_key_id\r\n\t\tkey = keygen.GenerateKey()\r\n\t\t#
create header\r\n\t\theaderObj =
Server.CreateObject("Wmrmobjs.WMRMHeader")\r\n\t\tdebug(dir(headerObj))\
r\n\t\theaderObj.KeyID =
dbLicense.license_key_id\r\n\t\theaderObj.ContentID =
dbLicense.zformat_id\r\n\t\theaderObj.LicenseAcqURL =
siteurl\r\n\t\t#headerObj.IndividualizedVersion =
"2.2"\r\n\t\ttry:\r\n\t\t\tname =
pythoncom.Unicode(\'Author\')\r\n\t\t\theaderObj.Attribute("name") =
"value"\r\n\t\texcept:\r\n\t\t\t#debug("exception %s %s"  %
(sys.exc_info()[0], sys.exc_info()[1]))\r\n\t\t\tprint
"exception"\r\n\t\theaderObj.SetCheckSum(key)\r\n\t\theaderObj.Sign(priv
key)\r\n\t\theader = headerObj.Header\r\n\t\t#header.Attribute("RID") =
getformparam("allowedplays")\r\n\t\t# TODO: do we want to support v1
keys/urls?\r\n\t\t# protect the file\r\n\t\tprotector =
Server.CreateObject("Wmrmobjs.WMRMProtect")\r\n\t\tprotector.Header =
header\r\n\t\tprotector.Key = key\r\n\t\tprotector.V1KeyID =
dbLicense.license_key_id\r\n\t\tprotector.InputFile =
inputfile\r\n\t\tprotector.ProtectFile(outputfile)\r\n\t\taspConfig =
ASPConfig(Server, Application)\r\n\t\t# save the dbLicense
object\r\n\t\tfoo =
DBConn(aspConfig)\r\n\t\tdbLicense.save(foo)\r\n\t\t# put in into a file
so that it can be imported into the
bizapp\r\n\t\tdbLicense.writeToFile(os.path.join(outputpath, file +
".drminfo"))\r\n\t\t# done with this file.  write an empty
line\r\n\t\tlog.write("")\r\n\t# delete the input files\r\n\t##for file
in filelist:\r\n\t##\tinputfile = os.path.join(inputpath,
file)\r\n\t##\tos.remove(inputfile)\r\n\t##\tlog.write("Removed input
file: " + inputfile)\r\nlog = ProtectLog()\r\ndoprotect()\r\npagetitle =
"Kontiki DRM Protection
Utility"\r\nResponse.WriteBlock(0)\r\nResponse.Write(pagetitle)\r\nRespo
nse.WriteBlock(1)\r\nResponse.Write(pagetitle)\r\nResponse.WriteBlock(2)
\r\nResponse.Write(getdisplaypath(getoutputpath()))\r\nResponse.WriteBlo
ck(3)\r\nResponse.Write(getdisplaypath(log.filename))\r\nResponse.WriteB
lock(4)\r\n', None, None, '</SCRIPT>', 0, 1, 192, 0) None None
in _InvokeEx_ with GetScriptDispatch 0 1 (None,) None None
in _InvokeEx_ with AddNamedItem 0 1 ('ScriptingNamespace', 10) None None
in _InvokeEx_ with SetScriptState 0 1 (1,) None None
Traceback (most recent call last):
  File "C:\Python21\win32comext\axscript\client\error.py", line 86, in
__BuildFromException
    self._BuildFromSyntaxError(site, value, tb)
  File "C:\Python21\win32comext\axscript\client\error.py", line 104, in
_BuildFromSyntaxError
    self.colno = offset - 1
TypeError: unsupported operand type(s) for -
Traceback (most recent call last):
  File "C:\Python21\win32com\server\dispatcher.py", line 58, in
_InvokeEx_
    return self.policy._InvokeEx_(dispid, lcid, wFlags, args, kwargs,
serviceProvider)
  File "C:\Python21\win32com\server\policy.py", line 321, in _InvokeEx_
    return self._invokeex_(dispid, lcid, wFlags, args, kwargs,
serviceProvider)
  File "C:\Python21\win32com\server\policy.py", line 509, in _invokeex_
    return apply(func, args)
  File "C:\Python21\win32comext\axscript\client\framework.py", line 553,
in SetScriptState
    self.ExecutePendingScripts()
  File "C:\Python21\win32comext\axscript\client\framework.py", line 674,
in ExecutePendingScripts
    self.DoExecutePendingScripts()
  File "C:\Python21\win32comext\axscript\client\pyscript.py", line 277,
in DoExecutePendingScripts
    if self.CompileInScriptedSection(codeBlock, "exec"):
  File "C:\Python21\win32comext\axscript\client\framework.py", line 807,
in CompileInScriptedSection
    self.HandleException(codeBlock)
  File "C:\Python21\win32comext\axscript\client\framework.py", line 855,
in HandleException
    codeBlock, exc_type, exc_value, exc_traceback)
  File "C:\Python21\win32comext\axscript\client\error.py", line 78, in
__init__
    self.__BuildFromException(site, exc_type, exc_value, exc_traceback)
  File "C:\Python21\win32comext\axscript\client\error.py", line 92, in
__BuildFromException
    raise sys.exc_info()
TypeError
in _InvokeEx_ with SetScriptState 0 1 (0,) None None
in _InvokeEx_ with Close 0 1 () None None


_______________________________________________
ActivePython mailing list
[EMAIL PROTECTED]
http://listserv.ActiveState.com/mailman/listinfo/activepython
_______________________________________________
ActivePython mailing list
[EMAIL PROTECTED]
http://listserv.ActiveState.com/mailman/listinfo/activepython

Reply via email to