File: models.py

package info (click to toggle)
drf-haystack 1.9.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 564 kB
  • sloc: python: 2,608; makefile: 147
file content (88 lines) | stat: -rw-r--r-- 2,474 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# -*- coding: utf-8 -*-

from __future__ import absolute_import, unicode_literals

import pytz
from datetime import date, datetime, timedelta
from random import randrange, randint

from django.db import models


def get_random_date(start=date(1950, 1, 1), end=date.today()):
    """
    :return a random date between `start` and `end`
    """
    delta = ((end - start).days * 24 * 60 * 60)
    return start + timedelta(seconds=randrange(delta))


def get_random_datetime(start=datetime(1950, 1, 1, 0, 0), end=datetime.today()):
    """
    :return a random datetime
    """
    delta = ((end - start).total_seconds())
    return (start + timedelta(seconds=randint(0, int(delta)))).replace(tzinfo=pytz.UTC)


class MockLocation(models.Model):

    latitude = models.FloatField()
    longitude = models.FloatField()
    address = models.CharField(max_length=100)
    city = models.CharField(max_length=30)
    zip_code = models.CharField(max_length=10)

    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.address

    @property
    def coordinates(self):
        try:
            from haystack.utils.geo import Point
        except ImportError:
            return None
        else:
            return Point(self.longitude, self.latitude, srid=4326)


class MockPerson(models.Model):

    firstname = models.CharField(max_length=20)
    lastname = models.CharField(max_length=20)
    birthdate = models.DateField(null=True, default=get_random_date)

    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)

    def __str__(self):
        return "%s %s" % (self.firstname, self.lastname)


class MockPet(models.Model):

    name = models.CharField(max_length=20)
    species = models.CharField(max_length=20)

    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.name


class MockAllField(models.Model):

    charfield = models.CharField(max_length=100)
    integerfield = models.IntegerField()
    floatfield = models.FloatField()
    decimalfield = models.DecimalField(max_digits=5, decimal_places=2)
    boolfield = models.BooleanField(default=False)
    datefield = models.DateField(default=get_random_date)
    datetimefield = models.DateTimeField(default=get_random_datetime)

    def __str__(self):
        return self.charfield