From 0ea8ff7c34af66f2c8028ea51950f9415537c4ee Mon Sep 17 00:00:00 2001 From: Kabir Date: Fri, 11 May 2012 13:22:27 +0530 Subject: Code modified to enable reversion disable feature --- gstudio/models.py | 334 +++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 256 insertions(+), 78 deletions(-) (limited to 'gstudio/models.py') diff --git a/gstudio/models.py b/gstudio/models.py index 65262cc4..4e047fcb 100644 --- a/gstudio/models.py +++ b/gstudio/models.py @@ -93,6 +93,7 @@ from gstudio.settings import NODETYPE_TEMPLATES from gstudio.settings import NODETYPE_BASE_MODEL from gstudio.settings import MARKDOWN_EXTENSIONS from gstudio.settings import AUTO_CLOSE_COMMENTS_AFTER +from gstudio.settings import GSTUDIO_VERSIONING from gstudio.managers import nodetypes_published from gstudio.managers import NodetypePublishedManager from gstudio.managers import NodePublishedManager @@ -103,11 +104,13 @@ from gstudio.url_shortener import get_url_shortener from gstudio.signals import ping_directories_handler from gstudio.signals import ping_external_urls_handler import json -import reversion +if GSTUDIO_VERSIONING: + import reversion from reversion.models import Version from django.core import serializers from reversion.models import * + NODETYPE_CHOICES = ( ('ND', 'Nodes'), ( 'OB' ,'Objects'), @@ -210,6 +213,9 @@ class NID(models.Model): slug = models.SlugField(help_text=_('used for publication'), unique_for_date='creation_date', max_length=255) + nodemodel = models.CharField(_('nodemodel'),max_length=255) + + def get_serialized_dict(self): @@ -241,22 +247,25 @@ class NID(models.Model): @property def ref(self): - """ - Returns the object reference the id belongs to. - """ - try: - """ - ALGO: get object id, go to version model, return for the given id. - """ - - # Retrieving only the relevant tupleset for the versioned objects - vrs = Version.objects.filter(type=0 , object_id=self.id) - # Returned value is a list, so splice it. - vrs = vrs[0] - except: - return None + return eval(self.nodemodel).objects.get(id=self.id) - return vrs.object + # """ + # Returns the object reference the id belongs to. + # """ + # try: + # """ + # ALGO: get object id, go to version model, return for the given id. + # """ + + # # Retrieving only the relevant tupleset for the versioned objects + # # vrs = Version.objects.filter(type=0 , object_id=self.id) + # # Returned value is a list, so splice it. + # vrs = vrs[0] + # except: + # return None + + # return vrs.object + @property def reftype(self): @@ -266,9 +275,11 @@ class NID(models.Model): try: """ ALGO: simple wrapper for the __class__.__name__ so that it can be used in templates + """ - obj = self.ref - return obj.__class__.__name__ + return self.__class__.__name__ + # obj = self.ref + # return obj.__class__.__name__ except: return None @@ -317,6 +328,8 @@ class Node(NID): sites = models.ManyToManyField(Site, verbose_name=_('sites publication'), related_name='nodetypes') + nbhood = models.TextField(help_text="The neighbourhood of the model.") + published = NodePublishedManager() def __unicode__(self): return self.title @@ -324,11 +337,16 @@ class Node(NID): class Meta: abstract=False - @reversion.create_revision() + def save(self, *args, **kwargs): + if GSTUDIO_VERSIONING: + with reversion.create_revision(): + super(Node, self).save(*args, **kwargs) # Call the "real" save() method. super(Node, self).save(*args, **kwargs) # Call the "real" save() method. + + class Edge(NID): @@ -337,9 +355,11 @@ class Edge(NID): class Meta: abstract=False - @reversion.create_revision() - # Save for edge def save(self, *args, **kwargs): + if GSTUDIO_VERSIONING: + with reversion.create_revision(): + super(Edge, self).save(*args, **kwargs) # Call the "real" save() method. + super(Edge, self).save(*args, **kwargs) # Call the "real" save() method. @@ -524,8 +544,12 @@ class Metatype(Node): verbose_name_plural = _('metatypes') # Save for metatype - @reversion.create_revision() + def save(self, *args, **kwargs): + if GSTUDIO_VERSIONING: + with reversion.create_revision(): + super(Metatype, self).save(*args, **kwargs) # Call the "real" save() method. + super(Metatype, self).save(*args, **kwargs) # Call the "real" save() method. @@ -1159,8 +1183,10 @@ class Nodetype(Node): ('can_change_author', 'Can change author'), ) # Save for nodetype - @reversion.create_revision() def save(self, *args, **kwargs): + if GSTUDIO_VERSIONING: + with reversion.create_revision(): + super(Nodetype, self).save(*args, **kwargs) # Call the "real" save() method. super(Nodetype, self).save(*args, **kwargs) # Call the "real" save() method. @@ -1343,8 +1369,13 @@ class Objecttype(Nodetype): ('can_change_author', 'Can change author'), ) # Save for Objecttype - @reversion.create_revision() + # @reversion.create_revision() def save(self, *args, **kwargs): + self.nodemodel = self.__class__.__name__ + if GSTUDIO_VERSIONING: + with reversion.create_revision(): + super(Objecttype, self).save(*args, **kwargs) # Call the "real" save() method. + super(Objecttype, self).save(*args, **kwargs) # Call the "real" save() method. @@ -1390,8 +1421,14 @@ class Relationtype(Nodetype): ('can_change_author', 'Can change author'), ) # Save for Relationtype - @reversion.create_revision() + # @reversion.create_revision() def save(self, *args, **kwargs): + self.nodemodel = self.__class__.__name__ + if GSTUDIO_VERSIONING: + with reversion.create_revision(): + self.nodemodel = self.__class__.__name__ + + super(Relationtype, self).save(*args, **kwargs) # Call the "real" save() method. @@ -1439,8 +1476,13 @@ class Attributetype(Nodetype): ('can_change_author', 'Can change author'), ) # Save for Attributetype - @reversion.create_revision() + def save(self, *args, **kwargs): + self.nodemodel = self.__class__.__name__ + + if GSTUDIO_VERSIONING: + with reversion.create_revision(): + super(Attributetype, self).save(*args, **kwargs) # Call the "real" save() method. super(Attributetype, self).save(*args, **kwargs) # Call the "real" save() method. @@ -1537,8 +1579,12 @@ class Relation(Edge): # Save for Relation - @reversion.create_revision() + def save(self, *args, **kwargs): + self.nodemodel = self.__class__.__name__ + if GSTUDIO_VERSIONING: + with reversion.create_revision(): + super(Relation, self).save(*args, **kwargs) # Call the "real" save() method. super(Relation, self).save(*args, **kwargs) # Call the "real" save() method. @@ -1619,8 +1665,13 @@ class Attribute(Edge): return each.get_members # Save for Attribute - @reversion.create_revision() + def save(self, *args, **kwargs): + self.nodemodel = self.__class__.__name__ + if GSTUDIO_VERSIONING: + with reversion.create_revision(): + super(Attribute, self).save(*args, **kwargs) # Call the "real" save() method. + super(Attribute, self).save(*args, **kwargs) # Call the "real" save() method. @@ -1634,8 +1685,13 @@ class AttributeCharField(Attribute): return self.title - @reversion.create_revision() + # @reversion.create_revision() def save(self, *args, **kwargs): + self.nodemodel = self.__class__.__name__ + if GSTUDIO_VERSIONING: + with reversion.create_revision(): + super(AttributeCharField, self).save(*args, **kwargs) # Call the "real" save() method. + super(AttributeCharField, self).save(*args, **kwargs) # Call the "real" save() method. @@ -1646,8 +1702,12 @@ class AttributeTextField(Attribute): def __unicode__(self): return self.title - @reversion.create_revision() + # @reversion.create_revision() def save(self, *args, **kwargs): + self.nodemodel = self.__class__.__name__ + if GSTUDIO_VERSIONING: + with reversion.create_revision(): + super(AttributeTextField, self).save(*args, **kwargs) # Call the "real" save() method. super(AttributeTextField, self).save(*args, **kwargs) # Call the "real" save() method. @@ -1657,10 +1717,15 @@ class AttributeIntegerField(Attribute): def __unicode__(self): return self.title - @reversion.create_revision() + # @reversion.create_revision() def save(self, *args, **kwargs): - super(AttributeIntegerField, self).save(*args, **kwargs) # Call the "real" save() method. + self.nodemodel = self.__class__.__name__ + if GSTUDIO_VERSIONING: + with reversion.create_revision(): + super(AttributeIntegerField, self).save(*args, **kwargs) # Call the "real" save() method. + super(AttributeIntegerField, self).save(*args, **kwargs) # Call the "real" save() method. + class AttributeCommaSeparatedIntegerField(Attribute): @@ -1670,8 +1735,12 @@ class AttributeCommaSeparatedIntegerField(Attribute): def __unicode__(self): return self.title - @reversion.create_revision() + # @reversion.create_revision() def save(self, *args, **kwargs): + self.nodemodel = self.__class__.__name__ + if GSTUDIO_VERSIONING: + with reversion.create_revision(): + super(AttributeCommaSeparatedIntegerField, self).save(*args, **kwargs) # Call the "real" save() method. super(AttributeCommaSeparatedIntegerField, self).save(*args, **kwargs) # Call the "real" save() method. class AttributeBigIntegerField(Attribute): @@ -1688,8 +1757,12 @@ class AttributePositiveIntegerField(Attribute): def __unicode__(self): return self.title - @reversion.create_revision() + # @reversion.create_revision() def save(self, *args, **kwargs): + self.nodemodel = self.__class__.__name__ + if GSTUDIO_VERSIONING: + with reversion.create_revision(): + super(AttributePositiveIntegerField, self).save(*args, **kwargs) # Call the "real" save() method. super(AttributePositiveIntegerField, self).save(*args, **kwargs) # Call the "real" save() method. @@ -1700,6 +1773,12 @@ class AttributeDecimalField(Attribute): def __unicode__(self): return self.title def save(self, *args, **kwargs): + self.nodemodel = self.__class__.__name__ + if GSTUDIO_VERSIONING: + with reversion.create_revision(): + super(AttributeDecimalField, self).save(*args, **kwargs) # Call the "real" save() method. + + super(AttributeDecimalField, self).save(*args, **kwargs) # Call the "real" save() method. class AttributeFloatField(Attribute): @@ -1709,8 +1788,13 @@ class AttributeFloatField(Attribute): def __unicode__(self): return self.title - @reversion.create_revision() + # @reversion.create_revision() def save(self, *args, **kwargs): + self.nodemodel = self.__class__.__name__ + if GSTUDIO_VERSIONING: + with reversion.create_revision(): + super(AttributeFloatField, self).save(*args, **kwargs) # Call the "real" save() method. + super(AttributeFloatField, self).save(*args, **kwargs) # Call the "real" save() method. @@ -1721,6 +1805,11 @@ class AttributeBooleanField(Attribute): def __unicode__(self): return self.title def save(self, *args, **kwargs): + self.nodemodel = self.__class__.__name__ + if GSTUDIO_VERSIONING: + with reversion.create_revision(): + super(AttributeBooleanField, self).save(*args, **kwargs) # Call the "real" save() method. + super(AttributeBooleanField, self).save(*args, **kwargs) # Call the "real" save() method. @@ -1731,8 +1820,12 @@ class AttributeNullBooleanField(Attribute): def __unicode__(self): return self.title - @reversion.create_revision() + def save(self, *args, **kwargs): + self.nodemodel = self.__class__.__name__ + if GSTUDIO_VERSIONING: + with reversion.create_revision(): + super(AttributeNullBooleanField, self).save(*args, **kwargs) # Call the "real" save() method. super(AttributeNullBooleanField, self).save(*args, **kwargs) # Call the "real" save() method. @@ -1743,8 +1836,12 @@ class AttributeDateField(Attribute): def __unicode__(self): return self.title - @reversion.create_revision() + def save(self, *args, **kwargs): + if GSTUDIO_VERSIONING: + with reversion.create_revision(): + super(AttributeDateField, self).save(*args, **kwargs) # Call the "real" save() method. + super(AttributeDateField, self).save(*args, **kwargs) # Call the "real" save() method. @@ -1755,8 +1852,13 @@ class AttributeDateTimeField(Attribute): def __unicode__(self): return self.title - @reversion.create_revision() + # @reversion.create_revision() def save(self, *args, **kwargs): + self.nodemodel = self.__class__.__name__ + if GSTUDIO_VERSIONING: + with reversion.create_revision(): + super(AttributeDateTimeField, self).save(*args, **kwargs) # Call the "real" save() method. + super(AttributeDateTimeField, self).save(*args, **kwargs) # Call the "real" save() method. @@ -1767,8 +1869,13 @@ class AttributeTimeField(Attribute): def __unicode__(self): return self.title - @reversion.create_revision() + # @reversion.create_revision() def save(self, *args, **kwargs): + self.nodemodel = self.__class__.__name__ + if GSTUDIO_VERSIONING: + with reversion.create_revision(): + super(AttributeTimeField, self).save(*args, **kwargs) # Call the "real" save() method. + super(AttributeTimeField, self).save(*args, **kwargs) # Call the "real" save() method. @@ -1779,8 +1886,12 @@ class AttributeEmailField(Attribute): def __unicode__(self): return self.title - @reversion.create_revision() + # @reversion.create_revision() def save(self, *args, **kwargs): + if GSTUDIO_VERSIONING: + with reversion.create_revision(): + super(AttributeEmailField, self).save(*args, **kwargs) # Call the "real" save() method. + super(AttributeEmailField, self).save(*args, **kwargs) # Call the "real" save() method. @@ -1791,8 +1902,13 @@ class AttributeFileField(Attribute): def __unicode__(self): return self.title - @reversion.create_revision() + # @reversion.create_revision() def save(self, *args, **kwargs): + self.nodemodel = self.__class__.__name__ + if GSTUDIO_VERSIONING: + with reversion.create_revision(): + super(AttributeFileField, self).save(*args, **kwargs) # Call the "real" save() method. + super(AttributeFileField, self).save(*args, **kwargs) # Call the "real" save() method. @@ -1803,8 +1919,13 @@ class AttributeFilePathField(Attribute): def __unicode__(self): return self.title - @reversion.create_revision() + # @reversion.create_revision() def save(self, *args, **kwargs): + self.nodemodel = self.__class__.__name__ + if GSTUDIO_VERSIONING: + with reversion.create_revision(): + super(AttributeFilePathField, self).save(*args, **kwargs) # Call the "real" save() method. + super(AttributeFilePathField, self).save(*args, **kwargs) # Call the "real" save() method. @@ -1815,8 +1936,9 @@ class AttributeImageField(Attribute): def __unicode__(self): return self.title - @reversion.create_revision() + # @reversion.create_revision() def save(self, *args, **kwargs): + self.nodemodel = self.__class__.__name__ super(AttributeImageField, self).save(*args, **kwargs) # Call the "real" save() method. @@ -1827,8 +1949,13 @@ class AttributeURLField(Attribute): def __unicode__(self): return self.title - @reversion.create_revision() + # @reversion.create_revision() def save(self, *args, **kwargs): + self.nodemodel = self.__class__.__name__ + if GSTUDIO_VERSIONING: + with reversion.create_revision(): + super(AttributeURLField, self).save(*args, **kwargs) # Call the "real" save() method. + super(AttributeURLField, self).save(*args, **kwargs) # Call the "real" save() method. @@ -1839,8 +1966,13 @@ class AttributeIPAddressField(Attribute): def __unicode__(self): return self.title - @reversion.create_revision() + # @reversion.create_revision() def save(self, *args, **kwargs): + self.nodemodel = self.__class__.__name__ + if GSTUDIO_VERSIONING: + with reversion.create_revision(): + super(AttributeIPAddressField, self).save(*args, **kwargs) # Call the "real" save() method. + super(AttributeIPAddressField, self).save(*args, **kwargs) # Call the "real" save() method. @@ -1867,8 +1999,13 @@ class Processtype(Nodetype): verbose_name_plural = _('process types') permissions = (('can_view_all', 'Can view all'), ('can_change_author', 'Can change author'), ) - @reversion.create_revision() + # @reversion.create_revision() def save(self, *args, **kwargs): + self.nodemodel = self.__class__.__name__ + if GSTUDIO_VERSIONING: + with reversion.create_revision(): + super(Processtype, self).save(*args, **kwargs) # Call the "real" save() method. + super(Processtype, self).save(*args, **kwargs) # Call the "real" save() method. @@ -1903,8 +2040,13 @@ class Systemtype(Nodetype): permissions = (('can_view_all', 'Can view all'), ('can_change_author', 'Can change author'), ) - @reversion.create_revision() + # @reversion.create_revision() def save(self, *args, **kwargs): + self.nodemodel = self.__class__.__name__ + if GSTUDIO_VERSIONING: + with reversion.create_revision(): + super(Systemtype, self).save(*args, **kwargs) # Call the "real" save() method. + super(Systemtype, self).save(*args, **kwargs) # Call the "real" save() method. @@ -1932,6 +2074,7 @@ class AttributeSpecification(Node): def __unicode__(self): + self.nodemodel = self.__class__.__name__ return self.composed_subject @@ -1940,8 +2083,13 @@ class AttributeSpecification(Node): permissions = (('can_view_all', 'Can view all'), ('can_change_author', 'Can change author'), ) - @reversion.create_revision() + # @reversion.create_revision() def save(self, *args, **kwargs): + self.nodemodel = self.__class__.__name__ + if GSTUDIO_VERSIONING: + with reversion.create_revision(): + super(AttributeSpecification, self).save(*args, **kwargs) # Call the "real" save() method. + super(AttributeSpecification, self).save(*args, **kwargs) # Call the "real" save() method. @@ -1975,8 +2123,13 @@ class RelationSpecification(Node): permissions = (('can_view_all', 'Can view all'), ('can_change_author', 'Can change author'), ) - @reversion.create_revision() + # @reversion.create_revision() def save(self, *args, **kwargs): + self.nodemodel = self.__class__.__name__ + if GSTUDIO_VERSIONING: + with reversion.create_revision(): + super(RelationSpecification, self).save(*args, **kwargs) # Call the "real" save() method. + super(RelationSpecification, self).save(*args, **kwargs) # Call the "real" save() method. @@ -2011,8 +2164,13 @@ class NodeSpecification(Node): permissions = (('can_view_all', 'Can view all'), ('can_change_author', 'Can change author'), ) - @reversion.create_revision() + # @reversion.create_revision() def save(self, *args, **kwargs): + self.nodemodel = self.__class__.__name__ + if GSTUDIO_VERSIONING: + with reversion.create_revision(): + super(NodeSpecification, self).save(*args, **kwargs) # Call the "real" save() method. + super(NodeSpecification, self).save(*args, **kwargs) # Call the "real" save() method. @@ -2044,8 +2202,13 @@ class Expression(Node): permissions = (('can_view_all', 'Can view all'), ('can_change_author', 'Can change author'), ) - @reversion.create_revision() + # @reversion.create_revision() def save(self, *args, **kwargs): + self.nodemodel = self.__class__.__name__ + if GSTUDIO_VERSIONING: + with reversion.create_revision(): + super(Expression, self).save(*args, **kwargs) # Call the "real" save() method. + super(Expression, self).save(*args, **kwargs) # Call the "real" save() method. @@ -2060,8 +2223,13 @@ class Union(Node): def __unicode__(self): return self.title - @reversion.create_revision() + # @reversion.create_revision() def save(self, *args, **kwargs): + self.nodemodel = self.__class__.__name__ + if GSTUDIO_VERSIONING: + with reversion.create_revision(): + super(Union, self).save(*args, **kwargs) # Call the "real" save() method. + super(Union, self).save(*args, **kwargs) # Call the "real" save() method. @@ -2076,8 +2244,13 @@ class Complement(Node): def __unicode__(self): return self.title - @reversion.create_revision() + # @reversion.create_revision() def save(self, *args, **kwargs): + self.nodemodel = self.__class__.__name__ + if GSTUDIO_VERSIONING: + with reversion.create_revision(): + super(Complement, self).save(*args, **kwargs) # Call the "real" save() method. + super(Complement, self).save(*args, **kwargs) # Call the "real" save() method. @@ -2090,48 +2263,53 @@ class Intersection(Node): def __unicode__(self): return self.title - @reversion.create_revision() + # @reversion.create_revision() def save(self, *args, **kwargs): + self.nodemodel = self.__class__.__name__ + if GSTUDIO_VERSIONING: + with reversion.create_revision(): + super(Intersection, self).save(*args, **kwargs) # Call the "real" save() method. + super(Intersection, self).save(*args, **kwargs) # Call the "real" save() method. +if GSTUDIO_VERSIONING == True: + reversion.register(NID) -reversion.register(NID) - -if not reversion.is_registered(Systemtype): - reversion.register(Systemtype) + if not reversion.is_registered(Systemtype): + reversion.register(Systemtype) -if not reversion.is_registered(Objecttype): - reversion.register(Objecttype , follow=["nodetype_ptr"]) + if not reversion.is_registered(Objecttype): + reversion.register(Objecttype , follow=["nodetype_ptr"]) -if not reversion.is_registered(Node): - reversion.register(Node , follow=["nid_ptr"]) + if not reversion.is_registered(Node): + reversion.register(Node , follow=["nid_ptr"]) -if not reversion.is_registered(Edge): - reversion.register(Edge , follow=["nid_ptr"]) + if not reversion.is_registered(Edge): + reversion.register(Edge , follow=["nid_ptr"]) -if not reversion.is_registered(Processtype): - reversion.register(Processtype, follow=["changing_attributetype_set", "changing_relationtype_set"]) + if not reversion.is_registered(Processtype): + reversion.register(Processtype, follow=["changing_attributetype_set", "changing_relationtype_set"]) -if not reversion.is_registered(Nodetype): - reversion.register(Nodetype, follow=["node_ptr","parent", "metatypes","prior_nodes", "posterior_nodes"]) + if not reversion.is_registered(Nodetype): + reversion.register(Nodetype, follow=["node_ptr","parent", "metatypes","prior_nodes", "posterior_nodes"]) -if not reversion.is_registered(Metatype): - reversion.register(Metatype, follow=["node_ptr","parent"]) + if not reversion.is_registered(Metatype): + reversion.register(Metatype, follow=["node_ptr","parent"]) -if not reversion.is_registered(Relationtype): - reversion.register(Relationtype, follow=["left_subjecttype", "right_subjecttype"]) + if not reversion.is_registered(Relationtype): + reversion.register(Relationtype, follow=["left_subjecttype", "right_subjecttype"]) -if not reversion.is_registered(Attributetype): - reversion.register(Attributetype, follow=["subjecttype"]) + if not reversion.is_registered(Attributetype): + reversion.register(Attributetype, follow=["subjecttype"]) -if not reversion.is_registered(Attribute): - reversion.register(Attribute, follow=["subject", "attributetype"]) + if not reversion.is_registered(Attribute): + reversion.register(Attribute, follow=["subject", "attributetype"]) -if not reversion.is_registered(Relation): - reversion.register(Relation, follow=["left_subject", "right_subject", "relationtype"]) + if not reversion.is_registered(Relation): + reversion.register(Relation, follow=["left_subject", "right_subject", "relationtype"]) moderator.register(Nodetype, NodetypeCommentModerator) mptt.register(Metatype, order_insertion_by=['title']) -- cgit v1.2.3-70-g09d2 From 25e512e5397bfc9a8c9d253d31cd1e0a4a2251d6 Mon Sep 17 00:00:00 2001 From: Kabir Date: Fri, 11 May 2012 15:45:27 +0530 Subject: Error related to graphs not showing up for objects corrected --- gstudio/models.py | 2 ++ 1 file changed, 2 insertions(+) (limited to 'gstudio/models.py') diff --git a/gstudio/models.py b/gstudio/models.py index c28b81c1..e3e9fbb5 100644 --- a/gstudio/models.py +++ b/gstudio/models.py @@ -103,6 +103,7 @@ from gstudio.moderator import NodetypeCommentModerator from gstudio.url_shortener import get_url_shortener from gstudio.signals import ping_directories_handler from gstudio.signals import ping_external_urls_handler + import json if GSTUDIO_VERSIONING: import reversion @@ -247,6 +248,7 @@ class NID(models.Model): @property def ref(self): + from objectapp.models import * return eval(self.nodemodel).objects.get(id=self.id) # """ -- cgit v1.2.3-70-g09d2 From ffa1efc1acfc176c1dbf659210b41a51eb4d4cad Mon Sep 17 00:00:00 2001 From: csitifr Date: Fri, 11 May 2012 16:31:53 +0530 Subject: Dynamic mapping for attribute types done.Dynamic form for relation types added for both types and tokens.Properties for getting ATs and RTs added into models --- gstudio/models.py | 56 ++++ gstudio/templates/gstudio/nodetype_detail.html | 22 +- objectapp/forms.py | 18 +- objectapp/models.py | 75 ++++- objectapp/static/objectapp/js/savert.js | 10 +- objectapp/static/objectapp/js/setMember.js | 12 +- objectapp/templates/objectapp/fillAT.html | 27 +- objectapp/templates/objectapp/gbobject_detail.html | 27 +- objectapp/templates/objectapp/selectRT.html | 24 +- objectapp/templates/objectapp/skeleton.html | 5 +- objectapp/urls/ATurl.py | 8 +- objectapp/urls/RTurl.py | 11 +- objectapp/views/dynamicAT.py | 166 ++--------- objectapp/views/dynamicRT.py | 323 +++++++-------------- 14 files changed, 349 insertions(+), 435 deletions(-) (limited to 'gstudio/models.py') diff --git a/gstudio/models.py b/gstudio/models.py index d793db0a..be39527d 100644 --- a/gstudio/models.py +++ b/gstudio/models.py @@ -268,6 +268,55 @@ class NID(models.Model): except: return None + @property + def getat(self): + """This is will give the possible attributetypes """ + try: + attributetype = [] + ot = self.ref + attributetype.append(ot.subjecttype_of.all()) + attributetype = [num for elem in attributetype for num in elem] + return attributetype + except: + return None + + @property + def getrt(self): + pt =[] #contains parenttype + reltype =[] #contains relationtype + titledict = {} #contains relationtype's title + inverselist = [] #contains relationtype's inverse + finaldict = {} #contains either title of relationtype or inverse of relationtype + listval=[] #contains keys of titledict to check whether parenttype id is equals to listval's left or right subjecttypeid + # pt.append(Objecttype.objects.get(title = str(gbid))) + # name = NID.objects.get(title = str(gbid)) + pt.append(self.ref) + for i in range(len(pt)): + if Relationtype.objects.filter(left_subjecttype = pt[i].id): + reltype.append(Relationtype.objects.filter(left_subjecttype = pt[i].id)) + if Relationtype.objects.filter(right_subjecttype = pt[i].id): + reltype.append(Relationtype.objects.filter(right_subjecttype = pt[i].id)) + + # it converts 2 or more list as one list + reltype = [num for elem in reltype for num in elem] #this rqud for filtering + + for i in reltype: + titledict.update({i:i.id}) + + + for i in range(len(titledict)): + listval.append(Relationtype.objects.get(title = titledict.keys()[i])) + inverselist.append(str(titledict.keys()[i].inverse)) + + + for j in range(len(pt)): + for i in range(len(listval)): + if pt[j].id == listval[i].left_subjecttype_id : + finaldict.update({titledict.values()[i]:titledict.keys()[i]}) + elif pt[j].id == listval[i].right_subjecttype_id: + finaldict.update({titledict.values()[i]:inverselist[i]}) + + return finaldict.values() @property @@ -1385,6 +1434,13 @@ class Attributetype(Nodetype): def __unicode__(self): return self.title + + @property + def getdataType(self): + at = 'attribute'+str(self.get_dataType_display()) + at = at.lower() + return at + class Meta: """ attribute type's meta class diff --git a/gstudio/templates/gstudio/nodetype_detail.html b/gstudio/templates/gstudio/nodetype_detail.html index 404adb98..53fdbbe1 100644 --- a/gstudio/templates/gstudio/nodetype_detail.html +++ b/gstudio/templates/gstudio/nodetype_detail.html @@ -243,18 +243,28 @@ s = parseInt(s) //alert(s) } - - + {% endwith %} {% endblock %} -{% if object.reftype == 'Objecttype'%} -Add Attribute -
-Add Relation +{% if object.reftype == 'Objecttype' %} +

+Add Attributes: +{% for i in object.getat %} +{{ i }}; +{% endfor %} +

+ +

+Add Relations: +{% for i in object.getrt %} +{{ i }}; +{% endfor %} {% endif %} +

+
diff --git a/objectapp/forms.py b/objectapp/forms.py index 1d123156..a117b333 100644 --- a/objectapp/forms.py +++ b/objectapp/forms.py @@ -15,12 +15,8 @@ # along with this program. If not, see . -from django import forms -from django.forms import ModelForm -from django.forms.fields import DateField -from django.contrib.admin import widgets -from django.contrib.admin.widgets import AdminDateWidget +from django.forms import ModelForm from gstudio.models import * from objectapp.models import * @@ -38,15 +34,3 @@ class SystemForm(ModelForm): class Meta: model = System - - -class ContextForm(forms.Form): - - def __init__(self,rdict, *args, **kwargs): - super(ContextForm, self).__init__(*args, **kwargs) - for key, val in rdict.iteritems(): - print key, val - self.fields[str(key)+"_"+str(val)] = getattr(forms,rdict.get(key))(required = False) - - - diff --git a/objectapp/models.py b/objectapp/models.py index c4a612d3..afa492bc 100644 --- a/objectapp/models.py +++ b/objectapp/models.py @@ -201,6 +201,78 @@ class Gbobject(Node): published = GbobjectPublishedManager() + # @property + # def getdataType(self): + # gb = 'attribute'+str(self.get_dataType.display()) + # gb = gb.lower() + # return gb + + @property + def getattributetypes(self): + """ + Returns the attributetypes of self as well as its parent's attributetype. + """ + try: + parenttype = [] + attributetype = [] + returnlist = [] + obj = self + parenttype = obj.objecttypes.all() + attributetype.append(obj.subjecttype_of.all()) + for each in parenttype: + attributetype.append(each.subjecttype_of.all()) + + attributetype = [num for elem in attributetype for num in elem] + return attributetype + + except: + return None + + + + @property + def getrelationtypes(self): + pt =[] #contains parenttype + reltype =[] #contains relationtype + titledict = {} #contains relationtype's title + inverselist = [] #contains relationtype's inverse + finaldict = {} #contains either title of relationtype or inverse of relationtype + listval=[] #contains keys of titledict to check whether parenttype id is equals to listval's left or right subjecttypeid + + #gb= Gbobject.objects.get(title=str(gbid)) + gb=self + pt = gb.objecttypes.all() + for i in range(len(pt)): + if Relationtype.objects.filter(left_subjecttype = pt[i].id): + reltype.append(Relationtype.objects.filter(left_subjecttype = pt[i].id)) + if Relationtype.objects.filter(right_subjecttype = pt[i].id): + reltype.append(Relationtype.objects.filter(right_subjecttype = pt[i].id)) + if Relationtype.objects.filter(left_subjecttype = gb): + reltype.append(Relationtype.objects.filter(left_subjecttype = gb)) + if Relationtype.objects.filter(right_subjecttype = gb): + reltype.append(Relationtype.objects.filter(right_subjecttype = gb)) + + + reltype = [num for elem in reltype for num in elem] + + for i in reltype: + titledict.update({i:i.id}) + + + for i in range(len(titledict)): + listval.append(Relationtype.objects.get(title = titledict.keys()[i])) + inverselist.append(titledict.keys()[i].inverse) + + for j in range(len(pt)): + for i in range(len(listval)): + if pt[j].id == listval[i].left_subjecttype_id or gb.id == listval[i].left_subjecttype_id : + finaldict.update({titledict.values()[i]: titledict.keys()[i]}) + elif pt[j].id == listval[i].right_subjecttype_id or gb.id == listval[i].right_subjecttype_id: + finaldict.update({titledict.values()[i]:inverselist[i]}) + + + return finaldict.values() + def get_relations(self): relation_set = {} # ALGO to find the relations and their left-subjecttypes and right_subjecttypes @@ -240,7 +312,8 @@ class Gbobject(Node): relation_set.update(rel_dict['right_subjecttypes']) return relation_set - + + def get_attributes(self): attributes_dict = {} diff --git a/objectapp/static/objectapp/js/savert.js b/objectapp/static/objectapp/js/savert.js index 0e1f8b07..549e8196 100644 --- a/objectapp/static/objectapp/js/savert.js +++ b/objectapp/static/objectapp/js/savert.js @@ -3,7 +3,7 @@ $ = django.jQuery $(document).ready(function() { - $("#id_submit_rt").ajaxSend(function(e,xhr,settings){ + $("#id_go").ajaxSend(function(e,xhr,settings){ function getCookie(name) { @@ -41,13 +41,13 @@ $ = django.jQuery xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken')); } }); - $("#id_submit_rt").click(function(){ + $("#id_go").click(function(){ left = document.getElementById("id_left") - rt = document.getElementById("id_reltype") + rt = document.getElementById("id_rel") right = document.getElementById("id_right") absolute_url = document.getElementById("id_back_url") - url = "/objects/dynamicRelation/save/"+ left.value + "/" +rt.value+"/"+right.value+"/" - // alert(url); + url = "/objects/dynamicRelation/save/"+ left.value+"/"+rt.value+"/"+right.value+"/" + //alert(url); $.get(url,function(data){ window.location.replace(absolute_url.value); }); diff --git a/objectapp/static/objectapp/js/setMember.js b/objectapp/static/objectapp/js/setMember.js index a71b6750..977bd63c 100644 --- a/objectapp/static/objectapp/js/setMember.js +++ b/objectapp/static/objectapp/js/setMember.js @@ -42,10 +42,16 @@ $ = django.jQuery } }); $("#id_select_mem").change(function(){ - right_member = $(this).val() - document.getElementById("id_right").value = right_member; - // alert("hello "+ right_member); + right = $(this).val() + left =document.getElementById("id_left") + rel=document.getElementById("id_rel") + document.getElementById("id_right").value = right; + //url="/objects/dynamicRelation/save/"+left.value+"/"+rel.value+"/"+right+"/" + //alert("hello "+ ur); + }); }); + + diff --git a/objectapp/templates/objectapp/fillAT.html b/objectapp/templates/objectapp/fillAT.html index 6ddabe44..6a474d0d 100644 --- a/objectapp/templates/objectapp/fillAT.html +++ b/objectapp/templates/objectapp/fillAT.html @@ -1,28 +1,17 @@ {% extends "objectapp/base.html" %} {% load i18n %} {% block content %} -
+ {% csrf_token %} -Details of {{ name }} - - - - - - {% for field in form %} - - - - - {% endfor %} - - - - -
Attribute Type Value
{{ field.label_tag }}{{ field }} {{ field.errors }}
+{{ title }} +{% for field in form %} +{{ field }} {{ field.errors }} +{% endfor %} + + - +
{% endblock %} diff --git a/objectapp/templates/objectapp/gbobject_detail.html b/objectapp/templates/objectapp/gbobject_detail.html index b8ce7265..283f9c68 100644 --- a/objectapp/templates/objectapp/gbobject_detail.html +++ b/objectapp/templates/objectapp/gbobject_detail.html @@ -1,6 +1,5 @@ {% extends "objectapp/base.html" %} {% load i18n comments objectapp_tags %} - {% block title %}{{ object.title }}{% endblock %} {% block meta-description %}{% if object.excerpt %}{{ object.excerpt|striptags }}{% else %}{{ object.content|striptags|truncatewords:100 }}{% endif %}{% endblock %} @@ -30,15 +29,12 @@ {% endblock %} - - {% block content %} {% block gbobject-content %} {% with object.html_content|safe as object_content %} {% include "objectapp/_gbobject_detail.html" %} - - - + + + {% block extrahead %}{% endblock %} diff --git a/objectapp/urls/ATurl.py b/objectapp/urls/ATurl.py index 00122fb9..2363fd89 100644 --- a/objectapp/urls/ATurl.py +++ b/objectapp/urls/ATurl.py @@ -1,12 +1,8 @@ from django.conf.urls.defaults import url from django.conf.urls.defaults import patterns -#from objectapp.views import testview + urlpatterns = patterns('objectapp.views.dynamicAT', - url(r'^dynamicattr/$','dynamic_view', - name = 'objectapp_dynamic_view'), - url(r'^save/(\w.+)/$','dynamic_save', + url(r'^save/(\w.+)/(\w.+)/$','dynamic_save', name='objectapp_dynamic_save'), - # url(r'^dynamicOT/(\w.+)/$','dynamic_objecttype', - # name='objectapp_dynamic_objecttype'), ) diff --git a/objectapp/urls/RTurl.py b/objectapp/urls/RTurl.py index cea15cdc..53cfb8de 100644 --- a/objectapp/urls/RTurl.py +++ b/objectapp/urls/RTurl.py @@ -1,13 +1,12 @@ from django.conf.urls.defaults import url from django.conf.urls.defaults import patterns -#from objectapp.views import testview -urlpatterns = patterns('objectapp.views.dynamicRT', - url(r'^displayRT/(\w.+)/$','context_RT', - name='objectapp_context_view'), - url(r'^displaymem/(\w+)/(\w+)/$','context_member', + +urlpatterns = patterns('objectapp.views.dynamicRT', + url(r'^displaymem/(\w.+)/(\w.+)/$','context_member', name='objectapp_context_display'), - url(r'^save/(\w+)/(\w+)/(\w+)/$','context_save', + + url(r'^save/(\w.+)/(\w.+)/(\w.+)/$','context_save', name='objectapp_context_save'), ) diff --git a/objectapp/views/dynamicAT.py b/objectapp/views/dynamicAT.py index 52a6256c..aec02fc2 100644 --- a/objectapp/views/dynamicAT.py +++ b/objectapp/views/dynamicAT.py @@ -1,155 +1,53 @@ from django.http import * -from django import forms +from django.forms import ModelForm from django.shortcuts import render_to_response from django.template import RequestContext +from django.forms.models import modelform_factory from objectapp.models import * from objectapp.forms import * from gstudio.models import * +from gstudio.admin.forms import * + +def MakeForm(model_cls, *args, **kwargs): + class ContextForm(ModelForm): + class Meta: + model = model_cls.values()[0] + fields = ('value',) + def __init__(self, *args, **kwargs): + super(ContextForm,self).__init__(*args, **kwargs) + + + return ContextForm(*args, **kwargs) -def dynamic_view(request): - rdict = {} - for j in Gbobject.objects.all(): - rdict.update({j.id:j.title}) - - template="objectapp/selectAT.html" - context= RequestContext(request,{ 'rdict':rdict }) - return render_to_response(template,context) - -def dynamic_save(request,tit): #view for gb and ot too - testlst = [] - parenttype = [] - attributetype = [] - rdict = {} - nodelist = [] - syst = []#parent for system - try: - offset = str(tit) - except ValueError: - raise Http404() - - #flag = 0 #means its object - - if Objecttype.objects.filter(title = offset): - flag = 1 - elif Gbobject.objects.filter(title = offset): - flag = 0 - elif Systemtype.objects.filter(title = offset): - flag = 2 - - if flag == 1: - parenttype.append(Objecttype.objects.get(title = offset)) - pt_id = NID.objects.get(title = offset) - name = pt_id - - elif flag == 0: - #utit = Gbobject.objects.get(title = offset) - gb=Gbobject.objects.get(title=offset) - name = gb - # checking whether object is gb or system coz created objects are treated as Gbobject n then System objects - if System.objects.filter(title = (gb.ref).title): - gb = System.objects.get(title = offset) - syst = gb.systemtypes.all() - for i in syst: - nodelist = i.nodetype_set.all() - parenttype.append(i) - - for i in nodelist: - parenttype.append(i.ref) - - elif Gbobject.objects.filter(title = (gb.ref).title): - parenttype = gb.objecttypes.all() - - pt_id = NID.objects.get(id = gb.id) - - elif flag == 2: - systype = Systemtype.objects.get(title = offset) - nodelist = systype.nodetype_set.all() - parenttype.append(Systemtype.objects.get(title = offset)) - for i in nodelist: - parenttype.append(i.ref) - pt_id = NID.objects.get(title = offset) - name = pt_id - - +def dynamic_save(request, attit, memtit): + rdict ={} + savedict = {} + memtit = NID.objects.get(title = str(memtit)) + name = memtit.ref absolute_url_node = name.get_absolute_url() - for each in parenttype: - attributetype.append(each.subjecttype_of.all()) - - attributetype = [num for elem in attributetype for num in elem] - - for each in range(len(attributetype)): - rdict.update({attributetype[each]:str(Attributetype.get_dataType_display(attributetype[each]))}) - - if request.method=='POST': - form = ContextForm(rdict,request.POST) - bound= form.is_bound - + at = Attributetype.objects.get(title = str(attit)) + dt = str(at.get_dataType_display()) + MyModel = eval('Attribute'+dt) + rdict.update({str(at.title):MyModel}) + if request.method == 'POST': + form = MakeForm(rdict,request.POST) if form.is_valid(): - for key,val in rdict.items(): - testlst.append(str(request.POST[str(key)+"_"+str(val)])) - - for val in range(len(testlst)): - if testlst[val] != '' : - savedict = {'title':testlst[val],'slug':testlst[val], 'svalue':testlst[val], 'subject':pt_id, 'attributetype':rdict.keys()[val]} - att = Attribute.objects.create(**savedict) - att.save() + value = form.cleaned_data['value'] + savedict = {'title':value,'slug':value,'svalue':value,'subject':memtit, 'attributetype':at,'value':value} + att = MyModel.objects.create(**savedict) + att.save() + return HttpResponseRedirect(absolute_url_node) - return HttpResponseRedirect(absolute_url_node) else: - form = ContextForm(rdict) - + form = MakeForm(rdict) template = "objectapp/fillAT.html" - context = RequestContext(request,{'form' : form, 'name':name,'absolute_url_node':absolute_url_node}) + context = RequestContext(request,{'form' : form,'title':str(attit), 'absolute_url_node':absolute_url_node}) return render_to_response(template,context) -# def dynamic_objecttype(request,iden): #gb view for dynamic at -# testlst = [] -# attributetype = [] -# rdict = {} -# try: -# offset = str(iden) -# except ValueError: -# raise Http404() - -# #uid = Gbobject.objects.get(title = offset) -# gb=Gbobject.objects.get(title=offset) -# parenttype = gb.objecttypes.all() -# pt_id = NID.objects.get(id = gb.id) - - -# for each in parenttype: -# attributetype.append(each.subjecttype_of.all()) - -# attributetype = [num for elem in attributetype for num in elem] - -# for each in range(len(attributetype)): -# rdict.update({attributetype[each]:str(Attributetype.get_dataType_display(attributetype[each]))}) - -# if request.method=='POST': -# form = ContextForm(rdict,request.POST) -# bound= form.is_bound - -# if form.is_valid(): -# for key,val in rdict.items(): -# testlst.append(str(request.POST[str(key)+"_"+str(val)])) - -# for val in range(len(testlst)): -# if testlst[val] != '' : -# savedict = {'title':testlst[val],'slug':testlst[val], 'svalue':testlst[val], 'subject':pt_id, 'attributetype':rdict.keys()[val]} -# att = Attribute.objects.create(**savedict) -# att.save() - -# return HttpResponseRedirect("/objects/") -# else: -# form = ContextForm(rdict) - -# template = "objectapp/fillAT.html" -# context = RequestContext(request,{'form' : form}) -# return render_to_response(template,context) diff --git a/objectapp/views/dynamicRT.py b/objectapp/views/dynamicRT.py index f0781683..78370b54 100644 --- a/objectapp/views/dynamicRT.py +++ b/objectapp/views/dynamicRT.py @@ -1,250 +1,151 @@ -from gstudio.models import * -from objectapp.models import * + from django.http import * from django.shortcuts import render_to_response from django.template import RequestContext from django.db import IntegrityError +from django.forms import ModelForm +from gstudio.models import * +from objectapp.models import * -def context_RT(request, gbid): - pt =[] #contains parenttype - reltype =[] #contains relationtype - titledict = {} #contains relationtype's title - inverselist = [] #contains relationtype's inverse - finaldict = {} #contains either title of relationtype or inverse of relationtype - listval=[] #contains keys of titledict to check whether parenttype id is equals to listval's left or right subjecttypeid - #flag = 0 #check whether OT or OB, flag = 0 means it is OB +def context_member(request,reltit , memtit): - # if its an OT, then parse separately - if Objecttype.objects.filter(title=str(gbid)): + if Relationtype.objects.filter(title = str(reltit)): + r =Relationtype.objects.get(title = str(reltit)) + else: + r = Relationtype.objects.get(inverse = str(reltit)) + + gbdict = {} + otmem=[] + childpt = [] + childmem = [] + finaldict={} + memdict = {} #otmem + childmem + + if Objecttype.objects.filter(title = str(memtit)): flag = 1 - elif Gbobject.objects.filter(title = str(gbid)): - flag = 0 - elif Systemtype.objects.filter(title = str(gbid)): - flag = 2 - - if flag == 1: - pt.append(Objecttype.objects.get(title = str(gbid))) - name = NID.objects.get(title = str(gbid)) - - for i in range(len(pt)): - if Relationtype.objects.filter(left_subjecttype = pt[i].id): - reltype.append(Relationtype.objects.get(left_subjecttype = pt[i].id)) - if Relationtype.objects.filter(right_subjecttype = pt[i].id): - reltype.append(Relationtype.objects.get(right_subjecttype = pt[i].id)) - - # it converts 2 or more list as one list - #reltype = [num for elem in reltype for num in elem] #this rqud for filtering - - for i in reltype: - titledict.update({i:i.id}) - - - for i in range(len(titledict)): - listval.append(Relationtype.objects.get(title = titledict.keys()[i])) - inverselist.append(titledict.keys()[i].inverse) - - - for j in range(len(pt)): - for i in range(len(listval)): - if pt[j].id == listval[i].left_subjecttype_id : - finaldict.update({titledict.values()[i]:titledict.keys()[i]}) - elif pt[j].id == listval[i].right_subjecttype_id: - finaldict.update({titledict.values()[i]:inverselist[i]}) - - - elif flag == 0: - gb= Gbobject.objects.get(title=str(gbid)) - name = gb - pt = gb.objecttypes.all() - for i in range(len(pt)): - if Relationtype.objects.filter(left_subjecttype = pt[i].id): - reltype.append(Relationtype.objects.get(left_subjecttype = pt[i].id)) - if Relationtype.objects.filter(right_subjecttype = pt[i].id): - reltype.append(Relationtype.objects.get(right_subjecttype = pt[i].id)) - if Relationtype.objects.filter(left_subjecttype = gb): - reltype.append(Relationtype.objects.get(left_subjecttype = gb)) - if Relationtype.objects.filter(right_subjecttype = gb): - reltype.append(Relationtype.objects.get(right_subjecttype = gb)) - - - #reltype = [num for elem in reltype for num in elem] - - for i in reltype: - titledict.update({i:i.id}) - - - for i in range(len(titledict)): - listval.append(Relationtype.objects.get(title = titledict.keys()[i])) - inverselist.append(titledict.keys()[i].inverse) - - for j in range(len(pt)): - for i in range(len(listval)): - if pt[j].id == listval[i].left_subjecttype_id or gb.id == listval[i].left_subjecttype_id : - finaldict.update({titledict.values()[i]: titledict.keys()[i]}) - elif pt[j].id == listval[i].right_subjecttype_id or gb.id == listval[i].right_subjecttype_id: - finaldict.update({titledict.values()[i]:inverselist[i]}) - - elif flag == 2: - systype = Systemtype.objects.get(title = str(gbid)) - nodelist = [] - nodelist = systype.nodetype_set.all() - for i in nodelist: - pt.append(i.ref) - pt.append(systype) - name = NID.objects.get(title = str(gbid)) - - for i in range(len(pt)): - if Relationtype.objects.filter(left_subjecttype = pt[i].id): - reltype.append(Relationtype.objects.get(left_subjecttype = pt[i].id)) - if Relationtype.objects.filter(right_subjecttype = pt[i].id): - reltype.append(Relationtype.objects.get(right_subjecttype = pt[i].id)) - - # it converts 2 or more list as one list - #reltype = [num for elem in reltype for num in elem] #this rqud for filtering - - for i in reltype: - titledict.update({i:i.id}) - - - for i in range(len(titledict)): - listval.append(Relationtype.objects.get(title = titledict.keys()[i])) - inverselist.append(titledict.keys()[i].inverse) - - - for j in range(len(pt)): - for i in range(len(listval)): - if pt[j].id == listval[i].left_subjecttype_id : - finaldict.update({titledict.values()[i]:titledict.keys()[i]}) - elif pt[j].id == listval[i].right_subjecttype_id: - finaldict.update({titledict.values()[i]:inverselist[i]}) - - + name = Objecttype.objects.get(title = str(memtit)) + #get members of name + for i in name.get_members: + otmem.append(i) + + #get children of name + for i in name.children.all(): + childpt.append(Objecttype.objects.get(title = NID.objects.get(title = i.title))) + #get child's members + for i in childpt: + childmem = i.get_members + for i in otmem: + memdict.update({i.id:str(i.title)}) + for i in childmem: + memdict.update({i.id:str(i.title)}) + + elif Gbobject.objects.filter(title = str(memtit)): + flag = 0 + nt = [] + name = Gbobject.objects.get(title = str(memtit)) + nt = name.objecttypes.all() #nodetype + pt = [] + for i in nt: + pt.append(Objecttype.objects.get(title = NID.objects.get(title = i.title))) + for i in pt: + otmem.append(i.get_members) + + otmem = [num for elem in otmem for num in elem] + gbdict.update({name.id :str(name.title)}) + +#----------------------------------------------------------------------- + + memid = name.id + if r.left_subjecttype_id == memid: + nodetype = str(r.right_applicable_nodetypes) + print"equal to left" + else: + print"equal to right" + nodetype = str(r.left_applicable_nodetypes) + +#------------------------------------------------------------------------ + + if nodetype=="OB" and flag==0:# gb itself + finaldict=gbdict + for i in otmem: + finaldict.update({i.id:str(i.title)}) + print "nodetype OB and Flag 0" + + elif nodetype=="OT" and flag==1:#name,name ka child ,member of both + print "nodetype OT and Flag 1" + finaldict.update({name.id:str(name.title)})#ot itself + for i in childpt:#otchild + finaldict.update({i.id:str(i.title)}) + for i in range(len(memdict)):#member of both + finaldict.update({memdict.keys()[i]:memdict.values()[i]}) + + elif nodetype=="OT" and flag==0: #name,name ka ot ,ot ka mem + print "nodetype OT and Flag 0" + finaldict.update({name.id:str(name.title)}) + for i in name.objecttypes.all(): + finaldict.update({i.id : str(i.title)}) + for i in otmem: + finaldict.update({i.id:str(i.title)}) + + elif nodetype=="OB" and flag==1: #child of both + print "nodetype OB and Flag 1" + finaldict=memdict + absolute_url_node = name.get_absolute_url() - + print finaldict + template="objectapp/selectRT.html" - context = RequestContext(request,{'final':finaldict , 'gb':name ,'gbid':name.id, 'absolute_url_node':absolute_url_node}) + context = RequestContext(request,{'finaldict':finaldict,'gb':name,'reltit':reltit, 'absolute_url_node': absolute_url_node}) return render_to_response(template,context) -def context_member(request,relid, memid):#id of relationtype, id of selected object +def context_save(request,leftmem, reltype, rightmem): try: - relid = int(relid) #relationtype - memid = int(memid) #left member id - except: - raise Http404() - - # checks wheter memid is OT or OB - flag=0 #means OB - - if Objecttype.objects.filter(id = memid): - flag=1 + leftmem = str(leftmem) + reltype = str(reltype) + rightmem = str(rightmem) - nt =[] #contains parent as - pt= [] #contains parent as - - if flag == 1: - pt.append(Objecttype.objects.get(id=memid)) - - else: - gb = Gbobject.objects.get(id = memid) - nt = gb.objecttypes.all() - for i in range(len(nt)): #conversion of nodetype in objecttype - pt.append(Objecttype.objects.get(id = nt[i].id)) - - memlist = [] #contains OB and OT for appearing in 1st combo box - - r = Relationtype.objects.get(id = relid) #contains RelationType - - # extracting left and right applicable nodetypes(OB or OT) of RelationType - lefttype = str(r.left_applicable_nodetypes) - righttype = str(r.right_applicable_nodetypes) - - if lefttype == righttype: - if lefttype == "OB" and righttype == "OB": - - if r.left_subjecttype_id == memid: - memlist.append(Gbobject.objects.get(id = r.right_subjecttype_id)) - else : - memlist.append(Gbobject.objects.get(id = r.left_subjecttype_id)) - - elif lefttype == "OT" and righttype == "OT": - for each in range(len(pt)): - if r.left_subjecttype_id == memid or r.left_subjecttype_id == pt[each].id: - o = Objecttype.objects.get(title = NID.objects.get(title=(r.right_subjecttype).title)) - memlist.append(o) - for i in o.get_members: - memlist.append(i) - # elif r.right_subjecttype_id == memid or r.right_subejcttype_id == pt[each].id: - else: - o = Objecttype.objects.get(title = NID.objects.get(title=(r.left_subjecttype).title)) - memlist.append(o) - for i in o.get_members: - memlist.append(i) - else: - if r.left_subjecttype_id == memid: - if righttype == "OB": - memlist.append(Gbobject.objects.get(id = r.right_subjecttype_id)) - - else : - o = Objecttype.objects.get(title = NID.objects.get(title=(r.right_subjecttype).title)) - memlist.append(o) - for i in o.get_members: - memlist.append(i) - - else: - if lefttype == "OB": - memlist.append(Gbobject.objects.get(id = r.left_subjecttype_id)) - - else : - o = Objecttype.objects.get(title = NID.objects.get(title=(r.left_subjecttype).title)) - memlist.append(o) - for i in o.get_members: - memlist.append(i) - - memdict = {} #converting list into dict and to set id of right member as hidden field - for i in memlist: - memdict.update({i.id:i}) + left = NID.objects.get(title = leftmem) + right = NID.objects.get(title = rightmem) + if Relationtype.objects.filter(title=reltype): + relation = Relationtype.objects.get(title = reltype) + else: + relation = Relationtype.objects.get(inverse = reltype) - template="objectapp/fillRT.html" - context = RequestContext(request,{'memdict':memdict}) - return render_to_response(template,context) - -def context_save(request,leftmem, reltype, rightmem): - try: - leftmem = int(leftmem) - reltype = int(reltype) - rightmem = int(rightmem) - - relation = Relationtype.objects.get(id = reltype) rightrole = relation.right_subjecttype_id leftrole = relation.left_subjecttype_id +#----------------------------------------------------------------------- flag = 1 - if Objecttype.objects.filter(id = leftmem): - if leftmem == leftrole : + if Objecttype.objects.filter(title = leftmem): + if left.id == leftrole : flag = 0 print "Objecttype flag = 0 " else: print "Objecttype flag = 1 " - elif Gbobject.objects.filter(id = leftmem): - gb = Gbobject.objects.get(id = leftmem) + elif Gbobject.objects.filter(title = leftmem): + gb = Gbobject.objects.get(title = leftmem) pt = gb.objecttypes.all() for i in range(len(pt)): - if leftmem == leftrole or pt[i].id == leftrole: + if left.id == leftrole or pt[i].id == leftrole: flag = 0 print "Object flag = 0" else: print "Object flag = 1" + +#----------------------------------------------------------------------------------- + if flag == 0: - savedict = {'title':relation, 'slug':relation, 'left_subject_id':leftmem, 'right_subject_id':rightmem, 'relationtype_id':reltype, 'left_subject_scope':' ', 'right_subject_scope':' ', 'relationtype_scope':' ' } + savedict = {'title':relation, 'slug':relation, 'left_subject_id':left.id, 'right_subject_id':right.id, 'relationtype_id':relation.id, 'left_subject_scope':' ', 'right_subject_scope':' ', 'relationtype_scope':' ' } else: - savedict = {'title':relation, 'slug':relation, 'left_subject_id':rightmem, 'right_subject_id':leftmem, 'relationtype_id':reltype, 'left_subject_scope':' ', 'right_subject_scope':' ', 'relationtype_scope':' '} + savedict = {'title':relation, 'slug':relation, 'left_subject_id':right.id, 'right_subject_id':left.id, 'relationtype_id':relation.id, 'left_subject_scope':' ', 'right_subject_scope':' ', 'relationtype_scope':' '} rtt = Relation.objects.create(**savedict) rtt.save() - print "leftmem"+ str(leftmem) + " rightmem" + str(rightmem) + " reltype" +str(reltype)+ " leftrole"+ str(leftrole) + " rightrole " + str(rightrole) + print "left"+ str(left) + " right" + str(right) + " reltype" +str(relation)+ " leftrole"+ str(leftrole) + " rightrole " + str(rightrole) + print savedict return HttpResponseRedirect("/nodetypes/") -- cgit v1.2.3-70-g09d2 From 15c2f2561c23a656d792003b089e28ecc500b720 Mon Sep 17 00:00:00 2001 From: csitifr Date: Fri, 11 May 2012 17:31:37 +0530 Subject: small error in reftype and nodetype_detail.html corrected --- gstudio/models.py | 6 +++--- gstudio/templates/gstudio/nodetype_detail.html | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) (limited to 'gstudio/models.py') diff --git a/gstudio/models.py b/gstudio/models.py index 97b48881..5b5cf424 100644 --- a/gstudio/models.py +++ b/gstudio/models.py @@ -279,9 +279,9 @@ class NID(models.Model): ALGO: simple wrapper for the __class__.__name__ so that it can be used in templates """ - return self.__class__.__name__ - # obj = self.ref - # return obj.__class__.__name__ + # return self.__class__.__name__ + obj = self.ref + return obj.__class__.__name__ except: return None diff --git a/gstudio/templates/gstudio/nodetype_detail.html b/gstudio/templates/gstudio/nodetype_detail.html index d4e786b3..7947e585 100644 --- a/gstudio/templates/gstudio/nodetype_detail.html +++ b/gstudio/templates/gstudio/nodetype_detail.html @@ -248,10 +248,10 @@ {% endwith %} {% endblock %} +

- - +{% if object.reftype == 'Objecttype' %} Add Attributes: {% for i in object.getat %} {{ i }}; @@ -263,7 +263,7 @@ {% for i in object.getrt %} {{ i }}; {% endfor %} - +{% endif %}

-- cgit v1.2.3-70-g09d2