[subversion:4] prepare composite pk tests

  • From: esimorre@kenai.com
  • To: commits@django-trac.kenai.com
  • Subject: [subversion:4] prepare composite pk tests
  • Date: Thu, 2 Oct 2008 20:32:45 +0000 (GMT)

Repository: subversion
Revision:   4
Author:     esimorre
Date:       2008-10-02 20:32:42 UTC

Log Message:
-----------
prepare composite pk tests

Modified Paths:
--------------
    tracdb_ext/models.py

Added Paths:
-----------
    legacy/manager.pylegacylegacy/__init__.py

Diffs:
-----
Index: tracdb_ext/models.py
===================================================================
--- tracdb_ext/models.py        (revision 3)
+++ tracdb_ext/models.py        (revision 4)
@@ -1,6 +1,8 @@
 from django.db import models
 from django_trac.tracdb.models import Ticket
 from django_trac.tracdb import fields
+
+from django_trac.legacy.manager import Manager as CmpPKManager
 # declared primary keys are not real primary keys
 
 class Enum(models.Model):
@@ -19,9 +21,11 @@
 
 class Permission(models.Model):
     rowid = models.IntegerField(primary_key=True, editable=False)
-    username = fields.ShortTextField(blank=True)
-    action = fields.ShortTextField(blank=True)
+    username = fields.ShortTextField(blank=True, primary_key=False)
+    action = fields.ShortTextField(blank=True, primary_key=False)
     
+    #objects = CmpPKManager()
+    #_default_manager = objects
     def __unicode__(self):
         return '%s:%s' %(self.username, self.action)
     class Meta:
Index: legacy/manager.py
===================================================================
--- legacy/manager.py   (revision 0)
+++ legacy/manager.py   (revision 4)
@@ -0,0 +1,38 @@
+from django.db.models import Manager as BaseManager
+from django.db.models.query import QuerySet as BaseQuerySet
+from django.db.models.sql.where import AND
+
+
+class QuerySet(BaseQuerySet):
+    '''manages composite primary keys.
+    
+    pk='value1,value2' => field1=value1,field2=value2
+    
+    separator is a parameter (default=',')
+    field1,field2 are introspected (primary_key or unique_together ?)
+    '''
+    cmppk_sep = ','
+    
+    def filter(self, *args, **kwargs):
+        """
+        Returns a new QuerySet instance with the args ANDed to the
existing
+        set.
+        """
+        dbg = args
+        return self._filter_or_exclude(False, *args, **kwargs)
+
+
+class Manager(BaseManager):
+    '''just provides a specific QuerySet.
+    '''
+    def __init__(self, cmppk_sep=','):
+        self.cmppk_sep = cmppk_sep
+        super(Manager, self).__init__()
+    
+    def get_query_set(self):
+        """Returns a new QuerySet object.  Subclasses can override
this method
+        to easily customize the behavior of the Manager.
+        """
+        qs = QuerySet(self.model)
+        qs.cmppk_sep = self.cmppk_sep
+        return qs

Property changes on: legacy/manager.py
___________________________________________________________________
Name: svn:keywords
   + Id

Index: legacy/__init__.py
===================================================================

Property changes on: legacy/__init__.py
___________________________________________________________________
Name: svn:keywords
   + Id


[subversion:4] prepare composite pk tests

esimorre 10/02/2008
  • Mysql
  • Glassfish
  • Jruby
  • Rails
  • Nblogo
Terms of Use; Privacy Policy;
© 2010, Oracle Corporation and/or its affiliates
(revision 20120127.ac94057)
 
 
Close
loading
Please Confirm
Close