#!/usr/bin/env python
# -*- coding: utf-8 -
#
# @contact: marcoberi@gmail.com
# @version: 1.0
# @license: MIT http://www.opensource.org/licenses/mit-license.php
#
from django.db.models.base import ModelBase
from django.core.urlresolvers import reverse, NoReverseMatch
from django.contrib import admin
from django.contrib.auth.models import User
def adminviews_test(self, user=None, password=None):
if user is None:
if password is None:
password = "test"
user = User.objects.create_superuser('test', 'test@test.com', password)
self.client.login(username = user.username, password = password)
pkg = self.__module__.rpartition('.')[0]
if pkg.endswith(".tests"):
pkg = pkg[:-6]
models_mod = __import__(pkg + ".models")
if not getattr(models_mod, "models", None):
return
for id_ in dir(models_mod.models):
model = getattr(models_mod.models, id_)
# Get ModelAdmin for this Model
if isinstance(model, ModelBase) and model._meta.app_label == pkg and model in admin.site._registry:
try:
# Prevent error 405 if model_admin.has_add_permission always return False
if admin.site._registry[model].has_add_permission(type("request", (), {"user": user})):
url = reverse("admin:%s_%s_add" % (model._meta.app_label, model._meta.module_name))
response = self.client.get(url, follow = True)
self.failUnlessEqual(response.status_code, 200,
"%s != %s -> %s, url: %s" % (response.status_code, 200, repr(model), url))
self.assertFalse("this_is_the_login_form" in response.content,
"login requested for %s" % str(model))
url = reverse("admin:%s_%s_changelist" %
(model._meta.app_label, model._meta.module_name))
response = self.client.get(url, follow = True)
self.failUnlessEqual(response.status_code, 200,
"%s != %s -> %s, url: %s" % (response.status_code, 200, repr(model), url))
self.assertFalse("this_is_the_login_form" in response.content,
"login requested for %s" % str(model))
except NoReverseMatch:
continue
Comments