/[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.6 by joko, Tue Aug 31 02:23:07 2004 UTC revision 1.11 by xabbu, Wed Sep 15 22:27:06 2004 UTC
# Line 12  Line 12 
12    
13  #-----------------------------------------------------------------------------  #-----------------------------------------------------------------------------
14  # $Log$  # $Log$
15    # Revision 1.11  2004/09/15 22:27:06  xabbu
16    # +/- function fraggleSync replaced by function syncTopics which places a query
17    # + function query has simple eval of error return code now
18    #
19    # Revision 1.10  2004/09/13 21:07:38  xabbu
20    # + function query added for testing of the nql / rpc interface
21    #
22    # Revision 1.9  2004/09/01 21:43:30  xabbu
23    # +Moved funtion getDefaultDir from FraggleCtlPreferences to FraggleEngine for more convenience
24    # +FraggleCtlModules class creation for handling content modules
25    #
26    # Revision 1.8  2004/08/31 16:48:19  joko
27    # + def authenticate
28    #
29    # Revision 1.7  2004/08/31 09:34:10  joko
30    # + def query_remote: don't do "getTopicById" here anymore
31    #
32  # Revision 1.6  2004/08/31 02:23:07  joko  # Revision 1.6  2004/08/31 02:23:07  joko
33  # U changes to (dummy) topics metadata (FraggleXml)  # U changes to (dummy) topics metadata (FraggleXml)
34  # + def query_remote: wrapper for making remote xmlrpc call  # + def query_remote: wrapper for making remote xmlrpc call
# Line 31  import os Line 48  import os
48  from fraggleConstants import *  from fraggleConstants import *
49  import FraggleXMLRPC  import FraggleXMLRPC
50  import fraggleCtlPreferences  import fraggleCtlPreferences
51    import FraggleCtlModules
52    import fraggleParserXML
53    
54  class FraggleEngine:  class FraggleEngine:
55      """Back-end doing the work."""      """Back-end doing the work."""
56      def __init__(self):      def __init__(self):
57          self.settings = {}          self.settings = {}
58          self.topics = {}          self.topics = {}
59            self.modules = FraggleCtlModules.create(self)
60          self.preferences = fraggleCtlPreferences.create(self)          self.preferences = fraggleCtlPreferences.create(self)
61          self.rpc = FraggleXMLRPC.create(self, self.preferences.getConfig())          self.rpc = FraggleXMLRPC.create(self, self.preferences.getConfig())
62    
# Line 57  class FraggleEngine: Line 77  class FraggleEngine:
77              else:              else:
78                  return None                  return None
79    
80      def fraggleSync(self):      def syncTopics(self):
81                    query = "GET * FROM contenttypes"
82          # v1 - demo          topicData = self.queryCms(query)
83          self.topics = [          topictypes = topicData['1']
84              {        
85                  'name': 'iNFO-Page:Test-ViaXMLRPC',          for i in topictypes:
86                  'mode': 'pull',           self.topics[i] = topictypes[i]['1']
87                  'result': 'item',          
88                  'target': {          #print self.topics
                     'url': 'http://netfrag.org/nfo/netfraggle.php',  
                     'method': 'nfo.getContent',  
                     'arguments': 'Test',  
                     'type': 'XMLRPC',  
                 }  
             },  
             {  
                 'name': 'iNFO-Page:Home-ViaXMLRPC',  
                 'mode': 'pull',  
                 'result': 'item',  
                 'target': {  
                     'url': 'http://netfrag.org/nfo/netfraggle.php',  
                     'method': 'nfo.getContent',  
                     'arguments': 'Home',  
                     'type': 'XMLRPC',  
                 }  
             },  
             {  
                 'name': 'iNFO-PageIndex',  
                 'mode': 'pull',  
                 'result': 'list',  
                 'target': {  
                     'url': 'http://netfrag.org/nfo/netfraggle.php',  
                     'method': 'nfo.listTopics',  
                     'arguments': ['xmlpage'],  
                     'type': 'XMLRPC',  
                 }  
             },  
             {  
                 'name': 'TWiki-Test-ViaTWiki',  
                 'mode': 'push',  
                 'target': {  
                     'url': 'http://netfrag.org/twiki/bin/view/Main/NetFraggleTest',  
                     'type': 'TWiki',  
                 }  
             },  
             {  
                 'name': 'TWiki-Test-ViaXMLRPC',  
                 'mode': 'push',  
                 'target': {  
                     'method': 'appendToPage',  
                     'arguments': ['NetFraggleTest'],  
                     'type': 'XMLRPC',  
                 }  
             },  
         ]  
         return  
   
         # v2 - live  
           
         # 1. load payload from remote side  
         fragglexml = self.rpc.FraggleSync()  
89                    
         # 2. (todo) unmarshal to self.topics (hash)  
         # self.topics = unmarshal(fragglexml)  
   
90      def getTopics(self):      def getTopics(self):
91          return self.topics          return self.topics
92            
93      def getTopicById(self, id):      def getTopicById(self, id):
94          return self.topics[id]          return self.topics[id]
95        
96      def query_remote(self, topicid):      def listItems(self,topicId):
97          topicmeta = self.getTopicById(topicid)          result = self.queryCms("GET creator_id, language_id, description FROM contents")
98            #print result
99            
100        def queryCms(self,nqlquery):
101            
102            from xmlrpclib import Server,Error
103            rpc = Server('http://netfrag.org/nfo/netfraggle.php')
104            result = rpc.query(nqlquery)
105            if result['0']['error'] == '0':
106               #print result
107               return result
108              
109            #else:
110            #print result['0']['error']
111            #return result
112          
113        def query_remote(self, topicmeta):
114    
115          if topicmeta['target']['type'] == 'XMLRPC':          if topicmeta['target']['type'] == 'XMLRPC':
116              # TODO: make FraggleXMLRPC do all stuff              # TODO: make FraggleXMLRPC do all stuff
# Line 156  class FraggleEngine: Line 137  class FraggleEngine:
137                  except Error, v:                  except Error, v:
138                      print "ERROR", v                      print "ERROR", v
139          return topicdata          return topicdata
140                        
141        def authenticate(self, server, username, password):
142            from xmlrpclib import Server, Error
143            rpc = Server(server)
144            try:
145                return rpc.authenticate({'user': username, 'pass': password})
146            except Error, v:
147                print "ERROR", v
148            
149        def getDefaultDir(self):
150            """Gets location of default dir and creates it
151               if necessary. ($HOME/.pears/)"""
152            try:
153                import pearsdebug
154                savedir = pearsdebug.savedir
155            except:
156                dir = '.netfraggle'
157                savedir = os.path.expanduser(os.path.join('~', dir))
158                if len(savedir)<=len("c:\\/" + dir):
159                    # problem that might occur on Win2k (no $HOME environment variable)
160                    temp = os.path.join(os.path.expandvars('$USERPROFILE'), dir)
161                    if temp > len("c:\\/" + dir):
162                        savedir = temp
163                # create dir if it doesn't exist
164                if not os.path.exists(savedir):
165                    os.makedirs(savedir)
166            return savedir
167                      
168  class urlOpener(object):  class urlOpener(object):
169      """Opens urls."""      """Opens urls."""
170      def __init__(self):      def __init__(self):

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.11

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