/[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.3 by joko, Thu Aug 26 15:25:04 2004 UTC revision 1.10 by xabbu, Mon Sep 13 21:07:38 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.10  2004/09/13 21:07:38  xabbu
16    # + function query added for testing of the nql / rpc interface
17    #
18    # Revision 1.9  2004/09/01 21:43:30  xabbu
19    # +Moved funtion getDefaultDir from FraggleCtlPreferences to FraggleEngine for more convenience
20    # +FraggleCtlModules class creation for handling content modules
21    #
22    # Revision 1.8  2004/08/31 16:48:19  joko
23    # + def authenticate
24    #
25    # Revision 1.7  2004/08/31 09:34:10  joko
26    # + def query_remote: don't do "getTopicById" here anymore
27    #
28    # Revision 1.6  2004/08/31 02:23:07  joko
29    # U changes to (dummy) topics metadata (FraggleXml)
30    # + def query_remote: wrapper for making remote xmlrpc call
31    #
32    # Revision 1.5  2004/08/30 13:03:13  joko
33    # - def getDefaultDir now in fraggleCtlPreferences
34    # + def getTopicById
35    #
36    # Revision 1.4  2004/08/27 03:18:30  joko
37    # new methods: fraggleSync, getTopics
38    #
39  # Revision 1.3  2004/08/26 15:25:04  joko  # Revision 1.3  2004/08/26 15:25:04  joko
40  # added cvs headers  # added cvs headers
41  #  #-----------------------------------------------------------------------------
42    
43  import os  import os
44  from fraggleConstants import *  from fraggleConstants import *
45    import FraggleXMLRPC
46    import fraggleCtlPreferences
47    import FraggleCtlModules
48    import fraggleParserXML
49    
50  class FraggleEngine:  class FraggleEngine:
51      """Back-end doing the work."""      """Back-end doing the work."""
52      def __init__(self):      def __init__(self):
53          self.settings = {}          self.settings = {}
54            self.topics = {}
55            self.modules = FraggleCtlModules.create(self)
56            self.preferences = fraggleCtlPreferences.create(self)
57            self.rpc = FraggleXMLRPC.create(self, self.preferences.getConfig())
58    
59        def setSetting(self, settingname, value):
60            """Sets settingname to value in self.settings."""
61            self.settings[settingname] = value
62    
63        def getSetting(self, settingname, default=None):
64            """Returns settingname from self.settings. If not found
65               and default!=None, the default value is return *and*
66               saved to the settings."""
67            if self.settings.has_key(settingname):
68                return self.settings[settingname]
69            else:
70                if default!=None:
71                    self.setSetting(settingname, default)
72                    return default
73                else:
74                    return None
75    
76        def fraggleSync(self):
77            #self.queryCms()
78            fraggleParser = fraggleParserXML.create(self)
79            # v1 - demo
80            self.topics = [
81                {
82                    'name': 'iNFO-Page:Test-ViaXMLRPC',
83                    'mode': 'pull',
84                    'result': 'item',
85                    'target': {
86                        'url': 'http://netfrag.org/nfo/netfraggle.php',
87                        'method': 'nfo.getContent',
88                        'arguments': 'Test',
89                        'type': 'XMLRPC',
90                    }
91                },
92                {
93                    'name': 'iNFO-Page:Home-ViaXMLRPC',
94                    'mode': 'pull',
95                    'result': 'item',
96                    'target': {
97                        'url': 'http://netfrag.org/nfo/netfraggle.php',
98                        'method': 'nfo.getContent',
99                        'arguments': 'Home',
100                        'type': 'XMLRPC',
101                    }
102                },
103                {
104                    'name': 'iNFO-PageIndex',
105                    'mode': 'pull',
106                    'result': 'list',
107                    'target': {
108                        'url': 'http://netfrag.org/nfo/netfraggle.php',
109                        'method': 'nfo.listTopics',
110                        'arguments': ['xmlpage'],
111                        'type': 'XMLRPC',
112                    }
113                },
114                {
115                    'name': 'TWiki-Test-ViaTWiki',
116                    'mode': 'push',
117                    'target': {
118                        'url': 'http://netfrag.org/twiki/bin/view/Main/NetFraggleTest',
119                        'type': 'TWiki',
120                    }
121                },
122                {
123                    'name': 'TWiki-Test-ViaXMLRPC',
124                    'mode': 'push',
125                    'target': {
126                        'method': 'appendToPage',
127                        'arguments': ['NetFraggleTest'],
128                        'type': 'XMLRPC',
129                    }
130                },
131            ]
132            topicfile = os.path.join(self.getDefaultDir(), 'topic.xml')
133            fraggleParser.marshalXML(self.topics,topicfile)
134            return
135    
136            # v2 - live
137            
138            # 1. load payload from remote side
139            fragglexml = self.rpc.FraggleSync()
140            
141            # 2. (todo) unmarshal to self.topics (hash)
142            # self.topics = unmarshal(fragglexml)
143    
144        def getTopics(self):
145            return self.topics
146        
147        def getTopicById(self, id):
148            return self.topics[id]
149        
150        def listItems(self,topicId):
151            result = self.queryCms("GET creator_id, language_id, description FROM contents")
152            print result
153            
154        def queryCms(self,nqlquery):
155            
156            from xmlrpclib import Server,Error
157            rpc = Server('http://netfrag.org/nfo/netfraggle.php')
158            topicdata = rpc.query(nqlquery)
159            print topicdata
160            return topicdata
161        
162        def query_remote(self, topicmeta):
163    
164            if topicmeta['target']['type'] == 'XMLRPC':
165                # TODO: make FraggleXMLRPC do all stuff
166                # (call methods dynamically)
167                from xmlrpclib import Server, Error
168                rpc = Server(topicmeta['target']['url'])
169                #try:
170                if topicmeta['result'] == 'item':
171                    topicdata = {}
172                    try:
173                        #topicdata = rpc.getContent('Home')
174                        #topicdata = rpc.getContent(tuple(topicmeta['target']['arguments']))
175                        topicdata = rpc.getContent(topicmeta['target']['arguments'])
176                        #print topicdata
177                    except Error, v:
178                        print "ERROR", v
179                elif topicmeta['result'] == 'list':
180                    topicdata = []
181                    try:
182                        arg = {'type': 'xmlpage'}
183                        topicdata = rpc.listTopics(arg)
184                        #print topicdata
185                        #self.styledTextContent.SetText(repr(topicdata))
186                    except Error, v:
187                        print "ERROR", v
188            return topicdata
189    
190        def authenticate(self, server, username, password):
191            from xmlrpclib import Server, Error
192            rpc = Server(server)
193            try:
194                return rpc.authenticate({'user': username, 'pass': password})
195            except Error, v:
196                print "ERROR", v
197            
198      def getDefaultDir(self):      def getDefaultDir(self):
199          """Gets location of default dir and creates it          """Gets location of default dir and creates it
200             if necessary. ($HOME/.pears/)"""             if necessary. ($HOME/.pears/)"""
# Line 32  class FraggleEngine: Line 213  class FraggleEngine:
213              if not os.path.exists(savedir):              if not os.path.exists(savedir):
214                  os.makedirs(savedir)                  os.makedirs(savedir)
215          return savedir          return savedir
216                      
     def setSetting(self, settingname, value):  
         """Sets settingname to value in self.settings."""  
         self.settings[settingname] = value  
   
     def getSetting(self, settingname, default=None):  
         """Returns settingname from self.settings. If not found  
            and default!=None, the default value is return *and*  
            saved to the settings."""  
         if self.settings.has_key(settingname):  
             return self.settings[settingname]  
         else:  
             if default!=None:  
                 self.setSetting(settingname, default)  
                 return default  
             else:  
                 return None  
   
   
217  class urlOpener(object):  class urlOpener(object):
218      """Opens urls."""      """Opens urls."""
219      def __init__(self):      def __init__(self):

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.10

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