Пример #1
0
        for obj in self.result_list:
            xf, attrs, value = lookup_field(self.x_field, obj, self)
            for i, yfname in enumerate(self.y_fields):
                yf, yattrs, yv = lookup_field(yfname, obj, self)
                datas[i]["data"].append((value, yv))

        option = {'series': {'lines': {'show': True}, 'points': {'show': False}},
                  'grid': {'hoverable': True, 'clickable': True}}
        try:
            xfield = self.opts.get_field(self.x_field)
            if type(xfield) in (models.DateTimeField, models.DateField, models.TimeField):
                option['xaxis'] = {'mode': "time", 'tickLength': 5}
                if type(xfield) is models.DateField:
                    option['xaxis']['timeformat'] = "%y/%m/%d"
                elif type(xfield) is models.TimeField:
                    option['xaxis']['timeformat'] = "%H:%M:%S"
                else:
                    option['xaxis']['timeformat'] = "%y/%m/%d %H:%M:%S"
        except Exception:
            pass

        option.update(self.chart.get('option', {}))

        content = {'data': datas, 'option': option}
        result = json.dumps(content, cls=JSONEncoder, ensure_ascii=False)

        return HttpResponse(result)

site.register_plugin(ChartsPlugin, ListAdminView)
site.register_modelview(r'^chart/(.+)/$', ChartsView, name='%s_%s_chart')
Пример #2
0
        # ft.seek(3)
        # ft.tell()
        # mycsv = PartyModel.import_data(ft)
        # print 'mycsv:',mycsv
        # datareader = csv.reader(ft)
        # print 'datareader',datareader
        # # line = f.readline()
        # # print line
        # for row in datareader:
        #     print row
        if self.new_context['msg']:
            return self.get(request, *args, **kwargs)
        else:
            return HttpResponseRedirect('/xadmin/')


site.register_modelview(r'^import/$', ImportAdminView, name='%s_%s_import')


def process_import(request):
    print request.FILES
    if request.POST:
        f = request.FILES['file']
        datareader = csv.reader(f)
        print datareader
        line = f.readline()
        print line
        for row in datareader:
            print row
    return HttpResponseRedirect('/xadmin/')
Пример #3
0
        if not export_format:
            messages.warning(self.request,
                             _('You must select an export format.'))
        else:
            formats = self.get_export_formats()
            file_format = formats[int(export_format)]()
            queryset = self.get_export_queryset(self.request, context)
            export_data = self.get_export_data(file_format,
                                               queryset,
                                               request=self.request)
            content_type = file_format.get_content_type()
            # Django 1.7 uses the content_type kwarg instead of mimetype
            try:
                response = HttpResponse(export_data, content_type=content_type)
            except TypeError:
                response = HttpResponse(export_data, mimetype=content_type)
            response['Content-Disposition'] = 'attachment; filename=%s' % (
                self.get_export_filename(file_format), )
            post_export.send(sender=None, model=self.model)
            return response


site.register_modelview(r'^import/$', ImportView, name='%s_%s_import')
site.register_modelview(r'^process_import/$',
                        ImportProcessView,
                        name='%s_%s_process_import')
site.register_plugin(ImportMenuPlugin, ListAdminView)
site.register_plugin(ExportMenuPlugin, ListAdminView)
site.register_plugin(ExportPlugin, ListAdminView)
Пример #4
0
                                             model,
                                             list_per_page=10,
                                             list_editable=[])(req)

    def has_perm(self):
        return True

    def context(self, context):
        list_view = self.list_view
        list_view.make_result_list()

        base_fields = list_view.base_list_display
        if len(base_fields) > 5:
            base_fields = base_fields[0:5]

        context['result_headers'] = [
            c for c in list_view.result_headers().cells
            if c.field_name in base_fields
        ]
        context['results'] = [[
            o for i, o in enumerate(
                filter(lambda c: c.field_name in base_fields, r.cells))
        ] for r in list_view.results()]
        context['result_count'] = list_view.result_count
        context['page_url'] = self.bookmark.url


site.register(Bookmark, BookmarkAdmin)
site.register_plugin(BookmarkPlugin, ListAdminView)
site.register_modelview(r'^bookmark/$', BookmarkView, name='%s_%s_bookmark')
Пример #5
0
            return __()

        return _method

    def do_action(self, __, queryset):
        return self.revision_context_manager.create_revision(manage_manually=False)(self.do_action_func(__))()


class ReversionAdmin(object):
    model_icon = "exchange"


class VersionAdmin(object):
    model_icon = "file"


site.register(Revision, ReversionAdmin)
site.register(Version, VersionAdmin)

site.register_modelview(r"^recover/$", RecoverListView, name="%s_%s_recoverlist")
site.register_modelview(r"^recover/([^/]+)/$", RecoverView, name="%s_%s_recover")
site.register_modelview(r"^([^/]+)/revision/$", RevisionListView, name="%s_%s_revisionlist")
site.register_modelview(r"^([^/]+)/revision/([^/]+)/$", RevisionView, name="%s_%s_revision")

site.register_plugin(ReversionPlugin, ListAdminView)
site.register_plugin(ReversionPlugin, ModelFormAdminView)
site.register_plugin(ReversionPlugin, DeleteAdminView)

site.register_plugin(InlineRevisionPlugin, InlineModelAdmin)
site.register_plugin(ActionRevisionPlugin, BaseActionView)
Пример #6
0
                    option['xaxis']['timeformat'] = "%y/%m/%d %H:%M:%S"
        except Exception:
            pass

        option.update(self.chart.get('option', {}))
        # print datas
        content = {'data': datas, 'option': option}
        result = json.dumps(content, cls=JSONEncoder, ensure_ascii=False)
        # print result
        return HttpResponse(result)


site.register_plugin(ImportMenuPlugin, ListAdminView)
site.register_plugin(ImportPlugin, ListAdminView)
site.register_plugin(MyChartsPlugin, ListAdminView)
site.register_modelview(r'^mychart/(.+)/$', MyChartsView, name='%s_%s_mychart')


class InterfaceTestcaseAdmin(object):
    list_display = ('case_id', 'case_name', 'url', 'request_type', 'config',
                    'result', 'status_code', 'time', 'datetime')
    search_fields = ('case_id', 'case_name', 'url', 'request_type', 'result',
                     'state')
    list_editable = ['case_id', 'url', 'request_type', 'body']
    show_detail_fields = ['case_name']
    list_export = ['xls', 'json']
    actions = [
        RunAction,
    ]

Пример #7
0
        if not has_view_perm:
            raise PermissionDenied

        export_format = self.request.GET.get('file_format')

        if not export_format:
            messages.warning(self.request, _('You must select an export format.'))
        else:
            formats = self.get_export_formats()
            file_format = formats[int(export_format)]()
            queryset = self.get_export_queryset(self.request, context)
            export_data = self.get_export_data(file_format, queryset, request=self.request)
            content_type = file_format.get_content_type()
            # Django 1.7 uses the content_type kwarg instead of mimetype
            try:
                response = HttpResponse(export_data, content_type=content_type)
            except TypeError:
                response = HttpResponse(export_data, mimetype=content_type)
            response['Content-Disposition'] = 'attachment; filename=%s' % (
                self.get_export_filename(file_format),
            )
            post_export.send(sender=None, model=self.model)
            return response


site.register_modelview(r'^import/$', ImportView, name='%s_%s_import')
site.register_modelview(r'^process_import/$', ImportProcessView, name='%s_%s_process_import')
site.register_plugin(ImportMenuPlugin, ListAdminView)
site.register_plugin(ExportMenuPlugin, ListAdminView)
site.register_plugin(ExportPlugin, ListAdminView)
Пример #8
0
    @filter_hook
    @csrf_protect_m
    @dutils.commit_on_success
    def post(self, request, object_id):
        model_fields = [f.name for f in self.opts.fields]
        fields = [f for f in request.POST.keys() if f in model_fields]
        defaults = {
            "form": forms.ModelForm,
            "fields": fields,
            "formfield_callback": self.formfield_for_dbfield,
        }
        form_class = modelform_factory(self.model, **defaults)
        form = form_class(
            instance=self.org_obj, data=request.POST, files=request.FILES)

        result = {}
        if form.is_valid():
            form.save(commit=True)
            result['result'] = 'success'
            result['new_data'] = form.cleaned_data
            result['new_html'] = dict(
                [(f, self.get_new_field_html(f)) for f in fields])
        else:
            result['result'] = 'error'
            result['errors'] = JsonErrorDict(form.errors, form).as_json()

        return self.render_response(result)

site.register_plugin(EditablePlugin, ListAdminView)
site.register_modelview(r'^(.+)/patch/$', EditPatchView, name='%s_%s_patch')
Пример #9
0
from website import IndexView, LoginView, LogoutView, UserSettingView

__all__ = ('BaseAdminObject', 'BaseAdminPlugin', 'BaseAdminView',
           'CommAdminView', 'ModelAdminView', 'ListAdminView',
           'ModelFormAdminView', 'CreateAdminView', 'UpdateAdminView',
           'DeleteAdminView', 'DetailAdminView', 'Dashboard', 'BaseWidget',
           'IndexView', 'LoginView', 'LogoutView')

# admin site-wide views
site.register_view(r'^$', IndexView, name='index')
site.register_view(r'^login/$', LoginView, name='login')
site.register_view(r'^logout/$', LogoutView, name='logout')

site.register_view(r'^settings/user$', UserSettingView, name='user_settings')

site.register_modelview(r'^$', ListAdminView, name='%s_%s_changelist')
site.register_modelview(r'^add/$', CreateAdminView, name='%s_%s_add')
site.register_modelview(r'^(.+)/delete/$',
                        DeleteAdminView,
                        name='%s_%s_delete')
site.register_modelview(r'^(.+)/update/$',
                        UpdateAdminView,
                        name='%s_%s_change')
site.register_modelview(r'^(.+)/detail/$',
                        DetailAdminView,
                        name='%s_%s_detail')
site.register_modelview(r'^(.+)/dashboard/$',
                        ModelDashboard,
                        name='%s_%s_dashboard')

site.set_loginview(LoginView)
Пример #10
0
        nodes.append(save_node)

    def get_media(self, media):
        if self.is_list_sortable:
            media = media + self.vendor('xadmin.plugin.sortablelist.js')
        return media


class SaveOrderView(ModelAdminView):

    @csrf_protect_m
    @transaction.atomic
    def post(self, request):
        order_objs = request.POST.getlist("order[]")
        for order_value, pk in enumerate(order_objs, start=1):
            self.save_order(pk, order_value)
        return self.render_response({})

    def save_order(self, pk, order_value):
        obj = self.model.objects.get(pk=pk)
        order_field = self.list_order_field
        is_order_changed = lambda x: getattr(x, order_field) != order_value

        if is_order_changed(obj):
            setattr(obj, order_field, order_value)
            obj.save()


site.register_plugin(SortableListPlugin, ListAdminView)
site.register_modelview(r'^save-order/$', SaveOrderView, name='%s_%s_save_order')
Пример #11
0
        for field in self.batch_create_fields:
            data[field] = request.REQUEST.get(field).split('\n')
            max_len = max(len(data[field]), max_len)

        for i in range(max_len):
            item_data = {}
            try:
                for field in self.batch_create_fields:
                    item_data[field] = data[field][i]
            except:
                logging.error('get form data fail', exc_info=True)
                break
            try:
                request.POST = item_data
                self.instance_forms()
                self.setup_forms()
                if self.form_obj.is_valid():
                    self.form_obj.save()
                    self.new_create += 1
                else:
                    logging.error('invalid data %s error %s', item_data, self.form_obj.errors)
                    self.create_error += 1
            except Exception, e:
                logging.error('create error %s', e, exc_info=True)
                self.create_error += 1

        self.message_user('new create %s, error %s' % (self.new_create, self.create_error))
        return self.ajax_success()

site.register_modelview(r'^bulkcreate/$', BulkCreateView, name='%s_%s_bulkcreate')
Пример #12
0
        )
        nodes.append(save_node)

    def get_media(self, media):
        if self.is_list_sortable:
            media = media + self.vendor("xadmin.plugin.sortablelist.js")
        return media


class SaveOrderView(ModelAdminView):
    @csrf_protect_m
    @transaction.atomic
    def post(self, request):
        order_objs = request.POST.getlist("order[]")
        for order_value, pk in enumerate(order_objs, start=1):
            self.save_order(pk, order_value)
        return self.render_response({})

    def save_order(self, pk, order_value):
        obj = self.model.objects.get(pk=pk)
        order_field = self.list_order_field
        is_order_changed = lambda x: getattr(x, order_field) != order_value

        if is_order_changed(obj):
            setattr(obj, order_field, order_value)
            obj.save()


site.register_plugin(SortableListPlugin, ListAdminView)
site.register_modelview(r"^save-order/$", SaveOrderView, name="%s_%s_save_order")
Пример #13
0
                "clickable": True
            },
        }
        try:
            xfield = self.opts.get_field(self.x_field)
            if type(xfield) in (
                    models.DateTimeField,
                    models.DateField,
                    models.TimeField,
            ):
                option["xaxis"] = {"mode": "time", "tickLength": 5}
                if type(xfield) is models.DateField:
                    option["xaxis"]["timeformat"] = "%y/%m/%d"
                elif type(xfield) is models.TimeField:
                    option["xaxis"]["timeformat"] = "%H:%M:%S"
                else:
                    option["xaxis"]["timeformat"] = "%y/%m/%d %H:%M:%S"
        except Exception:
            pass

        option.update(self.chart.get("option", {}))

        content = {"data": datas, "option": option}
        result = json.dumps(content, cls=JSONEncoder, ensure_ascii=False)

        return HttpResponse(result)


site.register_plugin(ChartsPlugin, ListAdminView)
site.register_modelview(r"^chart/(.+)/$", ChartsView, name="%s_%s_chart")
Пример #14
0
        t = template.Template(s)
        c = template.Context({"form": form, "action_url": self.model_admin_url("patch", self.org_obj.pk)})

        return HttpResponse(t.render(c))

    @filter_hook
    @csrf_protect_m
    @transaction.atomic
    def post(self, request, object_id):
        model_fields = [f.name for f in self.opts.fields]
        fields = [f for f in request.POST.keys() if f in model_fields]
        defaults = {"form": self.form, "fields": fields, "formfield_callback": self.formfield_for_dbfield}
        form_class = modelform_factory(self.model, **defaults)
        form = form_class(instance=self.org_obj, data=request.POST, files=request.FILES)

        result = {}
        if form.is_valid():
            form.save(commit=True)
            result["result"] = "success"
            result["new_data"] = form.cleaned_data
            result["new_html"] = dict([(f, self.get_new_field_html(f)) for f in fields])
        else:
            result["result"] = "error"
            result["errors"] = JsonErrorDict(form.errors, form).as_json()

        return self.render_response(result)


site.register_plugin(EditablePlugin, ListAdminView)
site.register_modelview(r"^(.+)/patch/$", EditPatchView, name="%s_%s_patch")
Пример #15
0

class ReversionAdmin(object):
    model_icon = "fa fa-exchange"

    list_display = ("__str__", "date_created", "user", "comment")
    list_display_links = ("__str__", )

    list_filter = ("date_created", "user")
    inlines = [VersionInline]


site.register(Revision, ReversionAdmin)

site.register_modelview(r"^recover/$",
                        RecoverListView,
                        name="%s_%s_recoverlist")
site.register_modelview(r"^recover/([^/]+)/$",
                        RecoverView,
                        name="%s_%s_recover")
site.register_modelview(r"^([^/]+)/revision/$",
                        RevisionListView,
                        name="%s_%s_revisionlist")
site.register_modelview(r"^([^/]+)/revision/([^/]+)/$",
                        RevisionView,
                        name="%s_%s_revision")

site.register_plugin(ReversionPlugin, ListAdminView)
site.register_plugin(ReversionPlugin, ModelFormAdminView)
site.register_plugin(ReversionPlugin, DeleteAdminView)
Пример #16
0
    model = Version
    extra = 0
    style = 'accordion'

class ReversionAdmin(object):
    model_icon = 'fa fa-exchange'

    list_display = ('__str__', 'date_created', 'user', 'comment')
    list_display_links = ('__str__',)

    list_filter = ('date_created', 'user')
    inlines = [VersionInline]

site.register(Revision, ReversionAdmin)

site.register_modelview(
    r'^recover/$', RecoverListView, name='%s_%s_recoverlist')
site.register_modelview(
    r'^recover/([^/]+)/$', RecoverView, name='%s_%s_recover')
site.register_modelview(
    r'^([^/]+)/revision/$', RevisionListView, name='%s_%s_revisionlist')
site.register_modelview(
    r'^([^/]+)/revision/([^/]+)/$', RevisionView, name='%s_%s_revision')

site.register_plugin(ReversionPlugin, ListAdminView)
site.register_plugin(ReversionPlugin, ModelFormAdminView)
site.register_plugin(ReversionPlugin, DeleteAdminView)

site.register_plugin(InlineRevisionPlugin, InlineModelAdmin)
site.register_plugin(ActionRevisionPlugin, BaseActionView)
Пример #17
0
        if not self.title:
            self.title = unicode(bookmark)

        req = self.make_get_request("", data.items())
        self.list_view = self.get_view_class(ListAdminView, model, list_per_page=10, list_editable=[])(req)

    def has_perm(self):
        return True

    def context(self, context):
        list_view = self.list_view
        list_view.make_result_list()

        base_fields = list_view.base_list_display
        if len(base_fields) > 5:
            base_fields = base_fields[0:5]

        context["result_headers"] = [c for c in list_view.result_headers().cells if c.field_name in base_fields]
        context["results"] = [
            [o for i, o in enumerate(filter(lambda c: c.field_name in base_fields, r.cells))]
            for r in list_view.results()
        ]
        context["result_count"] = list_view.result_count
        context["page_url"] = self.bookmark.url


site.register(Bookmark, BookmarkAdmin)
site.register_plugin(BookmarkPlugin, ListAdminView)
site.register_modelview(r"^bookmark/$", BookmarkView, name="%s_%s_bookmark")
Пример #18
0
    def get_media(self, media):
        if self.is_list_sortable:
            media = media + self.vendor('xadmin.plugin.sortablelist.js')
        return media


class SaveOrderView(ModelAdminView):
    @csrf_protect_m
    @transaction.atomic
    def post(self, request):
        order_objs = request.POST.getlist("order[]")
        for order_value, pk in enumerate(order_objs, start=1):
            self.save_order(pk, order_value)
        return self.render_response({})

    def save_order(self, pk, order_value):
        obj = self.model.objects.get(pk=pk)
        order_field = self.list_order_field
        is_order_changed = lambda x: getattr(x, order_field) != order_value

        if is_order_changed(obj):
            setattr(obj, order_field, order_value)
            obj.save()


site.register_plugin(SortableListPlugin, ListAdminView)
site.register_modelview(r'^save-order/$',
                        SaveOrderView,
                        name='%s_%s_save_order')
Пример #19
0
        context = super(UnityAttentionsAdmin, self).get_context()
        context.update({'edit_url': '/service/article/%d/update' % index,
                        'delete_url': '/service/article/%d/delete' % index})

        return context


class ReleaseLogAdmin(BaseHelperAdmin):
    @filter_hook
    def get_context(self):
        index = 1
        try:
            self.article_obj = Article.objects.get(id=index)
        except Exception as e:
            print(e)
            self.article_obj = None

        context = super(ReleaseLogAdmin, self).get_context()
        context.update({'edit_url': '/service/article/%d/update' % index,
                        'delete_url': '/service/article/%d/delete' % index})

        return context


xadmin.site.register(Article, ArticleAdmin)
xadmin.site.register(UnityHelper, UnityHelperAdmin)
xadmin.site.register(UnityAttentions, UnityAttentionsAdmin)
xadmin.site.register(ReleaseLog, ReleaseLogAdmin)

site.register_modelview(r'^(.+)/view/$', ViewArticleAdmin, name='%s_%s_view')
Пример #20
0
        for obj in self.result_list:
            xf, attrs, value = lookup_field(self.x_field, obj, self)
            for i, yfname in enumerate(self.y_fields):
                yf, yattrs, yv = lookup_field(yfname, obj, self)
                datas[i]["data"].append((value, yv))

        option = {'series': {'lines': {'show': True}, 'points': {'show': False}},
                  'grid': {'hoverable': True, 'clickable': True}}
        try:
            xfield = self.opts.get_field(self.x_field)
            if type(xfield) in (models.DateTimeField, models.DateField, models.TimeField):
                option['xaxis'] = {'mode': "time", 'tickLength': 5}
                if type(xfield) is models.DateField:
                    option['xaxis']['timeformat'] = "%y/%m/%d"
                elif type(xfield) is models.TimeField:
                    option['xaxis']['timeformat'] = "%H:%M:%S"
                else:
                    option['xaxis']['timeformat'] = "%y/%m/%d %H:%M:%S"
        except Exception:
            pass

        option.update(self.chart.get('option', {}))

        content = {'data': datas, 'option': option}
        result = json.dumps(content, cls=JSONEncoder, ensure_ascii=False)

        return HttpResponse(result)

site.register_plugin(ChartsPlugin, ListAdminView)
site.register_modelview(r'^chart/(.+)/$', ChartsView, name='%s_%s_chart')
Пример #21
0
def register_builtin_views(site):
    from xadmin import views
    site.register_view(r'^$', views.IndexView, name='index')
    site.register_view(r'^login/$', views.LoginView, name='login')
    site.register_view(r'^logout/$', views.LogoutView, name='logout')
    site.register_view(r'^settings/user$',
                       views.UserSettingView,
                       name='user_settings')

    site.register_modelview(r'^$',
                            views.ListAdminView,
                            name='%s_%s_changelist')
    site.register_modelview(r'^add/$', views.CreateAdminView, name='%s_%s_add')
    site.register_modelview(r'^(.+)/delete/$',
                            views.DeleteAdminView,
                            name='%s_%s_delete')
    site.register_modelview(r'^(.+)/update/$',
                            views.UpdateAdminView,
                            name='%s_%s_change')
    site.register_modelview(r'^(.+)/detail/$',
                            views.DetailAdminView,
                            name='%s_%s_detail')
    site.register_modelview(r'^(.+)/dashboard/$',
                            views.ModelDashboard,
                            name='%s_%s_dashboard')

    site.set_loginview(views.LoginView)
Пример #22
0
        if not self.title:
            self.title = unicode(bookmark)

        req = self.make_get_request("", data.items())
        self.list_view = self.get_view_class(
            ListAdminView, model, list_per_page=10, list_editable=[])(req)

    def has_perm(self):
        return True

    def context(self, context):
        list_view = self.list_view
        list_view.make_result_list()

        base_fields = list_view.base_list_display
        if len(base_fields) > 5:
            base_fields = base_fields[0:5]

        context['result_headers'] = [c for c in list_view.result_headers(
        ).cells if c.field_name in base_fields]
        context['results'] = [[o for i, o in
                               enumerate(filter(lambda c:c.field_name in base_fields, r.cells))]
                              for r in list_view.results()]
        context['result_count'] = list_view.result_count
        context['page_url'] = self.bookmark.url

site.register(Bookmark, BookmarkAdmin)
site.register_plugin(BookmarkPlugin, ListAdminView)
site.register_modelview(r'^bookmark/$', BookmarkView, name='%s_%s_bookmark')
Пример #23
0
    @filter_hook
    @csrf_protect_m
    @transaction.atomic
    def post(self, request, object_id):
        model_fields = [f.name for f in self.opts.fields]
        fields = [f for f in request.POST.keys() if f in model_fields]
        defaults = {
            "form": self.form,
            "fields": fields,
            "formfield_callback": self.formfield_for_dbfield,
        }
        form_class = modelform_factory(self.model, **defaults)
        form = form_class(instance=self.org_obj, data=request.POST, files=request.FILES)

        result = {}
        if form.is_valid():
            form.save(commit=True)
            result["result"] = "success"
            result["new_data"] = form.cleaned_data
            result["new_html"] = dict([(f, self.get_new_field_html(f)) for f in fields])
        else:
            result["result"] = "error"
            result["errors"] = JsonErrorDict(form.errors, form).as_json()

        return self.render_response(result)


site.register_plugin(EditablePlugin, ListAdminView)
site.register_modelview(r"^(.+)/patch/$", EditPatchView, name="%s_%s_patch")
Пример #24
0
from delete import DeleteAdminView
from detail import DetailAdminView
from dashboard import Dashboard, BaseWidget, widget_manager, ModelDashboard
from website import IndexView, LoginView, LogoutView, UserSettingView

__all__ = (
    'BaseAdminObject',
    'BaseAdminPlugin', 'BaseAdminView', 'CommAdminView', 'ModelAdminView', 'ListAdminView',
    'ModelFormAdminView', 'CreateAdminView', 'UpdateAdminView', 'DeleteAdminView', 'DetailAdminView',
    'Dashboard', 'BaseWidget',
    'IndexView', 'LoginView', 'LogoutView'
)

# admin site-wide views
site.register_view(r'^$', IndexView, name='index')
site.register_view(r'^login/$', LoginView, name='login')
site.register_view(r'^logout/$', LogoutView, name='logout')

site.register_view(r'^settings/user$', UserSettingView, name='user_settings')

site.register_modelview(r'^$', ListAdminView, name='%s_%s_changelist')
site.register_modelview(r'^add/$', CreateAdminView, name='%s_%s_add')
site.register_modelview(
    r'^(.+)/delete/$', DeleteAdminView, name='%s_%s_delete')
site.register_modelview(
    r'^(.+)/update/$', UpdateAdminView, name='%s_%s_change')
site.register_modelview(
    r'^(.+)/detail/$', DetailAdminView, name='%s_%s_detail')
site.register_modelview(
    r'^(.+)/dashboard/$', ModelDashboard, name='%s_%s_dashboard')
Пример #25
0
                                             model,
                                             list_per_page=10,
                                             list_editable=[])(req)

    def has_perm(self):
        return True

    def context(self, context):
        list_view = self.list_view
        list_view.make_result_list()

        base_fields = list_view.base_list_display
        if len(base_fields) > 5:
            base_fields = base_fields[0:5]

        context["result_headers"] = [
            c for c in list_view.result_headers().cells
            if c.field_name in base_fields
        ]
        context["results"] = [[
            o for i, o in enumerate(
                filter(lambda c: c.field_name in base_fields, r.cells))
        ] for r in list_view.results()]
        context["result_count"] = list_view.result_count
        context["page_url"] = self.bookmark.url


site.register(Bookmark, BookmarkAdmin)
site.register_plugin(BookmarkPlugin, ListAdminView)
site.register_modelview(r"^bookmark/$", BookmarkView, name="%s_%s_bookmark")
Пример #26
0
    @transaction.atomic
    def post(self, request, object_id):
        model_fields = [f.name for f in self.opts.fields]
        fields = [f for f in request.POST.keys() if f in model_fields]
        defaults = {
            "form": self.form,
            "fields": fields,
            "formfield_callback": self.formfield_for_dbfield,
        }
        form_class = modelform_factory(self.model, **defaults)
        form = form_class(instance=self.org_obj,
                          data=request.POST,
                          files=request.FILES)

        result = {}
        if form.is_valid():
            form.save(commit=True)
            result['result'] = 'success'
            result['new_data'] = form.cleaned_data
            result['new_html'] = dict([(f, self.get_new_field_html(f))
                                       for f in fields])
        else:
            result['result'] = 'error'
            result['errors'] = JsonErrorDict(form.errors, form).as_json()

        return self.render_response(result)


site.register_plugin(EditablePlugin, ListAdminView)
site.register_modelview(r'^(.+)/patch/$', EditPatchView, name='%s_%s_patch')
Пример #27
0
def register_builtin_views(site):
    from xadmin import views
    site.register_view(r'^$', views.IndexView, name='index')
    site.register_view(r'^login/$', views.LoginView, name='login')
    site.register_view(r'^logout/$', views.LogoutView, name='logout')
    site.register_view(r'^settings/user$', views.UserSettingView, name='user_settings')

    site.register_modelview(r'^$', views.ListAdminView, name='%s_%s_changelist')
    site.register_modelview(r'^add/$', views.CreateAdminView, name='%s_%s_add')
    site.register_modelview(r'^(.+)/delete/$', views.DeleteAdminView, name='%s_%s_delete')
    site.register_modelview(r'^(.+)/update/$', views.UpdateAdminView, name='%s_%s_change')
    site.register_modelview(r'^(.+)/detail/$', views.DetailAdminView, name='%s_%s_detail')
    site.register_modelview(r'^(.+)/dashboard/$', views.ModelDashboard, name='%s_%s_dashboard')

    site.set_loginview(views.LoginView)
Пример #28
0
        return _method

    def do_action(self, __, queryset):
        return self.revision_context_manager.create_revision(manage_manually=False)(self.do_action_func(__))()


class ReversionAdmin(object):
    model_icon = 'exchange'


class VersionAdmin(object):
    model_icon = 'file'
site.register(Revision, ReversionAdmin)
site.register(Version, VersionAdmin)

site.register_modelview(
    r'^recover/$', RecoverListView, name='%s_%s_recoverlist')
site.register_modelview(
    r'^recover/([^/]+)/$', RecoverView, name='%s_%s_recover')
site.register_modelview(
    r'^([^/]+)/revision/$', RevisionListView, name='%s_%s_revisionlist')
site.register_modelview(
    r'^([^/]+)/revision/([^/]+)/$', RevisionView, name='%s_%s_revision')

site.register_plugin(ReversionPlugin, ListAdminView)
site.register_plugin(ReversionPlugin, ModelFormAdminView)
site.register_plugin(ReversionPlugin, DeleteAdminView)

site.register_plugin(InlineRevisionPlugin, InlineModelAdmin)
site.register_plugin(ActionRevisionPlugin, BaseActionView)
Пример #29
0
        # ft = open(tmp_file,'r')
        # ft.seek(3)
        # ft.tell()
        # mycsv = PartyModel.import_data(ft)
        # print 'mycsv:',mycsv
        # datareader = csv.reader(ft)
        # print 'datareader',datareader
        # # line = f.readline()
        # # print line
        # for row in datareader:
        #     print row
        if self.new_context['msg']:
            return self.get(request,*args,**kwargs)
        else:
            return HttpResponseRedirect('/xadmin/')


site.register_modelview(r'^import/$',ImportAdminView,name='%s_%s_import')

def process_import(request):
    print request.FILES
    if request.POST:
        f = request.FILES['file']
        datareader = csv.reader(f)
        print datareader
        line = f.readline()
        print line
        for row in datareader:
            print row
    return HttpResponseRedirect('/xadmin/')