Serotonin Storm

source>vcs>github>models.py
 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
from django.contrib.auth.models import User
from django.db import models
from django.template.defaultfilters import slugify

from vcs.models import BaseRepository, BaseCommit


def get_time(time_string):
      gmt_offset_seconds = int(filter(lambda c: c in '0123456789', time_string[-6:])) * 60
      return datetime.strptime(time_string[:-6], '%Y-%m-%dT%H:%M:%S') - timedelta(seconds=gmt_offset_seconds)


class RepositoryManager(models.Manager):
    def from_post(self, data):
        return self.get_or_create(
            name = data['name'],
            url = data['url'],
            description = data['description'],
            name = data['name'],
            owner = '%(name)s <%(email)s>' % data['owner'],
            watchers =  int(data['watchers']),
            forks =  int(data['forks'])
        )[0]

    
class GithubRepository(BaseRepository):
    pledgie = models.CharField(max_length=255,blank=True,null=True)
    watchers = models.IntegerField()
    forks = models.IntegerField()

    objects = RepositoryManager()
    

class CommitManager(models.Manager):
    def from_post(self, data):
        return self.get_or_create(
            revision = data['id'],
            url = data['url'],
            timestamp = get_time(data['timestamp']),
            message = data['message'],
            author = '%(name)s <%(email)s>' % data['author'],
            added = data.get('added',[]),      
            removed = data.get('removed',[]),      
            modified = data.get('modified',[]),      
        )[0]

class GithubCommit(BaseCommit):
    url = models.URLField(verify_exists=False)
    
    objects = CommitManager()