def _update08plugins(request, language): site = Site.objects.get_current() title = "Update PyLucid v0.8 plugin data" out = SimpleStringIO() method_kwargs = { "out": out, "language": language, } filename = settings.PYLUCID.UPDATE08_PLUGIN_FILENAME view_name = settings.PYLUCID.UPDATE08_PLUGIN_VIEWNAME for plugin_name, plugin_instance in PYLUCID_PLUGINS.iteritems(): try: plugin_instance.call_plugin_view(request, filename, view_name, method_kwargs) except Exception, err: if str(err).endswith("No module named %s" % filename): # Plugin has no update API continue if settings.DEBUG: raise messages.error(request, "failed updating %s." % plugin_name) messages.debug(request, mark_safe("<pre>%s</pre>" % traceback.format_exc())) else: out.write(" --- %s END ---" % plugin_name)
def call_searchs(self, search_languages, search_strings, search_results): """ Call every plugin, witch has the search API. """ filename = settings.PYLUCID.SEARCH_FILENAME class_name = settings.PYLUCID.SEARCH_CLASSNAME max_hits = self.preferences["max_hits"] plugin_count = 0 too_much_hits = 0 use_plugin = 0 for plugin_name, plugin_instance in PYLUCID_PLUGINS.iteritems(): try: SearchClass = plugin_instance.get_plugin_object(filename, class_name) # plugin_instance.call_plugin_view(self.request, filename, view_name, method_kwargs) except plugin_instance.ObjectNotFound: # Plugin has no search API continue except Exception: if self.request.debug or self.request.user.is_staff: messages.error(self.request, "Can't collect search results from %s." % plugin_name) messages.debug(self.request, mark_safe("<pre>%s</pre>" % traceback.format_exc())) continue try: search_instance = SearchClass() except PluginNotOnSite, err: # Plugin is not used on this SITE if self.request.debug or self.request.user.is_staff: messages.debug(self.request, "Skip %s: %s" % (plugin_name, err)) continue else: plugin_count += 1 queryset = search_instance.get_queryset(self.request, search_languages, search_strings) count = queryset.count() if self.request.user.is_staff: messages.info(self.request, "%s hits in %s" % (count, plugin_name)) if count >= max_hits: too_much_hits += 1 messages.info(self.request, "Skip too many results from %s" % plugin_name) LogEntry.objects.log_action( app_label="search", action="too mutch hits", message="Skip %s hits in %s for %s" % (count, plugin_name, repr(search_strings)), data={ "search_strings": search_strings, "hits": count, } ) continue use_plugin += 1 if count > 0: search_instance.add_search_results(self.request, queryset, search_results)
def __init__(self, request, out): self.request = request self.out = out for plugin_name, plugin_instance in PYLUCID_PLUGINS.iteritems(): if plugin_name == "pylucid": continue out.write("\tplugin: %r" % plugin_name) out.write("\t\tpath: %r" % plugin_instance.fs_path) self.test_objects(plugin_instance) self.test_modules(plugin_instance)
def tag_list(request): """ Create a list of all existing lucidTag plugin views. """ lucid_tags = [] for plugin_name, plugin_instance in PYLUCID_PLUGINS.iteritems(): try: lucidtag_view = plugin_instance.get_plugin_object( mod_name="views", obj_name="lucidTag" ) except plugin_instance.ObjectNotFound, err: continue except Exception, err: if settings.DEBUG: raise messages.error(request, "Can't get plugin view: %s" % err) continue
def install_plugins(request): """ Simple call all plugin install view, if exist. TODO: create a "install plugins" managment command and call it here! (This is useful for unittests) """ output = [] # Delete all items PyLucidAdminPage.objects.all().delete() output.append("*** Install Plugins:") filename = settings.ADMIN.VIEW_FILENAME view_name = settings.ADMIN.PLUGIN_INSTALL_VIEW_NAME for plugin_name, plugin_instance in PYLUCID_PLUGINS.iteritems(): try: response = plugin_instance.call_plugin_view(request, filename, view_name, method_kwargs={}) except Exception, err: if str(err).endswith("No module named %s" % filename): # Plugin has no install API if settings.DEBUG: output.append( "Skip plugin %r, because it has no install view (%s)" % (plugin_name, err)) continue messages.error( request, "failed call %s.%s: %s" % (plugin_name, view_name, err)) continue output.append("_" * 79) output.append(" *** install plugin %r ***" % plugin_name) assert isinstance( response, basestring ) == True, "Plugin install view must return a basestring!" output.append(response) output.append(" --- %s END ---" % plugin_name) output.append("")
def install_plugins(request): """ Simple call all plugin install view, if exist. TODO: create a "install plugins" managment command and call it here! (This is useful for unittests) """ output = [] # Delete all items PyLucidAdminPage.objects.all().delete() output.append("*** Install Plugins:") filename = settings.ADMIN.VIEW_FILENAME view_name = settings.ADMIN.PLUGIN_INSTALL_VIEW_NAME for plugin_name, plugin_instance in PYLUCID_PLUGINS.iteritems(): try: response = plugin_instance.call_plugin_view(request, filename, view_name, method_kwargs={}) except Exception, err: if str(err).endswith("No module named %s" % filename): # Plugin has no install API if settings.DEBUG: output.append("Skip plugin %r, because it has no install view (%s)" % (plugin_name, err)) continue messages.error(request, "failed call %s.%s: %s" % (plugin_name, view_name, err)) continue output.append("_" * 79) output.append(" *** install plugin %r ***" % plugin_name) assert isinstance(response, basestring) == True, "Plugin install view must return a basestring!" output.append(response) output.append(" --- %s END ---" % plugin_name) output.append("")
def call_searchs(self, search_languages, search_strings, search_results): """ Call every plugin, witch has the search API. """ method_kwargs = { "search_languages": search_languages, "search_strings": search_strings, "search_results": search_results } filename = settings.PYLUCID.SEARCH_FILENAME view_name = settings.PYLUCID.SEARCH_VIEWNAME plugin_count = 0 for plugin_name, plugin_instance in PYLUCID_PLUGINS.iteritems(): try: plugin_instance.call_plugin_view(self.request, filename, view_name, method_kwargs) except Exception, err: if str(err).endswith("No module named %s" % filename): # Plugin has no search API continue if settings.DEBUG or self.request.user.is_staff: messages.error(self.request, "Can't collect search results from %s." % plugin_name) messages.debug(self.request, mark_safe("<pre>%s</pre>" % traceback.format_exc())) else: plugin_count += 1