/[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.2 by joko, Wed Aug 25 22:47:28 2004 UTC revision 1.12 by xabbu, Fri Sep 17 09:42:30 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    #-----------------------------------------------------------------------------
14    # $Log$
15    # Revision 1.12  2004/09/17 09:42:30  xabbu
16    # U function listItems() places a query to the server now and returns its results
17    #
18    # Revision 1.11  2004/09/15 22:27:06  xabbu
19    # +/- function fraggleSync replaced by function syncTopics which places a query
20    # + function query has simple eval of error return code now
21    #
22    # Revision 1.10  2004/09/13 21:07:38  xabbu
23    # + function query added for testing of the nql / rpc interface
24    #
25    # Revision 1.9  2004/09/01 21:43:30  xabbu
26    # +Moved funtion getDefaultDir from FraggleCtlPreferences to FraggleEngine for more convenience
27    # +FraggleCtlModules class creation for handling content modules
28    #
29    # Revision 1.8  2004/08/31 16:48:19  joko
30    # + def authenticate
31    #
32    # Revision 1.7  2004/08/31 09:34:10  joko
33    # + def query_remote: don't do "getTopicById" here anymore
34    #
35    # Revision 1.6  2004/08/31 02:23:07  joko
36    # U changes to (dummy) topics metadata (FraggleXml)
37    # + def query_remote: wrapper for making remote xmlrpc call
38    #
39    # Revision 1.5  2004/08/30 13:03:13  joko
40    # - def getDefaultDir now in fraggleCtlPreferences
41    # + def getTopicById
42    #
43    # Revision 1.4  2004/08/27 03:18:30  joko
44    # new methods: fraggleSync, getTopics
45    #
46    # Revision 1.3  2004/08/26 15:25:04  joko
47    # added cvs headers
48    #-----------------------------------------------------------------------------
49    
50  import os  import os
51  from fraggleConstants import *  from fraggleConstants import *
52    import FraggleXMLRPC
53    import fraggleCtlPreferences
54    import FraggleCtlModules
55    import fraggleParserXML
56    
57  class FraggleEngine:  class FraggleEngine:
58      """Back-end doing the work."""      """Back-end doing the work."""
59      def __init__(self):      def __init__(self):
60          self.settings = {}          self.settings = {}
61            self.topics = {}
62            self.modules = FraggleCtlModules.create(self)
63            self.preferences = fraggleCtlPreferences.create(self)
64            self.rpc = FraggleXMLRPC.create(self, self.preferences.getConfig())
65    
66        def setSetting(self, settingname, value):
67            """Sets settingname to value in self.settings."""
68            self.settings[settingname] = value
69    
70        def getSetting(self, settingname, default=None):
71            """Returns settingname from self.settings. If not found
72               and default!=None, the default value is return *and*
73               saved to the settings."""
74            if self.settings.has_key(settingname):
75                return self.settings[settingname]
76            else:
77                if default!=None:
78                    self.setSetting(settingname, default)
79                    return default
80                else:
81                    return None
82    
83        def syncTopics(self):
84            query = "GET * FROM contenttypes"
85            topicData = self.queryCms(query)
86            topictypes = topicData['1']
87          
88            for i in topictypes:
89             self.topics[i] = topictypes[i]['1']
90            
91            #print self.topics
92            
93        def getTopics(self):
94            return self.topics
95        
96        def getTopicById(self, id):
97            return self.topics[id]
98        
99        def listItems(self,contentkey):
100            result = self.queryCms(str("GET creator_id, language_id, description FROM contents WITH type "+contentkey))
101            return result
102            
103        def queryCms(self,nqlquery):
104            
105            from xmlrpclib import Server,Error
106            rpc = Server('http://netfrag.org/nfo/netfraggle.php')
107            result = rpc.query(nqlquery)
108            if result['0']['error'] == '0':
109            #print result
110              return result
111          
112            #else:
113            #print result['0']['error']
114            #return result
115          
116        def query_remote(self, topicmeta):
117    
118            if topicmeta['target']['type'] == 'XMLRPC':
119                # TODO: make FraggleXMLRPC do all stuff
120                # (call methods dynamically)
121                from xmlrpclib import Server, Error
122                rpc = Server(topicmeta['target']['url'])
123                #try:
124                if topicmeta['result'] == 'item':
125                    topicdata = {}
126                    try:
127                        #topicdata = rpc.getContent('Home')
128                        #topicdata = rpc.getContent(tuple(topicmeta['target']['arguments']))
129                        topicdata = rpc.getContent(topicmeta['target']['arguments'])
130                        #print topicdata
131                    except Error, v:
132                        print "ERROR", v
133                elif topicmeta['result'] == 'list':
134                    topicdata = []
135                    try:
136                        arg = {'type': 'xmlpage'}
137                        topicdata = rpc.listTopics(arg)
138                        #print topicdata
139                        #self.styledTextContent.SetText(repr(topicdata))
140                    except Error, v:
141                        print "ERROR", v
142            return topicdata
143    
144        def authenticate(self, server, username, password):
145            from xmlrpclib import Server, Error
146            rpc = Server(server)
147            try:
148                return rpc.authenticate({'user': username, 'pass': password})
149            except Error, v:
150                print "ERROR", v
151            
152      def getDefaultDir(self):      def getDefaultDir(self):
153          """Gets location of default dir and creates it          """Gets location of default dir and creates it
154             if necessary. ($HOME/.pears/)"""             if necessary. ($HOME/.pears/)"""
# Line 26  class FraggleEngine: Line 167  class FraggleEngine:
167              if not os.path.exists(savedir):              if not os.path.exists(savedir):
168                  os.makedirs(savedir)                  os.makedirs(savedir)
169          return savedir          return savedir
170                      
     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  
   
   
171  class urlOpener(object):  class urlOpener(object):
172      """Opens urls."""      """Opens urls."""
173      def __init__(self):      def __init__(self):

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.12

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