[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 |





