from django.db import models from ndh.models import TimeStampedModel, NamedModel from ndh.utils import query_sum class Project(NamedModel): pass class License(NamedModel): 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, on_delete=models.CASCADE) homepage = models.URLField(max_length=200, blank=True, null=True) license = models.ForeignKey(License, on_delete=models.CASCADE, blank=True, null=True) class Meta: ordering = ('name',) 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, on_delete=models.CASCADE) url = models.URLField(max_length=200, unique=True) homepage = models.URLField(max_length=200, blank=True, null=True) license = models.ForeignKey(License, on_delete=models.CASCADE, 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) repo_id = models.PositiveIntegerField() class Meta: ordering = ('package', 'url') def __str__(self): return self.url