Django

Code

Changeset 2411

Show
Ignore:
Timestamp:
02/27/06 11:58:28 (3 years ago)
Author:
adrian
Message:

magic-removal: Fixed #1280 -- Removed contenttypes.Package model and changed ContentType? field to have a 'model' field

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/branches/magic-removal/django/contrib/auth/models.py

    r2305 r2411  
    11from django.core import validators 
    22from django.db import backend, connection, models 
    3 from django.contrib.contenttypes.models import Packag
     3from django.contrib.contenttypes.models import ContentTyp
    44from django.utils.translation import gettext_lazy as _ 
    55import datetime 
     
    1212class Permission(models.Model): 
    1313    name = models.CharField(_('name'), maxlength=50) 
    14     package = models.ForeignKey(Package, db_column='package'
     14    content_type = models.ForeignKey(ContentType
    1515    codename = models.CharField(_('codename'), maxlength=100) 
    1616    class Meta: 
    1717        verbose_name = _('Permission') 
    1818        verbose_name_plural = _('Permissions') 
    19         unique_together = (('package', 'codename'),) 
    20         ordering = ('package', 'codename') 
    21  
    22     def __repr__(self): 
    23         return "%s | %s" % (self.package_id, self.name) 
     19        unique_together = (('content_type', 'codename'),) 
     20        ordering = ('content_type', 'codename') 
     21 
     22    def __repr__(self): 
     23        return "%r | %s" % (self.content_type, self.name) 
    2424 
    2525class Group(models.Model): 
     
    134134            # The SQL below works out to the following, after DB quoting: 
    135135            # cursor.execute(""" 
    136             #     SELECT p.package, p.codename 
     136            #     SELECT p.content_type_id, p.codename 
    137137            #     FROM auth_permission p, auth_group_permissions gp, auth_user_groups ug 
    138138            #     WHERE p.id = gp.permission_id 
     
    145145                    AND gp.%s = ug.%s 
    146146                    AND ug.%s = %%s""" % ( 
    147                 backend.quote_name('package'), backend.quote_name('codename'), 
     147                backend.quote_name('content_type_id'), backend.quote_name('codename'), 
    148148                backend.quote_name('auth_permission'), backend.quote_name('auth_group_permissions'), 
    149149                backend.quote_name('auth_user_groups'), backend.quote_name('id'), 
     
    157157        if not hasattr(self, '_perm_cache'): 
    158158            import sets 
    159             self._perm_cache = sets.Set(["%s.%s" % (p.package_id, p.codename) for p in self.user_permissions.all()]) 
     159            self._perm_cache = sets.Set(["%s.%s" % (p.content_type, p.codename) for p in self.user_permissions.all()]) 
    160160            self._perm_cache.update(self.get_group_permissions()) 
    161161        return self._perm_cache 
     
    176176        return True 
    177177 
    178     def has_module_perms(self, package_name): 
    179         "Returns True if the user has any permissions in the given package." 
     178    def has_module_perms(self, app_label): 
     179        "Returns True if the user has any permissions in the given app label." 
    180180        if self.is_superuser: 
    181181            return True 
    182         return bool(len([p for p in self.get_all_permissions() if p[:p.index('.')] == package_name])) 
     182        return bool(len([p for p in self.get_all_permissions() if p[:p.index('.')] == app_label])) 
    183183 
    184184    def get_and_delete_messages(self): 
  • django/branches/magic-removal/django/contrib/contenttypes/models.py

    r2377 r2411  
    11from django.db import models 
    22from django.utils.translation import gettext_lazy as _ 
    3  
    4 class Package(models.Model): 
    5     label = models.CharField(_('label'), maxlength=20, primary_key=True) 
    6     name = models.CharField(_('name'), maxlength=30, unique=True) 
    7     class Meta: 
    8         verbose_name = _('package') 
    9         verbose_name_plural = _('packages') 
    10         db_table = 'django_package' 
    11         ordering = ('name',) 
    12  
    13     def __repr__(self): 
    14         return self.name 
    153 
    164class ContentTypeManager(models.Manager): 
     
    2210        opts = model._meta 
    2311        try: 
    24             return self.model._default_manager.get(python_module_name__exact=opts.module_name
    25                 package__label__exact=opts.app_label
     12            return self.model._default_manager.get(app_label=opts.app_label
     13                model=opts.object_name.lower()
    2614        except self.model.DoesNotExist: 
    2715            # The str() is needed around opts.verbose_name because it's a 
    2816            # django.utils.functional.__proxy__ object. 
    2917            ct = self.model(name=str(opts.verbose_name), 
    30                 package=Package.objects.get(label=opts.app_label), 
    31                 python_module_name=opts.module_name) 
     18                app_label=opts.app_label, model=opts.object_name.lower()) 
    3219            ct.save() 
    3320            return ct 
    3421 
    3522class ContentType(models.Model): 
    36     name = models.CharField(_('name'), maxlength=100) 
    37     package = models.ForeignKey(Package, db_column='package'
    38     python_module_name = models.CharField(_('python module name'), maxlength=50
     23    name = models.CharField(maxlength=100) 
     24    app_label = models.CharField(maxlength=100
     25    model = models.CharField(_('python model class name'), maxlength=100, unique=True
    3926    objects = ContentTypeManager() 
    4027    class Meta: 
     
    4229        verbose_name_plural = _('content types') 
    4330        db_table = 'django_content_type' 
    44         ordering = ('package', 'name') 
    45         unique_together = (('package', 'python_module_name'),) 
     31        ordering = ('name',) 
    4632 
    4733    def __repr__(self): 
    48         return "%s | %s" % (self.package_id, self.name) 
     34        return self.name 
    4935 
    50     def get_model_module(self): 
    51         "Returns the Python model module for accessing this type of content." 
    52         return __import__('django.models.%s.%s' % (self.package_id, self.python_module_name), '', '', ['']) 
     36    def model_class(self): 
     37        "Returns the Python model class for this type of content." 
     38        from django.db import models 
     39        return models.get_model(self.app_label, self.model) 
    5340 
    5441    def get_object_for_this_type(self, **kwargs): 
     
    5946        so code that calls this method should catch it. 
    6047        """ 
    61         return self.get_model_module().get_object(**kwargs) 
     48        return self.model_class()._default_manager.get(**kwargs)