From 3a6f1bb43f49c071ea86944022e65b83fed0ad5d Mon Sep 17 00:00:00 2001 From: Arun yadav Date: Mon, 30 Apr 2012 12:53:23 +0530 Subject: urls,views and templates for history added.Models modified for the same --- gstudio/models.py | 132 +++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 96 insertions(+), 36 deletions(-) (limited to 'gstudio/models.py') diff --git a/gstudio/models.py b/gstudio/models.py index a9d6928..56e6a7a 100644 --- a/gstudio/models.py +++ b/gstudio/models.py @@ -191,7 +191,6 @@ class Author(User): class Meta: """Author's Meta""" proxy = True - class NID(models.Model): """the set of all nodes. provides node ID (NID) to all nodes in the network, including edges. Edges are also first class citizens @@ -205,7 +204,41 @@ class NID(models.Model): slug = models.SlugField(help_text=_('used for publication'), unique_for_date='creation_date', max_length=255) + @property + def get_revisioncount(self): + """ + Returns Number of Version + """ + i=0 + ver=Version.objects.get_for_object(self) + for each in ver: + i=i+1 + return i + @property + def get_version_list(self): + """ + Returns Version list + """ + ver=Version.objects.get_for_object(self) + return ver + + @property + def get_ssid(self): + """ + return snapshot ids (revision id). + returns a list. + """ + slist=[] + vlist=self.get_version_list + for each in vlist: + slist.append(each.id) + return slist + + def version_info(self,ssid): + version_object=Version.objects.get(id=ssid) + return version_object.field_dict + def get_serialized_dict(self): """ @@ -213,26 +246,15 @@ class NID(models.Model): """ return self.__dict__ - @property - def get_app_name(self): - if self.ref.__class__.__name__=='Gbobject' or self.ref.__class__.__name__=='Process' or self.ref.__class__.__name__=='System' : - return 'type' - @models.permalink def get_absolute_url(self): """Return nodetype's URL""" - if self.get_app_name=='type': - return ('objectapp_gbobject_detail', (), { - 'year': self.creation_date.strftime('%Y'), - 'month': self.creation_date.strftime('%m'), - 'day': self.creation_date.strftime('%d'), - 'slug': self.slug}) - else: - return ('gstudio_nodetype_detail', (), { - 'year': self.creation_date.strftime('%Y'), - 'month': self.creation_date.strftime('%m'), - 'day': self.creation_date.strftime('%d'), - 'slug': self.slug}) + + return ('gstudio_nodetype_detail', (), { + 'year': self.creation_date.strftime('%Y'), + 'month': self.creation_date.strftime('%m'), + 'day': self.creation_date.strftime('%d'), + 'slug': self.slug}) @property def ref(self): @@ -252,23 +274,6 @@ class NID(models.Model): return None return vrs.object - - @property - def reftype(self): - """ - Returns the type the id belongs to. - """ - try: - """ - ALGO: simple wrapper for the __class__.__name__ so that it can be used in templates - """ - obj = self.ref - return obj.__class__.__name__ - - except: - return None - - @property def get_edit_url(self): @@ -285,6 +290,59 @@ class NID(models.Model): version = Version.objects.get(id=self.id) return version.serialized_data + + + def get_Version_graph_json(self,ssid): + + + # # predicate_id={"plural":"a1","altnames":"a2","contains_members":"a3","contains_subtypes":"a4","prior_nodes":"a5", "posterior_nodes":"a6"} + # slist=self.get_ssid + ver_dict=self.version_info(ssid) + + g_json = {} + g_json["node_metadata"]= [] + predicate_id = {} + counter = 1 + for key in ver_dict.keys(): + val = "a" + str(counter) + predicate_id[key] = val + counter = counter + 1 + #print predicate_id + + attr_counter = -1 + + this_node = {"_id":str(ver_dict['id']),"title":ver_dict['title'],"screen_name":ver_dict['title'], "url":self.get_absolute_url()} + g_json["node_metadata"].append(this_node) + + for key in predicate_id.keys(): + if ver_dict[key]: + try: + g_json[str(key)]=[] + g_json["node_metadata"].append({"_id":str(predicate_id[key]),"screen_name":key}) + g_json[str(key)].append({"from":self.id , "to":predicate_id[key],"value":1, "level":1 }) + if not isinstance(ver_dict[key],basestring): + for item in ver_dict[key]: + # user + g_json["node_metadata"].append({"_id":str(item.id),"screen_name":item.title, "title":item.title, "url":item.get_absolute_url()}) + g_json[str(key)].append({"from":predicate_id[key] , "to":item.id ,"value":1 }) + + else: + #value={nbh["plural"]:"a4",nbh["altnames"]:"a5"} + #this_node[str(key)]=nbh[key] key, nbh[key] + #for item in value.keys(): + g_json["node_metadata"].append({"_id":attr_counter,"screen_name":ver_dict[key]}) + g_json[str(key)].append({"from":predicate_id[key] , "to":attr_counter ,"value":1, "level":2 }) + attr_counter-=1 + + except: + pass + # print g_json + + + + return json.dumps(g_json) + + def __unicode__(self): return self.title @@ -293,7 +351,6 @@ class NID(models.Model): """NID's Meta""" - class Node(NID): """ Super class @@ -1114,6 +1171,9 @@ class Nodetype(Node): 'month': self.creation_date.strftime('%m'), 'day': self.creation_date.strftime('%d'), 'slug': self.slug}) + def get_version_url(self): + """Return nodetype's URL""" + return "/nodetypes/display/viewhistory/" def get_serialized_data(self): """ -- cgit v1.1 From 7e02e008009c476c831d7dcda78db9bc22beb42e Mon Sep 17 00:00:00 2001 From: Arun yadav Date: Wed, 9 May 2012 15:15:55 +0530 Subject: Added views ,templates and some version related properties in models.py --- gstudio/models.py | 42 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) (limited to 'gstudio/models.py') diff --git a/gstudio/models.py b/gstudio/models.py index 100e4e2..353a5b8 100644 --- a/gstudio/models.py +++ b/gstudio/models.py @@ -107,6 +107,7 @@ import reversion from reversion.models import Version from django.core import serializers from reversion.models import * +from reversion.helpers import * NODETYPE_CHOICES = ( ('ND', 'Nodes'), @@ -192,6 +193,7 @@ class Author(User): class Meta: """Author's Meta""" proxy = True + class NID(models.Model): """the set of all nodes. provides node ID (NID) to all nodes in the network, including edges. Edges are also first class citizens @@ -205,6 +207,19 @@ class NID(models.Model): slug = models.SlugField(help_text=_('used for publication'), unique_for_date='creation_date', max_length=255) + + + def convert(self,data): + if isinstance(data, unicode): + return str(data) + elif isinstance(data, collections.Mapping): + return dict(map(convert, data.iteritems())) + elif isinstance(data, collections.Iterable): + return type(data)(map(convert, data)) + else: + return data + + @property def get_revisioncount(self): """ @@ -239,6 +254,22 @@ class NID(models.Model): def version_info(self,ssid): version_object=Version.objects.get(id=ssid) return version_object.field_dict + + + def get_version_nbh(self,ssid): + """ + Returns Version nbh + """ + ver_dict=self.version_info(ssid) + ver_nbh_list=[] + ver_nbh_dict={} + for item in self.get_nbh.keys(): + if item in ver_dict.keys(): + ver_nbh_list.append(item) + for each in ver_nbh_list: + ver_nbh_dict[each]=ver_dict[each] + return ver_nbh_dict + def get_serialized_dict(self): @@ -370,6 +401,10 @@ class Node(NID): sites = models.ManyToManyField(Site, verbose_name=_('sites publication'), related_name='nodetypes') + nbhood = models.TextField(help_text="The serialized nbh of this version of the Node.") + + + published = NodePublishedManager() def __unicode__(self): return self.title @@ -379,6 +414,7 @@ class Node(NID): @reversion.create_revision() def save(self, *args, **kwargs): + # self.nbhood=self.get_nbh super(Node, self).save(*args, **kwargs) # Call the "real" save() method. @@ -579,6 +615,7 @@ class Metatype(Node): # Save for metatype @reversion.create_revision() def save(self, *args, **kwargs): +# self.nbhood=self.get_nbh super(Metatype, self).save(*args, **kwargs) # Call the "real" save() method. @@ -678,8 +715,8 @@ class Nodetype(Node): reltypes['possible_rightroles'] = right_subset return reltypes - - + + @property def get_possible_attributetypes(self): """ @@ -1396,6 +1433,7 @@ class Objecttype(Nodetype): # Save for Objecttype @reversion.create_revision() def save(self, *args, **kwargs): + # self.nbhood=self.get_nbh super(Objecttype, self).save(*args, **kwargs) # Call the "real" save() method. -- cgit v1.1 From 431f589903ea3f03678a3c20acfd478ae4c15805 Mon Sep 17 00:00:00 2001 From: Arun yadav Date: Fri, 18 May 2012 16:37:44 +0530 Subject: templates and views for history, with colour diff v1 --- gstudio/models.py | 94 ++++++++++++++++++++++++------------------------------- 1 file changed, 41 insertions(+), 53 deletions(-) (limited to 'gstudio/models.py') diff --git a/gstudio/models.py b/gstudio/models.py index 8177cef..c4ee0c7 100644 --- a/gstudio/models.py +++ b/gstudio/models.py @@ -66,6 +66,7 @@ """Super models of Gstudio """ + import warnings from datetime import datetime from django.db import models @@ -213,17 +214,6 @@ class NID(models.Model): max_length=255) - def convert(self,data): - if isinstance(data, unicode): - return str(data) - elif isinstance(data, collections.Mapping): - return dict(map(convert, data.iteritems())) - elif isinstance(data, collections.Iterable): - return type(data)(map(convert, data)) - else: - return data - - @property def get_revisioncount(self): """ @@ -274,8 +264,6 @@ class NID(models.Model): ver_nbh_dict[each]=ver_dict[each] return ver_nbh_dict - - def get_serialized_dict(self): """ return the fields in a serialized form of the current object using the __dict__ function. @@ -303,7 +291,7 @@ class NID(models.Model): """ # Retrieving only the relevant tupleset for the versioned objects - vrs = Version.objects.filter(type=0 , object_id=self.id) + vrs = Version.objects.filter(type=1 , object_id=self.id) # Returned value is a list, so splice it. vrs = vrs[0] except: @@ -326,7 +314,7 @@ class NID(models.Model): version = Version.objects.get(id=self.id) return version.serialized_data - + def get_Version_graph_json(self,ssid): @@ -406,9 +394,7 @@ class Node(NID): sites = models.ManyToManyField(Site, verbose_name=_('sites publication'), related_name='nodetypes') nbhood = models.TextField(help_text="The serialized nbh of this version of the Node.") - - - + published = NodePublishedManager() def __unicode__(self): return self.title @@ -619,9 +605,11 @@ class Metatype(Node): # Save for metatype @reversion.create_revision() def save(self, *args, **kwargs): -# self.nbhood=self.get_nbh - super(Metatype, self).save(*args, **kwargs) # Call the "real" save() method. - + super(Metatype, self).save(*args, **kwargs) # Call the "real" save() method. + self.nbhood=self.get_nbh + with reversion.create_revision(): + super(Metatype, self).save(*args, **kwargs) # Call the "real" save() method. + @@ -780,35 +768,6 @@ class Nodetype(Node): return rels - - @property - def get_possible_attributes(self): - """ - Gets the relations possible for this metatype - 1. Recursively create a set of all the ancestors i.e. parent/subtypes of the MT. - 2. Get all the RT's linked to each ancestor - """ - #Step 1. - ancestor_list = [] - this_parent = self.parent - - # recursive thru parent field and append - while this_parent: - ancestor_list.append(this_parent) - this_parent = this_parent.parent - - #Step 2. - attrs = [] - - for each in ancestor_list: - # retrieve all the AT's from each ancestor - attrs.extend(Attribute.objects.filter(subject=each.id)) - - return attrs - - - - def get_graph_json(self): @@ -887,6 +846,33 @@ class Nodetype(Node): #print g_json return json.dumps(g_json) + @property + def get_possible_attributes(self): + """ + Gets the relations possible for this metatype + 1. Recursively create a set of all the ancestors i.e. parent/subtypes of the MT. + 2. Get all the RT's linked to each ancestor + """ + #Step 1. + ancestor_list = [] + this_parent = self.parent + + # recursive thru parent field and append + while this_parent: + ancestor_list.append(this_parent) + this_parent = this_parent.parent + + #Step 2. + attrs = [] + + for each in ancestor_list: + # retrieve all the AT's from each ancestor + attrs.extend(Attribute.objects.filter(subject=each.id)) + + return attrs + + + @property def tree_path(self): @@ -1279,7 +1265,7 @@ class Nodetype(Node): @reversion.create_revision() def save(self, *args, **kwargs): super(Nodetype, self).save(*args, **kwargs) # Call the "real" save() method. - + class Objecttype(Nodetype): @@ -1462,8 +1448,10 @@ class Objecttype(Nodetype): # Save for Objecttype @reversion.create_revision() def save(self, *args, **kwargs): - # self.nbhood=self.get_nbh - super(Objecttype, self).save(*args, **kwargs) # Call the "real" save() method. + super(Objecttype, self).save(*args, **kwargs) # Call the "real" save() method. + self.nbhood=self.get_nbh + with reversion.create_revision(): + super(Objecttype, self).save(*args, **kwargs) # Call the "real" save() method. -- cgit v1.1 From 244509e3eb4058a3aff505e3836d43d64b08fe7d Mon Sep 17 00:00:00 2001 From: Arun yadav Date: Sat, 19 May 2012 15:15:51 +0530 Subject: Difference generation between versions done partly, list of differences generated. --- gstudio/models.py | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) (limited to 'gstudio/models.py') diff --git a/gstudio/models.py b/gstudio/models.py index 2038334..2c9d51f 100644 --- a/gstudio/models.py +++ b/gstudio/models.py @@ -112,6 +112,7 @@ from reversion.models import Version from django.core import serializers from reversion.models import * from reversion.helpers import * +import ast NODETYPE_CHOICES = ( @@ -398,7 +399,9 @@ class NID(models.Model): # # predicate_id={"plural":"a1","altnames":"a2","contains_members":"a3","contains_subtypes":"a4","prior_nodes":"a5", "posterior_nodes":"a6"} # slist=self.get_ssid ver_dict=self.version_info(ssid) - + # ver_dict=str(ver['nbhood']) + # ver_dict=ast.literal_eval(ver_dict) + g_json = {} g_json["node_metadata"]= [] predicate_id = {} @@ -480,11 +483,13 @@ class Node(NID): def save(self, *args, **kwargs): + + # self.nbhood=self.get_nbh 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. - + + super(Node, self).save(*args, **kwargs) # Call the "real" save() method. @@ -1651,13 +1656,13 @@ class Attributetype(Nodetype): def save(self, *args, **kwargs): self.nodemodel = self.__class__.__name__ - - if GSTUDIO_VERSIONING: + +# self.nbhood=self.get_nbh + 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. - - + + super(Attributetype, self).save(*args, **kwargs) # Call the "real" save() method. class Relation(Edge): -- cgit v1.1 From 73d6a58a88f8d6e63404bbf90dc378ade3509662 Mon Sep 17 00:00:00 2001 From: met2012 Date: Fri, 25 May 2012 17:10:31 +0530 Subject: Returned strings made unicode --- gstudio/models.py | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) (limited to 'gstudio/models.py') diff --git a/gstudio/models.py b/gstudio/models.py index 2c9d51f..7b1093b 100644 --- a/gstudio/models.py +++ b/gstudio/models.py @@ -540,7 +540,7 @@ class Metatype(Node): nbh['typeof'] = self.parent # generate ids and names of children/members nbh['contains_subtypes'] = self.children.get_query_set() - nbh['contains_members'] = self.nodetypes.all() + nbh['contains_members'] = self.nodetypes_published() nbh['left_subjecttype_of'] = Relationtype.objects.filter(left_subjecttype=self.id) nbh['right_subjecttype_of'] = Relationtype.objects.filter(right_subjecttype=self.id) nbh['attributetypes'] = Attributetype.objects.filter(subjecttype=self.id) @@ -648,7 +648,7 @@ class Metatype(Node): # generate ids and names of children nbh['contains_subtypes'] = self.children.get_query_set() contains_members_list = [] - for each in self.nodetypes.all(): + for each in self.nodetypes_published(): contains_members_list.append('%s' % (each.get_absolute_url(), each.title)) nbh['contains_members'] = contains_members_list nbh['left_subjecttype_of'] = Relationtype.objects.filter(left_subjecttype=self.id) @@ -663,7 +663,7 @@ class Metatype(Node): def tree_path(self): """Return metatype's tree path, by its ancestors""" if self.parent: - return '%s/%s' % (self.parent.tree_path, self.slug) + return u'%s/%s' % (self.parent.tree_path, self.slug) return self.slug def __unicode__(self): @@ -673,8 +673,8 @@ class Metatype(Node): def composed_sentence(self): "composes the relation as a sentence in triple format." if self.parent: - return '%s is a kind of %s' % (self.title, self.parent.tree_path) - return '%s is a root node' % (self.slug) + return u'%s is a kind of %s' % (self.title, self.parent.tree_path) + return u'%s is a root node' % (self.slug) @models.permalink @@ -968,15 +968,15 @@ class Nodetype(Node): def tree_path(self): """Return nodetype's tree path, by its ancestors""" if self.parent: - return '%s/%s' % (self.parent.tree_path, self.slug) + return u'%s/%s' % (self.parent.tree_path, self.slug) return self.slug @property def tree_path_sentence(self): """ Return the parent of the nodetype in a triple form """ if self.parent: - return '%s is a kind of %s' % (self.title, self.parent.tree_path) - return '%s is a root node' % (self.title) + return u'%s is a kind of %s' % (self.title, self.parent.tree_path) + return u'%s is a root node' % (self.title) @property @@ -1304,22 +1304,22 @@ class Nodetype(Node): if self.metatypes.count: for each in self.metatypes.all(): - return '%s is a member of metatype %s' % (self.title, each) - return '%s is not a fully defined name, consider making it a member of a suitable metatype' % (self.title) + return u'%s is a member of metatype %s' % (self.title, each) + return u'%s is not a fully defined name, consider making it a member of a suitable metatype' % (self.title) @property def subtypeof_sentence(self): "composes the relation as a sentence in triple format." if self.parent: - return '%s is a subtype of %s' % (self.title, self.parent.tree_path) - return '%s is a root node' % (self.title) + return u'%s is a subtype of %s' % (self.title, self.parent.tree_path) + return u'%s is a root node' % (self.title) composed_sentence = property(subtypeof_sentence) def subtypeof(self): "retuns the parent nodetype." if self.parent: - return '%s' % (self.parent.tree_path) + return u'%s' % (self.parent.tree_path) return None @models.permalink @@ -1723,12 +1723,12 @@ class Relation(Edge): @property def composed_sentence(self): "composes the relation as a sentence in a triple format." - return '%s %s %s %s %s %s' % (self.left_subject_scope, self.left_subject, self.relationtype_scope, self.relationtype, self.right_subject_scope, self.right_subject) + return u'%s %s %s %s %s %s' % (self.left_subject_scope, self.left_subject, self.relationtype_scope, self.relationtype, self.right_subject_scope, self.right_subject) @property def inversed_sentence(self): "composes the inverse relation as a sentence in a triple format." - return '%s %s %s %s %s' % (self.objectScope, self.right_subject, self.relationtype.inverse, self.left_subject_scope, self.left_subject ) + return u'%s %s %s %s %s' % (self.objectScope, self.right_subject, self.relationtype.inverse, self.left_subject_scope, self.left_subject ) @property def key_value(self): @@ -1745,14 +1745,14 @@ class Relation(Edge): if self.relationtype: # for relation in self.relationtype(): - return '%s %s %s' % (self.left_subject,self.relationtype,self.right_subject ) + return u'%s %s %s' % (self.left_subject,self.relationtype,self.right_subject ) @property def partial_composition(self): ''' function that composes the right_subject and relation name, as in "x as a friend", "y as a sibling" ''' - return '%s as a %s' % (self.right_subject, self.relationtype) + return u'%s as a %s' % (self.right_subject, self.relationtype) # Save for Relation @@ -1816,21 +1816,21 @@ class Attribute(Edge): ''' composes the attribution as a sentence in a triple format. ''' - return '%s %s has %s %s %s %s' % (self.subject_scope, self.subject, self.attributetype_scope, self.attributetype, self.value_scope, self.svalue) + return u'%s %s has %s %s %s %s' % (self.subject_scope, self.subject, self.attributetype_scope, self.attributetype, self.value_scope, self.svalue) @property def composed_attribution(self): ''' composes a name to the attribute ''' - return 'the %s of %s is %s' % (self.attributetype, self.subject, self.svalue) + return u'the %s of %s is %s' % (self.attributetype, self.subject, self.svalue) @property def partial_composition(self): ''' function that composes the value and attribute name, as in "red as color", "4 as length" ''' - return '%s as %s' % (self.svalue, self.attributetype) + return u'%s as %s' % (self.svalue, self.attributetype) def subject_filter(self,attr): @@ -2247,7 +2247,7 @@ class AttributeSpecification(Node): subjects = u'' for each in self.subjects.all(): subjects = subjects + each.title + ' ' - return 'the %s of %s' % (self.attributetype, subjects) + return u'the %s of %s' % (self.attributetype, subjects) def __unicode__(self): @@ -2288,7 +2288,7 @@ class RelationSpecification(Node): subjects = u'' for each in self.subjects.all(): subjects = subjects + each.title + ' ' - return 'the %s of %s' % (self.relationtype, subjects) + return u'the %s of %s' % (self.relationtype, subjects) def __unicode__(self): return self.composed_subject @@ -2330,7 +2330,7 @@ class NodeSpecification(Node): attributes = u'' for each in self.attributes.all(): attributes = attributes + each.partial_composition + ', ' - return 'the %s with %s, %s' % (self.subject, self.relations, self.attributes) + return u'the %s with %s, %s' % (self.subject, self.relations, self.attributes) def __unicode__(self): return self.composed_subject @@ -2369,7 +2369,7 @@ class Expression(Node): @property def composed_sentence(self): "composes the relation as a sentence in a triple format." - return '%s %s %s' % (self.left_term, self.relationtype, self.right_term) + return u'%s %s %s' % (self.left_term, self.relationtype, self.right_term) class Meta: -- cgit v1.1 From ccd58321500b40ddeed94a9016e7f97fa0731bb2 Mon Sep 17 00:00:00 2001 From: met2012 Date: Fri, 25 May 2012 17:19:42 +0530 Subject: Return string converted to unicode.Minor changes in Metatype class --- gstudio/models.py | 1 + 1 file changed, 1 insertion(+) (limited to 'gstudio/models.py') diff --git a/gstudio/models.py b/gstudio/models.py index 7b1093b..18ecf46 100644 --- a/gstudio/models.py +++ b/gstudio/models.py @@ -65,6 +65,7 @@ + """Super models of Gstudio """ import warnings -- cgit v1.1