Source code file content
subversion / mof / models.py
Size: 4945 bytes, 1 line
from django.db import models
class Element(models.Model):
owned_comments = models.ManyToManyField('Comment', null=True, blank=True)
def __unicode__(self):
return 'element:%s' % unicode(self.pk)
'''
class Meta:
abstract = True
'''
class NamedElement(Element):
name = models.CharField(max_length=100)
def __unicode__(self):
return self.name
'''
class Meta:
abstract = True
'''
class Comment(Element):
body = models.TextField()
annotated_elements = models.ManyToManyField(NamedElement, null=True, blank=True)
def __unicode__(self):
return self.body[:50]
class Package(NamedElement):
nesting_package = models.ForeignKey('self', null=True, blank=True, related_name='nested_packages')
def __unicode__(self):
return self.name
class Type(NamedElement):
package = models.ForeignKey(Package, null=True, blank=True, related_name='owned_types')
def __unicode__(self):
return self.name
def is_instance(self, object):
raise Exception('not yet implemented')
'''
class Meta:
abstract = True
'''
class TypedElement(NamedElement):
type = models.ForeignKey(Type, null=True, blank=True)
def __unicode__(self):
return self.name
class Meta:
abstract = True
class DataType(Type):
def __unicode__(self):
return self.name
class PrimitiveType(DataType):
def __unicode__(self):
return self.name
class Enumeration(DataType):
def __unicode__(self):
return self.name
class EnumerationLiteral(NamedElement):
enumeration = models.ForeignKey(Enumeration, null=True, blank=True, related_name='owned_literals')
def __unicode__(self):
return self.name
class ClassMOF(Type):
super_class = models.ForeignKey('self', null=True, blank=True)
def is_abstract(self):
raise Exception('not yet implemented')
class Meta:
verbose_name = 'Class'
verbose_name_plural = 'Classes'
class MultiplicityElement(models.Model):
lower = models.IntegerField(default=1)
upper = models.IntegerField(default=1)
def is_ordered(self):
return False
def is_unique(self):
return True
class Meta:
abstract = True
class Association(Element):
end_type = models.ManyToManyField(Type)
def is_derived(self):
return False
class Property(TypedElement, MultiplicityElement):
default = models.CharField(max_length=100, null=True, blank=True)
opposite = models.OneToOneField('self', null=True, blank=True, related_name='opposite_alt')
class_mof = models.ForeignKey(ClassMOF, verbose_name='class', null=True, blank=True, related_name='owned_attributes')
order = models.IntegerField(default=0)
member_ends_association = models.ForeignKey(Association, null=True, blank=True, related_name='member_ends')
owned_ends_association = models.ForeignKey(Association, null=True, blank=True, related_name='owned_ends')
navigable_owned_ends_association = models.ForeignKey(Association, null=True, blank=True, related_name='navigable_owned_ends')
def is_read_only(self):
return False
def is_composite(self):
return False
def is_derived(self):
return False
def is_id(self):
return False
def __unicode__(self):
return self.name
class Meta:
verbose_name_plural = 'Properties'
class Operation(TypedElement, MultiplicityElement):
order = models.IntegerField(default=0)
class_mof = models.ForeignKey(ClassMOF, null=True, blank=True, related_name='owned_operations')
raised_exceptions = models.ManyToManyField(Type, null=True, blank=True, related_name='operations')
def __unicode__(self):
return self.name
class Parameter(TypedElement, MultiplicityElement):
order = models.IntegerField(default=0)
operation = models.ForeignKey(Operation, related_name='owned_parameters')
def __unicode__(self):
return self.name
class Tag(Element):
elements = models.ManyToManyField(Element, null=True, blank=True,
related_name='tags')
def __unicode__(self):
return self.name
class Link(models.Model):
first_element = models.ForeignKey(Element, related_name='first_links')
second_element = models.ForeignKey(Element, related_name='seconds_links')
association = models.OneToOneField(Association, related_name='link')
class ElementManager(models.Manager):
pass
class LinkManager(models.Manager):
pass
class Factory():
def create_element(self):
return None
def create_link(self):
return None





