1 from django
.db
import models
2 from django
.contrib
.auth
.models
import User
5 class PackageManager(models
.Manager
):
6 def get_flag_stats(self
):
9 unflagged
= self
.filter(maintainer
=0).count()
10 flagged
= self
.filter(maintainer
=0).filter(needupdate
=True).count()
11 results
.append((User(id=0,first_name
='Orphans'), unflagged
, flagged
))
13 for maint
in User
.objects
.all().order_by('first_name'):
14 unflagged
= self
.filter(maintainer
=maint
.id).count()
15 flagged
= self
.filter(maintainer
=maint
.id).filter(needupdate
=True).count()
16 results
.append((maint
, unflagged
, flagged
))
19 class Category(models
.Model
):
20 id = models
.AutoField(primary_key
=True)
21 category
= models
.CharField(maxlength
=255)
23 db_table
= 'categories'
24 verbose_name_plural
= 'categories'
26 class Repo(models
.Model
):
27 id = models
.AutoField(primary_key
=True)
28 name
= models
.CharField(maxlength
=255)
32 def last_update(self
):
34 latest
= Package
.objects
.filter(repo__name__exact
=self
.name
).order_by('-last_update')[0]
35 return latest
.last_update
39 class Package(models
.Model
):
40 id = models
.AutoField(primary_key
=True)
41 repo
= models
.ForeignKey(Repo
)
42 maintainer
= models
.ForeignKey(User
)
43 category
= models
.ForeignKey(Category
)
44 needupdate
= models
.BooleanField(default
=False)
45 pkgname
= models
.CharField(maxlength
=255)
46 pkgver
= models
.CharField(maxlength
=255)
47 pkgrel
= models
.CharField(maxlength
=255)
48 pkgdesc
= models
.CharField(maxlength
=255)
49 url
= models
.URLField()
50 sources
= models
.TextField()
51 depends
= models
.TextField()
52 last_update
= models
.DateTimeField(null
=True, blank
=True)
53 objects
= PackageManager()
56 get_latest_by
= 'last_update'
58 def get_absolute_url(self
):
59 return '/packages/%i/' % self
.id
61 def depends_urlize(self
):
63 for dep
in self
.depends
.split(' '):
64 # shave off any version qualifiers
65 nameonly
= re
.match(r
"([a-z0-9-]+)", dep
).group(1)
67 p
= Package
.objects
.filter(pkgname
=nameonly
)[0]
69 # couldn't find a package in the DB -- it might be a virtual depend
70 urls
= urls
+ '<li>' + dep
+ '</li>'
72 url
= '<li><a href="/packages/' + str(p
.id) + '">' + dep
+ '</a></li>'
76 def sources_urlize(self
):
78 for source
in self
.sources
.split(' '):
79 if re
.search('://', source
):
80 url
= '<li><a href="' + source
+ '">' + source
+ '</a></li>'
82 url
= '<li>' + source
+ '</li>'
86 class PackageFile(models
.Model
):
87 id = models
.AutoField(primary_key
=True)
88 pkg
= models
.ForeignKey(Package
)
89 path
= models
.CharField(maxlength
=255)
91 db_table
= 'packages_files'
93 # vim: set ts=4 sw=4 et: