Exemplo n.º 1
0
class DataSource(models.Model):
    name = models.CharField(max_length=200)
    description = models.TextField(blank=True,null=True)
    url_homepage = models.URLField(blank=True,null=True)
    url_example = models.URLField(blank=True,null=True)
    location = models.CharField(max_length=200,blank=True,null=True)
    start_date = models.DateField(blank=True,null=True)
    end_date = models.DateField(blank=True,null=True)
    #daterange = DateRangeField(blank=True, null=True)
    contents = models.TextField(blank=True, null=True)

    def __str__(self):
        return self.name
Exemplo n.º 2
0
class Project(models.Model):
    id = models.UUIDField(auto_add=True, primary_key=True)
    name = models.TextField(db_index=True, unique=True)
    created_at = models.DateTimeField(auto_now_add=True)
    modified_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.name

    def get_absolute_url(self):
        return reverse('project-detail', kwargs={'name': self.name})

    @cached_property
    def last_check(self):
        try:
            return self.checks.exclude(finished_at=None).latest('finished_at')
        except (Check.DoesNotExist, IndexError):
            return None

    def check(self, delay=True):
        from .tasks import run_check
        check = Check(project=self,
                      public=False,
                      requirements=[self.name],
                      projects=[self.name])
        check.full_clean()
        check.save()
        if delay:
            run_check.delay(check.pk)
        else:
            run_check(check.pk)
Exemplo n.º 3
0
class Class_Training(models.Model):
    trainer = models.ForeignKey('Trainer')
    class_name = models.CharField(max_length=30)
    type_of_class = models.CharField(max_length=2,
                                     choices=TRAINING_TYPE_CHOICES)
    description = models.TextField(max_length=200)

    def __str__(self):
        return self.class_name, self.trainer
Exemplo n.º 4
0
class InformationType(models.Model):
    DataSource = models.ForeignKey('DataSource', related_name='information_types')
    name = models.CharField(max_length=200, blank=True,null=True)
    description = models.TextField(blank=True,null=True)
    filing_type = models.CharField(max_length=200, blank=True,null=True)
    content = models.TextField(blank=True,null=True)
    patterns = models.TextField(blank=True,null=True)
    examples = models.TextField(blank=True,null=True)
    negative_examples = models.TextField(blank=True,null=True)
    regulations = models.TextField(blank=True,null=True)

    def __str__(self):
        return self.name
Exemplo n.º 5
0
class Check(models.Model):
    id = models.UUIDField(auto_add=True, primary_key=True)
    unblocked = models.SmallIntegerField(default=0)
    created_at = models.DateTimeField(default=now)
    started_at = models.DateTimeField(null=True, blank=True)
    finished_at = models.DateTimeField(null=True, blank=True)
    requirements = models.ArrayField(models.TextField())
    projects = models.ArrayField(models.CharField(max_length=255))
    blockers = models.JSONField()
    public = models.BooleanField(default=True)
    runs = models.SmallIntegerField(default=0)
    project = models.ForeignKey(Project, related_name='checks',
                                null=True, blank=True)

    class Meta:
        ordering = ('-finished_at',)

    def __str__(self):
        return str(self.id)

    def get_absolute_url(self):
        return reverse('check-detail', kwargs={'pk': str(self.pk)})

    def clean(self):
        projects = OrderedDict()  # using this since sets aren't ordered
        for requirement in self.requirements:
            url = urlparse(requirement)
            if url.scheme in ('http', 'https', 'file'):
                requirement = [sanitize_github_url(requirement, url)]
                try:
                    for project in projects_from_requirements(requirement):
                        projects[project] = None
                except:
                    raise ValidationError("Couldn't check %s." % requirement)
            else:
                projects[requirement] = None

        self.projects = list(projects.keys())

        for index, project_name in enumerate(self.projects):
            validators.RegexValidator(project_name_re,
                                      'Project %s invalid' %
                                      project_name)(project_name)