Example #1
0
    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
Example #2
0
    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)
Example #3
0
    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
Example #4
0
 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
Example #5
0
 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),)))
             ))
Example #6
0
 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
Example #7
0
    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)
Example #8
0
def status_urlname(value, arg):
    if arg == -1:
        return value
    else:
        url_suffix = statusUrl.get_url_suffix_by_status(arg)
        return value + "_" + url_suffix
Example #9
0
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)