~ubuntu-branches/ubuntu/lucid/prewikka/lucid

« back to all changes in this revision

Viewing changes to prewikka/Core.py

  • Committer: Bazaar Package Importer
  • Author(s): Pierre Chifflier
  • Date: 2007-05-22 09:50:33 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20070522095033-0jr7zmkf91bl1ymp
Tags: 0.9.11-1
New upstream release (add internationalization support)

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
 
23
23
import prewikka.views
24
24
from prewikka import view, Config, Log, Database, IDMEFDatabase, \
25
 
     User, Auth, DataSet, Error, utils, siteconfig
 
25
     User, Auth, DataSet, Error, utils, siteconfig, localization
26
26
 
27
27
 
28
28
class InvalidQueryError(Error.PrewikkaUserError):
42
42
def init_dataset(dataset, config, request):
43
43
    interface = config.interface
44
44
    dataset["document.title"] = "[PREWIKKA]"
 
45
    dataset["document.charset"] = localization.getCurrentCharset()
45
46
    dataset["document.css_files"] = [ "prewikka/css/style.css" ]
46
47
    dataset["document.js_files"] = [ "prewikka/js/functions.js" ]
47
48
    dataset["prewikka.title"] = interface.getOptionValue("title", " ")
48
49
    dataset["prewikka.software"] = interface.getOptionValue("software", " ")
49
50
    dataset["prewikka.place"] = interface.getOptionValue("place", " ")
50
 
    dataset["prewikka.date"] = time.strftime("%A %B %d %Y")
 
51
    dataset["prewikka.date"] = localization.getDate()
51
52
 
52
53
    val = config.general.getOptionValue("external_link_new_window", "true")
53
54
    if (not val and config.general.has_key("external_link_new_window")) or (val == None or val.lower() in ["true", "yes"]):
127
128
        self._env.config = Config.Config(config)
128
129
        self._env.max_aggregated_source = int(self._env.config.general.getOptionValue("max_aggregated_source", 10))
129
130
        self._env.max_aggregated_target = int(self._env.config.general.getOptionValue("max_aggregated_target", 10))
 
131
        self._env.default_locale = self._env.config.general.getOptionValue("default_locale", None)
130
132
        preludedb.preludedb_init()
131
133
        self._initDatabase()
132
134
        self._env.idmef_db = IDMEFDatabase.IDMEFDatabase(self._env.config.idmef_database)
194
196
        object.user = user
195
197
        object.dataset = DataSet.DataSet()
196
198
        object.env = self._env
197
 
        self._setupDataSet(object.dataset, request, user, view, parameters)
198
199
 
199
200
        return object
200
201
    
218
219
            first_tab = None   
219
220
   
220
221
            for tab_name, views in tabs:
221
 
                default_view = views[0]
 
222
                view_name = views[0]
222
223
        
223
224
                if is_anon and tab_name == "Users":
224
225
                    continue
225
 
                    
226
 
                if user and user.has(self._views[default_view]["permissions"]):
 
226
        
 
227
                if not user or is_anon or user.has(self._views[view_name]["permissions"]):
227
228
                    if not first_tab:
228
 
                        first_tab = views[0]
229
 
                        section_to_tabs[section_name] = [ ]
230
 
                        
231
 
                    section_to_tabs[section_name] += [ (tab_name, utils.create_link(views[0])) ]
232
 
                        
 
229
                        first_tab = view_name
 
230
                        section_to_tabs[section_name] = []
 
231
                    
 
232
                    section_to_tabs[section_name] += [ ((_(tab_name), utils.create_link(views[0]))) ]
 
233
                    
233
234
            if first_tab:
234
 
                dataset["interface.sections"].append( (section_name, utils.create_link(first_tab)) )
 
235
                dataset["interface.sections"].append( (_(section_name), utils.create_link(first_tab)) )
235
236
    
236
237
 
237
238
        if isinstance(parameters, prewikka.view.RelativeViewParameters):
251
252
 
252
253
        dataset["interface.tabs"] = tabs
253
254
        dataset["prewikka.user"] = user
254
 
        dataset["interface.active_tab"] = active_tab
255
 
        dataset["interface.active_section"] = active_section
 
255
        
 
256
        if user:
 
257
            if is_anon:
 
258
                dataset["prewikka.userlink"] = "<b>%s</b>" % utils.escape_html_string(_(user.login))
 
259
            else:
 
260
                dataset["prewikka.userlink"] = "<b><a href=\"%s\">%s</a></b>" % (utils.create_link("user_settings_display"), utils.escape_html_string(user.login))
 
261
            
 
262
        dataset["interface.active_tab"] = _(active_tab)
 
263
        dataset["interface.active_section"] = _(active_section)
256
264
        dataset["prewikka.logout_link"] = (user and self._env.auth.canLogout()) and utils.create_link("logout") or None
257
265
 
258
266
    def _printDataSet(self, dataset, level=0):
284
292
            raise InvalidQueryError("View '%s' does not exist" % name)
285
293
 
286
294
    def checkAuth(self, request):
287
 
        return self._env.auth.getUser(request)
288
 
 
 
295
        user = self._env.auth.getUser(request)
 
296
        if not user.language and self._env.default_locale:
 
297
            user.setLanguage(self._env.default_locale)
 
298
            
 
299
        return user
 
300
        
289
301
    def process(self, request):
290
302
        login = None
291
303
        view = None
298
310
            self._checkPermissions(request, view, user)
299
311
            parameters = self._getParameters(request, view, user)
300
312
            view_object = self._setupView(view, request, parameters, user)
301
 
 
 
313
            
302
314
            if not isinstance(view_object, Logout):
303
315
                self._env.log.info("Loading view", request, user.login)
 
316
            
304
317
            getattr(view_object, view["handler"])()
305
 
 
 
318
            self._setupDataSet(view_object.dataset, request, user, view, parameters)
 
319
            
306
320
            dataset = view_object.dataset
307
321
            template_name = view["template"]
308
322
 
325
339
        #self._printDataSet(dataset)
326
340
        template = load_template(template_name, dataset)
327
341
 
 
342
        # We check the character set after loading the template, 
 
343
        # since the template might trigger a language change.
 
344
        dataset["document.charset"] = localization.getCurrentCharset()
 
345
        
328
346
        request.content = str(template)
329
347
        request.sendResponse()