Example #1
0
    def dispatch(self):
        """Handler, der die richtige Methode für die Aktion aufruft"""

        args = self.request.route_args
        application, model, action_or_objectid = args

        model_class = site.get_model_class(application, model)
        if not model_class:
            raise gaetk.handler.HTTP404_NotFound('No model %s' % ('%s.%s' % (application, model)))
        admin_class = site.get_admin_class(model_class)

        logging.info("%s %s", action_or_objectid, self.request.route_args)
        # Bestimme Route! Da könnte man dann auch einen Handler mit angeben.
        # Das muss irgendwie besser gehen als Keys und Actions zu mischen.
        if action_or_objectid == 'add':
            if admin_class.read_only:
                raise gaetk.handler.HTTP403_Forbidden
            admin_class.add_view(self)
        elif action_or_objectid == 'export_xls':
            admin_class.export_view_xls(self)
        elif action_or_objectid == 'export_csv':
            admin_class.export_view_csv(self)
        elif action_or_objectid == 'delete':
            if admin_class.read_only:
                raise gaetk.handler.HTTP403_Forbidden
            elif not admin_class.deletable:
                self.add_message('danger', u"I'm sorry Dave, I'm afraid I can't do that")
                raise gaetk.handler.HTTP302_Found(location=self.request.referer)
            else:
                admin_class.delete_view(self)
        else:
            if admin_class.read_only:
                raise gaetk.handler.HTTP403_Forbidden
            admin_class.change_view(self, action_or_objectid,
                                    extra_context=dict(app=application, model=model))
Example #2
0
    def get(self, application, model):
        """Rendert eine Liste aller registrierten Modells."""

        model_class = site.get_model_class(application, model)
        if not model_class:
            raise gaetk.handler.HTTP404_NotFound('No model %s' % ('%s.%s' % (application, model)))
        admin_class = site.get_admin_class(model_class)

        # unsupported: Link-Fields (oder wie das heißt)
        # unsupported: callables in List_fields
        query = admin_class.get_queryset(self.request)
        template_values = self.paginate(
            query, defaultcount=admin_class.list_per_page, datanodename='object_list', calctotal=False)
        template_values.update(
            admin_class=admin_class,
            app=application,
            model=model,
            model_class=model_class)

        self.render(template_values, 'admin/list.html')
Example #3
0
    def get(self, application, model):
        """Erwartet den Parameter `q`"""

        model_class = site.get_model_class(application, model)
        if not model_class:
            raise gaetk.handler.HTTP404_NotFound('No model %s' % ('%s.%s' % (application, model)))

        pagesize = 40
        term = self.request.get('q')

        limit = self.request.get_range('limit', default=40, min_value=10)
        offset = self.request.get_range('offset', default=0, min_value=0)
        hits, total = search.fsearch(term, model, limit=limit, offset=offset)

        self.render(dict(app=application,
                         model=model,
                         model_class=model_class,
                         hits=hits,
                         total=total,
                         term=term,
                         page=offset // pagesize,
                         pagesize=pagesize),
                    'admin/search.html')