summaryrefslogtreecommitdiff
path: root/django/models/core.py
diff options
context:
space:
mode:
authorAdrian Holovaty <adrian@holovaty.com>2005-07-13 01:25:57 +0000
committerAdrian Holovaty <adrian@holovaty.com>2005-07-13 01:25:57 +0000
commited114e15106192b22ebb78ef5bf5bce72b419d13 (patch)
treef7c27f035cca8d50bd69e2ecbd7497fccec4a35a /django/models/core.py
parent07ffc7d605cc96557db28a9e35da69bc0719611b (diff)
Imported Django from private SVN repository (created from r. 8825)
git-svn-id: http://code.djangoproject.com/svn/django/trunk@3 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django/models/core.py')
-rw-r--r--django/models/core.py107
1 files changed, 107 insertions, 0 deletions
diff --git a/django/models/core.py b/django/models/core.py
new file mode 100644
index 0000000000..4416f22b76
--- /dev/null
+++ b/django/models/core.py
@@ -0,0 +1,107 @@
+from django.core import meta, validators
+
+class Site(meta.Model):
+ db_table = 'sites'
+ fields = (
+ meta.CharField('domain', 'domain name', maxlength=100),
+ meta.CharField('name', 'display name', maxlength=50),
+ )
+ ordering = (('domain', 'ASC'),)
+
+ def __repr__(self):
+ return self.domain
+
+ def _module_get_current():
+ "Returns the current site, according to the SITE_ID constant."
+ from django.conf.settings import SITE_ID
+ return get_object(id__exact=SITE_ID)
+
+class Package(meta.Model):
+ db_table = 'packages'
+ fields = (
+ meta.CharField('label', 'label', maxlength=20, primary_key=True),
+ meta.CharField('name', 'name', maxlength=30, unique=True),
+ )
+ ordering = (('name', 'ASC'),)
+
+ def __repr__(self):
+ return self.name
+
+class ContentType(meta.Model):
+ db_table = 'content_types'
+ fields = (
+ meta.CharField('name', 'name', maxlength=100),
+ meta.ForeignKey(Package, name='package'),
+ meta.CharField('python_module_name', 'Python module name', maxlength=50),
+ )
+ ordering = (('package', 'ASC'), ('name', 'ASC'),)
+ unique_together = (('package', 'python_module_name'),)
+
+ def __repr__(self):
+ return "%s | %s" % (self.package, self.name)
+
+ def get_model_module(self):
+ "Returns the Python model module for accessing this type of content."
+ return __import__('django.models.%s.%s' % (self.package, self.python_module_name), '', '', [''])
+
+ def get_object_for_this_type(self, **kwargs):
+ """
+ Returns an object of this type for the keyword arguments given.
+ Basically, this is a proxy around this object_type's get_object() model
+ method. The ObjectNotExist exception, if thrown, will not be caught,
+ so code that calls this method should catch it.
+ """
+ return self.get_model_module().get_object(**kwargs)
+
+class Redirect(meta.Model):
+ db_table = 'redirects'
+ fields = (
+ meta.ForeignKey(Site, radio_admin=meta.VERTICAL),
+ meta.CharField('old_path', 'redirect from', maxlength=200, db_index=True,
+ help_text="This should be an absolute path, excluding the domain name. Example: '/events/search/'."),
+ meta.CharField('new_path', 'redirect to', maxlength=200, blank=True,
+ help_text="This can be either an absolute path (as above) or a full URL starting with 'http://'."),
+ )
+ unique_together=(('site_id', 'old_path'),)
+ ordering = (('old_path', 'ASC'),)
+ admin = meta.Admin(
+ fields = (
+ (None, {'fields': ('site_id', 'old_path', 'new_path')}),
+ ),
+ list_display = ('__repr__',),
+ list_filter = ('site_id',),
+ search_fields = ('old_path', 'new_path'),
+ )
+
+ def __repr__(self):
+ return "%s ---> %s" % (self.old_path, self.new_path)
+
+class FlatFile(meta.Model):
+ db_table = 'flatfiles'
+ fields = (
+ meta.CharField('url', 'URL', maxlength=100, validator_list=[validators.isAlphaNumericURL],
+ help_text="Example: '/about/contact/'. Make sure to have leading and trailing slashes."),
+ meta.CharField('title', 'title', maxlength=200),
+ meta.TextField('content', 'content', help_text="Full HTML is allowed."),
+ meta.BooleanField('enable_comments', 'enable comments'),
+ meta.CharField('template_name', 'template name', maxlength=70, blank=True,
+ help_text="Example: 'flatfiles/contact_page'. If this isn't provided, the system will use 'flatfiles/default'."),
+ meta.BooleanField('registration_required', 'registration required',
+ help_text="If this is checked, only logged-in users will be able to view the page."),
+ meta.ManyToManyField(Site),
+ )
+ ordering = (('url', 'ASC'),)
+ admin = meta.Admin(
+ fields = (
+ (None, {'fields': ('url', 'title', 'content', 'sites')}),
+ ('Advanced options', {'classes': 'collapse', 'fields': ('enable_comments', 'registration_required', 'template_name')}),
+ ),
+ list_filter = ('sites',),
+ search_fields = ('url', 'title'),
+ )
+
+ def __repr__(self):
+ return "%s -- %s" % (self.url, self.title)
+
+ def get_absolute_url(self):
+ return self.url