Skip to content
Snippets Groups Projects
models.py 1.38 KiB
Newer Older
Guilhem Saurel's avatar
Guilhem Saurel committed
from django.db import models

from ndh.models import TimeStampedModel, NamedModel
Guilhem Saurel's avatar
Guilhem Saurel committed
from ndh.utils import query_sum


class Project(NamedModel):
    pass


class License(NamedModel):
Guilhem Saurel's avatar
Guilhem Saurel committed
    github_key = models.CharField(max_length=50)
    spdx_id = models.CharField(max_length=50)
    url = models.URLField(max_length=200)

    def __str__(self):
        return self.spdx_id or self.name


class Package(NamedModel, TimeStampedModel):
    project = models.ForeignKey(Project)
Guilhem Saurel's avatar
Guilhem Saurel committed
    homepage = models.URLField(max_length=200, blank=True, null=True)
    license = models.ForeignKey(License, blank=True, null=True)

Guilhem Saurel's avatar
Guilhem Saurel committed
    class Meta:
        ordering = ('name',)

Guilhem Saurel's avatar
Guilhem Saurel committed
    def open_pr(self):
        return query_sum(self.repo_set, 'open_pr')

    def open_issues(self):
        return query_sum(self.repo_set, 'open_issues')


class Repo(TimeStampedModel):
    package = models.ForeignKey(Package)
Guilhem Saurel's avatar
Guilhem Saurel committed
    url = models.URLField(max_length=200, unique=True)
    homepage = models.URLField(max_length=200, blank=True, null=True)
    license = models.ForeignKey(License, blank=True, null=True)
    default_branch = models.CharField(max_length=50)
    open_issues = models.PositiveSmallIntegerField(blank=True, null=True)
    open_pr = models.PositiveSmallIntegerField(blank=True, null=True)
Guilhem Saurel's avatar
Guilhem Saurel committed
    repo_id = models.PositiveIntegerField()
Guilhem Saurel's avatar
Guilhem Saurel committed

    class Meta:
Guilhem Saurel's avatar
Guilhem Saurel committed
        ordering = ('package', 'url')

    def __str__(self):
        return self.url