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 | from django.db import models
from datetime import datetime
from django.template.defaultfilters import slugify
from vcs.models import BaseRepository, BaseCommit
get_time = lambda s: datetime.strptime(s, '%Y-%m-%d %H:%M:%S')
class RepositoryManager(models.Manager):
def from_post(self, data):
return self.get_or_create(
url = data['website'] + data['absolute_url'],
name = data['name'],
owner = data['owner'],
slug = data['slug'],
)[0]
class BitbucketRepository(BaseRepository):
objects = RepositoryManager()
class CommitManager(models.Manager):
def from_post(self, data):
add,rm,mod = [],[],[]
for file in data['files']:
if file['type'] == 'added': add.append(file['file'])
elif file['type'] == 'removed': rm.append(file['file'])
elif file['type'] == 'modified': mod.append(file['file'])
return self.get_or_create(
added = add,
removed = rm,
modified = mod,
timestamp = get_time(data['timestamp']),
branch = data['branch'],
message = data['message'],
author = data['author'],
node = data['node'],
revision = data['revision'],
size = int(data['size']),
)[0]
class BitbucketCommit(BaseCommit):
node = models.CharField(max_length=40)
size = models.IntegerField()
branch = models.CharField(max_length=255)
objects = CommitManager()
|