Django

Code

Changeset 7152

Show
Ignore:
Timestamp:
02/23/08 03:26:11 (7 months ago)
Author:
mtredinnick
Message:

queryset-refactor: Merged from trunk up to [7151].

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/branches/queryset-refactor/AUTHORS

    r7136 r7152  
    7272    Andrew Brehaut <http://brehaut.net/blog> 
    7373    brut.alll@gmail.com 
     74    btoll@bestweb.net 
    7475    Jonathan Buchanan <jonathan.buchanan@gmail.com> 
    7576    Can Burak Çilingir <canburak@cs.bilgi.edu.tr> 
  • django/branches/queryset-refactor/django/core/management/commands/loaddata.py

    r7086 r7152  
    3131 
    3232        # Keep a count of the installed objects and fixtures 
    33         count = [0, 0] 
     33        fixture_count = 0 
     34        object_count = 0 
    3435        models = set() 
    3536 
     
    6667                    print "Skipping fixture '%s': %s is not a known serialization format" % (fixture_name, format) 
    6768 
    68             for fixture_dir in app_fixtures + list(settings.FIXTURE_DIRS) + ['']: 
     69            if os.path.isabs(fixture_name): 
     70                fixture_dirs = [fixture_name] 
     71            else: 
     72                fixture_dirs = app_fixtures + list(settings.FIXTURE_DIRS) + [''] 
     73 
     74            for fixture_dir in fixture_dirs: 
    6975                if verbosity > 1: 
    7076                    print "Checking %s for fixtures..." % humanize(fixture_dir) 
     
    8793                            return 
    8894                        else: 
    89                             count[1] += 1 
     95                            fixture_count += 1 
    9096                            if verbosity > 0: 
    9197                                print "Installing %s fixture '%s' from %s." % \ 
     
    94100                                objects = serializers.deserialize(format, fixture) 
    95101                                for obj in objects: 
    96                                     count[0] += 1 
     102                                    object_count += 1 
    97103                                    models.add(obj.object.__class__) 
    98104                                    obj.save() 
     
    114120                                (format, fixture_name, humanize(fixture_dir)) 
    115121 
    116         if count[0] > 0: 
     122        if object_count > 0: 
    117123            sequence_sql = connection.ops.sequence_reset_sql(self.style, models) 
    118124            if sequence_sql: 
     
    125131        transaction.leave_transaction_management() 
    126132 
    127         if count[0] == 0: 
     133        if object_count == 0: 
    128134            if verbosity >= 2: 
    129135                print "No fixtures found." 
    130136        else: 
    131137            if verbosity > 0: 
    132                 print "Installed %d object(s) from %d fixture(s)" % tuple(count) 
     138                print "Installed %d object(s) from %d fixture(s)" % (object_count, fixture_count) 
  • django/branches/queryset-refactor/django/db/backends/postgresql/operations.py

    r7147 r7152  
    2727    def deferrable_sql(self): 
    2828        return " DEFERRABLE INITIALLY DEFERRED" 
     29 
     30    def field_cast_sql(self, db_type): 
     31        if db_type == 'inet': 
     32            return 'CAST(%s AS TEXT)' 
     33        return '%s' 
    2934 
    3035    def last_insert_id(self, cursor, table_name, pk_name): 
  • django/branches/queryset-refactor/django/db/models/fields/__init__.py

    r7136 r7152  
    244244            except ValueError: 
    245245                raise ValueError("The __year lookup type requires an integer argument") 
    246             return ['%s-01-01 00:00:00' % value, '%s-12-31 23:59:59.999999' % value] 
     246            if settings.DATABASE_ENGINE == 'sqlite3': 
     247                first = '%s-01-01' 
     248            else: 
     249                first = '%s-01-01 00:00:00' 
     250            return [first % value, '%s-12-31 23:59:59.999999' % value] 
    247251        raise TypeError("Field has invalid lookup: %s" % lookup_type) 
    248252 
  • django/branches/queryset-refactor/django/utils/datastructures.py

    r7136 r7152  
    155155        """ 
    156156        return '{%s}' % ', '.join(['%r: %r' % (k, v) for k, v in self.items()]) 
     157 
     158    def clear(self): 
     159        super(SortedDict, self).clear() 
     160        self.keyOrder = [] 
    157161 
    158162class MultiValueDictKeyError(KeyError): 
  • django/branches/queryset-refactor/setup.py

    r5876 r7152  
    2828packages, data_files = [], [] 
    2929root_dir = os.path.dirname(__file__) 
    30 django_dir = os.path.join(root_dir, 'django') 
    31 pieces = fullsplit(root_dir) 
    32 if pieces[-1] == '': 
    33     len_root_dir = len(pieces) - 1 
    34 else: 
    35     len_root_dir = len(pieces) 
     30if root_dir != '': 
     31    os.chdir(root_dir) 
     32django_dir = 'django' 
    3633 
    3734for dirpath, dirnames, filenames in os.walk(django_dir): 
     
    4037        if dirname.startswith('.'): del dirnames[i] 
    4138    if '__init__.py' in filenames: 
    42         packages.append('.'.join(fullsplit(dirpath)[len_root_dir:])) 
     39        packages.append('.'.join(fullsplit(dirpath))) 
    4340    elif filenames: 
    4441        data_files.append([dirpath, [os.path.join(dirpath, f) for f in filenames]]) 
  • django/branches/queryset-refactor/tests/regressiontests/datastructures/tests.py

    r7136 r7152  
    102102{1: 'one', 0: 'zero', 2: 'two'} 
    103103 
     104>>> d.clear() 
     105>>> d 
     106{} 
     107>>> d.keyOrder 
     108[] 
     109 
    104110### DotExpandedDict ############################################################ 
    105111 
  • django/branches/queryset-refactor/tests/regressiontests/datatypes/models.py

    r5803 r7152  
    5757>>> d3.consumed_at 
    5858datetime.datetime(2007, 4, 20, 16, 19, 59) 
     59 
     60# Year boundary tests (ticket #3689) 
     61 
     62>>> d = Donut(name='Date Test 2007', baked_date=datetime.datetime(year=2007, month=12, day=31), consumed_at=datetime.datetime(year=2007, month=12, day=31, hour=23, minute=59, second=59)) 
     63>>> d.save() 
     64>>> d1 = Donut(name='Date Test 2006', baked_date=datetime.datetime(year=2006, month=1, day=1), consumed_at=datetime.datetime(year=2006, month=1, day=1)) 
     65>>> d1.save() 
     66 
     67>>> Donut.objects.filter(baked_date__year=2007) 
     68[<Donut: Date Test 2007>] 
     69 
     70>>> Donut.objects.filter(baked_date__year=2006) 
     71[<Donut: Date Test 2006>] 
     72 
     73>>> Donut.objects.filter(consumed_at__year=2007).order_by('name') 
     74[<Donut: Apple Fritter>, <Donut: Date Test 2007>] 
     75 
     76>>> Donut.objects.filter(consumed_at__year=2006) 
     77[<Donut: Date Test 2006>] 
     78 
     79>>> Donut.objects.filter(consumed_at__year=2005) 
     80[] 
     81 
     82>>> Donut.objects.filter(consumed_at__year=2008) 
     83[] 
     84 
    5985"""} 
  • django/branches/queryset-refactor/tests/regressiontests/fixtures_regress/models.py

    r6339 r7152  
    22from django.contrib.auth.models import User 
    33from django.conf import settings 
     4import os 
    45 
    56class Animal(models.Model): 
     
    2930        return unicode(name) + u' is owned by ' + unicode(self.owner) 
    3031 
     32class Absolute(models.Model): 
     33    name = models.CharField(max_length=40) 
     34 
     35    load_count = 0 
     36 
     37    def __init__(self, *args, **kwargs): 
     38        super(Absolute, self).__init__(*args, **kwargs) 
     39        Absolute.load_count += 1 
     40 
     41 
    3142__test__ = {'API_TESTS':""" 
    3243>>> from django.core import management 
     
    5061[<Stuff: None is owned by None>] 
    5162 
     63############################################### 
     64# Regression test for ticket #6436 --  
     65# os.path.join will throw away the initial parts of a path if it encounters 
     66# an absolute path. This means that if a fixture is specified as an absolute path,  
     67# we need to make sure we don't discover the absolute path in every fixture directory. 
     68 
     69>>> load_absolute_path = os.path.join(os.path.dirname(__file__), 'fixtures', 'absolute.json') 
     70>>> management.call_command('loaddata', load_absolute_path, verbosity=0) 
     71>>> Absolute.load_count 
     721 
     73 
    5274"""} 
  • django/branches/queryset-refactor/tests/regressiontests/string_lookup/models.py

    r6857 r7152  
    4040    name = models.CharField(max_length=50) 
    4141    text = models.TextField() 
     42    submitted_from = models.IPAddressField(blank=True, null=True) 
    4243 
    4344    def __str__(self): 
     
    99100>>> Article.objects.get(text__contains='quick brown fox') 
    100101<Article: Article Test> 
     102 
     103# Regression test for #708: "like" queries on IP address fields require casting 
     104# to text (on PostgreSQL). 
     105>>> Article(name='IP test', text='The body', submitted_from='192.0.2.100').save() 
     106>>> Article.objects.filter(submitted_from__contains='192.0.2') 
     107[<Article: Article IP test>] 
     108 
    101109"""}