aboutsummaryrefslogtreecommitdiff
path: root/djangopypi/models.py
blob: 34276a5a889d8e09a551539a15b4afef6ab4b19c (plain)
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
import os
from django.db import models
from django.utils.translation import ugettext_lazy as _

OS_NAMES = (
        ("aix", "AIX"),
        ("beos", "BeOS"),
        ("debian", "Debian Linux"),
        ("dos", "DOS"),
        ("freebsd", "FreeBSD"),
        ("hpux", "HP/UX"),
        ("mac", "Mac System x."),
        ("macos", "MacOS X"),
        ("mandrake", "Mandrake Linux"),
        ("netbsd", "NetBSD"),
        ("openbsd", "OpenBSD"),
        ("qnx", "QNX"),
        ("redhat", "RedHat Linux"),
        ("solaris", "SUN Solaris"),
        ("suse", "SuSE Linux"),
        ("yellowdog", "Yellow Dog Linux"),
)

ARCHITECTURES = (
    ("alpha", "Alpha"),
    ("hppa", "HPPA"),
    ("ix86", "Intel"),
    ("powerpc", "PowerPC"),
    ("sparc", "Sparc"),
    ("ultrasparc", "UltraSparc"),
)

class Classifier(models.Model):
    name = models.CharField(max_length=255, unique=True)

    class Meta:
        verbose_name = _(u"classifier")
        verbose_name_plural = _(u"classifiers")

    def __unicode__(self):
        return self.name

class Project(models.Model):
    name = models.CharField(max_length=255, unique=True)
    license = models.CharField(max_length=255, blank=True)
    metadata_version = models.CharField(max_length=64, default=1.0)
    author = models.CharField(max_length=128, blank=True)
    home_page = models.URLField(verify_exists=False, blank=True, null=True)
    download_url = models.URLField(verify_exists=False, blank=True, null=True)
    summary = models.TextField(blank=True)
    description = models.TextField(blank=True)
    author_email = models.CharField(max_length=255, blank=True)
    classifiers = models.ManyToManyField(Classifier)

    class Meta:
        verbose_name = _(u"project")
        verbose_name_plural = _(u"projects")

    def __unicode__(self):
        return self.name

class Release(models.Model):
    version = models.CharField(max_length=128)
    distribution = models.FileField(upload_to="dists")
    dist_md5sum = models.CharField(max_length=255, blank=True)
    platform = models.CharField(max_length=255, blank=True)
    signature = models.CharField(max_length=128, blank=True)
    project = models.ForeignKey(Project, related_name="releases")

    class Meta:
        unique_together = ('version', 'platform')
        verbose_name = _(u"release")
        verbose_name_plural = _(u"releases")

    def __unicode__(self):
        return self.version

    @property
    def filename(self):
        return os.path.basename(self.distribution.name)

    @property
    def path(self):
        return self.distribution.name