summaryrefslogtreecommitdiff
path: root/server/materials/models.py
blob: 4ddac8cb5ec3ae2847a02369278e43992fc0a691 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
from django.db import models
from django.contrib import admin

from objects.models import *

class MaterialCategory(models.Model):
	name = models.CharField(max_length=100)
	# parent = models.ForeignKey('MaterialCategory')

	def __unicode__(self):
		return self.name

class MaterialProperty(models.Model):
	name = models.CharField(max_length=200)
	varname = models.SlugField()
	description = models.TextField(blank=True)
	# unit = models.ForeignKey(Units)

	def __unicode__(self):
		return self.name

class MaterialValue(models.Model):
	material = models.ForeignKey(u"Material")
	property = models.ForeignKey(MaterialProperty)
	value = models.FloatField()

	def __unicode__(self):
		return self.name

class Material(models.Model):
	name = models.CharField(max_length=500)

	description = models.TextField(blank=True)

	categories = models.ManyToManyField(MaterialCategory)
	properties = models.ManyToManyField(MaterialValue)
	
	phasediagram = models.FileField(upload_to="uploads/materials/phasediagrams/", blank=True)
	datasheet = models.FileField(upload_to="uploads/materials/datasheets/", blank=True)

	def __unicode__(self):
		return self.name
	

class Process(models.Model):
	name = models.CharField(max_length=200)
	description = models.TextField()
	inputmaterials = models.ManyToManyField(Material, related_name="%(class)s_inputmat")
	inputobjects = models.ManyToManyField(Object, related_name="%(class)s_inputobj")
	inputintangibles = models.ManyToManyField(Intangible, related_name="%(class)s_inputintang")
	outputmaterials = models.ManyToManyField(Material, related_name="%(class)s_outputmat")
	outputobjects = models.ManyToManyField(Object, related_name="%(class)s_outputobj")
	outputintangibles = models.ManyToManyField(Intangible, related_name="%(class)s_outputintang")
	
	def __unicode__(self):
		return self.name


#
#	Forms
#
class MaterialSearchForm(ModelForm):
	class Meta:
		model = Material



#
#	Registering tables with admin site
#
#
admin.site.register(Material)
admin.site.register(MaterialProperty)
admin.site.register(MaterialValue)
admin.site.register(MaterialCategory)
admin.site.register(Process)