/[cvs]/nfo/projects/netfraggle/bin/fraggleEngine.py
ViewVC logotype

Diff of /nfo/projects/netfraggle/bin/fraggleEngine.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.4 by joko, Fri Aug 27 03:18:30 2004 UTC revision 1.13 by xabbu, Tue Sep 21 18:07:09 2004 UTC
# Line 1  Line 1 
1  #!/usr/bin/env python  #-----------------------------------------------------------------------------
2    # Name:        fraggleEngine.py
3    # Purpose:     Does the main (non-gui) work
4    #
5    # Author:      joko
6    #
7    # Created:     2004/30/08
8    # RCS-ID:      $Id$
9    # Copyright:   (c) 2004 netfrag.org
10    # Licence:     GPL
11    #-----------------------------------------------------------------------------
12    
13  # $Id$  #-----------------------------------------------------------------------------
14  # $Log$  # $Log$
15    # Revision 1.13  2004/09/21 18:07:09  xabbu
16    # + added functions listItems and getContent
17    #
18    # Revision 1.12  2004/09/17 09:42:30  xabbu
19    # U function listItems() places a query to the server now and returns its results
20    #
21    # Revision 1.11  2004/09/15 22:27:06  xabbu
22    # +/- function fraggleSync replaced by function syncTopics which places a query
23    # + function query has simple eval of error return code now
24    #
25    # Revision 1.10  2004/09/13 21:07:38  xabbu
26    # + function query added for testing of the nql / rpc interface
27    #
28    # Revision 1.9  2004/09/01 21:43:30  xabbu
29    # +Moved funtion getDefaultDir from FraggleCtlPreferences to FraggleEngine for more convenience
30    # +FraggleCtlModules class creation for handling content modules
31    #
32    # Revision 1.8  2004/08/31 16:48:19  joko
33    # + def authenticate
34    #
35    # Revision 1.7  2004/08/31 09:34:10  joko
36    # + def query_remote: don't do "getTopicById" here anymore
37    #
38    # Revision 1.6  2004/08/31 02:23:07  joko
39    # U changes to (dummy) topics metadata (FraggleXml)
40    # + def query_remote: wrapper for making remote xmlrpc call
41    #
42    # Revision 1.5  2004/08/30 13:03:13  joko
43    # - def getDefaultDir now in fraggleCtlPreferences
44    # + def getTopicById
45    #
46  # Revision 1.4  2004/08/27 03:18:30  joko  # Revision 1.4  2004/08/27 03:18:30  joko
47  # new methods: fraggleSync, getTopics  # new methods: fraggleSync, getTopics
48  #  #
49  # Revision 1.3  2004/08/26 15:25:04  joko  # Revision 1.3  2004/08/26 15:25:04  joko
50  # added cvs headers  # added cvs headers
51  #  #-----------------------------------------------------------------------------
52    
53  import os  import os
54  from fraggleConstants import *  from fraggleConstants import *
55  import FraggleXMLRPC  import FraggleXMLRPC
56    import fraggleCtlPreferences
57    import FraggleCtlModules
58    import fraggleParserXML
59    
60  class FraggleEngine:  class FraggleEngine:
61      """Back-end doing the work."""      """Back-end doing the work."""
62      def __init__(self):      def __init__(self):
63          self.settings = {}          self.settings = {}
64          self.topics = {}          self.topics = {}
65            self.modules = FraggleCtlModules.create(self)
66      def getDefaultDir(self):          self.preferences = fraggleCtlPreferences.create(self)
67          """Gets location of default dir and creates it          self.rpc = FraggleXMLRPC.create(self, self.preferences.getConfig())
            if necessary. ($HOME/.pears/)"""  
         try:  
             import pearsdebug  
             savedir = pearsdebug.savedir  
         except:  
             dir = '.netfraggle'  
             savedir = os.path.expanduser(os.path.join('~', dir))  
             if len(savedir)<=len("c:\\/" + dir):  
                 # problem that might occur on Win2k (no $HOME environment variable)  
                 temp = os.path.join(os.path.expandvars('$USERPROFILE'), dir)  
                 if temp > len("c:\\/" + dir):  
                     savedir = temp  
             # create dir if it doesn't exist  
             if not os.path.exists(savedir):  
                 os.makedirs(savedir)  
         return savedir  
68    
69      def setSetting(self, settingname, value):      def setSetting(self, settingname, value):
70          """Sets settingname to value in self.settings."""          """Sets settingname to value in self.settings."""
# Line 55  class FraggleEngine: Line 83  class FraggleEngine:
83              else:              else:
84                  return None                  return None
85    
86      def fraggleSync(self, config):      def syncTopics(self):
87                    query = "GET * FROM contenttypes"
88          # v1 - demo          topicData = self.queryCms(query)
89          self.topics = [          topictypes = topicData['1']
90              {        
91                  'name': 'TWiki-NetFraggleTest-ViaTWiki',          for i in topictypes:
92                  'mode': 'push',           self.topics[i] = topictypes[i]['1']
93                  'target': {          
94                      'url': 'http://netfrag.org/twiki/bin/view/Main/NetFraggleTest',          #print self.topics
                     'type': 'TWiki',  
                 }  
             },  
             {  
                 'name': 'TWiki-NetFraggleTest-ViaXMLRPC',  
                 'mode': 'push',  
                 'target': {  
                     'method': 'appendToPage',  
                     'arguments': ['NetFraggleTest'],  
                     'type': 'XMLRPC',  
                 }  
             },  
         ]  
         return  
   
         # v2 - live  
           
         # 1. load payload from remote side  
         xml_rpc = FraggleXMLRPC.create(self, config)  
         fragglexml = xml_rpc.FraggleSync()  
95                    
         # 2. (todo) unmarshal to self.topics (hash)  
         # self.topics = unmarshal(fragglexml)  
   
96      def getTopics(self):      def getTopics(self):
97          return self.topics          return self.topics
98        
99        def getTopicById(self, id):
100            return self.topics[id]
101        
102        def listItems(self,contentkey):
103            print contentkey
104            result = self.queryCms(str("GET creator_id, language_id, description, id FROM contents WITH type "+contentkey))
105            return result
106        
107        def getContent(self,contentkey):
108            query = str("GET content, creator_id, description, id FROM contents WITH id "+contentkey)
109            result = self.queryCms(query)
110            print query
111            return result
112            
113            
114        def queryCms(self,nqlquery):
115            
116            from xmlrpclib import Server,Error
117            rpc = Server('http://netfrag.org/nfo/netfraggle.php')
118            result = rpc.query(nqlquery)
119            if result['0']['error'] == '0':
120            #print result
121              return result
122          
123            #else:
124            #print result['0']['error']
125            #return result
126          
127        def query_remote(self, topicmeta):
128    
129            if topicmeta['target']['type'] == 'XMLRPC':
130                # TODO: make FraggleXMLRPC do all stuff
131                # (call methods dynamically)
132                from xmlrpclib import Server, Error
133                rpc = Server(topicmeta['target']['url'])
134                #try:
135                if topicmeta['result'] == 'item':
136                    topicdata = {}
137                    try:
138                        #topicdata = rpc.getContent('Home')
139                        #topicdata = rpc.getContent(tuple(topicmeta['target']['arguments']))
140                        topicdata = rpc.getContent(topicmeta['target']['arguments'])
141                        #print topicdata
142                    except Error, v:
143                        print "ERROR", v
144                elif topicmeta['result'] == 'list':
145                    topicdata = []
146                    try:
147                        arg = {'type': 'xmlpage'}
148                        topicdata = rpc.listTopics(arg)
149                        #print topicdata
150                        #self.styledTextContent.SetText(repr(topicdata))
151                    except Error, v:
152                        print "ERROR", v
153            return topicdata
154    
155        def authenticate(self, server, username, password):
156            from xmlrpclib import Server, Error
157            rpc = Server(server)
158            try:
159                return rpc.authenticate({'user': username, 'pass': password})
160            except Error, v:
161                print "ERROR", v
162            
163        def getDefaultDir(self):
164            """Gets location of default dir and creates it
165               if necessary. ($HOME/.pears/)"""
166            try:
167                import pearsdebug
168                savedir = pearsdebug.savedir
169            except:
170                dir = '.netfraggle'
171                savedir = os.path.expanduser(os.path.join('~', dir))
172                if len(savedir)<=len("c:\\/" + dir):
173                    # problem that might occur on Win2k (no $HOME environment variable)
174                    temp = os.path.join(os.path.expandvars('$USERPROFILE'), dir)
175                    if temp > len("c:\\/" + dir):
176                        savedir = temp
177                # create dir if it doesn't exist
178                if not os.path.exists(savedir):
179                    os.makedirs(savedir)
180            return savedir
181                      
182  class urlOpener(object):  class urlOpener(object):
183      """Opens urls."""      """Opens urls."""
184      def __init__(self):      def __init__(self):

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.13

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed