def init_with_context(self, context): """ self.children += [{ 'title': _('Parts Recycle'), 'change_url': change_url + 'draft/', 'add_url': add_url }, { 'title': _('supervisor approve'), 'change_url': change_url + 'supervisorapprove/' }, { 'title': _('engineer approve'), 'change_url': change_url + 'engineerapprove/' }, { 'title': _('repaire'), 'change_url': change_url + 'repair/' }, { 'title': _('query'), 'change_url': change_url }] """ if self._initialized: return mod, inst_str = self.models.rsplit('.', 1) mod = import_module(mod) inst = getattr(mod, inst_str) app_label, model_name = inst._meta.app_label, inst._meta.model_name user = context['request'].user info2 = (app_label, model_name) url_draft_suffix = statusUrl.get_url_suffix_by_status(Status.DRAFT) add_url = reverse('admin:%s_%s_add_%s' % (app_label, model_name, url_draft_suffix)) draft_child = {'title': statusUrl.get_menu_name_by_status(Status.DRAFT)} if user.has_perm('%s.add_%s' % info2): draft_child['add_url'] = add_url if user.has_perm('%s.change_%s' % info2): draft_child['change_url'] = reverse('admin:%s_%s_changelist_%s' % (app_label, model_name, url_draft_suffix)) if 'add_url' in draft_child: self.children.append(draft_child) perm_dict = { Status.SUPERVISOR_APPROVE: '%s.can_approve' % app_label, Status.ENGINEER_APPROVE: '%s.can_engineer_approve' % app_label, Status.REPAIR: '%s.can_repair' % app_label, statusUrl.STATUS_QUERY: '%s.change_%s' % info2 } for status in perm_dict.keys(): if user.has_perm(perm_dict[status]): self.children.append({ 'title': statusUrl.get_menu_name_by_status(status), 'change_url': reverse('admin:%s_%s_changelist_%s' % (info2 + (statusUrl.get_url_suffix_by_status(status),))) }) self._initialized = True
def response_add(self, request, obj, post_url_continue=None): """ Override response_add. for 'continue' button when add a new object """ if post_url_continue == None: status = statusUrl.get_url_status(request) url_suffix = statusUrl.get_url_suffix_by_status(status) if status != -1 else None opts = obj._meta pk_value = obj._get_pk_val() url_name = 'admin:%s_%s_change' % (opts.app_label, opts.model_name) \ if status == -1 else \ 'admin:%s_%s_change_%s' % (opts.app_label, opts.model_name, url_suffix) # if status == -1: # post_url_continue = reverse('admin:%s_%s_change' % # (opts.app_label, opts.model_name), # args=(pk_value,), # current_app=self.admin_site.name) # else: # url_suffix = statusUrl.get_url_suffix_by_status(status) # post_url_continue = reverse('admin:%s_%s_change_%s' % # (opts.app_label, opts.model_name, url_suffix), # args=(pk_value,), # current_app=self.admin_site.name) post_url_continue = reverse(url_name, args=(pk_value,), current_app=self.admin_site.name) return super(PartsRecycleAdmin, self).response_add(request, obj, post_url_continue)
def get_urls(self): """ my_urls = [ url(r'^draft/$', self.changelist_view_draft), url(r'^supervisorapprove/$', self.changelist_view_supervisorapprove), url(r'^engineerapprove/$', self.changelist_view_engineerapprove), url(r'^repair/$', self.changelist_view_repair), url(r'^query/$', self.changelist_view), url(r'query/(.+)/$', self.change_view), ] """ urls = super(PartsRecycleAdmin, self).get_urls() url_suffixs = statusUrl.url_suffixs info = (self.model._meta.app_label, self.model._meta.model_name) my_urls = [] draft_url_suffix = statusUrl.get_url_suffix_by_status(Status.DRAFT) my_urls.append(url(r'^'+draft_url_suffix+'/add/$', self.add_view, name='%s_%s_add_%s' % (info + (draft_url_suffix,)))) for url_suffix in url_suffixs: info2 = (info + (url_suffix,)) my_urls.append(url(r'^'+url_suffix+'/$', getattr(self, 'changelist_view_'+url_suffix), name='%s_%s_changelist_%s' % info2)) my_urls.append(url(r'^'+url_suffix+'/(.+)/history/$', self.history_view, name='%s_%s_history_%s' % info2)) my_urls.append(url(r'^'+url_suffix+'/(.+)/$', self.change_view, name='%s_%s_change_%s' % info2)) return my_urls + urls
def url_for_result(self, result): if self.url_status == -1: return super(PartsRecycleChangeList, self).url_for_result(result) else: pk = getattr(result, self.pk_attname) url_suffix = statusUrl.get_url_suffix_by_status(self.url_status) url = reverse('admin:%s_%s_change_%s' % (self.opts.app_label, self.opts.model_name, url_suffix), args=(quote(pk), ), current_app=self.model_admin.admin_site.name) return url
def init_with_context(self, context): user = context['request'].user info2 = (self.app_label, self.model_name) perm_dict = { Status.DRAFT: '%s.change_%s' % info2, Status.SUPERVISOR_APPROVE: '%s.can_approve' % self.app_label, Status.ENGINEER_APPROVE: '%s.can_engineer_approve' % self.app_label, Status.REPAIR: '%s.can_repair' % self.app_label, statusUrl.STATUS_QUERY: '%s.change_%s' % info2 } for status in perm_dict.keys(): if user.has_perm(perm_dict[status]): self.children.append(items.MenuItem( title = statusUrl.get_menu_name_by_status(status), url = reverse('admin:%s_%s_changelist_%s' % (info2 + (statusUrl.get_url_suffix_by_status(status),))) ))
def get_redirect_url(self, request, obj): """ adjust redirect when fsm_admin button clicked """ opts = self.model._meta status = statusUrl.get_url_status(request) if self.has_change_permission(request, None): if status == -1: post_url = reverse('admin:%s_%s_changelist' % (opts.app_label, opts.model_name, ), current_app=self.admin_site.name) else: url_suffix = statusUrl.get_url_suffix_by_status(status) post_url = reverse('admin:%s_%s_changelist_%s' % (opts.app_label, opts.model_name, url_suffix), current_app=self.admin_site.name) preserved_filters = self.get_preserved_filters(request) post_url = add_preserved_filters({'preserved_filters': preserved_filters, 'opts': opts}, post_url) else: post_url = reverse('admin:index', current_app=self.admin_site.name) return post_url
def response_change(self, request, obj): """ Override FSMTransitionMixin response_change() function. To handle '_saveasnew' & '_addanother' button redirection """ opts = self.model._meta pk_value = obj._get_pk_val() preserved_filters = self.get_preserved_filters(request) msg_dict = {'name': force_text(opts.verbose_name), 'obj': force_text(obj)} status = statusUrl.get_url_status(request) url_suffix = statusUrl.get_url_suffix_by_status(status) if status != -1 else None if '_partsrecycle_saveasnew' in request.POST: msg = _('The %(name)s "%(obj)s" was added successfully. You may edit it again below.') % msg_dict self.message_user(request, msg, messages.SUCCESS) url_name = 'admin:%s_%s_change' % (opts.app_label, opts.model_name) \ if status == -1 else \ 'admin:%s_%s_change_%s' % (opts.app_label, opts.model_name, url_suffix) redirect_url = reverse(url_name, args=(pk_value,), current_app=self.admin_site.name) redirect_url = add_preserved_filters({'preserved_filters': preserved_filters, 'opts': opts}, redirect_url) return HttpResponseRedirect(redirect_url) elif '_partsrecycle_addanother' in request.POST: msg = _('The %(name)s "%(obj)s" was changed successfully. You may add another %(name)s below.') % msg_dict self.message_user(request, msg, messages.SUCCESS) url_name = 'admin:%s_%s_add' % (opts.app_label, opts.model_name) \ if status == -1 else \ 'admin:%s_%s_add_%s' % (opts.app_label, opts.model_name, url_suffix) redirect_url = reverse(url_name, current_app=self.admin_site.name) redirect_url = add_preserved_filters({'preserved_filters': preserved_filters, 'opts': opts}, redirect_url) return HttpResponseRedirect(redirect_url) else: return super(PartsRecycleAdmin, self).response_change(request, obj)
def status_urlname(value, arg): if arg == -1: return value else: url_suffix = statusUrl.get_url_suffix_by_status(arg) return value + "_" + url_suffix
def status_urlname(value, arg): url_suffix = statusUrl.get_url_suffix_by_status(arg) return 'admin:%s_%s_changelist_%s' % (value.app_label, value.model_name, url_suffix)