added material models and admin interface

v1-0-stable
Christian Merten 9 years ago
parent af614f9927
commit 95e8b9a409

@ -32,6 +32,7 @@ ALLOWED_HOSTS = []
INSTALLED_APPS = [ INSTALLED_APPS = [
'startpage.apps.StartpageConfig', 'startpage.apps.StartpageConfig',
'material.apps.MaterialConfig',
'django.contrib.admin', 'django.contrib.admin',
'django.contrib.auth', 'django.contrib.auth',
'django.contrib.contenttypes', 'django.contrib.contenttypes',

@ -0,0 +1,12 @@
from django.contrib import admin
from .models import MaterialPart
# Register your models here.
class MaterialAdmin(admin.ModelAdmin):
fields = ['name', 'buy_date']
list_display = ('name', 'buy_date', 'should_be_replaced')
admin.site.register(MaterialPart, MaterialAdmin)

@ -0,0 +1,5 @@
from django.apps import AppConfig
class MaterialConfig(AppConfig):
name = 'material'

@ -0,0 +1,24 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.2 on 2016-10-17 15:18
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='MaterialPart',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=30)),
('buy_date', models.DateTimeField(verbose_name='purchase date')),
],
),
]

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.2 on 2016-10-17 15:22
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('material', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='materialpart',
name='buy_date',
field=models.DateField(verbose_name='purchase date'),
),
]

@ -0,0 +1,37 @@
from datetime import date, datetime
from django.db import models
from django.utils import timezone
# maximum time in years of a material part until being replaced
MAX_TIME_MATERIAL = 5
# Create your models here.
class MaterialPart(models.Model):
name = models.CharField(max_length=30)
buy_date = models.DateField('purchase date')
# owner = models.ForeignKey(Leiter) to be added later when there are user
def __repr__(self):
return self.name
def should_be_replaced(self):
buy_time = timezone.make_aware(datetime.combine(self.buy_date,
datetime.min.time()))
return yearsago(MAX_TIME_MATERIAL) >= buy_time
should_be_replaced.admin_order_field = 'buy_date'
should_be_replaced.boolean = True
should_be_replaced.short_description = 'Should be replaced?'
def yearsago(years, from_date=None):
if from_date is None:
from_date = timezone.now()
try:
return from_date.replace(year=from_date.year - years)
except ValueError:
# 29.02 -> use 28.02
assert from_date.month == 2 and from_date.day == 29
return from_date.replace(month=2, day=28, year=from_date.year - years)

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

@ -0,0 +1,3 @@
from django.shortcuts import render
# Create your views here.
Loading…
Cancel
Save