Skip to content

Commit

Permalink
#4 mounting class wip
Browse files Browse the repository at this point in the history
  • Loading branch information
chs8691 committed Nov 29, 2019
1 parent fb7fe9a commit 7ce1a94
Show file tree
Hide file tree
Showing 1,233 changed files with 443 additions and 239,003 deletions.
Binary file modified db.sqlite3
Binary file not shown.
2 changes: 1 addition & 1 deletion design/model.drawio
Original file line number Diff line number Diff line change
@@ -1 +1 @@
<mxfile host="Electron" modified="2019-11-25T20:51:55.959Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/12.2.2 Chrome/78.0.3904.94 Electron/7.1.0 Safari/537.36" etag="37Lxrrpys0sd06RsWiGR" version="12.2.2" type="device" pages="1"><diagram id="4ATyxtASWGsD7okkcSDV" name="Seite-1">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</diagram></mxfile>
<mxfile host="Electron" modified="2019-11-29T00:28:38.560Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/12.2.2 Chrome/78.0.3904.94 Electron/7.1.0 Safari/537.36" etag="3aCQOQgYCiBAgm2DXe4j" version="12.2.2" type="device" pages="1"><diagram id="4ATyxtASWGsD7okkcSDV" name="Seite-1">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</diagram></mxfile>
87 changes: 87 additions & 0 deletions model-neu.v1.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
from django.db import models


class BicycleType(models.Model):
name = models.CharField(max_length=100)

component = models.ManyToManyField

def __str__(self):
return str(self.name)


# A bicycle has Component which are maintained
class Bicycle(models.Model):
name = models.CharField(max_length=100)

bicycle_type = models.ForeignKey(BicycleType, on_delete=models.CASCADE)

def __str__(self):
return str(self.name)


# A bicycle is structured into components. For instance front wheel, gear etc.
class Component(models.Model):
name = models.CharField(max_length=100)

def __str__(self):
return str(self.name)


# Parts of a component. For instance front wheel: tube, tire, left spokes.
# This is a simplified model of the real world. There is no position within a part, e.g. spokes(1)
class Part(models.Model):
name = models.CharField(max_length=100)

component = models.ForeignKey(Component, on_delete=models.CASCADE)

def display_long_name(self):
return "{}/{}".format(self.component.name, self.name)

def __str__(self):
return "{}/{}".format(str(self.component.name), str(self.name))

# Point in time of a bycicle to record its data


class Record(models.Model):
date = models.DateField()
km = models.DecimalField(max_digits=10, decimal_places=0, )

bicycle = models.ForeignKey(Bicycle, on_delete=models.CASCADE)

def __str__(self):
return "{} {}".format(str(self.date), str(self.bicycle.name))


# A material is a physically part of a bicycle. It can be installed at removed, but it must not be used, e.g. when a
# new tube is bought, it has yet no relation to an bicyle.
class Material(models.Model):
name = models.CharField(max_length=100)

manufacture = models.CharField(max_length=100)
size = models.CharField(max_length=100, blank=True, null=True)
price = models.DecimalField(max_digits=10, decimal_places=2, blank=True, null=True)
weight = models.DecimalField(max_digits=10, decimal_places=3, name="Weight [g]", blank=True, null=True)

def __str__(self):
return str(self.name)


class Mounting(models.Model):

material = models.ForeignKey(Material, related_name="material", on_delete=models.CASCADE, blank=True,
null=True)

mount_record = models.ForeignKey(Record, related_name="mount_record", on_delete=models.CASCADE, blank=True,
null=True)

part = models.ForeignKey(Part, on_delete=models.CASCADE, blank=True, null=True)

# Optional
dismount_record = models.ForeignKey(Record, related_name="dismount_record", on_delete=models.CASCADE, blank=True,
null=True)

def __str__(self):
return "{} {}".format(str(self.material.name), str(self.mount_record.date))

35 changes: 26 additions & 9 deletions myequis/admin.py
Original file line number Diff line number Diff line change
@@ -1,37 +1,54 @@
from django.contrib import admin

from .models import Component
from .models import Component, Mounting, Species
from .models import Part
from .models import Bicycle
from .models import Record
from .models import Material
#from .models import Mounting


class ComponentInline(admin.TabularInline):
model = Component
extra = 1
ordering = ["name"]


class RecordInline(admin.TabularInline):
model = Record
extra = 1
ordering = ["-date"]


class BicycleAdmin(admin.ModelAdmin):
inlines = [RecordInline]
ordering = ["name"]

admin.site.register(Bicycle, BicycleAdmin)

class SpeciesAdmin(admin.ModelAdmin):
inlines = [ComponentInline]
ordering = ["name"]


class PartInline(admin.TabularInline):
model = Part
extra = 3



class ComponentAdmin(admin.ModelAdmin):
inlines = [PartInline]
ordering = ["name"]

admin.site.register(Component, ComponentAdmin)


class MaterialAdmin(admin.ModelAdmin):
list_display =('name', 'manufactor', 'size', 'mounted_in_bicycle')

admin.site.register(Material, MaterialAdmin)
list_display = ('name', 'manufacture', 'size',)


class MountingAdmin(admin.ModelAdmin):
ordering = ["mount_record__date"]


admin.site.register(Bicycle, BicycleAdmin)
admin.site.register(Species, SpeciesAdmin)
admin.site.register(Component, ComponentAdmin)
admin.site.register(Material, MaterialAdmin)
admin.site.register(Mounting, MountingAdmin)
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Generated by Django 2.2.5 on 2019-09-28 22:28
# Generated by Django 2.2.6 on 2019-11-27 07:01

from django.db import migrations

Expand All @@ -10,6 +10,11 @@ class Migration(migrations.Migration):
]

operations = [
migrations.RenameField(
model_name='material',
old_name='manufactor',
new_name='manufacture',
),
migrations.RenameField(
model_name='record',
old_name='KM',
Expand Down
20 changes: 20 additions & 0 deletions myequis/migrations/0018_bicycletype.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Generated by Django 2.2.6 on 2019-11-27 07:02

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('myequis', '0017_auto_20191127_0701'),
]

operations = [
migrations.CreateModel(
name='BicycleType',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=100)),
],
),
]
20 changes: 20 additions & 0 deletions myequis/migrations/0019_bicycle_bicycle_type.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Generated by Django 2.2.6 on 2019-11-27 07:17

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

dependencies = [
('myequis', '0018_bicycletype'),
]

operations = [
migrations.AddField(
model_name='bicycle',
name='bicycle_type',
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='myequis.BicycleType'),
preserve_default=False,
),
]
18 changes: 18 additions & 0 deletions myequis/migrations/0020_bicycletype_component.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 2.2.6 on 2019-11-27 07:24

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('myequis', '0019_bicycle_bicycle_type'),
]

operations = [
migrations.AddField(
model_name='bicycletype',
name='component',
field=models.ManyToManyField(to='myequis.Component'),
),
]
36 changes: 36 additions & 0 deletions myequis/migrations/0021_auto_20191127_1651.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Generated by Django 2.2.6 on 2019-11-27 16:51

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

dependencies = [
('myequis', '0020_bicycletype_component'),
]

operations = [
migrations.RemoveField(
model_name='material',
name='dismount_record',
),
migrations.RemoveField(
model_name='material',
name='mount_record',
),
migrations.RemoveField(
model_name='material',
name='part',
),
migrations.CreateModel(
name='Mounting',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('dismount_record', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='dismount_record', to='myequis.Record')),
('material', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='material', to='myequis.Material')),
('mount_record', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='mount_record', to='myequis.Record')),
('part', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='myequis.Part')),
],
),
]
24 changes: 24 additions & 0 deletions myequis/migrations/0022_auto_20191127_1702.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Generated by Django 2.2.6 on 2019-11-27 17:02

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

dependencies = [
('myequis', '0021_auto_20191127_1651'),
]

operations = [
migrations.RemoveField(
model_name='bicycletype',
name='component',
),
migrations.AddField(
model_name='component',
name='bicycle_type',
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='myequis.BicycleType'),
preserve_default=False,
),
]
18 changes: 18 additions & 0 deletions myequis/migrations/0023_auto_20191127_1714.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 2.2.6 on 2019-11-27 17:14

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
('myequis', '0022_auto_20191127_1702'),
]

operations = [
migrations.RenameField(
model_name='bicycle',
old_name='bicycle_type',
new_name='type',
),
]
18 changes: 18 additions & 0 deletions myequis/migrations/0024_auto_20191127_1717.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 2.2.6 on 2019-11-27 17:17

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
('myequis', '0023_auto_20191127_1714'),
]

operations = [
migrations.RenameField(
model_name='component',
old_name='bicycle_type',
new_name='type',
),
]
17 changes: 17 additions & 0 deletions myequis/migrations/0025_auto_20191127_1722.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Generated by Django 2.2.6 on 2019-11-27 17:22

from django.db import migrations


class Migration(migrations.Migration):
atomic = False
dependencies = [
('myequis', '0024_auto_20191127_1717'),
]

operations = [
migrations.RenameModel(
old_name='BicycleType',
new_name='Species',
),
]
18 changes: 18 additions & 0 deletions myequis/migrations/0026_auto_20191127_1723.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 2.2.6 on 2019-11-27 17:23

from django.db import migrations


class Migration(migrations.Migration):

atomic = False
dependencies = [
('myequis', '0025_auto_20191127_1722'),
]

operations = [
migrations.RenameModel(
old_name='Species',
new_name='BicycleType',
),
]
17 changes: 17 additions & 0 deletions myequis/migrations/0027_auto_20191127_1727.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Generated by Django 2.2.6 on 2019-11-27 17:27

from django.db import migrations


class Migration(migrations.Migration):
atomic = False
dependencies = [
('myequis', '0026_auto_20191127_1723'),
]

operations = [
migrations.RenameModel(
old_name='BicycleType',
new_name='Species',
),
]
Loading

0 comments on commit 7ce1a94

Please sign in to comment.