This commit is contained in:
Bernhard Posselt 2016-06-05 21:45:14 +02:00
Родитель 118d63a80f
Коммит 39734e720e
3 изменённых файлов: 113 добавлений и 32 удалений

Просмотреть файл

@ -5,9 +5,9 @@ admin.site.register(App)
admin.site.register(AppRelease)
admin.site.register(Screenshot)
admin.site.register(Author)
admin.site.register(Command)
admin.site.register(ShellCommand)
admin.site.register(Category)
admin.site.register(Database)
admin.site.register(DatabaseDependency)
admin.site.register(PhpLibrary)
admin.site.register(LibraryDependency)
admin.site.register(PhpExtension)
admin.site.register(PhpExtensionDependency)

Просмотреть файл

@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.7 on 2016-06-05 19:33
# Generated by Django 1.9.7 on 2016-06-05 19:44
from __future__ import unicode_literals
from django.db import migrations, models
@ -28,6 +28,10 @@ class Migration(migrations.Migration):
('created', models.DateTimeField(auto_now_add=True)),
('last_modified', models.DateTimeField(auto_now=True)),
],
options={
'verbose_name': 'App',
'verbose_name_plural': 'Apps',
},
),
migrations.CreateModel(
name='AppRelease',
@ -43,6 +47,10 @@ class Migration(migrations.Migration):
('last_modified', models.DateTimeField(auto_now=True)),
('app', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.App')),
],
options={
'verbose_name': 'App Release',
'verbose_name_plural': 'App Releases',
},
),
migrations.CreateModel(
name='Author',
@ -52,6 +60,10 @@ class Migration(migrations.Migration):
('mail', models.EmailField(blank=True, max_length=256)),
('homepage', models.URLField(blank=True, max_length=256)),
],
options={
'verbose_name': 'Author',
'verbose_name_plural': 'Authors',
},
),
migrations.CreateModel(
name='Category',
@ -60,17 +72,10 @@ class Migration(migrations.Migration):
('name', models.CharField(help_text='Category name which will be presented to the user', max_length=128)),
],
options={
'verbose_name_plural': 'Categories',
'verbose_name': 'Category',
'verbose_name_plural': 'Categories',
},
),
migrations.CreateModel(
name='Command',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(help_text='Name of a required shell command, e.g. grep', max_length=128, unique=True)),
],
),
migrations.CreateModel(
name='Database',
fields=[
@ -78,8 +83,8 @@ class Migration(migrations.Migration):
('name', models.CharField(help_text='Database name which will be presented to the user', max_length=128)),
],
options={
'verbose_name_plural': 'Databases',
'verbose_name': 'Database',
'verbose_name_plural': 'Databases',
},
),
migrations.CreateModel(
@ -93,32 +98,51 @@ class Migration(migrations.Migration):
],
),
migrations.CreateModel(
name='LibraryDependency',
name='PhpExtension',
fields=[
('id', models.CharField(max_length=128, primary_key=True, serialize=False, unique=True)),
],
options={
'verbose_name': 'PHP Extension',
'verbose_name_plural': 'PHP Extensions',
},
),
migrations.CreateModel(
name='PhpExtensionDependency',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('version_min', models.CharField(max_length=32)),
('version_max', models.CharField(blank=True, max_length=32)),
('app_release', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.AppRelease')),
('php_extension', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.PhpExtension')),
],
),
migrations.CreateModel(
name='PhpLibrary',
fields=[
('id', models.CharField(max_length=128, primary_key=True, serialize=False, unique=True)),
],
options={
'verbose_name': 'PHP Extension Dependency',
'verbose_name_plural': 'PHP Extension Dependencies',
},
),
migrations.CreateModel(
name='Screenshot',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('image', models.URLField(max_length=256)),
('url', models.URLField(max_length=256)),
('app', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.App')),
],
options={
'verbose_name': 'Screenshot',
'verbose_name_plural': 'Screenshots',
},
),
migrations.AddField(
model_name='librarydependency',
name='library',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.PhpLibrary'),
migrations.CreateModel(
name='ShellCommand',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(help_text='Name of a required shell command, e.g. grep', max_length=128, unique=True)),
],
options={
'verbose_name': 'Shell Command',
'verbose_name_plural': 'Shell Commands',
},
),
migrations.AddField(
model_name='apprelease',
@ -128,7 +152,12 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='apprelease',
name='libs',
field=models.ManyToManyField(through='core.LibraryDependency', to='core.PhpLibrary'),
field=models.ManyToManyField(through='core.PhpExtensionDependency', to='core.PhpExtension'),
),
migrations.AddField(
model_name='apprelease',
name='shell_commands',
field=models.ManyToManyField(to='core.ShellCommand'),
),
migrations.AddField(
model_name='app',

Просмотреть файл

@ -19,14 +19,23 @@ class App(models.Model):
created = models.DateTimeField(auto_now_add=True)
last_modified = models.DateTimeField(auto_now=True)
class Meta:
verbose_name = _('App')
verbose_name_plural = _('Apps')
def __str__(self):
return self.name
class AppRelease(models.Model):
version = models.CharField(max_length=128)
app = models.ForeignKey('App', on_delete=models.CASCADE)
# dependencies
libs = models.ManyToManyField('PhpLibrary', through='LibraryDependency')
libs = models.ManyToManyField('PhpExtension',
through='PhpExtensionDependency')
databases = models.ManyToManyField('Database',
through='DatabaseDependency')
shell_commands = models.ManyToManyField('ShellCommand')
php_min = models.CharField(max_length=32)
php_max = models.CharField(max_length=32, blank=True)
platform_min = models.CharField(max_length=32)
@ -35,22 +44,50 @@ class AppRelease(models.Model):
created = models.DateTimeField(auto_now_add=True)
last_modified = models.DateTimeField(auto_now=True)
class Meta:
verbose_name = _('App Release')
verbose_name_plural = _('App Releases')
def __str__(self):
return '%s %s' % (self.app, self.version)
class Screenshot(models.Model):
image = models.URLField(max_length=256)
url = models.URLField(max_length=256)
app = models.ForeignKey('App', on_delete=models.CASCADE)
class Meta:
verbose_name = _('Screenshot')
verbose_name_plural = _('Screenshots')
def __str__(self):
return self.url
class Author(models.Model):
name = models.CharField(max_length=256)
mail = models.EmailField(max_length=256, blank=True)
homepage = models.URLField(max_length=256, blank=True)
class Meta:
verbose_name = _('Author')
verbose_name_plural = _('Authors')
class Command(models.Model):
def __str__(self):
return self.name
class ShellCommand(models.Model):
name = models.CharField(max_length=128, unique=True, help_text=_(
'Name of a required shell command, e.g. grep'))
class Meta:
verbose_name = _('Shell Command')
verbose_name_plural = _('Shell Commands')
def __str__(self):
return self.name
class Category(models.Model):
id = models.CharField(max_length=128, unique=True, primary_key=True,
@ -93,12 +130,27 @@ class DatabaseDependency(models.Model):
version_max = models.CharField(max_length=32, blank=True)
class PhpLibrary(models.Model):
class PhpExtension(models.Model):
id = models.CharField(max_length=128, unique=True, primary_key=True)
class Meta:
verbose_name = _('PHP Extension')
verbose_name_plural = _('PHP Extensions')
class LibraryDependency(models.Model):
def __str__(self):
return self.id
class PhpExtensionDependency(models.Model):
app_release = models.ForeignKey('AppRelease', on_delete=models.CASCADE)
library = models.ForeignKey('PhpLibrary', on_delete=models.CASCADE)
php_extension = models.ForeignKey('PhpExtension', on_delete=models.CASCADE)
version_min = models.CharField(max_length=32)
version_max = models.CharField(max_length=32, blank=True)
class Meta:
verbose_name = _('PHP Extension Dependency')
verbose_name_plural = _('PHP Extension Dependencies')
def __str__(self):
return '%s: %s >=%s, <=%s' % (self.app_release.app, self.php_extension,
self.version_min, self.version_max)