예제 #1
0
 def test_log_actions(self):
     ma = ModelAdmin(Band, self.site)
     mock_request = MockRequest()
     mock_request.user = User.objects.create(username='******')
     self.assertEqual(ma.log_addition(mock_request, self.band, 'added'),
                      LogEntry.objects.latest('id'))
     self.assertEqual(ma.log_change(mock_request, self.band, 'changed'),
                      LogEntry.objects.latest('id'))
     self.assertEqual(ma.log_change(mock_request, self.band, 'deleted'),
                      LogEntry.objects.latest('id'))
예제 #2
0
def rent_out(request, id, pk):
    book_inst = get_object_or_404(BookInstance, id=id)

    # If this is a POST request then process the Form data
    if request.method == 'POST':

        # Create a form instance and populate it with data from the request (binding):
        form = RentOutForm(request.POST, error_class=DivErrorList)

        # Check if the form is valid:
        if form.is_valid():
            # process the data in form.cleaned_data as required (here we just write it to the model due_back field)
            book_inst.status = form.cleaned_data['status']
            book_inst.borrower = form.cleaned_data['borrower']
            book_inst.appointment = form.cleaned_data['appointment']
            book_inst.due_back = form.cleaned_data['due_back']
            book_inst.appointment_time = form.cleaned_data['appointment_time']
            book_inst.save()
            history = History.objects.create(master=book_inst.borrower)
            history1 = HistoryByManager.objects.create(
                master=book_inst.borrower)
            history.rent_time = datetime.date.today()
            history.books = book_inst.book.title
            history1.rent_time = datetime.date.today()
            history1.books = book_inst.book.title
            history.save()
            history1.save()

            # record log
            from django.contrib.admin.options import ModelAdmin
            object = book_inst
            message = '成功修改当前图书副本'
            ModelAdmin.log_change(request, request, object, message)

            # redirect to a new URL:
            return HttpResponseRedirect(
                reverse_lazy('catalog:book-detail', args=(pk, )) +
                '?success=4')

    # If this is a GET (or any other method) create the default form.
    else:
        proposed_renewal_date = datetime.date.today() + datetime.timedelta(
            weeks=3)
        form = RentOutForm(initial={
            'status': 'o',
            'borrower': book_inst.borrower,
            'due_back': proposed_renewal_date,
            'appointment': book_inst.appointment,
        },
                           error_class=DivErrorList)

    return render(request, 'catalog/bookinstance_form.html', {
        'form': form,
        'bookinst': book_inst
    })
예제 #3
0
파일: tests.py 프로젝트: LouisAmon/django
 def test_log_actions(self):
     ma = ModelAdmin(Band, self.site)
     mock_request = MockRequest()
     mock_request.user = User.objects.create(username='******')
     self.assertEqual(ma.log_addition(mock_request, self.band, 'added'), LogEntry.objects.latest('id'))
     self.assertEqual(ma.log_change(mock_request, self.band, 'changed'), LogEntry.objects.latest('id'))
     self.assertEqual(ma.log_change(mock_request, self.band, 'deleted'), LogEntry.objects.latest('id'))
예제 #4
0
def add(request):
    """
    Process the add form.
    """
    model = get_model(request.POST["app"], request.POST["model"])
    if not can("add", model, request.user):
        return {"valid": True, "permissionerror":"You don't have permission to add!"}
    obj = model()
    form = get_model_form(obj, request.POST["fields"], data=request.POST,\
                        files=request.FILES, parent_model_related_name=request.POST["parent_model_related_name"],\
                        parent_model=request.POST["parent_model"], \
                        parent_id = request.POST["parent_id"])

    if form.is_valid():

        saved_obj=form.save()

        'Create change message'
        try:
            model_admin = ModelAdmin(model, admin.site)
            message = model_admin.construct_change_message(request, form, None)
            model_admin.log_change(request, saved_obj, message)
        except Exception:
            pass
        data = {
            'id': saved_obj.id,
            'valid': True,
        }
    else:
        "from django_ajax_validation"
        errors = form.errors
        formfields = dict([(fieldname, form[fieldname]) for fieldname in form.fields.keys()]) 
        final_errors = {}
        for key, val in errors.iteritems():
            if '__all__' in key:
                final_errors[key] = val
            else:# not isinstance(formfields[key].field):
                html_id = formfields[key].field.widget.attrs.get('id') or formfields[key].auto_id
                html_id = formfields[key].field.widget.id_for_label(html_id)
                final_errors[html_id] = val
        data = {
            'valid': False,
            'errors': final_errors,
        }
    return data
예제 #5
0
def edit(request):
    """
    Process the inline editing form.
    """
    model = get_model(request.POST["app"], request.POST["model"])
    obj = model.objects.get(id=request.POST["id"])
    form = get_edit_form(obj, request.POST["fields"], data=request.POST, files=request.FILES)
    if not is_editable(obj, request):
        response = _("Permission denied")
    elif form.is_valid():
        form.save()
        model_admin = ModelAdmin(model, admin.site)
        message = model_admin.construct_change_message(request, form, None)
        model_admin.log_change(request, obj, message)
        response = ""
    else:
        response = form.errors.values()[0][0]
    return HttpResponse(unicode(response))
예제 #6
0
파일: views.py 프로젝트: tjktyler/mezzanine
def edit(request):
    """
    Process the inline editing form.
    """
    model = get_model(request.POST["app"], request.POST["model"])
    obj = model.objects.get(id=request.POST["id"])
    form = get_edit_form(obj, request.POST["fields"], data=request.POST,
                        files=request.FILES)
    if not is_editable(obj, request):
        response = _("Permission denied")
    elif form.is_valid():
        form.save()
        model_admin = ModelAdmin(model, admin.site)
        message = model_admin.construct_change_message(request, form, None)
        model_admin.log_change(request, obj, message)
        response = ""
    else:
        response = form.errors.values()[0][0]
    return HttpResponse(unicode(response))
예제 #7
0
def edit(request):
    """
    Process the inline editing form.
    """
    try:
        model = get_model(request.POST["app"], request.POST["model"])
        if not can("change", model, request.user):
            return {"valid": True, "permissionerror":"You don't have permission to edit!"}
        obj = model.objects.get(id=request.POST["id"])
        form = get_model_form(obj, request.POST["fields"], data=request.POST,
                             files=request.FILES)
    except Exception:
        pass
        
    if form.is_valid():
        form.save()
        model_admin = ModelAdmin(model, admin.site)
        message = model_admin.construct_change_message(request, form, None)
        model_admin.log_change(request, obj, message)
        data = {
            'valid': True
        }
    else:
        "from django_ajax_validation"
        errors = form.errors
        formfields = dict([(fieldname, form[fieldname]) for fieldname in form.fields.keys()])
#        pprint (errors)
        final_errors = {}
        for key, val in errors.iteritems():
            if '__all__' in key:
                final_errors[key] = val
            elif not isinstance(formfields[key].field):
                html_id = formfields[key].field.widget.attrs.get('id') or formfields[key].auto_id
                html_id = formfields[key].field.widget.id_for_label(html_id)
                final_errors[html_id] = val
        data = {
            'valid': False,
            'errors': final_errors,
        }

    return data 
예제 #8
0
def logChange(request, obj, message):
    # log_change can be used as static method, passing None as self
    ModelAdmin.log_change(None, request, obj, message)