~ubuntu-branches/ubuntu/quantal/python-django/quantal

« back to all changes in this revision

Viewing changes to tests/modeltests/custom_methods/models.py

  • Committer: Bazaar Package Importer
  • Author(s): Scott James Remnant
  • Date: 2008-11-15 19:15:33 UTC
  • mfrom: (1.1.6 upstream)
  • Revision ID: james.westby@ubuntu.com-20081115191533-xbt1ut2xf4fvwtvc
Tags: 1.0.1-0ubuntu1
* New upstream release:
  - Bug fixes.

* The tests/ sub-directory appaers to have been dropped upstream, so pull
  our patch to workaround the tests and modify the rules.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
"""
2
 
3. Giving models custom methods
3
 
 
4
 
Any method you add to a model will be available to instances.
5
 
"""
6
 
 
7
 
from django.db import models
8
 
import datetime
9
 
 
10
 
class Article(models.Model):
11
 
    headline = models.CharField(max_length=100)
12
 
    pub_date = models.DateField()
13
 
 
14
 
    def __unicode__(self):
15
 
        return self.headline
16
 
 
17
 
    def was_published_today(self):
18
 
        return self.pub_date == datetime.date.today()
19
 
 
20
 
    def articles_from_same_day_1(self):
21
 
        return Article.objects.filter(pub_date=self.pub_date).exclude(id=self.id)
22
 
 
23
 
    def articles_from_same_day_2(self):
24
 
        """
25
 
        Verbose version of get_articles_from_same_day_1, which does a custom
26
 
        database query for the sake of demonstration.
27
 
        """
28
 
        from django.db import connection
29
 
        cursor = connection.cursor()
30
 
        cursor.execute("""
31
 
            SELECT id, headline, pub_date
32
 
            FROM custom_methods_article
33
 
            WHERE pub_date = %s
34
 
                AND id != %s""", [connection.ops.value_to_db_date(self.pub_date),
35
 
                                  self.id])
36
 
        # The asterisk in "(*row)" tells Python to expand the list into
37
 
        # positional arguments to Article().
38
 
        return [self.__class__(*row) for row in cursor.fetchall()]
39
 
 
40
 
__test__ = {'API_TESTS':"""
41
 
# Create a couple of Articles.
42
 
>>> from datetime import date
43
 
>>> a = Article(id=None, headline='Area man programs in Python', pub_date=date(2005, 7, 27))
44
 
>>> a.save()
45
 
>>> b = Article(id=None, headline='Beatles reunite', pub_date=date(2005, 7, 27))
46
 
>>> b.save()
47
 
 
48
 
# Test the custom methods.
49
 
>>> a.was_published_today()
50
 
False
51
 
>>> a.articles_from_same_day_1()
52
 
[<Article: Beatles reunite>]
53
 
>>> a.articles_from_same_day_2()
54
 
[<Article: Beatles reunite>]
55
 
>>> b.articles_from_same_day_1()
56
 
[<Article: Area man programs in Python>]
57
 
>>> b.articles_from_same_day_2()
58
 
[<Article: Area man programs in Python>]
59
 
"""}