aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStanislav Ochotnicky <sochotnicky@gmail.com>2009-07-09 19:13:47 +0200
committerStanislav Ochotnicky <sochotnicky@gmail.com>2009-07-09 20:25:30 +0200
commite5ca34ab98e44a4c4897fd4c2450a9842a55779f (patch)
tree6f7f57754c3a20229a095a2154e8afb84f8b043d /src/matchbox/db/main
parentFix errors in ddl (diff)
downloadcollagen-e5ca34ab98e44a4c4897fd4c2450a9842a55779f.tar.gz
collagen-e5ca34ab98e44a4c4897fd4c2450a9842a55779f.tar.bz2
collagen-e5ca34ab98e44a4c4897fd4c2450a9842a55779f.zip
Added implementation of basic db functions
Using Django backend for ORM mapping. Django ORM may not be best, but we can reuse it later in web application
Diffstat (limited to 'src/matchbox/db/main')
-rw-r--r--src/matchbox/db/main/__init__.py0
-rw-r--r--src/matchbox/db/main/initial_data.json23
-rw-r--r--src/matchbox/db/main/models.py50
3 files changed, 73 insertions, 0 deletions
diff --git a/src/matchbox/db/main/__init__.py b/src/matchbox/db/main/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/matchbox/db/main/__init__.py
diff --git a/src/matchbox/db/main/initial_data.json b/src/matchbox/db/main/initial_data.json
new file mode 100644
index 0000000..613b7a5
--- /dev/null
+++ b/src/matchbox/db/main/initial_data.json
@@ -0,0 +1,23 @@
+[
+ {
+ "model": "main.FileType",
+ "pk": 1,
+ "fields": {
+ "name": "obj"
+ }
+ },
+ {
+ "model": "main.FileType",
+ "pk": 2,
+ "fields": {
+ "name": "sym"
+ }
+ },
+ {
+ "model": "main.FileType",
+ "pk": 3,
+ "fields": {
+ "name": "dir"
+ }
+ }
+]
diff --git a/src/matchbox/db/main/models.py b/src/matchbox/db/main/models.py
new file mode 100644
index 0000000..5448269
--- /dev/null
+++ b/src/matchbox/db/main/models.py
@@ -0,0 +1,50 @@
+from django.db import models
+
+# Create your models here.
+class Package(models.Model):
+ name = models.CharField(max_length=255,unique=True)
+
+class PackageVersion(models.Model):
+ version = models.CharField(max_length=255)
+ package = models.ForeignKey('Package')
+ category = models.ForeignKey('PackageCategory')
+ dependencies = models.ManyToManyField('self', symmetrical=False)
+
+class PackageCategory(models.Model):
+ name = models.CharField(max_length=255,unique=True)
+
+class PortageProfile(models.Model):
+ name = models.CharField(max_length=255,unique=True)
+
+class Tinderbox(models.Model):
+ ip = models.IPAddressField()
+
+class PackageProperties(models.Model):
+ packageversion = models.ForeignKey('PackageVersion')
+ profile = models.ForeignKey('PortageProfile')
+ tinderbox = models.ForeignKey('Tinderbox')
+ error_code = models.IntegerField()
+ contents = models.ManyToManyField('File',through='PackageProperties_File')
+ useflags = models.ManyToManyField('Useflag')
+
+class Attachment(models.Model):
+ packageproperties = models.ForeignKey('PackageProperties')
+ name = models.CharField(max_length=255)
+ mimetype = models.CharField(max_length=255)
+ content = models.TextField()
+
+class Useflag(models.Model):
+ name = models.CharField(max_length=255, unique=True)
+
+class File(models.Model):
+ path = models.CharField(max_length=65535, unique=True)
+
+class FileType(models.Model):
+ name = models.CharField(max_length=20, unique=True)
+
+class PackageProperties_File(models.Model):
+ file = models.ForeignKey('File')
+ filetype = models.ForeignKey('FileType')
+ packageproperties = models.ForeignKey('PackageProperties')
+ hash = models.CharField(max_length=32,blank=True)
+ size = models.IntegerField(blank=True)