diff options
46 files changed, 3779 insertions, 5359 deletions
diff --git a/demo/demo.db-old b/demo/demo.db-old Binary files differdeleted file mode 100644 index 76a326ba..00000000 --- a/demo/demo.db-old +++ /dev/null diff --git a/demo/init.py b/demo/init.py deleted file mode 100644 index 3df8dfc2..00000000 --- a/demo/init.py +++ /dev/null @@ -1,17 +0,0 @@ -from gstudio.models import * -from objectapp.models import * -from reversion.models import * - -mts = Metatype.objects.all() -ots = Objecttype.objects.all() -ot = Objecttype.objects.get(title='person') -ot2 = Objecttype.objects.get(title='city') -ot3 = Objecttype.objects.get(title='country') -ot4 = Objecttype.objects.get(title='place') -rts = Relationtype.objects.all() -rt1 = Relationtype.objects.get(title='capital of') -rs= Relation.objects.all() -#r1 = Relation.objects.get(relationtype=rt1.id) -at1 = Attributetype.objects.get(title='population') -o =Gbobject.objects.get(title='Mumbai') -a = Attribute.objects.all() diff --git a/demo/rdfstore/__db.001 b/demo/rdfstore/__db.001 Binary files differdeleted file mode 100644 index c30dd62f..00000000 --- a/demo/rdfstore/__db.001 +++ /dev/null diff --git a/demo/rdfstore/__db.002 b/demo/rdfstore/__db.002 Binary files differdeleted file mode 100644 index 12a404df..00000000 --- a/demo/rdfstore/__db.002 +++ /dev/null diff --git a/demo/rdfstore/__db.003 b/demo/rdfstore/__db.003 Binary files differdeleted file mode 100644 index 7599b34a..00000000 --- a/demo/rdfstore/__db.003 +++ /dev/null diff --git a/demo/rdfstore/__db.004 b/demo/rdfstore/__db.004 Binary files differdeleted file mode 100644 index f5c6f0d2..00000000 --- a/demo/rdfstore/__db.004 +++ /dev/null diff --git a/demo/rdfstore/c^o^s^p^ b/demo/rdfstore/c^o^s^p^ Binary files differdeleted file mode 100644 index 298ca221..00000000 --- a/demo/rdfstore/c^o^s^p^ +++ /dev/null diff --git a/demo/rdfstore/c^p^o^s^ b/demo/rdfstore/c^p^o^s^ Binary files differdeleted file mode 100644 index 4e2d9397..00000000 --- a/demo/rdfstore/c^p^o^s^ +++ /dev/null diff --git a/demo/rdfstore/c^s^p^o^ b/demo/rdfstore/c^s^p^o^ Binary files differdeleted file mode 100644 index 5eb631cf..00000000 --- a/demo/rdfstore/c^s^p^o^ +++ /dev/null diff --git a/demo/rdfstore/contexts b/demo/rdfstore/contexts Binary files differdeleted file mode 100644 index 8063f531..00000000 --- a/demo/rdfstore/contexts +++ /dev/null diff --git a/demo/rdfstore/i2k b/demo/rdfstore/i2k Binary files differdeleted file mode 100644 index bf455a4c..00000000 --- a/demo/rdfstore/i2k +++ /dev/null diff --git a/demo/rdfstore/k2i b/demo/rdfstore/k2i Binary files differdeleted file mode 100644 index 637056d4..00000000 --- a/demo/rdfstore/k2i +++ /dev/null diff --git a/demo/rdfstore/namespace b/demo/rdfstore/namespace Binary files differdeleted file mode 100644 index 1bfa2de8..00000000 --- a/demo/rdfstore/namespace +++ /dev/null diff --git a/demo/rdfstore/prefix b/demo/rdfstore/prefix Binary files differdeleted file mode 100644 index 55593176..00000000 --- a/demo/rdfstore/prefix +++ /dev/null diff --git a/demo/sampledata.json b/demo/sampledata.json deleted file mode 100644 index ccb4fedc..00000000 --- a/demo/sampledata.json +++ /dev/null @@ -1 +0,0 @@ -[{"pk": 1, "model": "gstudio.nid", "fields": {"title": "person"}}, {"pk": 2, "model": "gstudio.nid", "fields": {"title": "concept class"}}, {"pk": 3, "model": "gstudio.nid", "fields": {"title": "place"}}, {"pk": 4, "model": "gstudio.nid", "fields": {"title": "country"}}, {"pk": 5, "model": "gstudio.nid", "fields": {"title": "city"}}, {"pk": 6, "model": "gstudio.nid", "fields": {"title": "capital of"}}, {"pk": 7, "model": "gstudio.nid", "fields": {"title": "lives in"}}, {"pk": 8, "model": "gstudio.nid", "fields": {"title": "Charles Darwin"}}, {"pk": 9, "model": "gstudio.nid", "fields": {"title": "India"}}, {"pk": 10, "model": "gstudio.nid", "fields": {"title": "Mumbai"}}, {"pk": 11, "model": "gstudio.nid", "fields": {"title": "New Delhi"}}, {"pk": 12, "model": "gstudio.nid", "fields": {"title": " New Delhi capital of India"}}, {"pk": 13, "model": "gstudio.nid", "fields": {"title": "Nagarjuna"}}, {"pk": 14, "model": "gstudio.nid", "fields": {"title": " Nagarjuna mostly lives in Mumbai"}}, {"pk": 15, "model": "gstudio.nid", "fields": {"title": "population"}}, {"pk": 16, "model": "gstudio.nid", "fields": {"title": "lived in"}}, {"pk": 17, "model": "gstudio.nid", "fields": {"title": "London"}}, {"pk": 18, "model": "gstudio.nid", "fields": {"title": " Charles Darwin lived in several locations of London"}}, {"pk": 19, "model": "gstudio.nid", "fields": {"title": "the population of India is 1210193422"}}, {"pk": 20, "model": "gstudio.nid", "fields": {"title": "the population of Mumbai is 20245000"}}, {"pk": 21, "model": "gstudio.nid", "fields": {"title": "the population of London is 7825200"}}, {"pk": 22, "model": "gstudio.nid", "fields": {"title": "times"}}, {"pk": 23, "model": "gstudio.nid", "fields": {"title": " the population of Mumbai is 20245000 three times more than the population of London is 7825200"}}, {"pk": 24, "model": "gstudio.nid", "fields": {"title": "geographical collection"}}, {"pk": 25, "model": "gstudio.nid", "fields": {"title": "geographical facts of India"}}, {"pk": 26, "model": "gstudio.nid", "fields": {"title": "population change"}}, {"pk": 27, "model": "gstudio.nid", "fields": {"title": "the population of Mumbai is 21245000"}}, {"pk": 28, "model": "gstudio.nid", "fields": {"title": "population change of mumbai"}}, {"pk": 1, "model": "gstudio.node", "fields": {"rating_score": 0, "altnames": "human being", "plural": "pesons", "rating_votes": 0}}, {"pk": 2, "model": "gstudio.node", "fields": {"rating_score": 0, "altnames": "abstract term", "plural": null, "rating_votes": 0}}, {"pk": 3, "model": "gstudio.node", "fields": {"rating_score": 0, "altnames": "location", "plural": "places", "rating_votes": 0}}, {"pk": 4, "model": "gstudio.node", "fields": {"rating_score": 0, "altnames": "nation", "plural": "countries", "rating_votes": 0}}, {"pk": 5, "model": "gstudio.node", "fields": {"rating_score": 0, "altnames": "metropolis", "plural": "cities", "rating_votes": 0}}, {"pk": 6, "model": "gstudio.node", "fields": {"rating_score": 0, "altnames": "", "plural": null, "rating_votes": 0}}, {"pk": 7, "model": "gstudio.node", "fields": {"rating_score": 0, "altnames": "resides in", "plural": null, "rating_votes": 0}}, {"pk": 8, "model": "gstudio.node", "fields": {"rating_score": 0, "altnames": "", "plural": null, "rating_votes": 0}}, {"pk": 9, "model": "gstudio.node", "fields": {"rating_score": 0, "altnames": "Bharat", "plural": null, "rating_votes": 0}}, {"pk": 10, "model": "gstudio.node", "fields": {"rating_score": 0, "altnames": "", "plural": null, "rating_votes": 0}}, {"pk": 11, "model": "gstudio.node", "fields": {"rating_score": 0, "altnames": "", "plural": null, "rating_votes": 0}}, {"pk": 13, "model": "gstudio.node", "fields": {"rating_score": 0, "altnames": "", "plural": null, "rating_votes": 0}}, {"pk": 15, "model": "gstudio.node", "fields": {"rating_score": 0, "altnames": "", "plural": null, "rating_votes": 0}}, {"pk": 16, "model": "gstudio.node", "fields": {"rating_score": 0, "altnames": "had home in", "plural": null, "rating_votes": 0}}, {"pk": 17, "model": "gstudio.node", "fields": {"rating_score": 0, "altnames": "", "plural": null, "rating_votes": 0}}, {"pk": 22, "model": "gstudio.node", "fields": {"rating_score": 0, "altnames": "", "plural": null, "rating_votes": 0}}, {"pk": 24, "model": "gstudio.node", "fields": {"rating_score": 0, "altnames": "", "plural": null, "rating_votes": 0}}, {"pk": 25, "model": "gstudio.node", "fields": {"rating_score": 0, "altnames": "", "plural": null, "rating_votes": 0}}, {"pk": 26, "model": "gstudio.node", "fields": {"rating_score": 0, "altnames": "", "plural": null, "rating_votes": 0}}, {"pk": 28, "model": "gstudio.node", "fields": {"rating_score": 0, "altnames": "", "plural": null, "rating_votes": 0}}, {"pk": 12, "model": "gstudio.edge", "fields": {}}, {"pk": 14, "model": "gstudio.edge", "fields": {}}, {"pk": 18, "model": "gstudio.edge", "fields": {}}, {"pk": 19, "model": "gstudio.edge", "fields": {}}, {"pk": 20, "model": "gstudio.edge", "fields": {}}, {"pk": 21, "model": "gstudio.edge", "fields": {}}, {"pk": 23, "model": "gstudio.edge", "fields": {}}, {"pk": 27, "model": "gstudio.edge", "fields": {}}, {"pk": 2, "model": "gstudio.metatype", "fields": {"rght": 2, "description": "the class of all concepts", "parent": null, "level": 0, "lft": 1, "tree_id": 1, "slug": "concept-class"}}, {"pk": 26, "model": "gstudio.nodetype", "fields": {"rght": 2, "posteriornodes": [], "image": "", "metatypes": [], "excerpt": "", "creation_date": "2011-12-07 05:41:16", "lft": 1, "featured": false, "pingback_enabled": true, "priornodes": [], "comment_enabled": true, "login_required": false, "sites": [1], "last_update": "2011-12-07 05:45:08", "content": "", "template": "gstudio/nodetype_detail.html", "tree_id": 5, "end_publication": "2042-03-15 00:00:00", "start_publication": "2011-12-07 05:41:16", "status": 2, "parent": null, "tags": "", "authors": [1], "password": "", "slug": "population-change", "level": 0}}, {"pk": 24, "model": "gstudio.nodetype", "fields": {"rght": 2, "posteriornodes": [], "image": "", "metatypes": [], "excerpt": "", "creation_date": "2011-12-07 04:34:03", "lft": 1, "featured": false, "pingback_enabled": true, "priornodes": [], "comment_enabled": true, "login_required": false, "sites": [1], "last_update": "2011-12-07 04:36:18", "content": "", "template": "gstudio/nodetype_detail.html", "tree_id": 4, "end_publication": "2042-03-15 00:00:00", "start_publication": "2011-12-07 04:34:03", "status": 2, "parent": null, "tags": "", "authors": [1], "password": "", "slug": "geographical-collection", "level": 0}}, {"pk": 22, "model": "gstudio.nodetype", "fields": {"rght": 2, "posteriornodes": [], "image": "", "metatypes": [], "excerpt": "", "creation_date": "2011-12-07 04:22:38", "lft": 1, "featured": false, "pingback_enabled": true, "priornodes": [], "comment_enabled": true, "login_required": false, "sites": [], "last_update": "2011-12-07 04:27:49", "content": "", "template": "gstudio/nodetype_detail.html", "tree_id": 3, "end_publication": "2042-03-15 00:00:00", "start_publication": "2011-12-07 04:22:38", "status": 2, "parent": null, "tags": "", "authors": [1], "password": "", "slug": "times", "level": 0}}, {"pk": 16, "model": "gstudio.nodetype", "fields": {"rght": 3, "posteriornodes": [], "image": "", "metatypes": [], "excerpt": "", "creation_date": "2011-12-07 04:08:04", "lft": 2, "featured": false, "pingback_enabled": true, "priornodes": [], "comment_enabled": true, "login_required": false, "sites": [], "last_update": "2011-12-07 04:09:46", "content": "", "template": "gstudio/nodetype_detail.html", "tree_id": 2, "end_publication": "2042-03-15 00:00:00", "start_publication": "2011-12-07 04:08:04", "status": 2, "parent": 7, "tags": "", "authors": [1], "password": "", "slug": "lived", "level": 1}}, {"pk": 15, "model": "gstudio.nodetype", "fields": {"rght": 2, "posteriornodes": [], "image": "", "metatypes": [], "excerpt": "", "creation_date": "2011-12-07 04:03:48", "lft": 1, "featured": false, "pingback_enabled": true, "priornodes": [], "comment_enabled": true, "login_required": false, "sites": [1], "last_update": "2011-12-07 04:07:31", "content": "", "template": "gstudio/nodetype_detail.html", "tree_id": 1, "end_publication": "2042-03-15 00:00:00", "start_publication": "2011-12-07 04:03:48", "status": 2, "parent": null, "tags": "", "authors": [1], "password": "", "slug": "population", "level": 0}}, {"pk": 7, "model": "gstudio.nodetype", "fields": {"rght": 2, "posteriornodes": [], "image": "", "metatypes": [], "excerpt": "", "creation_date": "2011-12-07 02:45:01", "lft": 1, "featured": false, "pingback_enabled": true, "priornodes": [], "comment_enabled": true, "login_required": false, "sites": [], "last_update": "2011-12-07 02:46:40", "content": "", "template": "gstudio/nodetype_detail.html", "tree_id": 2, "end_publication": "2042-03-15 00:00:00", "start_publication": "2011-12-07 02:45:01", "status": 2, "parent": null, "tags": "", "authors": [1], "password": "", "slug": "lives", "level": 0}}, {"pk": 6, "model": "gstudio.nodetype", "fields": {"rght": 2, "posteriornodes": [], "image": "", "metatypes": [], "excerpt": "", "creation_date": "2011-12-07 02:16:54", "lft": 1, "featured": false, "pingback_enabled": true, "priornodes": [], "comment_enabled": true, "login_required": false, "sites": [], "last_update": "2011-12-07 02:19:08", "content": "", "template": "gstudio/nodetype_detail.html", "tree_id": 1, "end_publication": "2042-03-15 00:00:00", "start_publication": "2011-12-07 02:16:54", "status": 2, "parent": null, "tags": "", "authors": [1], "password": "", "slug": "capital-of", "level": 0}}, {"pk": 5, "model": "gstudio.nodetype", "fields": {"rght": 3, "posteriornodes": [], "image": "", "metatypes": [2], "excerpt": "", "creation_date": "2011-12-07 02:10:54", "lft": 2, "featured": false, "pingback_enabled": true, "priornodes": [], "comment_enabled": true, "login_required": false, "sites": [1], "last_update": "2011-12-07 02:11:24", "content": "", "template": "gstudio/nodetype_detail.html", "tree_id": 2, "end_publication": "2042-03-15 00:00:00", "start_publication": "2011-12-07 02:10:54", "status": 2, "parent": 3, "tags": "", "authors": [1], "password": "", "slug": "city", "level": 1}}, {"pk": 4, "model": "gstudio.nodetype", "fields": {"rght": 5, "posteriornodes": [], "image": "", "metatypes": [2], "excerpt": "", "creation_date": "2011-12-07 02:08:37", "lft": 4, "featured": false, "pingback_enabled": true, "priornodes": [], "comment_enabled": true, "login_required": false, "sites": [1], "last_update": "2011-12-07 02:10:44", "content": "", "template": "gstudio/nodetype_detail.html", "tree_id": 2, "end_publication": "2042-03-15 00:00:00", "start_publication": "2011-12-07 02:08:37", "status": 2, "parent": 3, "tags": "", "authors": [1], "password": "", "slug": "country", "level": 1}}, {"pk": 3, "model": "gstudio.nodetype", "fields": {"rght": 6, "posteriornodes": [], "image": "", "metatypes": [2], "excerpt": "", "creation_date": "2011-12-07 02:07:58", "lft": 1, "featured": false, "pingback_enabled": true, "priornodes": [], "comment_enabled": true, "login_required": false, "sites": [1], "last_update": "2011-12-07 02:08:28", "content": "", "template": "gstudio/nodetype_detail.html", "tree_id": 2, "end_publication": "2042-03-15 00:00:00", "start_publication": "2011-12-07 02:07:58", "status": 2, "parent": null, "tags": "", "authors": [1], "password": "", "slug": "place", "level": 0}}, {"pk": 1, "model": "gstudio.nodetype", "fields": {"rght": 2, "posteriornodes": [], "image": "", "metatypes": [2], "excerpt": "", "creation_date": "2011-12-07 01:38:11", "lft": 1, "featured": false, "pingback_enabled": true, "priornodes": [], "comment_enabled": true, "login_required": false, "sites": [1], "last_update": "2011-12-07 02:07:53", "content": "", "template": "gstudio/nodetype_detail.html", "tree_id": 1, "end_publication": "2042-03-15 00:00:00", "start_publication": "2011-12-07 01:38:11", "status": 2, "parent": null, "tags": "", "authors": [1], "password": "", "slug": "person", "level": 0}}, {"pk": 5, "model": "gstudio.objecttype", "fields": {"priornodes": [], "posteriornodes": [], "metatypes": [2], "sites": [1], "lft": 2, "authors": [1]}}, {"pk": 4, "model": "gstudio.objecttype", "fields": {"priornodes": [], "posteriornodes": [], "metatypes": [2], "sites": [1], "lft": 2, "authors": [1]}}, {"pk": 3, "model": "gstudio.objecttype", "fields": {"priornodes": [], "posteriornodes": [], "metatypes": [2], "sites": [1], "lft": 1, "authors": [1]}}, {"pk": 1, "model": "gstudio.objecttype", "fields": {"priornodes": [], "posteriornodes": [], "metatypes": [2], "sites": [1], "lft": 1, "authors": [1]}}, {"pk": 22, "model": "gstudio.edgetype", "fields": {"priornodes": [], "authors": [1], "posteriornodes": [], "sites": [], "metatypes": []}}, {"pk": 16, "model": "gstudio.edgetype", "fields": {"priornodes": [], "authors": [1], "posteriornodes": [], "sites": [], "metatypes": []}}, {"pk": 15, "model": "gstudio.edgetype", "fields": {"priornodes": [], "authors": [1], "posteriornodes": [], "sites": [1], "metatypes": []}}, {"pk": 7, "model": "gstudio.edgetype", "fields": {"priornodes": [], "authors": [1], "posteriornodes": [], "sites": [], "metatypes": []}}, {"pk": 6, "model": "gstudio.edgetype", "fields": {"priornodes": [], "authors": [1], "posteriornodes": [], "sites": [], "metatypes": []}}, {"pk": 22, "model": "gstudio.relationtype", "fields": {"rght": 2, "inverse": "portions of", "cardinalityLeft": null, "isTransitive": false, "cardinalityRight": null, "level": 0, "isSymmetrical": false, "sites": [], "metatypes": [], "lft": 1, "posteriornodes": [], "subjecttypeLeft": 15, "priornodes": [], "subjecttypeRight": 15, "applicablenodetypes1": "OT", "authors": [1], "applicablenodetypes2": "OT", "tree_id": 3, "isReflexive": false}}, {"pk": 16, "model": "gstudio.relationtype", "fields": {"rght": 3, "inverse": "had resident", "cardinalityLeft": null, "isTransitive": null, "cardinalityRight": null, "level": 1, "isSymmetrical": null, "sites": [], "metatypes": [], "lft": 2, "posteriornodes": [], "subjecttypeLeft": 1, "priornodes": [], "subjecttypeRight": 3, "applicablenodetypes1": "OT", "authors": [1], "applicablenodetypes2": "OT", "tree_id": 2, "isReflexive": null}}, {"pk": 7, "model": "gstudio.relationtype", "fields": {"rght": 4, "inverse": "living place of", "cardinalityLeft": null, "isTransitive": null, "cardinalityRight": null, "level": 0, "isSymmetrical": null, "sites": [], "metatypes": [], "lft": 1, "posteriornodes": [], "subjecttypeLeft": 1, "priornodes": [], "subjecttypeRight": 3, "applicablenodetypes1": "OT", "authors": [1], "applicablenodetypes2": "OT", "tree_id": 2, "isReflexive": null}}, {"pk": 6, "model": "gstudio.relationtype", "fields": {"rght": 2, "inverse": "has capital", "cardinalityLeft": 1, "isTransitive": false, "cardinalityRight": 1, "level": 0, "isSymmetrical": false, "sites": [], "metatypes": [], "lft": 1, "posteriornodes": [], "subjecttypeLeft": 5, "priornodes": [], "subjecttypeRight": 4, "applicablenodetypes1": "OT", "authors": [1], "applicablenodetypes2": "OT", "tree_id": 1, "isReflexive": false}}, {"pk": 15, "model": "gstudio.attributetype", "fields": {"rght": 2, "posteriornodes": [], "validators": [], "metatypes": [], "lft": 1, "max_digits": null, "blank": null, "help_text": "", "null": null, "priornodes": [], "subjecttype": 3, "upload_to": "", "sites": [1], "label": null, "auto_now": null, "tree_id": 1, "verbose_name": "", "verify_exists": null, "dataType": "6", "editable": null, "applicablenodetypes": "OT", "authors": [1], "auto_now_add": null, "path": "", "unique": null, "min_length": null, "decimal_places": null, "level": 0, "default": null, "required": null}}, {"pk": 12, "model": "gstudio.relation", "fields": {"subject1Scope": "", "relationTypeScope": "", "subject1": 11, "subject2": 9, "relationtype": 6, "objectScope": ""}}, {"pk": 14, "model": "gstudio.relation", "fields": {"subject1Scope": "", "relationTypeScope": "mostly", "subject1": 13, "subject2": 10, "relationtype": 7, "objectScope": ""}}, {"pk": 18, "model": "gstudio.relation", "fields": {"subject1Scope": "", "relationTypeScope": "", "subject1": 8, "subject2": 17, "relationtype": 16, "objectScope": "several locations of"}}, {"pk": 23, "model": "gstudio.relation", "fields": {"subject1Scope": "", "relationTypeScope": "three", "subject1": 20, "subject2": 21, "relationtype": 22, "objectScope": "more than"}}, {"pk": 19, "model": "gstudio.attribute", "fields": {"svalue": "1210193422", "attributeTypeScope": "", "valueScope": "", "attributeType": 15, "subjectScope": "", "subject": 9}}, {"pk": 20, "model": "gstudio.attribute", "fields": {"svalue": "20245000", "attributeTypeScope": "", "valueScope": "", "attributeType": 15, "subjectScope": "", "subject": 10}}, {"pk": 21, "model": "gstudio.attribute", "fields": {"svalue": "7825200", "attributeTypeScope": "", "valueScope": "", "attributeType": 15, "subjectScope": "", "subject": 17}}, {"pk": 27, "model": "gstudio.attribute", "fields": {"svalue": "21245000", "attributeTypeScope": "", "valueScope": "", "attributeType": 15, "subjectScope": "", "subject": 10}}, {"pk": 26, "model": "gstudio.processtype", "fields": {"priornodes": [], "posteriornodes": [], "relationtype_set": [], "metatypes": [], "sites": [1], "attributetype_set": [15], "lft": 1, "authors": [1]}}, {"pk": 24, "model": "gstudio.systemtype", "fields": {"priornodes": [], "posteriornodes": [], "relationtype_set": [], "metatype_set": [], "nodetype_set": [], "metatypes": [], "sites": [1], "processtype_set": [], "attributetype_set": [], "lft": 1, "authors": [1]}}, {"pk": 28, "model": "objectapp.gbobject", "fields": {"status": 2, "priornodes": [], "password": "", "end_publication": "2042-03-15 00:00:00", "posteriornodes": [], "template": "objectapp/gbobject_detail.html", "comment_enabled": true, "tags": "", "image": "", "login_required": false, "excerpt": "", "sites": [1], "objecttypes": [], "creation_date": "2011-12-07 05:47:16", "content": "", "featured": false, "start_publication": "2011-12-07 05:47:16", "pingback_enabled": true, "authors": [1], "last_update": "2011-12-07 05:48:14", "slug": "population-change-mumbai"}}, {"pk": 25, "model": "objectapp.gbobject", "fields": {"status": 2, "priornodes": [], "password": "", "end_publication": "2042-03-15 00:00:00", "posteriornodes": [], "template": "objectapp/gbobject_detail.html", "comment_enabled": true, "tags": "", "image": "", "login_required": false, "excerpt": "", "sites": [1], "objecttypes": [], "creation_date": "2011-12-07 04:36:29", "content": "", "featured": false, "start_publication": "2011-12-07 04:36:29", "pingback_enabled": true, "authors": [1], "last_update": "2011-12-07 04:38:45", "slug": "geographical-facts-india"}}, {"pk": 17, "model": "objectapp.gbobject", "fields": {"status": 2, "priornodes": [], "password": "", "end_publication": "2042-03-15 00:00:00", "posteriornodes": [], "template": "objectapp/gbobject_detail.html", "comment_enabled": true, "tags": "", "image": "", "login_required": false, "excerpt": "", "sites": [1], "objecttypes": [5], "creation_date": "2011-12-07 04:11:03", "content": "", "featured": false, "start_publication": "2011-12-07 04:11:03", "pingback_enabled": true, "authors": [1], "last_update": "2011-12-07 04:11:34", "slug": "london"}}, {"pk": 13, "model": "objectapp.gbobject", "fields": {"status": 2, "priornodes": [], "password": "", "end_publication": "2042-03-15 00:00:00", "posteriornodes": [], "template": "objectapp/gbobject_detail.html", "comment_enabled": true, "tags": "", "image": "", "login_required": false, "excerpt": "", "sites": [1], "objecttypes": [1], "creation_date": "2011-12-07 02:53:25", "content": "", "featured": false, "start_publication": "2011-12-07 02:53:25", "pingback_enabled": true, "authors": [1], "last_update": "2011-12-07 02:54:08", "slug": "nagarjuna"}}, {"pk": 11, "model": "objectapp.gbobject", "fields": {"status": 2, "priornodes": [], "password": "", "end_publication": "2042-03-15 00:00:00", "posteriornodes": [], "template": "objectapp/gbobject_detail.html", "comment_enabled": true, "tags": "", "image": "", "login_required": false, "excerpt": "", "sites": [1], "objecttypes": [5], "creation_date": "2011-12-07 02:51:24", "content": "", "featured": false, "start_publication": "2011-12-07 02:51:24", "pingback_enabled": true, "authors": [1], "last_update": "2011-12-07 02:51:40", "slug": "new-delhi"}}, {"pk": 10, "model": "objectapp.gbobject", "fields": {"status": 2, "priornodes": [], "password": "", "end_publication": "2042-03-15 00:00:00", "posteriornodes": [], "template": "objectapp/gbobject_detail.html", "comment_enabled": true, "tags": "", "image": "", "login_required": false, "excerpt": "", "sites": [1], "objecttypes": [5], "creation_date": "2011-12-07 02:50:55", "content": "", "featured": false, "start_publication": "2011-12-07 02:50:55", "pingback_enabled": true, "authors": [1], "last_update": "2011-12-07 02:51:11", "slug": "mu"}}, {"pk": 9, "model": "objectapp.gbobject", "fields": {"status": 2, "priornodes": [], "password": "", "end_publication": "2042-03-15 00:00:00", "posteriornodes": [], "template": "objectapp/gbobject_detail.html", "comment_enabled": true, "tags": "", "image": "", "login_required": false, "excerpt": "", "sites": [1], "objecttypes": [4], "creation_date": "2011-12-07 02:49:25", "content": "", "featured": false, "start_publication": "2011-12-07 02:49:25", "pingback_enabled": true, "authors": [1], "last_update": "2011-12-07 02:50:25", "slug": "india"}}, {"pk": 8, "model": "objectapp.gbobject", "fields": {"status": 2, "priornodes": [], "password": "", "end_publication": "2042-03-15 00:00:00", "posteriornodes": [], "template": "objectapp/gbobject_detail.html", "comment_enabled": true, "tags": "", "image": "", "login_required": false, "excerpt": "", "sites": [1], "objecttypes": [1], "creation_date": "2011-12-07 02:47:35", "content": "", "featured": false, "start_publication": "2011-12-07 02:47:35", "pingback_enabled": true, "authors": [1], "last_update": "2011-12-07 02:48:29", "slug": "charles-darwin"}}, {"pk": 28, "model": "objectapp.process", "fields": {"priornodes": [], "poststate_relation_set": [], "posteriornodes": [], "objecttypes": [], "sites": [1], "poststate_attribute_set": [27], "priorstate_relation_set": [], "authors": [1], "processtypes": [26], "priorstate_attribute_set": [20]}}, {"pk": 25, "model": "objectapp.system", "fields": {"priornodes": [], "object_set": [11, 10, 9], "posteriornodes": [], "objecttypes": [], "sites": [1], "systemtypes": [24], "process_set": [], "attribute_set": [19, 20], "authors": [1], "system_set": [], "relation_set": [12, 23]}}, {"pk": 1, "model": "reversion.revision", "fields": {"comment": "Initial version.", "date_created": "2011-12-07 01:38:16", "manager_slug": "default", "user": 1}}, {"pk": 2, "model": "reversion.revision", "fields": {"comment": "Initial version.", "date_created": "2011-12-07 02:06:44", "manager_slug": "default", "user": 1}}, {"pk": 3, "model": "reversion.revision", "fields": {"comment": "Changed altnames, plural and metatypes.", "date_created": "2011-12-07 02:07:53", "manager_slug": "default", "user": 1}}, {"pk": 4, "model": "reversion.revision", "fields": {"comment": "Initial version.", "date_created": "2011-12-07 02:08:28", "manager_slug": "default", "user": 1}}, {"pk": 5, "model": "reversion.revision", "fields": {"comment": "Initial version.", "date_created": "2011-12-07 02:10:45", "manager_slug": "default", "user": 1}}, {"pk": 6, "model": "reversion.revision", "fields": {"comment": "Initial version.", "date_created": "2011-12-07 02:11:24", "manager_slug": "default", "user": 1}}, {"pk": 7, "model": "reversion.revision", "fields": {"comment": "Initial version.", "date_created": "2011-12-07 02:19:08", "manager_slug": "default", "user": 1}}, {"pk": 8, "model": "reversion.revision", "fields": {"comment": "Initial version.", "date_created": "2011-12-07 02:46:40", "manager_slug": "default", "user": 1}}, {"pk": 9, "model": "reversion.revision", "fields": {"comment": "Initial version.", "date_created": "2011-12-07 02:48:30", "manager_slug": "default", "user": 1}}, {"pk": 10, "model": "reversion.revision", "fields": {"comment": "Initial version.", "date_created": "2011-12-07 02:50:09", "manager_slug": "default", "user": 1}}, {"pk": 11, "model": "reversion.revision", "fields": {"comment": "Changed altnames.", "date_created": "2011-12-07 02:50:26", "manager_slug": "default", "user": 1}}, {"pk": 12, "model": "reversion.revision", "fields": {"comment": "Initial version.", "date_created": "2011-12-07 02:51:11", "manager_slug": "default", "user": 1}}, {"pk": 13, "model": "reversion.revision", "fields": {"comment": "Initial version.", "date_created": "2011-12-07 02:51:40", "manager_slug": "default", "user": 1}}, {"pk": 14, "model": "reversion.revision", "fields": {"comment": "Initial version.", "date_created": "2011-12-07 02:52:45", "manager_slug": "default", "user": 1}}, {"pk": 15, "model": "reversion.revision", "fields": {"comment": "Initial version.", "date_created": "2011-12-07 02:54:09", "manager_slug": "default", "user": 1}}, {"pk": 16, "model": "reversion.revision", "fields": {"comment": "Initial version.", "date_created": "2011-12-07 02:55:08", "manager_slug": "default", "user": 1}}, {"pk": 17, "model": "reversion.revision", "fields": {"comment": "Initial version.", "date_created": "2011-12-07 04:07:31", "manager_slug": "default", "user": 1}}, {"pk": 18, "model": "reversion.revision", "fields": {"comment": "Initial version.", "date_created": "2011-12-07 04:09:46", "manager_slug": "default", "user": 1}}, {"pk": 19, "model": "reversion.revision", "fields": {"comment": "Initial version.", "date_created": "2011-12-07 04:11:35", "manager_slug": "default", "user": 1}}, {"pk": 20, "model": "reversion.revision", "fields": {"comment": "Initial version.", "date_created": "2011-12-07 04:14:41", "manager_slug": "default", "user": 1}}, {"pk": 21, "model": "reversion.revision", "fields": {"comment": "Initial version.", "date_created": "2011-12-07 04:20:13", "manager_slug": "default", "user": 1}}, {"pk": 22, "model": "reversion.revision", "fields": {"comment": "Initial version.", "date_created": "2011-12-07 04:21:13", "manager_slug": "default", "user": 1}}, {"pk": 23, "model": "reversion.revision", "fields": {"comment": "Initial version.", "date_created": "2011-12-07 04:22:01", "manager_slug": "default", "user": 1}}, {"pk": 24, "model": "reversion.revision", "fields": {"comment": "Initial version.", "date_created": "2011-12-07 04:27:50", "manager_slug": "default", "user": 1}}, {"pk": 25, "model": "reversion.revision", "fields": {"comment": "Initial version.", "date_created": "2011-12-07 04:29:09", "manager_slug": "default", "user": 1}}, {"pk": 26, "model": "reversion.revision", "fields": {"comment": "Initial version.", "date_created": "2011-12-07 04:36:18", "manager_slug": "default", "user": 1}}, {"pk": 27, "model": "reversion.revision", "fields": {"comment": "Initial version.", "date_created": "2011-12-07 04:38:46", "manager_slug": "default", "user": 1}}, {"pk": 28, "model": "reversion.revision", "fields": {"comment": "Initial version.", "date_created": "2011-12-07 05:45:08", "manager_slug": "default", "user": 1}}, {"pk": 29, "model": "reversion.revision", "fields": {"comment": "Initial version.", "date_created": "2011-12-07 05:46:49", "manager_slug": "default", "user": 1}}, {"pk": 30, "model": "reversion.revision", "fields": {"comment": "Initial version.", "date_created": "2011-12-07 05:48:14", "manager_slug": "default", "user": 1}}, {"pk": 1, "model": "reversion.version", "fields": {"format": "json", "object_repr": "person", "object_id": "1", "content_type": 18, "object_id_int": 1, "type": 0, "serialized_data": "[{\"pk\": 1, \"model\": \"gstudio.objecttype\", \"fields\": {\"lft\": 1}}]", "revision": 1}}, {"pk": 2, "model": "reversion.version", "fields": {"format": "json", "object_repr": "concept class", "object_id": "2", "content_type": 16, "object_id_int": 2, "type": 0, "serialized_data": "[{\"pk\": 2, \"model\": \"gstudio.metatype\", \"fields\": {\"rght\": 2, \"description\": \"the class of all concepts\", \"parent\": null, \"level\": 0, \"lft\": 1, \"tree_id\": 1, \"slug\": \"concept-class\"}}]", "revision": 2}}, {"pk": 3, "model": "reversion.version", "fields": {"format": "json", "object_repr": "person", "object_id": "1", "content_type": 18, "object_id_int": 1, "type": 1, "serialized_data": "[{\"pk\": 1, \"model\": \"gstudio.objecttype\", \"fields\": {\"lft\": 1}}]", "revision": 3}}, {"pk": 4, "model": "reversion.version", "fields": {"format": "json", "object_repr": "place", "object_id": "3", "content_type": 18, "object_id_int": 3, "type": 0, "serialized_data": "[{\"pk\": 3, \"model\": \"gstudio.objecttype\", \"fields\": {\"lft\": 1}}]", "revision": 4}}, {"pk": 5, "model": "reversion.version", "fields": {"format": "json", "object_repr": "country", "object_id": "4", "content_type": 18, "object_id_int": 4, "type": 0, "serialized_data": "[{\"pk\": 4, \"model\": \"gstudio.objecttype\", \"fields\": {\"lft\": 2}}]", "revision": 5}}, {"pk": 6, "model": "reversion.version", "fields": {"format": "json", "object_repr": "city", "object_id": "5", "content_type": 18, "object_id_int": 5, "type": 0, "serialized_data": "[{\"pk\": 5, \"model\": \"gstudio.objecttype\", \"fields\": {\"lft\": 2}}]", "revision": 6}}, {"pk": 7, "model": "reversion.version", "fields": {"format": "json", "object_repr": "country", "object_id": "4", "content_type": 13, "object_id_int": 4, "type": 1, "serialized_data": "[{\"pk\": 4, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"country\"}}]", "revision": 7}}, {"pk": 8, "model": "reversion.version", "fields": {"format": "json", "object_repr": "city", "object_id": "5", "content_type": 13, "object_id_int": 5, "type": 1, "serialized_data": "[{\"pk\": 5, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"city\"}}]", "revision": 7}}, {"pk": 9, "model": "reversion.version", "fields": {"format": "json", "object_repr": "capital of", "object_id": "6", "content_type": 20, "object_id_int": 6, "type": 0, "serialized_data": "[{\"pk\": 6, \"model\": \"gstudio.relationtype\", \"fields\": {\"rght\": 2, \"inverse\": \"has capital\", \"cardinalityLeft\": 1, \"isTransitive\": false, \"cardinalityRight\": 1, \"level\": 0, \"isSymmetrical\": false, \"lft\": 1, \"subjecttypeLeft\": 5, \"subjecttypeRight\": 4, \"applicablenodetypes1\": \"OT\", \"applicablenodetypes2\": \"OT\", \"tree_id\": 1, \"isReflexive\": false}}]", "revision": 7}}, {"pk": 10, "model": "reversion.version", "fields": {"format": "json", "object_repr": "person", "object_id": "1", "content_type": 13, "object_id_int": 1, "type": 1, "serialized_data": "[{\"pk\": 1, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"person\"}}]", "revision": 8}}, {"pk": 11, "model": "reversion.version", "fields": {"format": "json", "object_repr": "place", "object_id": "3", "content_type": 13, "object_id_int": 3, "type": 1, "serialized_data": "[{\"pk\": 3, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"place\"}}]", "revision": 8}}, {"pk": 12, "model": "reversion.version", "fields": {"format": "json", "object_repr": "lives in", "object_id": "7", "content_type": 20, "object_id_int": 7, "type": 0, "serialized_data": "[{\"pk\": 7, \"model\": \"gstudio.relationtype\", \"fields\": {\"rght\": 2, \"inverse\": \"living place of\", \"cardinalityLeft\": null, \"isTransitive\": null, \"cardinalityRight\": null, \"level\": 0, \"isSymmetrical\": null, \"lft\": 1, \"subjecttypeLeft\": 1, \"subjecttypeRight\": 3, \"applicablenodetypes1\": \"OT\", \"applicablenodetypes2\": \"OT\", \"tree_id\": 2, \"isReflexive\": null}}]", "revision": 8}}, {"pk": 13, "model": "reversion.version", "fields": {"format": "json", "object_repr": "Charles Darwin", "object_id": "8", "content_type": 52, "object_id_int": 8, "type": 0, "serialized_data": "[{\"pk\": 8, \"model\": \"objectapp.gbobject\", \"fields\": {\"status\": 2, \"priornodes\": [], \"password\": \"\", \"end_publication\": \"2042-03-15 00:00:00\", \"posteriornodes\": [], \"template\": \"objectapp/gbobject_detail.html\", \"comment_enabled\": true, \"tags\": \"\", \"image\": \"\", \"login_required\": false, \"excerpt\": \"\", \"sites\": [], \"objecttypes\": [], \"creation_date\": \"2011-12-07 02:47:35\", \"content\": \"\", \"featured\": false, \"start_publication\": \"2011-12-07 02:47:35\", \"pingback_enabled\": true, \"authors\": [], \"last_update\": \"2011-12-07 02:48:29\", \"slug\": \"charles-darwin\"}}]", "revision": 9}}, {"pk": 14, "model": "reversion.version", "fields": {"format": "json", "object_repr": "person", "object_id": "1", "content_type": 17, "object_id_int": 1, "type": 1, "serialized_data": "[{\"pk\": 1, \"model\": \"gstudio.nodetype\", \"fields\": {\"rght\": 2, \"posteriornodes\": [], \"image\": \"\", \"metatypes\": [2], \"excerpt\": \"\", \"creation_date\": \"2011-12-07 01:38:11\", \"lft\": 1, \"featured\": false, \"pingback_enabled\": true, \"priornodes\": [], \"comment_enabled\": true, \"login_required\": false, \"sites\": [1], \"last_update\": \"2011-12-07 02:07:53\", \"content\": \"\", \"template\": \"gstudio/nodetype_detail.html\", \"tree_id\": 1, \"end_publication\": \"2042-03-15 00:00:00\", \"start_publication\": \"2011-12-07 01:38:11\", \"status\": 2, \"parent\": null, \"tags\": \"\", \"authors\": [1], \"password\": \"\", \"slug\": \"person\", \"level\": 0}}]", "revision": 9}}, {"pk": 15, "model": "reversion.version", "fields": {"format": "json", "object_repr": "concept class", "object_id": "2", "content_type": 16, "object_id_int": 2, "type": 1, "serialized_data": "[{\"pk\": 2, \"model\": \"gstudio.metatype\", \"fields\": {\"rght\": 2, \"description\": \"the class of all concepts\", \"parent\": null, \"level\": 0, \"lft\": 1, \"tree_id\": 1, \"slug\": \"concept-class\"}}]", "revision": 9}}, {"pk": 16, "model": "reversion.version", "fields": {"format": "json", "object_repr": "India", "object_id": "9", "content_type": 52, "object_id_int": 9, "type": 0, "serialized_data": "[{\"pk\": 9, \"model\": \"objectapp.gbobject\", \"fields\": {\"status\": 2, \"priornodes\": [], \"password\": \"\", \"end_publication\": \"2042-03-15 00:00:00\", \"posteriornodes\": [], \"template\": \"objectapp/gbobject_detail.html\", \"comment_enabled\": true, \"tags\": \"\", \"image\": \"\", \"login_required\": false, \"excerpt\": \"\", \"sites\": [], \"objecttypes\": [], \"creation_date\": \"2011-12-07 02:49:25\", \"content\": \"\", \"featured\": false, \"start_publication\": \"2011-12-07 02:49:25\", \"pingback_enabled\": true, \"authors\": [], \"last_update\": \"2011-12-07 02:50:09\", \"slug\": \"india\"}}]", "revision": 10}}, {"pk": 17, "model": "reversion.version", "fields": {"format": "json", "object_repr": "concept class", "object_id": "2", "content_type": 16, "object_id_int": 2, "type": 1, "serialized_data": "[{\"pk\": 2, \"model\": \"gstudio.metatype\", \"fields\": {\"rght\": 2, \"description\": \"the class of all concepts\", \"parent\": null, \"level\": 0, \"lft\": 1, \"tree_id\": 1, \"slug\": \"concept-class\"}}]", "revision": 10}}, {"pk": 18, "model": "reversion.version", "fields": {"format": "json", "object_repr": "place", "object_id": "3", "content_type": 17, "object_id_int": 3, "type": 1, "serialized_data": "[{\"pk\": 3, \"model\": \"gstudio.nodetype\", \"fields\": {\"rght\": 6, \"posteriornodes\": [], \"image\": \"\", \"metatypes\": [2], \"excerpt\": \"\", \"creation_date\": \"2011-12-07 02:07:58\", \"lft\": 1, \"featured\": false, \"pingback_enabled\": true, \"priornodes\": [], \"comment_enabled\": true, \"login_required\": false, \"sites\": [1], \"last_update\": \"2011-12-07 02:08:28\", \"content\": \"\", \"template\": \"gstudio/nodetype_detail.html\", \"tree_id\": 2, \"end_publication\": \"2042-03-15 00:00:00\", \"start_publication\": \"2011-12-07 02:07:58\", \"status\": 2, \"parent\": null, \"tags\": \"\", \"authors\": [1], \"password\": \"\", \"slug\": \"place\", \"level\": 0}}]", "revision": 10}}, {"pk": 19, "model": "reversion.version", "fields": {"format": "json", "object_repr": "country", "object_id": "4", "content_type": 17, "object_id_int": 4, "type": 1, "serialized_data": "[{\"pk\": 4, \"model\": \"gstudio.nodetype\", \"fields\": {\"rght\": 5, \"posteriornodes\": [], \"image\": \"\", \"metatypes\": [2], \"excerpt\": \"\", \"creation_date\": \"2011-12-07 02:08:37\", \"lft\": 4, \"featured\": false, \"pingback_enabled\": true, \"priornodes\": [], \"comment_enabled\": true, \"login_required\": false, \"sites\": [1], \"last_update\": \"2011-12-07 02:10:44\", \"content\": \"\", \"template\": \"gstudio/nodetype_detail.html\", \"tree_id\": 2, \"end_publication\": \"2042-03-15 00:00:00\", \"start_publication\": \"2011-12-07 02:08:37\", \"status\": 2, \"parent\": 3, \"tags\": \"\", \"authors\": [1], \"password\": \"\", \"slug\": \"country\", \"level\": 1}}]", "revision": 10}}, {"pk": 20, "model": "reversion.version", "fields": {"format": "json", "object_repr": "India", "object_id": "9", "content_type": 52, "object_id_int": 9, "type": 1, "serialized_data": "[{\"pk\": 9, \"model\": \"objectapp.gbobject\", \"fields\": {\"status\": 2, \"priornodes\": [], \"password\": \"\", \"end_publication\": \"2042-03-15 00:00:00\", \"posteriornodes\": [], \"template\": \"objectapp/gbobject_detail.html\", \"comment_enabled\": true, \"tags\": \"\", \"image\": \"\", \"login_required\": false, \"excerpt\": \"\", \"sites\": [1], \"objecttypes\": [4], \"creation_date\": \"2011-12-07 02:49:25\", \"content\": \"\", \"featured\": false, \"start_publication\": \"2011-12-07 02:49:25\", \"pingback_enabled\": true, \"authors\": [1], \"last_update\": \"2011-12-07 02:50:25\", \"slug\": \"india\"}}]", "revision": 11}}, {"pk": 21, "model": "reversion.version", "fields": {"format": "json", "object_repr": "concept class", "object_id": "2", "content_type": 16, "object_id_int": 2, "type": 1, "serialized_data": "[{\"pk\": 2, \"model\": \"gstudio.metatype\", \"fields\": {\"rght\": 2, \"description\": \"the class of all concepts\", \"parent\": null, \"level\": 0, \"lft\": 1, \"tree_id\": 1, \"slug\": \"concept-class\"}}]", "revision": 11}}, {"pk": 22, "model": "reversion.version", "fields": {"format": "json", "object_repr": "place", "object_id": "3", "content_type": 17, "object_id_int": 3, "type": 1, "serialized_data": "[{\"pk\": 3, \"model\": \"gstudio.nodetype\", \"fields\": {\"rght\": 6, \"posteriornodes\": [], \"image\": \"\", \"metatypes\": [2], \"excerpt\": \"\", \"creation_date\": \"2011-12-07 02:07:58\", \"lft\": 1, \"featured\": false, \"pingback_enabled\": true, \"priornodes\": [], \"comment_enabled\": true, \"login_required\": false, \"sites\": [1], \"last_update\": \"2011-12-07 02:08:28\", \"content\": \"\", \"template\": \"gstudio/nodetype_detail.html\", \"tree_id\": 2, \"end_publication\": \"2042-03-15 00:00:00\", \"start_publication\": \"2011-12-07 02:07:58\", \"status\": 2, \"parent\": null, \"tags\": \"\", \"authors\": [1], \"password\": \"\", \"slug\": \"place\", \"level\": 0}}]", "revision": 11}}, {"pk": 23, "model": "reversion.version", "fields": {"format": "json", "object_repr": "country", "object_id": "4", "content_type": 17, "object_id_int": 4, "type": 1, "serialized_data": "[{\"pk\": 4, \"model\": \"gstudio.nodetype\", \"fields\": {\"rght\": 5, \"posteriornodes\": [], \"image\": \"\", \"metatypes\": [2], \"excerpt\": \"\", \"creation_date\": \"2011-12-07 02:08:37\", \"lft\": 4, \"featured\": false, \"pingback_enabled\": true, \"priornodes\": [], \"comment_enabled\": true, \"login_required\": false, \"sites\": [1], \"last_update\": \"2011-12-07 02:10:44\", \"content\": \"\", \"template\": \"gstudio/nodetype_detail.html\", \"tree_id\": 2, \"end_publication\": \"2042-03-15 00:00:00\", \"start_publication\": \"2011-12-07 02:08:37\", \"status\": 2, \"parent\": 3, \"tags\": \"\", \"authors\": [1], \"password\": \"\", \"slug\": \"country\", \"level\": 1}}]", "revision": 11}}, {"pk": 24, "model": "reversion.version", "fields": {"format": "json", "object_repr": "Mumbai", "object_id": "10", "content_type": 52, "object_id_int": 10, "type": 0, "serialized_data": "[{\"pk\": 10, \"model\": \"objectapp.gbobject\", \"fields\": {\"status\": 2, \"priornodes\": [], \"password\": \"\", \"end_publication\": \"2042-03-15 00:00:00\", \"posteriornodes\": [], \"template\": \"objectapp/gbobject_detail.html\", \"comment_enabled\": true, \"tags\": \"\", \"image\": \"\", \"login_required\": false, \"excerpt\": \"\", \"sites\": [], \"objecttypes\": [], \"creation_date\": \"2011-12-07 02:50:55\", \"content\": \"\", \"featured\": false, \"start_publication\": \"2011-12-07 02:50:55\", \"pingback_enabled\": true, \"authors\": [], \"last_update\": \"2011-12-07 02:51:11\", \"slug\": \"mu\"}}]", "revision": 12}}, {"pk": 25, "model": "reversion.version", "fields": {"format": "json", "object_repr": "place", "object_id": "3", "content_type": 17, "object_id_int": 3, "type": 1, "serialized_data": "[{\"pk\": 3, \"model\": \"gstudio.nodetype\", \"fields\": {\"rght\": 6, \"posteriornodes\": [], \"image\": \"\", \"metatypes\": [2], \"excerpt\": \"\", \"creation_date\": \"2011-12-07 02:07:58\", \"lft\": 1, \"featured\": false, \"pingback_enabled\": true, \"priornodes\": [], \"comment_enabled\": true, \"login_required\": false, \"sites\": [1], \"last_update\": \"2011-12-07 02:08:28\", \"content\": \"\", \"template\": \"gstudio/nodetype_detail.html\", \"tree_id\": 2, \"end_publication\": \"2042-03-15 00:00:00\", \"start_publication\": \"2011-12-07 02:07:58\", \"status\": 2, \"parent\": null, \"tags\": \"\", \"authors\": [1], \"password\": \"\", \"slug\": \"place\", \"level\": 0}}]", "revision": 12}}, {"pk": 26, "model": "reversion.version", "fields": {"format": "json", "object_repr": "concept class", "object_id": "2", "content_type": 16, "object_id_int": 2, "type": 1, "serialized_data": "[{\"pk\": 2, \"model\": \"gstudio.metatype\", \"fields\": {\"rght\": 2, \"description\": \"the class of all concepts\", \"parent\": null, \"level\": 0, \"lft\": 1, \"tree_id\": 1, \"slug\": \"concept-class\"}}]", "revision": 12}}, {"pk": 27, "model": "reversion.version", "fields": {"format": "json", "object_repr": "city", "object_id": "5", "content_type": 17, "object_id_int": 5, "type": 1, "serialized_data": "[{\"pk\": 5, \"model\": \"gstudio.nodetype\", \"fields\": {\"rght\": 3, \"posteriornodes\": [], \"image\": \"\", \"metatypes\": [2], \"excerpt\": \"\", \"creation_date\": \"2011-12-07 02:10:54\", \"lft\": 2, \"featured\": false, \"pingback_enabled\": true, \"priornodes\": [], \"comment_enabled\": true, \"login_required\": false, \"sites\": [1], \"last_update\": \"2011-12-07 02:11:24\", \"content\": \"\", \"template\": \"gstudio/nodetype_detail.html\", \"tree_id\": 2, \"end_publication\": \"2042-03-15 00:00:00\", \"start_publication\": \"2011-12-07 02:10:54\", \"status\": 2, \"parent\": 3, \"tags\": \"\", \"authors\": [1], \"password\": \"\", \"slug\": \"city\", \"level\": 1}}]", "revision": 12}}, {"pk": 28, "model": "reversion.version", "fields": {"format": "json", "object_repr": "place", "object_id": "3", "content_type": 17, "object_id_int": 3, "type": 1, "serialized_data": "[{\"pk\": 3, \"model\": \"gstudio.nodetype\", \"fields\": {\"rght\": 6, \"posteriornodes\": [], \"image\": \"\", \"metatypes\": [2], \"excerpt\": \"\", \"creation_date\": \"2011-12-07 02:07:58\", \"lft\": 1, \"featured\": false, \"pingback_enabled\": true, \"priornodes\": [], \"comment_enabled\": true, \"login_required\": false, \"sites\": [1], \"last_update\": \"2011-12-07 02:08:28\", \"content\": \"\", \"template\": \"gstudio/nodetype_detail.html\", \"tree_id\": 2, \"end_publication\": \"2042-03-15 00:00:00\", \"start_publication\": \"2011-12-07 02:07:58\", \"status\": 2, \"parent\": null, \"tags\": \"\", \"authors\": [1], \"password\": \"\", \"slug\": \"place\", \"level\": 0}}]", "revision": 13}}, {"pk": 29, "model": "reversion.version", "fields": {"format": "json", "object_repr": "concept class", "object_id": "2", "content_type": 16, "object_id_int": 2, "type": 1, "serialized_data": "[{\"pk\": 2, \"model\": \"gstudio.metatype\", \"fields\": {\"rght\": 2, \"description\": \"the class of all concepts\", \"parent\": null, \"level\": 0, \"lft\": 1, \"tree_id\": 1, \"slug\": \"concept-class\"}}]", "revision": 13}}, {"pk": 30, "model": "reversion.version", "fields": {"format": "json", "object_repr": "New Delhi", "object_id": "11", "content_type": 52, "object_id_int": 11, "type": 0, "serialized_data": "[{\"pk\": 11, \"model\": \"objectapp.gbobject\", \"fields\": {\"status\": 2, \"priornodes\": [], \"password\": \"\", \"end_publication\": \"2042-03-15 00:00:00\", \"posteriornodes\": [], \"template\": \"objectapp/gbobject_detail.html\", \"comment_enabled\": true, \"tags\": \"\", \"image\": \"\", \"login_required\": false, \"excerpt\": \"\", \"sites\": [], \"objecttypes\": [], \"creation_date\": \"2011-12-07 02:51:24\", \"content\": \"\", \"featured\": false, \"start_publication\": \"2011-12-07 02:51:24\", \"pingback_enabled\": true, \"authors\": [], \"last_update\": \"2011-12-07 02:51:40\", \"slug\": \"new-delhi\"}}]", "revision": 13}}, {"pk": 31, "model": "reversion.version", "fields": {"format": "json", "object_repr": "city", "object_id": "5", "content_type": 17, "object_id_int": 5, "type": 1, "serialized_data": "[{\"pk\": 5, \"model\": \"gstudio.nodetype\", \"fields\": {\"rght\": 3, \"posteriornodes\": [], \"image\": \"\", \"metatypes\": [2], \"excerpt\": \"\", \"creation_date\": \"2011-12-07 02:10:54\", \"lft\": 2, \"featured\": false, \"pingback_enabled\": true, \"priornodes\": [], \"comment_enabled\": true, \"login_required\": false, \"sites\": [1], \"last_update\": \"2011-12-07 02:11:24\", \"content\": \"\", \"template\": \"gstudio/nodetype_detail.html\", \"tree_id\": 2, \"end_publication\": \"2042-03-15 00:00:00\", \"start_publication\": \"2011-12-07 02:10:54\", \"status\": 2, \"parent\": 3, \"tags\": \"\", \"authors\": [1], \"password\": \"\", \"slug\": \"city\", \"level\": 1}}]", "revision": 13}}, {"pk": 32, "model": "reversion.version", "fields": {"format": "json", "object_repr": "country", "object_id": "4", "content_type": 13, "object_id_int": 4, "type": 1, "serialized_data": "[{\"pk\": 4, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"country\"}}]", "revision": 14}}, {"pk": 33, "model": "reversion.version", "fields": {"format": "json", "object_repr": "city", "object_id": "5", "content_type": 13, "object_id_int": 5, "type": 1, "serialized_data": "[{\"pk\": 5, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"city\"}}]", "revision": 14}}, {"pk": 34, "model": "reversion.version", "fields": {"format": "json", "object_repr": "capital of", "object_id": "6", "content_type": 20, "object_id_int": 6, "type": 1, "serialized_data": "[{\"pk\": 6, \"model\": \"gstudio.relationtype\", \"fields\": {\"rght\": 2, \"inverse\": \"has capital\", \"cardinalityLeft\": 1, \"isTransitive\": false, \"cardinalityRight\": 1, \"level\": 0, \"isSymmetrical\": false, \"lft\": 1, \"subjecttypeLeft\": 5, \"subjecttypeRight\": 4, \"applicablenodetypes1\": \"OT\", \"applicablenodetypes2\": \"OT\", \"tree_id\": 1, \"isReflexive\": false}}]", "revision": 14}}, {"pk": 35, "model": "reversion.version", "fields": {"format": "json", "object_repr": "India", "object_id": "9", "content_type": 13, "object_id_int": 9, "type": 1, "serialized_data": "[{\"pk\": 9, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"India\"}}]", "revision": 14}}, {"pk": 36, "model": "reversion.version", "fields": {"format": "json", "object_repr": "New Delhi", "object_id": "11", "content_type": 13, "object_id_int": 11, "type": 1, "serialized_data": "[{\"pk\": 11, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"New Delhi\"}}]", "revision": 14}}, {"pk": 37, "model": "reversion.version", "fields": {"format": "json", "object_repr": " New Delhi capital of India", "object_id": "12", "content_type": 22, "object_id_int": 12, "type": 0, "serialized_data": "[{\"pk\": 12, \"model\": \"gstudio.relation\", \"fields\": {\"subject1Scope\": \"\", \"relationTypeScope\": \"\", \"subject1\": 11, \"subject2\": 9, \"relationtype\": 6, \"objectScope\": \"\"}}]", "revision": 14}}, {"pk": 38, "model": "reversion.version", "fields": {"format": "json", "object_repr": "person", "object_id": "1", "content_type": 17, "object_id_int": 1, "type": 1, "serialized_data": "[{\"pk\": 1, \"model\": \"gstudio.nodetype\", \"fields\": {\"rght\": 2, \"posteriornodes\": [], \"image\": \"\", \"metatypes\": [2], \"excerpt\": \"\", \"creation_date\": \"2011-12-07 01:38:11\", \"lft\": 1, \"featured\": false, \"pingback_enabled\": true, \"priornodes\": [], \"comment_enabled\": true, \"login_required\": false, \"sites\": [1], \"last_update\": \"2011-12-07 02:07:53\", \"content\": \"\", \"template\": \"gstudio/nodetype_detail.html\", \"tree_id\": 1, \"end_publication\": \"2042-03-15 00:00:00\", \"start_publication\": \"2011-12-07 01:38:11\", \"status\": 2, \"parent\": null, \"tags\": \"\", \"authors\": [1], \"password\": \"\", \"slug\": \"person\", \"level\": 0}}]", "revision": 15}}, {"pk": 39, "model": "reversion.version", "fields": {"format": "json", "object_repr": "concept class", "object_id": "2", "content_type": 16, "object_id_int": 2, "type": 1, "serialized_data": "[{\"pk\": 2, \"model\": \"gstudio.metatype\", \"fields\": {\"rght\": 2, \"description\": \"the class of all concepts\", \"parent\": null, \"level\": 0, \"lft\": 1, \"tree_id\": 1, \"slug\": \"concept-class\"}}]", "revision": 15}}, {"pk": 40, "model": "reversion.version", "fields": {"format": "json", "object_repr": "Nagarjuna", "object_id": "13", "content_type": 52, "object_id_int": 13, "type": 0, "serialized_data": "[{\"pk\": 13, \"model\": \"objectapp.gbobject\", \"fields\": {\"status\": 2, \"priornodes\": [], \"password\": \"\", \"end_publication\": \"2042-03-15 00:00:00\", \"posteriornodes\": [], \"template\": \"objectapp/gbobject_detail.html\", \"comment_enabled\": true, \"tags\": \"\", \"image\": \"\", \"login_required\": false, \"excerpt\": \"\", \"sites\": [], \"objecttypes\": [], \"creation_date\": \"2011-12-07 02:53:25\", \"content\": \"\", \"featured\": false, \"start_publication\": \"2011-12-07 02:53:25\", \"pingback_enabled\": true, \"authors\": [], \"last_update\": \"2011-12-07 02:54:08\", \"slug\": \"nagarjuna\"}}]", "revision": 15}}, {"pk": 41, "model": "reversion.version", "fields": {"format": "json", "object_repr": "person", "object_id": "1", "content_type": 13, "object_id_int": 1, "type": 1, "serialized_data": "[{\"pk\": 1, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"person\"}}]", "revision": 16}}, {"pk": 42, "model": "reversion.version", "fields": {"format": "json", "object_repr": "place", "object_id": "3", "content_type": 13, "object_id_int": 3, "type": 1, "serialized_data": "[{\"pk\": 3, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"place\"}}]", "revision": 16}}, {"pk": 43, "model": "reversion.version", "fields": {"format": "json", "object_repr": "lives in", "object_id": "7", "content_type": 20, "object_id_int": 7, "type": 1, "serialized_data": "[{\"pk\": 7, \"model\": \"gstudio.relationtype\", \"fields\": {\"rght\": 2, \"inverse\": \"living place of\", \"cardinalityLeft\": null, \"isTransitive\": null, \"cardinalityRight\": null, \"level\": 0, \"isSymmetrical\": null, \"lft\": 1, \"subjecttypeLeft\": 1, \"subjecttypeRight\": 3, \"applicablenodetypes1\": \"OT\", \"applicablenodetypes2\": \"OT\", \"tree_id\": 2, \"isReflexive\": null}}]", "revision": 16}}, {"pk": 44, "model": "reversion.version", "fields": {"format": "json", "object_repr": "Mumbai", "object_id": "10", "content_type": 13, "object_id_int": 10, "type": 1, "serialized_data": "[{\"pk\": 10, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"Mumbai\"}}]", "revision": 16}}, {"pk": 45, "model": "reversion.version", "fields": {"format": "json", "object_repr": "Nagarjuna", "object_id": "13", "content_type": 13, "object_id_int": 13, "type": 1, "serialized_data": "[{\"pk\": 13, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"Nagarjuna\"}}]", "revision": 16}}, {"pk": 46, "model": "reversion.version", "fields": {"format": "json", "object_repr": " Nagarjuna mostly lives in Mumbai", "object_id": "14", "content_type": 22, "object_id_int": 14, "type": 0, "serialized_data": "[{\"pk\": 14, \"model\": \"gstudio.relation\", \"fields\": {\"subject1Scope\": \"\", \"relationTypeScope\": \"mostly\", \"subject1\": 13, \"subject2\": 10, \"relationtype\": 7, \"objectScope\": \"\"}}]", "revision": 16}}, {"pk": 47, "model": "reversion.version", "fields": {"format": "json", "object_repr": "place", "object_id": "3", "content_type": 13, "object_id_int": 3, "type": 1, "serialized_data": "[{\"pk\": 3, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"place\"}}]", "revision": 17}}, {"pk": 48, "model": "reversion.version", "fields": {"format": "json", "object_repr": "population", "object_id": "15", "content_type": 21, "object_id_int": 15, "type": 0, "serialized_data": "[{\"pk\": 15, \"model\": \"gstudio.attributetype\", \"fields\": {\"rght\": 2, \"lft\": 1, \"max_digits\": null, \"blank\": null, \"help_text\": \"\", \"null\": null, \"subjecttype\": 3, \"upload_to\": \"\", \"label\": null, \"auto_now\": null, \"tree_id\": 1, \"verbose_name\": \"\", \"verify_exists\": null, \"dataType\": \"6\", \"editable\": null, \"applicablenodetypes\": \"OT\", \"auto_now_add\": null, \"path\": \"\", \"unique\": null, \"min_length\": null, \"decimal_places\": null, \"level\": 0, \"default\": null, \"required\": null}}]", "revision": 17}}, {"pk": 49, "model": "reversion.version", "fields": {"format": "json", "object_repr": "lived in", "object_id": "16", "content_type": 20, "object_id_int": 16, "type": 0, "serialized_data": "[{\"pk\": 16, \"model\": \"gstudio.relationtype\", \"fields\": {\"rght\": 3, \"inverse\": \"had resident\", \"cardinalityLeft\": null, \"isTransitive\": null, \"cardinalityRight\": null, \"level\": 1, \"isSymmetrical\": null, \"lft\": 2, \"subjecttypeLeft\": 1, \"subjecttypeRight\": 3, \"applicablenodetypes1\": \"OT\", \"applicablenodetypes2\": \"OT\", \"tree_id\": 2, \"isReflexive\": null}}]", "revision": 18}}, {"pk": 50, "model": "reversion.version", "fields": {"format": "json", "object_repr": "person", "object_id": "1", "content_type": 13, "object_id_int": 1, "type": 1, "serialized_data": "[{\"pk\": 1, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"person\"}}]", "revision": 18}}, {"pk": 51, "model": "reversion.version", "fields": {"format": "json", "object_repr": "place", "object_id": "3", "content_type": 13, "object_id_int": 3, "type": 1, "serialized_data": "[{\"pk\": 3, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"place\"}}]", "revision": 18}}, {"pk": 52, "model": "reversion.version", "fields": {"format": "json", "object_repr": "London", "object_id": "17", "content_type": 52, "object_id_int": 17, "type": 0, "serialized_data": "[{\"pk\": 17, \"model\": \"objectapp.gbobject\", \"fields\": {\"status\": 2, \"priornodes\": [], \"password\": \"\", \"end_publication\": \"2042-03-15 00:00:00\", \"posteriornodes\": [], \"template\": \"objectapp/gbobject_detail.html\", \"comment_enabled\": true, \"tags\": \"\", \"image\": \"\", \"login_required\": false, \"excerpt\": \"\", \"sites\": [], \"objecttypes\": [], \"creation_date\": \"2011-12-07 04:11:03\", \"content\": \"\", \"featured\": false, \"start_publication\": \"2011-12-07 04:11:03\", \"pingback_enabled\": true, \"authors\": [], \"last_update\": \"2011-12-07 04:11:34\", \"slug\": \"london\"}}]", "revision": 19}}, {"pk": 53, "model": "reversion.version", "fields": {"format": "json", "object_repr": "concept class", "object_id": "2", "content_type": 16, "object_id_int": 2, "type": 1, "serialized_data": "[{\"pk\": 2, \"model\": \"gstudio.metatype\", \"fields\": {\"rght\": 2, \"description\": \"the class of all concepts\", \"parent\": null, \"level\": 0, \"lft\": 1, \"tree_id\": 1, \"slug\": \"concept-class\"}}]", "revision": 19}}, {"pk": 54, "model": "reversion.version", "fields": {"format": "json", "object_repr": "place", "object_id": "3", "content_type": 17, "object_id_int": 3, "type": 1, "serialized_data": "[{\"pk\": 3, \"model\": \"gstudio.nodetype\", \"fields\": {\"rght\": 6, \"posteriornodes\": [], \"image\": \"\", \"metatypes\": [2], \"excerpt\": \"\", \"creation_date\": \"2011-12-07 02:07:58\", \"lft\": 1, \"featured\": false, \"pingback_enabled\": true, \"priornodes\": [], \"comment_enabled\": true, \"login_required\": false, \"sites\": [1], \"last_update\": \"2011-12-07 02:08:28\", \"content\": \"\", \"template\": \"gstudio/nodetype_detail.html\", \"tree_id\": 2, \"end_publication\": \"2042-03-15 00:00:00\", \"start_publication\": \"2011-12-07 02:07:58\", \"status\": 2, \"parent\": null, \"tags\": \"\", \"authors\": [1], \"password\": \"\", \"slug\": \"place\", \"level\": 0}}]", "revision": 19}}, {"pk": 55, "model": "reversion.version", "fields": {"format": "json", "object_repr": "city", "object_id": "5", "content_type": 17, "object_id_int": 5, "type": 1, "serialized_data": "[{\"pk\": 5, \"model\": \"gstudio.nodetype\", \"fields\": {\"rght\": 3, \"posteriornodes\": [], \"image\": \"\", \"metatypes\": [2], \"excerpt\": \"\", \"creation_date\": \"2011-12-07 02:10:54\", \"lft\": 2, \"featured\": false, \"pingback_enabled\": true, \"priornodes\": [], \"comment_enabled\": true, \"login_required\": false, \"sites\": [1], \"last_update\": \"2011-12-07 02:11:24\", \"content\": \"\", \"template\": \"gstudio/nodetype_detail.html\", \"tree_id\": 2, \"end_publication\": \"2042-03-15 00:00:00\", \"start_publication\": \"2011-12-07 02:10:54\", \"status\": 2, \"parent\": 3, \"tags\": \"\", \"authors\": [1], \"password\": \"\", \"slug\": \"city\", \"level\": 1}}]", "revision": 19}}, {"pk": 56, "model": "reversion.version", "fields": {"format": "json", "object_repr": "person", "object_id": "1", "content_type": 13, "object_id_int": 1, "type": 1, "serialized_data": "[{\"pk\": 1, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"person\"}}]", "revision": 20}}, {"pk": 57, "model": "reversion.version", "fields": {"format": "json", "object_repr": "place", "object_id": "3", "content_type": 13, "object_id_int": 3, "type": 1, "serialized_data": "[{\"pk\": 3, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"place\"}}]", "revision": 20}}, {"pk": 58, "model": "reversion.version", "fields": {"format": "json", "object_repr": "Charles Darwin", "object_id": "8", "content_type": 13, "object_id_int": 8, "type": 1, "serialized_data": "[{\"pk\": 8, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"Charles Darwin\"}}]", "revision": 20}}, {"pk": 59, "model": "reversion.version", "fields": {"format": "json", "object_repr": "lived in", "object_id": "16", "content_type": 20, "object_id_int": 16, "type": 1, "serialized_data": "[{\"pk\": 16, \"model\": \"gstudio.relationtype\", \"fields\": {\"rght\": 3, \"inverse\": \"had resident\", \"cardinalityLeft\": null, \"isTransitive\": null, \"cardinalityRight\": null, \"level\": 1, \"isSymmetrical\": null, \"lft\": 2, \"subjecttypeLeft\": 1, \"subjecttypeRight\": 3, \"applicablenodetypes1\": \"OT\", \"applicablenodetypes2\": \"OT\", \"tree_id\": 2, \"isReflexive\": null}}]", "revision": 20}}, {"pk": 60, "model": "reversion.version", "fields": {"format": "json", "object_repr": "London", "object_id": "17", "content_type": 13, "object_id_int": 17, "type": 1, "serialized_data": "[{\"pk\": 17, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"London\"}}]", "revision": 20}}, {"pk": 61, "model": "reversion.version", "fields": {"format": "json", "object_repr": " Charles Darwin lived in several locations of London", "object_id": "18", "content_type": 22, "object_id_int": 18, "type": 0, "serialized_data": "[{\"pk\": 18, \"model\": \"gstudio.relation\", \"fields\": {\"subject1Scope\": \"\", \"relationTypeScope\": \"\", \"subject1\": 8, \"subject2\": 17, \"relationtype\": 16, \"objectScope\": \"several locations of\"}}]", "revision": 20}}, {"pk": 62, "model": "reversion.version", "fields": {"format": "json", "object_repr": "place", "object_id": "3", "content_type": 13, "object_id_int": 3, "type": 1, "serialized_data": "[{\"pk\": 3, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"place\"}}]", "revision": 21}}, {"pk": 63, "model": "reversion.version", "fields": {"format": "json", "object_repr": "India", "object_id": "9", "content_type": 13, "object_id_int": 9, "type": 1, "serialized_data": "[{\"pk\": 9, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"India\"}}]", "revision": 21}}, {"pk": 64, "model": "reversion.version", "fields": {"format": "json", "object_repr": "the population of India is 1210193422", "object_id": "19", "content_type": 23, "object_id_int": 19, "type": 0, "serialized_data": "[{\"pk\": 19, \"model\": \"gstudio.attribute\", \"fields\": {\"svalue\": \"1210193422\", \"attributeTypeScope\": \"\", \"valueScope\": \"\", \"attributeType\": 15, \"subjectScope\": \"\", \"subject\": 9}}]", "revision": 21}}, {"pk": 65, "model": "reversion.version", "fields": {"format": "json", "object_repr": "population", "object_id": "15", "content_type": 21, "object_id_int": 15, "type": 1, "serialized_data": "[{\"pk\": 15, \"model\": \"gstudio.attributetype\", \"fields\": {\"rght\": 2, \"lft\": 1, \"max_digits\": null, \"blank\": null, \"help_text\": \"\", \"null\": null, \"subjecttype\": 3, \"upload_to\": \"\", \"label\": null, \"auto_now\": null, \"tree_id\": 1, \"verbose_name\": \"\", \"verify_exists\": null, \"dataType\": \"6\", \"editable\": null, \"applicablenodetypes\": \"OT\", \"auto_now_add\": null, \"path\": \"\", \"unique\": null, \"min_length\": null, \"decimal_places\": null, \"level\": 0, \"default\": null, \"required\": null}}]", "revision": 21}}, {"pk": 66, "model": "reversion.version", "fields": {"format": "json", "object_repr": "Mumbai", "object_id": "10", "content_type": 13, "object_id_int": 10, "type": 1, "serialized_data": "[{\"pk\": 10, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"Mumbai\"}}]", "revision": 22}}, {"pk": 67, "model": "reversion.version", "fields": {"format": "json", "object_repr": "place", "object_id": "3", "content_type": 13, "object_id_int": 3, "type": 1, "serialized_data": "[{\"pk\": 3, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"place\"}}]", "revision": 22}}, {"pk": 68, "model": "reversion.version", "fields": {"format": "json", "object_repr": "the population of Mumbai is 20245000", "object_id": "20", "content_type": 23, "object_id_int": 20, "type": 0, "serialized_data": "[{\"pk\": 20, \"model\": \"gstudio.attribute\", \"fields\": {\"svalue\": \"20245000\", \"attributeTypeScope\": \"\", \"valueScope\": \"\", \"attributeType\": 15, \"subjectScope\": \"\", \"subject\": 10}}]", "revision": 22}}, {"pk": 69, "model": "reversion.version", "fields": {"format": "json", "object_repr": "population", "object_id": "15", "content_type": 21, "object_id_int": 15, "type": 1, "serialized_data": "[{\"pk\": 15, \"model\": \"gstudio.attributetype\", \"fields\": {\"rght\": 2, \"lft\": 1, \"max_digits\": null, \"blank\": null, \"help_text\": \"\", \"null\": null, \"subjecttype\": 3, \"upload_to\": \"\", \"label\": null, \"auto_now\": null, \"tree_id\": 1, \"verbose_name\": \"\", \"verify_exists\": null, \"dataType\": \"6\", \"editable\": null, \"applicablenodetypes\": \"OT\", \"auto_now_add\": null, \"path\": \"\", \"unique\": null, \"min_length\": null, \"decimal_places\": null, \"level\": 0, \"default\": null, \"required\": null}}]", "revision": 22}}, {"pk": 70, "model": "reversion.version", "fields": {"format": "json", "object_repr": "London", "object_id": "17", "content_type": 13, "object_id_int": 17, "type": 1, "serialized_data": "[{\"pk\": 17, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"London\"}}]", "revision": 23}}, {"pk": 71, "model": "reversion.version", "fields": {"format": "json", "object_repr": "place", "object_id": "3", "content_type": 13, "object_id_int": 3, "type": 1, "serialized_data": "[{\"pk\": 3, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"place\"}}]", "revision": 23}}, {"pk": 72, "model": "reversion.version", "fields": {"format": "json", "object_repr": "the population of London is 7825200", "object_id": "21", "content_type": 23, "object_id_int": 21, "type": 0, "serialized_data": "[{\"pk\": 21, \"model\": \"gstudio.attribute\", \"fields\": {\"svalue\": \"7825200\", \"attributeTypeScope\": \"\", \"valueScope\": \"\", \"attributeType\": 15, \"subjectScope\": \"\", \"subject\": 17}}]", "revision": 23}}, {"pk": 73, "model": "reversion.version", "fields": {"format": "json", "object_repr": "population", "object_id": "15", "content_type": 21, "object_id_int": 15, "type": 1, "serialized_data": "[{\"pk\": 15, \"model\": \"gstudio.attributetype\", \"fields\": {\"rght\": 2, \"lft\": 1, \"max_digits\": null, \"blank\": null, \"help_text\": \"\", \"null\": null, \"subjecttype\": 3, \"upload_to\": \"\", \"label\": null, \"auto_now\": null, \"tree_id\": 1, \"verbose_name\": \"\", \"verify_exists\": null, \"dataType\": \"6\", \"editable\": null, \"applicablenodetypes\": \"OT\", \"auto_now_add\": null, \"path\": \"\", \"unique\": null, \"min_length\": null, \"decimal_places\": null, \"level\": 0, \"default\": null, \"required\": null}}]", "revision": 23}}, {"pk": 74, "model": "reversion.version", "fields": {"format": "json", "object_repr": "times", "object_id": "22", "content_type": 20, "object_id_int": 22, "type": 0, "serialized_data": "[{\"pk\": 22, \"model\": \"gstudio.relationtype\", \"fields\": {\"rght\": 2, \"inverse\": \"portions of\", \"cardinalityLeft\": null, \"isTransitive\": false, \"cardinalityRight\": null, \"level\": 0, \"isSymmetrical\": false, \"lft\": 1, \"subjecttypeLeft\": 15, \"subjecttypeRight\": 15, \"applicablenodetypes1\": \"OT\", \"applicablenodetypes2\": \"OT\", \"tree_id\": 3, \"isReflexive\": false}}]", "revision": 24}}, {"pk": 75, "model": "reversion.version", "fields": {"format": "json", "object_repr": "population", "object_id": "15", "content_type": 13, "object_id_int": 15, "type": 1, "serialized_data": "[{\"pk\": 15, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"population\"}}]", "revision": 24}}, {"pk": 76, "model": "reversion.version", "fields": {"format": "json", "object_repr": "population", "object_id": "15", "content_type": 13, "object_id_int": 15, "type": 1, "serialized_data": "[{\"pk\": 15, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"population\"}}]", "revision": 25}}, {"pk": 77, "model": "reversion.version", "fields": {"format": "json", "object_repr": "the population of Mumbai is 20245000", "object_id": "20", "content_type": 13, "object_id_int": 20, "type": 1, "serialized_data": "[{\"pk\": 20, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"the population of Mumbai is 20245000\"}}]", "revision": 25}}, {"pk": 78, "model": "reversion.version", "fields": {"format": "json", "object_repr": "the population of London is 7825200", "object_id": "21", "content_type": 13, "object_id_int": 21, "type": 1, "serialized_data": "[{\"pk\": 21, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"the population of London is 7825200\"}}]", "revision": 25}}, {"pk": 79, "model": "reversion.version", "fields": {"format": "json", "object_repr": "times", "object_id": "22", "content_type": 20, "object_id_int": 22, "type": 1, "serialized_data": "[{\"pk\": 22, \"model\": \"gstudio.relationtype\", \"fields\": {\"rght\": 2, \"inverse\": \"portions of\", \"cardinalityLeft\": null, \"isTransitive\": false, \"cardinalityRight\": null, \"level\": 0, \"isSymmetrical\": false, \"lft\": 1, \"subjecttypeLeft\": 15, \"subjecttypeRight\": 15, \"applicablenodetypes1\": \"OT\", \"applicablenodetypes2\": \"OT\", \"tree_id\": 3, \"isReflexive\": false}}]", "revision": 25}}, {"pk": 80, "model": "reversion.version", "fields": {"format": "json", "object_repr": " the population of Mumbai is 20245000 three times more than the population of London is 7825200", "object_id": "23", "content_type": 22, "object_id_int": 23, "type": 0, "serialized_data": "[{\"pk\": 23, \"model\": \"gstudio.relation\", \"fields\": {\"subject1Scope\": \"\", \"relationTypeScope\": \"three\", \"subject1\": 20, \"subject2\": 21, \"relationtype\": 22, \"objectScope\": \"more than\"}}]", "revision": 25}}, {"pk": 81, "model": "reversion.version", "fields": {"format": "json", "object_repr": "geographical collection", "object_id": "24", "content_type": 44, "object_id_int": 24, "type": 0, "serialized_data": "[{\"pk\": 24, \"model\": \"gstudio.systemtype\", \"fields\": {\"lft\": 1}}]", "revision": 26}}, {"pk": 82, "model": "reversion.version", "fields": {"format": "json", "object_repr": "concept class", "object_id": "2", "content_type": 16, "object_id_int": 2, "type": 1, "serialized_data": "[{\"pk\": 2, \"model\": \"gstudio.metatype\", \"fields\": {\"rght\": 2, \"description\": \"the class of all concepts\", \"parent\": null, \"level\": 0, \"lft\": 1, \"tree_id\": 1, \"slug\": \"concept-class\"}}]", "revision": 27}}, {"pk": 83, "model": "reversion.version", "fields": {"format": "json", "object_repr": "place", "object_id": "3", "content_type": 17, "object_id_int": 3, "type": 1, "serialized_data": "[{\"pk\": 3, \"model\": \"gstudio.nodetype\", \"fields\": {\"rght\": 6, \"posteriornodes\": [], \"image\": \"\", \"metatypes\": [2], \"excerpt\": \"\", \"creation_date\": \"2011-12-07 02:07:58\", \"lft\": 1, \"featured\": false, \"pingback_enabled\": true, \"priornodes\": [], \"comment_enabled\": true, \"login_required\": false, \"sites\": [1], \"last_update\": \"2011-12-07 02:08:28\", \"content\": \"\", \"template\": \"gstudio/nodetype_detail.html\", \"tree_id\": 2, \"end_publication\": \"2042-03-15 00:00:00\", \"start_publication\": \"2011-12-07 02:07:58\", \"status\": 2, \"parent\": null, \"tags\": \"\", \"authors\": [1], \"password\": \"\", \"slug\": \"place\", \"level\": 0}}]", "revision": 27}}, {"pk": 84, "model": "reversion.version", "fields": {"format": "json", "object_repr": "country", "object_id": "4", "content_type": 17, "object_id_int": 4, "type": 1, "serialized_data": "[{\"pk\": 4, \"model\": \"gstudio.nodetype\", \"fields\": {\"rght\": 5, \"posteriornodes\": [], \"image\": \"\", \"metatypes\": [2], \"excerpt\": \"\", \"creation_date\": \"2011-12-07 02:08:37\", \"lft\": 4, \"featured\": false, \"pingback_enabled\": true, \"priornodes\": [], \"comment_enabled\": true, \"login_required\": false, \"sites\": [1], \"last_update\": \"2011-12-07 02:10:44\", \"content\": \"\", \"template\": \"gstudio/nodetype_detail.html\", \"tree_id\": 2, \"end_publication\": \"2042-03-15 00:00:00\", \"start_publication\": \"2011-12-07 02:08:37\", \"status\": 2, \"parent\": 3, \"tags\": \"\", \"authors\": [1], \"password\": \"\", \"slug\": \"country\", \"level\": 1}}]", "revision": 27}}, {"pk": 85, "model": "reversion.version", "fields": {"format": "json", "object_repr": "city", "object_id": "5", "content_type": 17, "object_id_int": 5, "type": 1, "serialized_data": "[{\"pk\": 5, \"model\": \"gstudio.nodetype\", \"fields\": {\"rght\": 3, \"posteriornodes\": [], \"image\": \"\", \"metatypes\": [2], \"excerpt\": \"\", \"creation_date\": \"2011-12-07 02:10:54\", \"lft\": 2, \"featured\": false, \"pingback_enabled\": true, \"priornodes\": [], \"comment_enabled\": true, \"login_required\": false, \"sites\": [1], \"last_update\": \"2011-12-07 02:11:24\", \"content\": \"\", \"template\": \"gstudio/nodetype_detail.html\", \"tree_id\": 2, \"end_publication\": \"2042-03-15 00:00:00\", \"start_publication\": \"2011-12-07 02:10:54\", \"status\": 2, \"parent\": 3, \"tags\": \"\", \"authors\": [1], \"password\": \"\", \"slug\": \"city\", \"level\": 1}}]", "revision": 27}}, {"pk": 86, "model": "reversion.version", "fields": {"format": "json", "object_repr": "capital of", "object_id": "6", "content_type": 20, "object_id_int": 6, "type": 1, "serialized_data": "[{\"pk\": 6, \"model\": \"gstudio.relationtype\", \"fields\": {\"rght\": 2, \"inverse\": \"has capital\", \"cardinalityLeft\": 1, \"isTransitive\": false, \"cardinalityRight\": 1, \"level\": 0, \"isSymmetrical\": false, \"lft\": 1, \"subjecttypeLeft\": 5, \"subjecttypeRight\": 4, \"applicablenodetypes1\": \"OT\", \"applicablenodetypes2\": \"OT\", \"tree_id\": 1, \"isReflexive\": false}}]", "revision": 27}}, {"pk": 87, "model": "reversion.version", "fields": {"format": "json", "object_repr": "India", "object_id": "9", "content_type": 52, "object_id_int": 9, "type": 1, "serialized_data": "[{\"pk\": 9, \"model\": \"objectapp.gbobject\", \"fields\": {\"status\": 2, \"priornodes\": [], \"password\": \"\", \"end_publication\": \"2042-03-15 00:00:00\", \"posteriornodes\": [], \"template\": \"objectapp/gbobject_detail.html\", \"comment_enabled\": true, \"tags\": \"\", \"image\": \"\", \"login_required\": false, \"excerpt\": \"\", \"sites\": [1], \"objecttypes\": [4], \"creation_date\": \"2011-12-07 02:49:25\", \"content\": \"\", \"featured\": false, \"start_publication\": \"2011-12-07 02:49:25\", \"pingback_enabled\": true, \"authors\": [1], \"last_update\": \"2011-12-07 02:50:25\", \"slug\": \"india\"}}]", "revision": 27}}, {"pk": 88, "model": "reversion.version", "fields": {"format": "json", "object_repr": "Mumbai", "object_id": "10", "content_type": 52, "object_id_int": 10, "type": 1, "serialized_data": "[{\"pk\": 10, \"model\": \"objectapp.gbobject\", \"fields\": {\"status\": 2, \"priornodes\": [], \"password\": \"\", \"end_publication\": \"2042-03-15 00:00:00\", \"posteriornodes\": [], \"template\": \"objectapp/gbobject_detail.html\", \"comment_enabled\": true, \"tags\": \"\", \"image\": \"\", \"login_required\": false, \"excerpt\": \"\", \"sites\": [1], \"objecttypes\": [5], \"creation_date\": \"2011-12-07 02:50:55\", \"content\": \"\", \"featured\": false, \"start_publication\": \"2011-12-07 02:50:55\", \"pingback_enabled\": true, \"authors\": [1], \"last_update\": \"2011-12-07 02:51:11\", \"slug\": \"mu\"}}]", "revision": 27}}, {"pk": 89, "model": "reversion.version", "fields": {"format": "json", "object_repr": "New Delhi", "object_id": "11", "content_type": 52, "object_id_int": 11, "type": 1, "serialized_data": "[{\"pk\": 11, \"model\": \"objectapp.gbobject\", \"fields\": {\"status\": 2, \"priornodes\": [], \"password\": \"\", \"end_publication\": \"2042-03-15 00:00:00\", \"posteriornodes\": [], \"template\": \"objectapp/gbobject_detail.html\", \"comment_enabled\": true, \"tags\": \"\", \"image\": \"\", \"login_required\": false, \"excerpt\": \"\", \"sites\": [1], \"objecttypes\": [5], \"creation_date\": \"2011-12-07 02:51:24\", \"content\": \"\", \"featured\": false, \"start_publication\": \"2011-12-07 02:51:24\", \"pingback_enabled\": true, \"authors\": [1], \"last_update\": \"2011-12-07 02:51:40\", \"slug\": \"new-delhi\"}}]", "revision": 27}}, {"pk": 90, "model": "reversion.version", "fields": {"format": "json", "object_repr": " New Delhi capital of India", "object_id": "12", "content_type": 22, "object_id_int": 12, "type": 1, "serialized_data": "[{\"pk\": 12, \"model\": \"gstudio.relation\", \"fields\": {\"subject1Scope\": \"\", \"relationTypeScope\": \"\", \"subject1\": 11, \"subject2\": 9, \"relationtype\": 6, \"objectScope\": \"\"}}]", "revision": 27}}, {"pk": 91, "model": "reversion.version", "fields": {"format": "json", "object_repr": "population", "object_id": "15", "content_type": 13, "object_id_int": 15, "type": 1, "serialized_data": "[{\"pk\": 15, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"population\"}}]", "revision": 27}}, {"pk": 92, "model": "reversion.version", "fields": {"format": "json", "object_repr": "the population of India is 1210193422", "object_id": "19", "content_type": 23, "object_id_int": 19, "type": 1, "serialized_data": "[{\"pk\": 19, \"model\": \"gstudio.attribute\", \"fields\": {\"svalue\": \"1210193422\", \"attributeTypeScope\": \"\", \"valueScope\": \"\", \"attributeType\": 15, \"subjectScope\": \"\", \"subject\": 9}}]", "revision": 27}}, {"pk": 93, "model": "reversion.version", "fields": {"format": "json", "object_repr": "the population of Mumbai is 20245000", "object_id": "20", "content_type": 13, "object_id_int": 20, "type": 1, "serialized_data": "[{\"pk\": 20, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"the population of Mumbai is 20245000\"}}]", "revision": 27}}, {"pk": 94, "model": "reversion.version", "fields": {"format": "json", "object_repr": "the population of London is 7825200", "object_id": "21", "content_type": 13, "object_id_int": 21, "type": 1, "serialized_data": "[{\"pk\": 21, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"the population of London is 7825200\"}}]", "revision": 27}}, {"pk": 95, "model": "reversion.version", "fields": {"format": "json", "object_repr": "times", "object_id": "22", "content_type": 20, "object_id_int": 22, "type": 1, "serialized_data": "[{\"pk\": 22, \"model\": \"gstudio.relationtype\", \"fields\": {\"rght\": 2, \"inverse\": \"portions of\", \"cardinalityLeft\": null, \"isTransitive\": false, \"cardinalityRight\": null, \"level\": 0, \"isSymmetrical\": false, \"lft\": 1, \"subjecttypeLeft\": 15, \"subjecttypeRight\": 15, \"applicablenodetypes1\": \"OT\", \"applicablenodetypes2\": \"OT\", \"tree_id\": 3, \"isReflexive\": false}}]", "revision": 27}}, {"pk": 96, "model": "reversion.version", "fields": {"format": "json", "object_repr": " the population of Mumbai is 20245000 three times more than the population of London is 7825200", "object_id": "23", "content_type": 22, "object_id_int": 23, "type": 1, "serialized_data": "[{\"pk\": 23, \"model\": \"gstudio.relation\", \"fields\": {\"subject1Scope\": \"\", \"relationTypeScope\": \"three\", \"subject1\": 20, \"subject2\": 21, \"relationtype\": 22, \"objectScope\": \"more than\"}}]", "revision": 27}}, {"pk": 97, "model": "reversion.version", "fields": {"format": "json", "object_repr": "geographical collection", "object_id": "24", "content_type": 44, "object_id_int": 24, "type": 1, "serialized_data": "[{\"pk\": 24, \"model\": \"gstudio.systemtype\", \"fields\": {\"lft\": 1}}]", "revision": 27}}, {"pk": 98, "model": "reversion.version", "fields": {"format": "json", "object_repr": "geographical facts of India", "object_id": "25", "content_type": 54, "object_id_int": 25, "type": 0, "serialized_data": "[{\"pk\": 25, \"model\": \"objectapp.system\", \"fields\": {}}]", "revision": 27}}, {"pk": 99, "model": "reversion.version", "fields": {"format": "json", "object_repr": "city", "object_id": "5", "content_type": 13, "object_id_int": 5, "type": 1, "serialized_data": "[{\"pk\": 5, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"city\"}}]", "revision": 27}}, {"pk": 100, "model": "reversion.version", "fields": {"format": "json", "object_repr": "India", "object_id": "9", "content_type": 13, "object_id_int": 9, "type": 1, "serialized_data": "[{\"pk\": 9, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"India\"}}]", "revision": 27}}, {"pk": 101, "model": "reversion.version", "fields": {"format": "json", "object_repr": "Mumbai", "object_id": "10", "content_type": 13, "object_id_int": 10, "type": 1, "serialized_data": "[{\"pk\": 10, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"Mumbai\"}}]", "revision": 27}}, {"pk": 102, "model": "reversion.version", "fields": {"format": "json", "object_repr": "New Delhi", "object_id": "11", "content_type": 13, "object_id_int": 11, "type": 1, "serialized_data": "[{\"pk\": 11, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"New Delhi\"}}]", "revision": 27}}, {"pk": 103, "model": "reversion.version", "fields": {"format": "json", "object_repr": "population", "object_id": "15", "content_type": 21, "object_id_int": 15, "type": 1, "serialized_data": "[{\"pk\": 15, \"model\": \"gstudio.attributetype\", \"fields\": {\"rght\": 2, \"lft\": 1, \"max_digits\": null, \"blank\": null, \"help_text\": \"\", \"null\": null, \"subjecttype\": 3, \"upload_to\": \"\", \"label\": null, \"auto_now\": null, \"tree_id\": 1, \"verbose_name\": \"\", \"verify_exists\": null, \"dataType\": \"6\", \"editable\": null, \"applicablenodetypes\": \"OT\", \"auto_now_add\": null, \"path\": \"\", \"unique\": null, \"min_length\": null, \"decimal_places\": null, \"level\": 0, \"default\": null, \"required\": null}}]", "revision": 27}}, {"pk": 104, "model": "reversion.version", "fields": {"format": "json", "object_repr": "place", "object_id": "3", "content_type": 13, "object_id_int": 3, "type": 1, "serialized_data": "[{\"pk\": 3, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"place\"}}]", "revision": 27}}, {"pk": 105, "model": "reversion.version", "fields": {"format": "json", "object_repr": "the population of Mumbai is 20245000", "object_id": "20", "content_type": 23, "object_id_int": 20, "type": 1, "serialized_data": "[{\"pk\": 20, \"model\": \"gstudio.attribute\", \"fields\": {\"svalue\": \"20245000\", \"attributeTypeScope\": \"\", \"valueScope\": \"\", \"attributeType\": 15, \"subjectScope\": \"\", \"subject\": 10}}]", "revision": 27}}, {"pk": 106, "model": "reversion.version", "fields": {"format": "json", "object_repr": "country", "object_id": "4", "content_type": 13, "object_id_int": 4, "type": 1, "serialized_data": "[{\"pk\": 4, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"country\"}}]", "revision": 27}}, {"pk": 107, "model": "reversion.version", "fields": {"format": "json", "object_repr": "population change", "object_id": "26", "content_type": 43, "object_id_int": 26, "type": 0, "serialized_data": "[{\"pk\": 26, \"model\": \"gstudio.processtype\", \"fields\": {\"lft\": 1}}]", "revision": 28}}, {"pk": 108, "model": "reversion.version", "fields": {"format": "json", "object_repr": "place", "object_id": "3", "content_type": 13, "object_id_int": 3, "type": 1, "serialized_data": "[{\"pk\": 3, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"place\"}}]", "revision": 28}}, {"pk": 109, "model": "reversion.version", "fields": {"format": "json", "object_repr": "population", "object_id": "15", "content_type": 21, "object_id_int": 15, "type": 1, "serialized_data": "[{\"pk\": 15, \"model\": \"gstudio.attributetype\", \"fields\": {\"rght\": 2, \"lft\": 1, \"max_digits\": null, \"blank\": null, \"help_text\": \"\", \"null\": null, \"subjecttype\": 3, \"upload_to\": \"\", \"label\": null, \"auto_now\": null, \"tree_id\": 1, \"verbose_name\": \"\", \"verify_exists\": null, \"dataType\": \"6\", \"editable\": null, \"applicablenodetypes\": \"OT\", \"auto_now_add\": null, \"path\": \"\", \"unique\": null, \"min_length\": null, \"decimal_places\": null, \"level\": 0, \"default\": null, \"required\": null}}]", "revision": 28}}, {"pk": 110, "model": "reversion.version", "fields": {"format": "json", "object_repr": "place", "object_id": "3", "content_type": 13, "object_id_int": 3, "type": 1, "serialized_data": "[{\"pk\": 3, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"place\"}}]", "revision": 29}}, {"pk": 111, "model": "reversion.version", "fields": {"format": "json", "object_repr": "Mumbai", "object_id": "10", "content_type": 13, "object_id_int": 10, "type": 1, "serialized_data": "[{\"pk\": 10, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"Mumbai\"}}]", "revision": 29}}, {"pk": 112, "model": "reversion.version", "fields": {"format": "json", "object_repr": "the population of Mumbai is 21245000", "object_id": "27", "content_type": 23, "object_id_int": 27, "type": 0, "serialized_data": "[{\"pk\": 27, \"model\": \"gstudio.attribute\", \"fields\": {\"svalue\": \"21245000\", \"attributeTypeScope\": \"\", \"valueScope\": \"\", \"attributeType\": 15, \"subjectScope\": \"\", \"subject\": 10}}]", "revision": 29}}, {"pk": 113, "model": "reversion.version", "fields": {"format": "json", "object_repr": "population", "object_id": "15", "content_type": 21, "object_id_int": 15, "type": 1, "serialized_data": "[{\"pk\": 15, \"model\": \"gstudio.attributetype\", \"fields\": {\"rght\": 2, \"lft\": 1, \"max_digits\": null, \"blank\": null, \"help_text\": \"\", \"null\": null, \"subjecttype\": 3, \"upload_to\": \"\", \"label\": null, \"auto_now\": null, \"tree_id\": 1, \"verbose_name\": \"\", \"verify_exists\": null, \"dataType\": \"6\", \"editable\": null, \"applicablenodetypes\": \"OT\", \"auto_now_add\": null, \"path\": \"\", \"unique\": null, \"min_length\": null, \"decimal_places\": null, \"level\": 0, \"default\": null, \"required\": null}}]", "revision": 29}}, {"pk": 114, "model": "reversion.version", "fields": {"format": "json", "object_repr": "place", "object_id": "3", "content_type": 13, "object_id_int": 3, "type": 1, "serialized_data": "[{\"pk\": 3, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"place\"}}]", "revision": 30}}, {"pk": 115, "model": "reversion.version", "fields": {"format": "json", "object_repr": "Mumbai", "object_id": "10", "content_type": 13, "object_id_int": 10, "type": 1, "serialized_data": "[{\"pk\": 10, \"model\": \"gstudio.nid\", \"fields\": {\"title\": \"Mumbai\"}}]", "revision": 30}}, {"pk": 116, "model": "reversion.version", "fields": {"format": "json", "object_repr": "population", "object_id": "15", "content_type": 21, "object_id_int": 15, "type": 1, "serialized_data": "[{\"pk\": 15, \"model\": \"gstudio.attributetype\", \"fields\": {\"rght\": 2, \"lft\": 1, \"max_digits\": null, \"blank\": null, \"help_text\": \"\", \"null\": null, \"subjecttype\": 3, \"upload_to\": \"\", \"label\": null, \"auto_now\": null, \"tree_id\": 1, \"verbose_name\": \"\", \"verify_exists\": null, \"dataType\": \"6\", \"editable\": null, \"applicablenodetypes\": \"OT\", \"auto_now_add\": null, \"path\": \"\", \"unique\": null, \"min_length\": null, \"decimal_places\": null, \"level\": 0, \"default\": null, \"required\": null}}]", "revision": 30}}, {"pk": 117, "model": "reversion.version", "fields": {"format": "json", "object_repr": "the population of Mumbai is 20245000", "object_id": "20", "content_type": 23, "object_id_int": 20, "type": 1, "serialized_data": "[{\"pk\": 20, \"model\": \"gstudio.attribute\", \"fields\": {\"svalue\": \"20245000\", \"attributeTypeScope\": \"\", \"valueScope\": \"\", \"attributeType\": 15, \"subjectScope\": \"\", \"subject\": 10}}]", "revision": 30}}, {"pk": 118, "model": "reversion.version", "fields": {"format": "json", "object_repr": "the population of Mumbai is 21245000", "object_id": "27", "content_type": 23, "object_id_int": 27, "type": 1, "serialized_data": "[{\"pk\": 27, \"model\": \"gstudio.attribute\", \"fields\": {\"svalue\": \"21245000\", \"attributeTypeScope\": \"\", \"valueScope\": \"\", \"attributeType\": 15, \"subjectScope\": \"\", \"subject\": 10}}]", "revision": 30}}, {"pk": 119, "model": "reversion.version", "fields": {"format": "json", "object_repr": "population change of mumbai", "object_id": "28", "content_type": 53, "object_id_int": 28, "type": 0, "serialized_data": "[{\"pk\": 28, \"model\": \"objectapp.process\", \"fields\": {}}]", "revision": 30}}]
\ No newline at end of file diff --git a/demo/settings.py b/demo/settings.py index a325258b..96de64f0 100644 --- a/demo/settings.py +++ b/demo/settings.py @@ -78,8 +78,10 @@ DATABASES = {'default': STATIC_URL = '/static/' MEDIA_URL = '/static' -MEDIA_ROOT = '/static' +#MEDIA_ROOT = '/static' +MEDIA_ROOT = os.path.join(os.path.dirname(__file__), '../gstudio/static') +GSTUDIO_UPLOAD_TO = 'img/' ADMIN_MEDIA_PREFIX = STATIC_URL + "grappelli/" diff --git a/demo/working-demo.db b/demo/working-demo.db Binary files differdeleted file mode 100644 index 78a96183..00000000 --- a/demo/working-demo.db +++ /dev/null diff --git a/dist/django_gstudio-0.3.dev-py2.7.egg b/dist/django_gstudio-0.3.dev-py2.7.egg Binary files differdeleted file mode 100644 index 2d39dff2..00000000 --- a/dist/django_gstudio-0.3.dev-py2.7.egg +++ /dev/null diff --git a/gstudio/TAGS b/gstudio/TAGS deleted file mode 100644 index 0dff201b..00000000 --- a/gstudio/TAGS +++ /dev/null @@ -1,2725 +0,0 @@ - -feeds.py,2015 -class GstudioFeed(28,968 - def __init__(32,1057 -class NodetypeFeed(40,1314 - def item_pubdate(45,1487 - def item_metatypes(49,1601 - def item_author_name(53,1742 - def item_author_email(59,1965 - def item_author_link(63,2090 - def item_enclosure_url(72,2416 - def item_enclosure_length(81,2689 - def item_enclosure_mime_type(85,2798 -class LatestNodetypes(90,2917 - def link(93,2995 - def items(97,3111 - def title(101,3235 - def description(105,3356 -class MetatypeNodetypes(110,3497 - def get_object(113,3575 - def items(117,3706 - def link(121,3856 - def title(125,3954 - def description(129,4075 -class AuthorNodetypes(134,4220 - def get_object(137,4295 - def items(141,4449 - def link(145,4606 - def title(149,4733 - def description(153,4851 -class TagNodetypes(158,4985 - def get_object(161,5053 - def items(165,5187 - def link(170,5382 - def title(174,5499 - def description(178,5614 -class SearchNodetypes(183,5753 - def get_object(186,5835 - def items(193,6065 - def link(197,6211 - def title(201,6352 - def description(205,6468 -class NodetypeDiscussions(210,6608 - def get_object(215,6808 - def items(222,7167 - def item_pubdate(226,7299 - def item_link(230,7413 - def link(234,7520 - def item_author_name(238,7618 - def item_author_email(242,7733 - def item_author_link(246,7858 - def title(250,7978 - def description(254,8087 -class NodetypeComments(259,8234 - def items(264,8430 - def item_link(268,8556 - def title(272,8677 - def description(276,8783 - def item_enclosure_url(280,8926 - def item_enclosure_length(284,9072 - def item_enclosure_mime_type(288,9181 -class NodetypePingbacks(293,9300 - def items(298,9500 - def item_link(302,9628 - def title(306,9751 - def description(310,9858 -class NodetypeTrackbacks(315,10003 - def items(320,10207 - def item_link(324,10337 - def title(328,10462 - def description(332,10570 - -signals.py,173 -def disable_for_loaddata(10,156 - def wrapper(16,359 -def ping_directories_handler(26,594 -def ping_external_urls_handler(38,969 -def disconnect_gstudio_signals(48,1266 - -management/commands/spam_cleanup.py,51 -class Command(9,234 - def handle_noargs(14,389 - -management/commands/gstudio2wp.py,52 -class Command(16,447 - def handle_noargs(21,633 - -management/commands/blogger2gstudio.py,495 -class Command(26,798 - def __init__(44,1649 - def write_out(51,1911 - def handle_noargs(57,2156 - def select_blog_id(108,4159 - def get_metatype(129,4978 - def import_posts(139,5233 - def import_comments(176,7105 -def convert_blogger_timestamp(211,8327 -def is_draft(217,8506 -def get_blog_id(225,8674 -def get_post_id(229,8749 -class BloggerManager(233,8824 - def __init__(235,8855 - def get_blogs(241,9100 - def get_posts(246,9240 - def get_comments(251,9402 - -management/commands/feed2gstudio.py,204 -class Command(23,732 - def __init__(42,1524 - def write_out(50,1823 - def handle_label(56,2068 - def import_nodetypes(80,3027 - def import_metatypes(130,5354 - def import_tags(138,5673 - -management/commands/wp2gstudio.py,417 -class Command(29,903 - def __init__(56,2032 - def write_out(64,2331 - def handle_label(70,2576 - def import_authors(97,3580 - def migrate_author(120,4450 - def import_metatypes(151,5851 - def import_tags(175,6907 - def get_nodetype_tags(188,7535 - def get_nodetype_metatypes(198,7945 - def import_nodetype(208,8343 - def import_nodetypes(261,10784 - def import_comments(283,11815 - -context_processors.py,18 -def version(5,71 - -tests/feeds.py,829 -class GstudioFeedsTestCase(33,1121 - def setUp(37,1243 - def create_published_nodetype(44,1595 - def create_discussions(58,2169 - def test_nodetype_feed(75,3298 - def test_nodetype_feed_enclosure(94,4246 - def test_latest_nodetypes(118,5427 - def test_metatype_nodetypes(129,5871 - def test_author_nodetypes(142,6490 - def test_tag_nodetypes(153,7075 - def test_search_nodetypes(165,7642 - class FakeRequest:FakeRequest166,7679 - def __init__(167,7706 - def test_nodetype_discussions(182,8418 - def test_nodetype_comments(204,9586 - def test_nodetype_pingbacks(223,10565 - def test_nodetype_trackbacks(236,11206 - def test_nodetype_feed_no_authors(249,11852 - def test_nodetype_feed_rss_or_atom(258,12212 - def test_discussion_feed_with_same_slugs(269,12662 - -tests/signals.py,286 -class SignalsTestCase(12,342 - def test_disable_for_loaddata(15,409 - def make_top(19,502 - def call(22,553 - def test_ping_directories_handler(29,698 - def fake_pinger(33,812 - def test_ping_external_urls_handler(61,1894 - def fake_pinger(65,2013 - -tests/quick_nodetype.py,119 -class QuickNodetypeTestCase(10,226 - def setUp(14,343 - def tearDown(18,446 - def test_quick_nodetype(21,520 - -tests/metaweblog.py,487 -class MetaWeblogTestCase(23,717 - def setUp(27,822 - def test_authenticate(63,2525 - def test_get_users_blogs(79,3381 - def test_get_user_info(88,3814 - def test_get_authors(102,4511 - def test_get_metatypes(112,5021 - def test_new_metatype(151,6999 - def test_get_recent_posts(167,7883 - def test_delete_post(173,8171 - def test_get_post(182,8604 - def test_new_post(207,10034 - def test_edit_post(224,10849 - def test_new_media_object(281,13685 - -tests/spam_checker.py,72 -class SpamCheckerTestCase(11,247 - def test_get_spam_checker(14,331 - -tests/url_shortener.py,121 -class URLShortenerTestCase(12,315 - def setUp(15,401 - def tearDown(18,489 - def test_get_url_shortener(21,580 - -tests/metatype.py,136 -class MetatypeTestCase(10,232 - def setUp(12,267 - def test_nodetypes_published(27,943 - def test_nodetypes_tree_path(47,1766 - -tests/__init__.py,19 -def suite(32,1566 - -tests/managers.py,585 -class ManagersTestCase(18,466 - def setUp(20,501 - def test_tags_published(51,1985 - def test_author_published_manager_get_query_set(56,2209 - def test_nodetypes_published(65,2609 - def test_nodetype_published_manager_get_query_set(86,3763 - def test_nodetype_published_manager_on_site(107,4763 - def test_nodetype_published_manager_basic_search(115,5145 - def test_nodetype_published_manager_advanced_search(123,5592 - def test_nodetype_published_manager_advanced_search_with_punctuation(227,11380 - def test_nodetype_published_manager_search(238,11917 - -tests/custom_views_detail_urls.py,73 -def call_with_template_and_extra_context(13,366 - def wrapper(18,521 - -tests/nodetype.py,826 -class NodetypeTestCase(24,732 - def setUp(26,767 - def test_discussions(32,973 - def test_str(85,3818 - def test_word_count(88,3911 - def test_comments_are_open(91,3998 - def test_is_actual(102,4494 - def test_is_visible(111,4906 - def test_short_url(118,5195 - def test_previous_nodetype(128,5737 - def test_next_nodetype(149,6825 - def test_related_published(170,7893 -class NodetypeHtmlContentTestCase(192,8844 - def setUp(194,8890 - def tearDown(203,9223 - def test_html_content_default(207,9359 - def test_html_content_textitle(216,9756 - def test_html_content_markdown(231,10473 - def test_html_content_restructuredtext(246,11170 -class NodetypeGetBaseModelTestCase(262,11980 - def setUp(264,12027 - def tearDown(267,12129 - def test_get_base_model(270,12234 - -tests/views.py,1287 -class ViewsBaseCase(17,482 - def setUp(22,572 - def tearDown(62,2259 - def create_published_nodetype(66,2421 - def check_publishing_context(79,2938 -class GstudioViewsTestCase(92,3485 - def test_gstudio_nodetype_archive_index(100,3737 - def test_gstudio_nodetype_archive_year(103,3838 - def test_gstudio_nodetype_archive_month(106,3943 - def test_gstudio_nodetype_archive_day(109,4052 - def test_gstudio_nodetype_shortlink(112,4162 - def test_gstudio_nodetype_detail(117,4391 - def test_gstudio_nodetype_detail_login(135,5219 - def test_gstudio_nodetype_detail_password(142,5517 - def test_gstudio_nodetype_channel(157,6326 - def test_gstudio_metatype_list(160,6434 - def test_gstudio_metatype_detail(167,6786 - def test_gstudio_metatype_detail_paginated(172,7058 - def test_gstudio_author_list(193,8157 - def test_gstudio_author_detail(200,8498 - def test_gstudio_tag_list(205,8766 - def test_gstudio_tag_detail(212,9012 - def test_gstudio_nodetype_search(217,9264 - def test_gstudio_sitemap(228,9839 - def test_gstudio_trackback(239,10436 -class GstudioCustomDetailViews(275,12121 - def test_custom_metatype_detail(283,12433 - def test_custom_author_detail(289,12759 - def test_custom_tag_detail(295,13083 - -tests/moderator.py,249 -class NodetypeCommentModeratorTestCase(14,420 - def setUp(17,510 - def test_email(31,1115 - def test_do_email_notification(48,1930 - def test_do_email_authors(58,2457 - def test_do_email_reply(72,3190 - def test_moderate(103,4847 - -tests/templates/gstudio/base.html,56 -Gnowledge Studio - {% block title %}{% endblock %}3,16 - -tests/templates/gstudio/_nodetype_detail.html,23 -{{ object.title }}1,0 - -tests/custom_url_shortener.py,19 -def backend(8,182 - -tests/admin.py,234 -class NodetypeAdminTestCase(10,218 - def setUp(14,329 - def tearDown(24,774 - def test_nodetype_add_and_change(27,848 -class MetatypeAdminTestCase(54,2120 - def setUp(58,2232 - def test_metatype_add_and_change(62,2399 - -tests/custom_spam_checker.py,19 -def backend(8,181 - -tests/utils.py,76 -class TestTransport(8,121 - def __init__(12,234 - def request(16,357 - -tests/ping.py,387 -class DirectoryPingerTestCase(13,308 - def setUp(15,390 - def test_ping_nodetype(24,769 -class ExternalUrlsPingerTestCase(31,986 - def setUp(34,1075 - def test_is_external_url(42,1397 - def test_find_external_urls(57,2158 - def test_find_pingback_href(71,2815 - def fake_urlopen(89,3537 - def test_find_pingback_urls(105,4287 - def test_pingback_url(120,4922 - -tests/sitemaps.py,268 -class GstudioSitemapsTestCase(18,515 - def setUp(22,640 - def test_nodetype_sitemap(43,1680 - def test_metatype_sitemap(49,1920 - def test_author_sitemap(58,2338 - def test_tag_sitemap(68,2799 - def test_metatype_sitemap_zero_division_error(77,3220 - -tests/pingback.py,251 -class PingBackTestCase(24,722 - def fake_urlopen(28,824 - def setUp(39,1263 - def tearDown(85,3610 - def test_generate_pingback_content(90,3813 - def test_pingback_ping(113,4867 - def test_pingback_extensions_get_pingbacks(166,7277 - -tests/comparison.py,142 -class ComparisonTestCase(10,250 - def test_pearson_score(13,329 - def test_clustered_model(21,712 - def test_vector_builder(35,1500 - -tests/templatetags.py,948 -class TemplateTagsTestCase(40,1765 - def setUp(43,1843 - def publish_nodetype(51,2149 - def test_get_metatypes(57,2350 - def test_get_authors(67,2808 - def test_get_recent_nodetypes(80,3388 - def test_get_featured_nodetypes(93,3962 - def test_get_random_nodetypes(106,4546 - def test_get_popular_nodetypes(119,5120 - def test_get_similar_nodetypes(152,6735 - def test_get_archives_nodetypes(176,7850 - def test_get_archives_tree(199,8902 - def test_get_calendar_nodetypes(222,9966 - def test_get_recent_comments(268,12209 - def test_get_recent_linkbacks(296,13476 - def test_gstudio_pagination(324,14764 - class FakeRequest(325,14803 - def __init__(326,14838 - def test_gstudio_breadcrumbs(411,18953 - class FakeRequest(412,18993 - def __init__(413,19028 - def test_get_gravatar(486,22531 - def test_get_tags(496,22973 - def test_get_tag_cloud(519,23766 - -managers.py,310 -def tags_published(12,169 -class AuthorPublishedManager(22,551 - def get_query_set(25,646 -def nodetypes_published(36,1041 -class NodetypePublishedManager(46,1363 - def get_query_set(49,1462 - def on_site(54,1636 - def search(59,1840 - def advanced_search(66,2047 - def basic_search(71,2222 - -search.py,70 -def createQ(23,628 -def unionQ(81,2704 -def advanced_search(129,4174 - -views/quick_nodetype.py,64 -class QuickNodetypeForm(18,534 -def view_quick_nodetype(27,829 - -views/metatypes.py,60 -def get_metatype_or_404(10,299 -def metatype_detail(16,481 - -views/authors.py,26 -def author_detail(14,415 - -views/trackback.py,31 -def nodetype_trackback(14,423 - -views/search.py,27 -def nodetype_search(9,228 - -views/nodetypes.py,31 -def nodetype_shortlink(26,887 - -views/tags.py,44 -def tag_list(15,410 -def tag_detail(24,809 - -views/sitemap.py,19 -def sitemap(8,166 - -views/channels.py,28 -def nodetype_channel(7,129 - -views/decorators.py,187 -def update_queryset(15,491 - def wrapper(23,811 -def password(33,1048 -def protect_nodetype(47,1617 - def wrapper(53,1833 -def template_name_for_nodetype_queryset_filtered(72,2630 - -rdf.py,28 -def rdf_description(11,306 - -moderator.py,194 -class NodetypeCommentModerator(22,891 - def email(33,1366 - def do_email_notification(49,2086 - def do_email_authors(66,2971 - def do_email_reply(88,4129 - def moderate(115,5585 - -gnowql.py,68 -def get_slug(11,179 -def get_nodetype(31,849 -def get_node(52,1429 - -admin/processtype.py,802 -class ProcesstypeAdmin(27,773 - def __init__(69,3106 - def get_title(74,3279 - def get_authors(85,3784 - def get_metatypes(98,4367 - def get_tags(111,4949 - def get_sites(123,5470 - def get_comments_are_open(131,5798 - def get_is_actual(137,6064 - def get_is_visible(143,6284 - def get_link(149,6510 - def get_short_url(156,6798 - def save_model(167,7198 - def queryset(181,7838 - def formfield_for_manytomany(188,8129 - def get_actions(199,8630 - def make_mine(213,9161 - def make_published(222,9577 - def make_hidden(230,9979 - def make_tweet(237,10298 - def close_comments(253,11068 - def close_pingbacks(261,11463 - def put_on_top(269,11828 - def ping_directories(278,12283 - def get_urls(301,13352 - def _media(319,14297 - -admin/attributespecification.py,41 -class AttributeSpecificationAdmin(9,226 - -admin/attribute_booleanfield.py,40 -class AttributeBooleanFieldAdmin(8,223 - -admin/attribute.py,55 -class AttributeAdmin(9,243 - def save_model(10,289 - -admin/attribute_charfield.py,37 -class AttributeCharFieldAdmin(8,220 - -admin/attribute_filepathfield.py,41 -class AttributeFilePathFieldAdmin(8,224 - -admin/relationtype.py,805 -class RelationtypeAdmin(26,772 - def __init__(82,3369 - def get_title(87,3599 - def get_authors(98,4105 - def get_metatypes(111,4699 - def get_tags(124,5284 - def get_sites(136,5810 - def get_comments_are_open(144,6140 - def get_is_actual(150,6409 - def get_is_visible(156,6632 - def get_link(162,6861 - def get_short_url(169,7152 - def save_model(180,7554 - def queryset(194,8202 - def formfield_for_manytomany(201,8495 - def get_actions(212,8997 - def make_mine(226,9529 - def make_published(235,9951 - def make_hidden(243,10356 - def make_tweet(250,10678 - def close_comments(266,11453 - def close_pingbacks(274,11851 - def put_on_top(282,12219 - def ping_directories(291,12677 - def get_urls(314,13749 - def _media(332,14703 - -admin/attribute_urlfield.py,36 -class AttributeURLFieldAdmin(8,219 - -admin/nodespecification.py,36 -class NodeSpecificationAdmin(8,219 - -admin/intersection.py,31 -class IntersectionAdmin(8,214 - -admin/attributetype.py,806 -class AttributetypeAdmin(27,775 - def __init__(72,3198 - def get_title(77,3373 - def get_authors(88,3886 - def get_metatypes(101,4475 - def get_tags(114,5063 - def get_sites(126,5594 - def get_comments_are_open(134,5926 - def get_is_actual(140,6198 - def get_is_visible(146,6424 - def get_link(152,6656 - def get_short_url(159,6950 - def save_model(170,7354 - def queryset(184,8010 - def formfield_for_manytomany(191,8305 - def get_actions(202,8808 - def make_mine(216,9341 - def make_published(225,9769 - def make_hidden(233,10177 - def make_tweet(240,10502 - def close_comments(256,11282 - def close_pingbacks(264,11683 - def put_on_top(272,12054 - def ping_directories(281,12515 - def get_urls(304,13590 - def _media(322,14553 - -admin/attribute_decimalfield.py,40 -class AttributeDecimalFieldAdmin(8,223 - -admin/attribute_emailfield.py,38 -class AttributeEmailFieldAdmin(8,221 - -admin/metatype.py,82 -class MetatypeAdmin(9,242 - def __init__(18,611 - def get_tree_path(22,760 - -admin/attribute_datetimefield.py,41 -class AttributeDateTimeFieldAdmin(8,224 - -admin/attribute_filefield.py,37 -class AttributeFileFieldAdmin(8,220 - -admin/attribute_bigintegerfield.py,43 -class AttributeBigIntegerFieldAdmin(8,226 - -admin/union.py,24 -class UnionAdmin(8,207 - -admin/attribute_imagefield.py,38 -class AttributeImageFieldAdmin(8,221 - -admin/attribute_datefield.py,37 -class AttributeDateFieldAdmin(8,220 - -admin/attribute_integerfield.py,40 -class AttributeIntegerFieldAdmin(8,223 - -admin/objecttype.py,801 -class ObjecttypeAdmin(26,768 - def __init__(65,3026 - def get_title(70,3198 - def get_authors(81,3691 - def get_metatypes(94,4265 - def get_tags(107,4838 - def get_sites(119,5348 - def get_comments_are_open(127,5670 - def get_is_actual(133,5927 - def get_is_visible(139,6138 - def get_link(145,6355 - def get_short_url(152,6634 - def save_model(163,7028 - def queryset(177,7644 - def formfield_for_manytomany(184,7931 - def get_actions(195,8431 - def make_mine(209,8961 - def make_published(218,9359 - def make_hidden(226,9752 - def make_tweet(233,10062 - def close_comments(249,10817 - def close_pingbacks(257,11203 - def put_on_top(265,11559 - def ping_directories(274,12005 - def get_urls(297,13065 - def _media(315,13985 - -admin/complement.py,29 -class ComplementAdmin(8,212 - -admin/forms.py,2806 -class MetatypeAdminForm(56,2107 - def __init__(63,2368 - def clean_parent(69,2648 - class Meta:Meta77,2932 -class ObjecttypeAdminForm(82,3014 - def __init__(110,4086 - def clean_parent(126,4824 - class Meta:Meta134,5122 -class RelationtypeAdminForm(139,5206 - def __init__(152,5804 - class Meta:Meta167,6306 -class RelationAdminForm(172,6392 - def ApplicableNodeTypes_filter(175,6436 - class Meta:Meta223,7479 -class ProcesstypeAdminForm(228,7561 - def __init__(252,8736 - class Meta:Meta272,9643 -class AttributetypeAdminForm(276,9725 - def __init__(287,10317 - class Meta:Meta300,10818 -class AttributeAdminForm(305,10905 - def subject_filter(307,10949 - def __init__(315,11205 - class Meta:Meta320,11385 -class SystemtypeAdminForm(326,11469 - def __init__(364,13456 - class Meta:Meta392,14896 -class AttributeSpecificationAdminForm(397,14978 - class Meta:Meta398,15034 -class RelationSpecificationAdminForm(401,15090 - class Meta:Meta402,15145 -class NodeSpecificationAdminForm(405,15200 - class Meta:Meta406,15251 -class UnionAdminForm(409,15302 - class Meta:Meta410,15341 -class ComplementAdminForm(413,15380 - class Meta:Meta414,15424 -class IntersectionAdminForm(419,15470 - class Meta:Meta420,15516 -class AttributeCharFieldAdminForm(425,15586 - class Meta:Meta426,15638 -class AttributeTextFieldAdminForm(429,15690 - class Meta:Meta430,15742 -class AttributeIntegerFieldAdminForm(433,15794 - class Meta:Meta434,15849 -class AttributeCommaSeparatedIntegerFieldAdminForm(437,15904 - class Meta:Meta438,15973 -class AttributeBigIntegerFieldAdminForm(440,16041 - class Meta:Meta441,16099 -class AttributePositiveIntegerFieldAdminForm(443,16156 - class Meta:Meta444,16219 -class AttributeDecimalFieldAdminForm(447,16282 - class Meta:Meta448,16337 -class AttributeFloatFieldAdminForm(450,16391 - class Meta:Meta451,16444 -class AttributeBooleanFieldAdminForm(453,16496 - class Meta:Meta454,16551 -class AttributeNullBooleanFieldAdminForm(457,16606 - class Meta:Meta458,16665 -class AttributeDateFieldAdminForm(460,16723 - class Meta:Meta461,16775 -class AttributeDateTimeFieldAdminForm(463,16826 - class Meta:Meta464,16882 -class AttributeTimeFieldAdminForm(467,16934 - class Meta:Meta468,16986 -class AttributeEmailFieldAdminForm(471,17038 - class Meta:Meta472,17091 -class AttributeFileFieldAdminForm(474,17143 - class Meta:Meta475,17195 -class AttributeFilePathFieldAdminForm(477,17246 - class Meta:Meta478,17302 -class AttributeImageFieldAdminForm(480,17357 - class Meta:Meta481,17410 -class AttributeURLFieldAdminForm(484,17463 - class Meta:Meta485,17514 -class AttributeIPAddressFieldAdminForm(487,17564 - class Meta:Meta488,17621 - -admin/attribute_positiveintegerfield.py,48 -class AttributePositiveIntegerFieldAdmin(8,231 - -admin/attribute_nullbooleanfield.py,44 -class AttributeNullBooleanFieldAdmin(8,227 - -admin/relationspecification.py,40 -class RelationSpecificationAdmin(8,223 - -admin/attribute_timefield.py,37 -class AttributeTimeFieldAdmin(8,220 - -admin/systemtype.py,803 -class SystemtypeAdmin(27,772 - def __init__(72,3312 - def get_title(77,3484 - def get_authors(88,3985 - def get_metatypes(101,4565 - def get_tags(114,5144 - def get_sites(126,5660 - def get_comments_are_open(134,5986 - def get_is_actual(140,6249 - def get_is_visible(146,6466 - def get_link(152,6689 - def get_short_url(159,6974 - def save_model(170,7372 - def queryset(184,8004 - def formfield_for_manytomany(191,8293 - def get_actions(202,8793 - def make_mine(216,9323 - def make_published(225,9733 - def make_hidden(233,10132 - def make_tweet(240,10448 - def close_comments(256,11213 - def close_pingbacks(264,11605 - def put_on_top(272,11967 - def ping_directories(281,12419 - def get_urls(304,13485 - def _media(322,14421 - -admin/attribute_textfield.py,37 -class AttributeTextFieldAdmin(8,220 - -admin/attribute_commaseparatedintegerfield.py,54 -class AttributeCommaSeparatedIntegerFieldAdmin(8,237 - -admin/widgets.py,462 -class TreeNodeChoiceField(13,344 - def __init__(16,540 - def label_from_instance(22,834 -class MPTTModelChoiceIterator(29,1112 - def choice(31,1223 -class MPTTModelMultipleChoiceField(39,1549 - def __init__(41,1668 - def label_from_instance(45,1857 - def _get_choices(51,2134 -class MPTTFilteredSelectMultiple(60,2388 - def __init__(62,2503 - def render_options(66,2690 - def render_option(74,3074 - class Media:Media103,4435 - -admin/attribute_floatfield.py,38 -class AttributeFloatFieldAdmin(8,221 - -admin/attribute_ipaddressfield.py,42 -class AttributeIPAddressFieldAdmin(8,225 - -admin/relation.py,54 -class RelationAdmin(9,242 - def save_model(10,287 - -url_shortener/__init__.py,30 -def get_url_shortener(11,286 - -url_shortener/backends/bitly.py,20 -def backend(17,511 - -url_shortener/backends/default.py,19 -def backend(8,179 - -templatetags/gstudio_admin_tags.py,62 -def get_draft_nodetypes(16,444 -def get_content_stats(24,744 - -templatetags/zbreadcrumbs.py,147 -class Crumb(9,188 - def __init__(11,243 -def year_crumb(16,333 -def month_crumb(23,542 -def day_crumb(32,873 -def retrieve_breadcrumbs(62,2254 - -templatetags/zcalendar.py,174 -class GstudioCalendar(15,375 - def __init__(18,448 - def formatday(24,677 - def formatmonth(39,1457 - def formatweekday(52,2055 - def formatmonthname(58,2300 - -templatetags/gstudio_tags.py,699 -def get_metatypes(41,1302 -def get_authors(54,1749 -def get_recent_nodetypes(61,1977 -def get_featured_nodetypes(68,2250 -def get_random_nodetypes(76,2565 -def get_popular_nodetypes(86,2926 -def get_similar_nodetypes(111,3884 - def compute_related(122,4236 -def get_archives_nodetypes(154,5372 -def get_archives_nodetypes_tree(162,5708 -def get_calendar_nodetypes(171,6086 -def get_recent_comments(200,7166 -def get_recent_linkbacks(217,7919 -def gstudio_pagination(236,8656 -def gstudio_breadcrumbs(275,10403 -def get_gravatar(288,10960 -def get_type(300,11351 -class TagsNode(306,11434 - def __init__(307,11456 - def render(310,11533 -def get_tags(316,11651 -def get_tag_cloud(330,12061 - -migrations/0001_initial.py,76 -class Migration(7,125 - def forwards(9,160 - def backwards(502,33303 - -templates/gstudio/nodetype_archive_year.html,78 -{% trans "Archives" %} {{ year }}9,223 -{% trans "Monthly archives" %}13,286 - -templates/gstudio/nodetype_detail.html,495 -{% trans "Comments" %}comments228,10243 -{% for comment in comment_list %}comment-list232,10398 -{% if comment.url %}comment_{{ comment.pk }}239,10834 -{% trans "Pingbacks" %}pingbacks269,11585 -{% for pingback in pingback_list %}pingback-list273,11745 -{{ pingback.user_name }}pingback_{{ pingback.pk }}277,11969 -{% trans "Trackbacks" %}trackbacks303,12635 -{% for trackback in trackback_list %}trackback-list306,12751 -{{ trackback.user_name }}trackback_{{ trackback.pk }}310,12982 - -templates/gstudio/password.html,72 -{% trans "Password required" %}7,135 -{% endblock %}id_password34,818 - -templates/gstudio/opensearch.xml,97 -<?xml version=1,0 -<OpenSearchDescription xmlns=4,95 - <Url type=11,500 - <Query role=15,1037 - -templates/gstudio/tags/slider_nodetypes.html,170 -{% for nodetype in nodetypes %}slider4,64 -{{ nodetype.title }}nav-slider-{{ forloop.counter }}9,394 -{{ nodetype.title }}nodetype-slider-{{ forloop.counter }}20,734 - -templates/gstudio/skeleton.html,309 -Gnowledge Studio - {% block title %}{% endblock %}76,4581 -{% include "gstudio/_header.html" %}gstudio81,4712 -/ {% block breadcrumbs %}{% endblock %}breadcrumbs84,4801 -{% block content %}content89,4945 -The content block need to be overrided!90,4968 -Welcome!sidebar97,5113 -Powered by footer110,5486 - -templates/gstudio/attributetype_detail.html,486 -{% trans "Comments" %}comments157,7201 -{% for comment in comment_list %}comment-list161,7356 -{% if comment.url %}comment_{{ comment.pk }}168,7792 -{% trans "Pingbacks" %}pingbacks198,8548 -{% for pingback in pingback_list %}pingback-list202,8708 -{{ pingback.user_name }}pingback_{{ pingback.pk }}206,8932 -{% trans "Trackbacks" %}trackbacks232,9603 -{% for trackback in trackback_list %}trackback-list235,9719 -{{ trackback.user_name }}trackback_{{ trackback.pk }}239,9950 - -templates/gstudio/sitemap.html,183 -{% trans "Sitemap" %}7,148 -{% trans "Nodetypes per metatypes" %}10,215 -{% trans "All the nodetypes" %}31,831 -{% trans "Metatypes" %}50,1402 -{% trans "Monthly archives" %}67,2053 - -templates/gstudio/nodetype_archive_day.html,58 -{% trans "Archives" %} {{ day|date:"DATE_FORMAT" }}9,259 - -templates/gstudio/tag_list.html,29 -{% trans "Tag list" %}9,188 - -templates/gstudio/nodetype_list.html,169 -{{ metatype.title }}23,1561 -{% trans "Tag" %} : {{ tag }}100,4059 -{% blocktrans with author.username as author %}Nodetypes by {{ author }}{% endblocktrans %}104,4127 - -templates/gstudio/rsd.xml,42 -<?xml version=1,0 - <api name=8,321 - -templates/gstudio/wlwmanifest.xml,34 -{% load i18n %}<?xml version=1,0 - -templates/gstudio/wxr.xml,138 -<?xml version=1,0 -<!-- generator=8,417 - <metatype domain=44,2143 - <metatype domain=46,2338 - <guid isPermaLink=48,2440 - -templates/gstudio/nodetype_archive_month.html,102 -{% trans "Archives" %} {{ month|date:"YEAR_MONTH_FORMAT" }}9,275 -{% trans "Daily archives" %}13,364 - -templates/gstudio/login.html,36 -{% trans "Login required" %} 7,132 - -templates/gstudio/base.html,415 -{% trans "Search" %}28,978 -{% trans "Metatypes" %}searchbox40,1627 -{% trans "Authors" %}45,1714 -{% trans "Calendar" %}49,1797 -{% trans "Tags" %}53,1888 -{% trans "Recent node types" %}57,1969 -{% trans "Recent comments" %}61,2073 -{% trans "Recent linkbacks" %}65,2175 -{% trans "Random node types" %}69,2277 -{% trans "Popular node types" %}73,2381 -{% trans "Archives" %}77,2487 -{% trans "Tools" %}82,2615 - -templates/gstudio/nodetype_trackback.xml,19 -<?xml version=1,0 - -templates/gstudio/_header.html,100 - Gnowledge Studio header5,45 -{% firstof user.first_name user.username %}user-tools17,549 - -templates/gstudio/metatype_list.html,34 -{% trans "Metatype list" %}9,208 - -templates/gstudio/author_list.html,32 -{% trans "Author list" %}9,194 - -templates/gstudio/_nodetype_detail.html,50 -{{ object.title }}nodetype-{{ object.pk }}6,316 - -templates/gstudio/nodetype_search.html,128 -{% trans "Search results for" %} {% if pattern %}'{{ pattern }}'{% endif %}14,808 -{% if is_paginated %}main_searchbox46,2016 - -templates/comments/gstudio/nodetype/posted.html,44 -{% trans "Thanks for your comment" %}7,141 - -templates/comments/gstudio_nodetype_preview.html,250 -{% blocktrans count form.errors|length as errors %}Please correct following error.{% plural %}Please correct following errors.{% endblocktrans %}9,185 -{% trans "Preview of the comment" %}12,356 -{% if form.cleaned_data.url %}comment_preview20,783 - -templates/skeleton.html,335 -Gnowledge Studio - {% block title %}{% endblock %}26,1536 -A workspace for constructing and publishing knowledge networks.gstudio32,1681 -/ {% block breadcrumbs %}{% endblock %}breadcrumbs35,1817 -{% block content %}content40,1973 -The content block need to be overrided!41,1996 -Welcome!sidebar46,2139 -Powered by footer67,2850 - -templates/admin/gstudio/app_index.html,78 -{% include "admin/gstudio/widgets/content_stats.html" %}content-main28,1046 - -templates/admin/gstudio/widgets/quickpost.html,110 -{% csrf_token %}quickpost4,122 -{% trans "Content" %}:id_title17,525 -{% trans "Tags" %}:id_content25,780 - -templates/admin/gstudio/widgets/ATquickpost.html,189 -{% csrf_token %}AT_quickpost4,125 -{% trans "Slug" %}:id_title19,525 -{% trans "Status" %}:id_slug27,766 -{% trans "Content" %}:id_status35,1019 -{% trans "Tags" %}:id_content43,1274 - -templates/admin/gstudio/widgets/OTquickpost.html,188 -{% csrf_token %}OTquickpost4,123 -{% trans "Slug" %}:id_title18,526 -{% trans "Status" %}:id_slug26,767 -{% trans "Content" %}:id_status34,1020 -{% trans "Tags" %}:id_content42,1275 - -templates/admin/gstudio/widgets/base.html,74 -{% block title %}{% endblock %}{% block module_id %}{% endblock %}3,116 - -templates/admin/gstudio/base.html~,780 -<html xmlns=2,136 -<html xmlns="http://www.w3.org/1999/xhtml" lang="{{ LANGUAGE_CODE|default:"en-us" }}" xml:lang="{{ LANGUAGE_CODE|default:"en-us" }}" {% if LANGUAGE_BIDI %}dir=dir2,136 -<link rel=5,367 -<!--[if lte IE 7]><link rel=7,547 -{% if LANGUAGE_BIDI %}<link rel=8,721 -<script type=9,879 -{% block blockbots %}<meta name=11,1051 - <div id=22,1332 - <div id=27,1490 - <a href=33,1802 - <a href=37,2027 - <a href=39,2111 - <a href=44,2345 - <a href=46,2420 - {% block breadcrumbs %}<div class="breadcrumbs"><a href="/">{% trans 'Home' %}</a>{% if title %} ›rsaquo55,2686 - <div id=65,3097 - </div>div74,3493 - {% block footer %}<div id=77,3530 - -templates/500.html,168 -{% trans "Server error" %}11,213 -{% trans "Useful links" %}15,407 -{% trans "Recent node types" %}31,773 -{% trans "Search" %}36,875 -{% endblock %}searchbox46,1219 - -templates/404.html,170 -{% trans "Page not found" %}11,215 -{% trans "Useful links" %}15,326 -{% trans "Recent node types" %}31,692 -{% trans "Search" %}36,794 -{% endblock %}searchbox46,1138 - -templates/base.html,415 -{% trans "Search" %}23,934 -{% trans "Metatypes" %}searchbox35,1583 -{% trans "Authors" %}40,1670 -{% trans "Calendar" %}44,1753 -{% trans "Tags" %}48,1844 -{% trans "Recent node types" %}52,1925 -{% trans "Recent comments" %}56,2029 -{% trans "Recent linkbacks" %}60,2131 -{% trans "Random node types" %}64,2233 -{% trans "Popular node types" %}68,2337 -{% trans "Archives" %}72,2443 -{% trans "Tools" %}77,2571 - -TAGS,17 -feeds.py,py2,2 - -spam_checker/__init__.py,55 -def get_spam_checker(10,207 -def check_is_spam(26,709 - -spam_checker/backends/mollom.py,20 -def backend(22,705 - -spam_checker/backends/all_is_spam.py,18 -def backend(4,54 - -spam_checker/backends/automattic.py,20 -def backend(21,607 - -spam_checker/backends/typepad.py,42 -class TypePad(21,607 -def backend(26,727 - -static/gstudio/img/sitemap.png,41 -d€r`)¬‚B(†Í°*`/Ô@4ÀQh†“p.ÂU¸U7,703 - -static/gstudio/img/objecttype.png,94 -(Ë’öû=m6ò}_ÙàB¦Ó©Çø`fÀëÉܲê`·ÛÑd2¡0͇¸®BaøªRÇgÁMÓPQÊbE‘Ò‡T iÛÖ$iÛÖ5,253 - -static/gstudio/img/wlw/watermark.png,608 -jTÐÄÙ¢0EP^HÁS´§©/Iýåih‘¾Á.‘èAs¨!:JŠ¤»?Êpñ!Êñ{X,X4,899 -‚ä†<VÜV5,995 -3Y¨V·,¶é±ëDN5%FÒPÐnÄÆ‘<6d_¡ê+¬™PcM7S¯,ÿøtüÖ¿šú+ÿKÀ>jhª dCi÷”T(–i(Ó÷:j"
÷¾~›ËožP.Zê½#9EŽ
ZidhÈA!2/ÒgÊÜ OöˆQ0}¦Œ-Q„ª$L5’¬Q„ª$L5’10,1712 -®Û7GLç7 èƒpR49×è"˜vƒkö„’º8t0Z“ç†8u¤aIž–”©E¡°ÍSïH®&wï§1ßÏêèýØæú(Üî
⯕ïÌF~î¿,¼ö⣨õ)^¯È»cÆÍ !,!ytQå( D?¡t&ïÖäÝ ’ía“Ê
VY\PF@ìñº“
qènS…ÂÆš’<q¿B©¹CJ²Û]!}‡žÇO}…ööOúÕ®» æÍuƒ®gtÎhèD c€:¡-ȸ$Ï)4”¹£‹ 0nÂ6‡YYš£‘k×w¬×
Å^§ï+VjæîÿþÆwè—þRÏþ»HyðUYS
r Bc‡r Bc15,3313 -·š1«‘Ø/‰ç5 ÍŠì)+L6H†’-)5Ž,-JÕ83â‡.j¼F% ¿èÑÑ"C‹‰ÍA5ªÚÓ#ä«¡\@fÃðfÃ21,4864 - -static/gstudio/img/wlw/comments.png,84 -ÔV”VV”5,151 -ÔV”V”" Rh£òpš´MC";ib;5,151 -ÔV”V”" Rh£òpš´MC";ib;~Åkï®wg~Åkï®w5,151 - -static/gstudio/img/plugin.png,992 -ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡só5¦KË—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›ÜÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌ㧛§Âóç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËýø¿áyòñN`Áå½³k™¥5»/>B
Yr“oÀòùc3Üg,šÑÊZú0Ì&LÖŽ†Ïß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´StqtQ´Stq12,1526 -ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡só5¦KË—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›ÜÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌ㧛§Âóç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËýø¿áyòñN`Áå½³k™¥5»/>B
Yr“oÀòùc3Üg,šÑÊZú0Ì&LÖŽ†Ïß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûgYû12,1526 -ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡só5¦KË—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›ÜÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌ㧛§Âóç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËýø¿áyòñN`Áå½³k™¥5»/>B
Yr“oÀòùc3Üg,šÑÊZú0Ì&LÖŽ†Ïß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ©Œ¹;Ûj¶rvg¬jlRlc웸j¶rvg¬jlRlcì›12,1526 - -static/gstudio/css/src/_base.sass,40 -$blueprint_font_family: unquote(13,424 - -static/gstudio/css/src/dashboard_gstudio.sass,41 - th,11,117 - background: url(15,163 - -static/gstudio/css/src/screen.sass,106 -ul,13,265 - h1,49,907 - h1, h2,49,907 - ul,62,1087 - li ul,65,1165 - +tag-cloud(cloud84,1495 - -static/gstudio/css/src/print.sass,179 - a,10,125 - a, a:link,link10,125 - a, a:link, a:visited,visited10,125 - a, a:link, a:visited, a:focus,focus10,125 - a, a:link, a:visited, a:focus, a:active,active10,125 - -static/gstudio/css/src/dashboard_objectapp.sass,41 - th,11,117 - background: url(15,163 - -static/gstudio/css/print.css,354 -h1,8,330 -h1, h2,8,330 -h1, h2, h3,8,330 -h1, h2, h3, h4,8,330 -h1, h2, h3, h4, h5,8,330 -a:link,link13,528 -body a,28,874 -body a, body a:link,link28,874 -body a, body a:link, body a:visited,visited28,874 -body a, body a:link, body a:visited, body a:focus,focus28,874 -body a, body a:link, body a:visited, body a:focus, body a:active,active28,874 - -static/gstudio/css/config.rb,19 -project_type 2,47 - -static/gstudio/css/ie.css,32 -fieldset,19,419 -legend,21,464 - -static/gstudio/css/screen.css,14875 -h1,3,103 -h1, h2,3,103 -h1, h2, h3,3,103 -h1, h2, h3, h4,3,103 -h1, h2, h3, h4, h5,3,103 -h1 img,4,167 -h1 img, h2 img,4,167 -h1 img, h2 img, h3 img,4,167 -h1 img, h2 img, h3 img, h4 img,4,167 -h1 img, h2 img, h3 img, h4 img, h5 img,4,167 -strong,30,1009 -em,32,1045 -sup,34,1078 -abbr,36,1108 -pre,44,1283 -pre, code,44,1283 -li ul,46,1374 -ul,48,1403 -th,65,1720 -th, td,65,1720 -table.striped tr:nth-child(child67,1768 -.column,column97,2475 -.column, .span-1, .span-2, .span-3, .span-4, .span-5, .span-6, .span-7, .span-8, .span-9, .span-10, .span-11, .span-12, .span-13, .span-14, .span-15, .span-16, .span-17, .span-18, .span-19, .span-20, .span-21, .span-22, .span-23, .span-24 { display: inline;97,2475 -.column, .span-1, .span-2, .span-3, .span-4, .span-5, .span-6, .span-7, .span-8, .span-9, .span-10, .span-11, .span-12, .span-13, .span-14, .span-15, .span-16, .span-17, .span-18, .span-19, .span-20, .span-21, .span-22, .span-23, .span-24 { display: inline; float: left;97,2475 -.column, .span-1, .span-2, .span-3, .span-4, .span-5, .span-6, .span-7, .span-8, .span-9, .span-10, .span-11, .span-12, .span-13, .span-14, .span-15, .span-16, .span-17, .span-18, .span-19, .span-20, .span-21, .span-22, .span-23, .span-24 { display: inline; float: left; margin-right: 10px;px97,2475 -* html .column,column98,2768 -* html .column, * html .span-1, * html .span-2, * html .span-3, * html .span-4, * html .span-5, * html .span-6, * html .span-7, * html .span-8, * html .span-9, * html .span-10, * html .span-11, * html .span-12, * html .span-13, * html .span-14, * html .span-15, * html .span-16, * html .span-17, * html .span-18, * html .span-19, * html .span-20, * html .span-21, * html .span-22, * html .span-23, * html .span-24 { overflow-x: hidden;98,2768 -.span-1 { width: 30px;px102,3235 -.span-2 { width: 70px;px104,3261 -.span-3 { width: 110px;px106,3287 -.span-4 { width: 150px;px108,3314 -.span-5 { width: 190px;px110,3341 -.span-6 { width: 230px;px112,3368 -.span-7 { width: 270px;px114,3395 -.span-8 { width: 310px;px116,3422 -.span-9 { width: 350px;px118,3449 -.span-10 { width: 390px;px120,3476 -.span-11 { width: 430px;px122,3504 -.span-12 { width: 470px;px124,3532 -.span-13 { width: 510px;px126,3560 -.span-14 { width: 550px;px128,3588 -.span-15 { width: 590px;px130,3616 -.span-16 { width: 630px;px132,3644 -.span-17 { width: 670px;px134,3672 -.span-18 { width: 710px;px136,3700 -.span-19 { width: 750px;px138,3728 -.span-20 { width: 790px;px140,3756 -.span-21 { width: 830px;px142,3784 -.span-22 { width: 870px;px144,3812 -.span-23 { width: 910px;px146,3840 -.span-24 { width: 950px;px148,3868 -.span-24 { width: 950px; margin:margin148,3868 -input.span-1, textarea.span-1, select.span-1 { width: 30px;px150,3907 -input.span-2, textarea.span-2, select.span-2 { width: 70px;px151,3969 -input.span-3, textarea.span-3, select.span-3 { width: 110px;px152,4031 -input.span-4, textarea.span-4, select.span-4 { width: 150px;px153,4094 -input.span-5, textarea.span-5, select.span-5 { width: 190px;px154,4157 -input.span-6, textarea.span-6, select.span-6 { width: 230px;px155,4220 -input.span-7, textarea.span-7, select.span-7 { width: 270px;px156,4283 -input.span-8, textarea.span-8, select.span-8 { width: 310px;px157,4346 -input.span-9, textarea.span-9, select.span-9 { width: 350px;px158,4409 -input.span-10, textarea.span-10, select.span-10 { width: 390px;px159,4472 -input.span-11, textarea.span-11, select.span-11 { width: 430px;px160,4538 -input.span-12, textarea.span-12, select.span-12 { width: 470px;px161,4604 -input.span-13, textarea.span-13, select.span-13 { width: 510px;px162,4670 -input.span-14, textarea.span-14, select.span-14 { width: 550px;px163,4736 -input.span-15, textarea.span-15, select.span-15 { width: 590px;px164,4802 -input.span-16, textarea.span-16, select.span-16 { width: 630px;px165,4868 -input.span-17, textarea.span-17, select.span-17 { width: 670px;px166,4934 -input.span-18, textarea.span-18, select.span-18 { width: 710px;px167,5000 -input.span-19, textarea.span-19, select.span-19 { width: 750px;px168,5066 -input.span-20, textarea.span-20, select.span-20 { width: 790px;px169,5132 -input.span-21, textarea.span-21, select.span-21 { width: 830px;px170,5198 -input.span-22, textarea.span-22, select.span-22 { width: 870px;px171,5264 -input.span-23, textarea.span-23, select.span-23 { width: 910px;px172,5330 -input.span-24, textarea.span-24, select.span-24 { width: 950px;px173,5396 -.append-1 { padding-right: 40px;px175,5463 -.append-2 { padding-right: 80px;px177,5499 -.append-3 { padding-right: 120px;px179,5535 -.append-4 { padding-right: 160px;px181,5572 -.append-5 { padding-right: 200px;px183,5609 -.append-6 { padding-right: 240px;px185,5646 -.append-7 { padding-right: 280px;px187,5683 -.append-8 { padding-right: 320px;px189,5720 -.append-9 { padding-right: 360px;px191,5757 -.append-10 { padding-right: 400px;px193,5794 -.append-11 { padding-right: 440px;px195,5832 -.append-12 { padding-right: 480px;px197,5870 -.append-13 { padding-right: 520px;px199,5908 -.append-14 { padding-right: 560px;px201,5946 -.append-15 { padding-right: 600px;px203,5984 -.append-16 { padding-right: 640px;px205,6022 -.append-17 { padding-right: 680px;px207,6060 -.append-18 { padding-right: 720px;px209,6098 -.append-19 { padding-right: 760px;px211,6136 -.append-20 { padding-right: 800px;px213,6174 -.append-21 { padding-right: 840px;px215,6212 -.append-22 { padding-right: 880px;px217,6250 -.append-23 { padding-right: 920px;px219,6288 -.prepend-1 { padding-left: 40px;px221,6326 -.prepend-2 { padding-left: 80px;px223,6362 -.prepend-3 { padding-left: 120px;px225,6398 -.prepend-4 { padding-left: 160px;px227,6435 -.prepend-5 { padding-left: 200px;px229,6472 -.prepend-6 { padding-left: 240px;px231,6509 -.prepend-7 { padding-left: 280px;px233,6546 -.prepend-8 { padding-left: 320px;px235,6583 -.prepend-9 { padding-left: 360px;px237,6620 -.prepend-10 { padding-left: 400px;px239,6657 -.prepend-11 { padding-left: 440px;px241,6695 -.prepend-12 { padding-left: 480px;px243,6733 -.prepend-13 { padding-left: 520px;px245,6771 -.prepend-14 { padding-left: 560px;px247,6809 -.prepend-15 { padding-left: 600px;px249,6847 -.prepend-16 { padding-left: 640px;px251,6885 -.prepend-17 { padding-left: 680px;px253,6923 -.prepend-18 { padding-left: 720px;px255,6961 -.prepend-19 { padding-left: 760px;px257,6999 -.prepend-20 { padding-left: 800px;px259,7037 -.prepend-21 { padding-left: 840px;px261,7075 -.prepend-22 { padding-left: 880px;px263,7113 -.prepend-23 { padding-left: 920px;px265,7151 -.pull-1, .pull-2, .pull-3, .pull-4, .pull-5, .pull-6, .pull-7, .pull-8, .pull-9, .pull-10, .pull-11, .pull-12, .pull-13, .pull-14, .pull-15, .pull-16, .pull-17, .pull-18, .pull-19, .pull-20, .pull-21, .pull-22, .pull-23, .pull-24 { display: inline;267,7189 -.pull-1, .pull-2, .pull-3, .pull-4, .pull-5, .pull-6, .pull-7, .pull-8, .pull-9, .pull-10, .pull-11, .pull-12, .pull-13, .pull-14, .pull-15, .pull-16, .pull-17, .pull-18, .pull-19, .pull-20, .pull-21, .pull-22, .pull-23, .pull-24 { display: inline; float: left;267,7189 -.pull-1, .pull-2, .pull-3, .pull-4, .pull-5, .pull-6, .pull-7, .pull-8, .pull-9, .pull-10, .pull-11, .pull-12, .pull-13, .pull-14, .pull-15, .pull-16, .pull-17, .pull-18, .pull-19, .pull-20, .pull-21, .pull-22, .pull-23, .pull-24 { display: inline; float: left; position: relative;267,7189 -.pull-1 { margin-left: -40px;px269,7474 -.pull-2 { margin-left: -80px;px271,7507 -.pull-3 { margin-left: -120px;px273,7540 -.pull-4 { margin-left: -160px;px275,7574 -.pull-5 { margin-left: -200px;px277,7608 -.pull-6 { margin-left: -240px;px279,7642 -.pull-7 { margin-left: -280px;px281,7676 -.pull-8 { margin-left: -320px;px283,7710 -.pull-9 { margin-left: -360px;px285,7744 -.pull-10 { margin-left: -400px;px287,7778 -.pull-11 { margin-left: -440px;px289,7813 -.pull-12 { margin-left: -480px;px291,7848 -.pull-13 { margin-left: -520px;px293,7883 -.pull-14 { margin-left: -560px;px295,7918 -.pull-15 { margin-left: -600px;px297,7953 -.pull-16 { margin-left: -640px;px299,7988 -.pull-17 { margin-left: -680px;px301,8023 -.pull-18 { margin-left: -720px;px303,8058 -.pull-19 { margin-left: -760px;px305,8093 -.pull-20 { margin-left: -800px;px307,8128 -.pull-21 { margin-left: -840px;px309,8163 -.pull-22 { margin-left: -880px;px311,8198 -.pull-23 { margin-left: -920px;px313,8233 -.pull-24 { margin-left: -960px;px315,8268 -.push-1, .push-2, .push-3, .push-4, .push-5, .push-6, .push-7, .push-8, .push-9, .push-10, .push-11, .push-12, .push-13, .push-14, .push-15, .push-16, .push-17, .push-18, .push-19, .push-20, .push-21, .push-22, .push-23, .push-24 { display: inline;317,8303 -.push-1, .push-2, .push-3, .push-4, .push-5, .push-6, .push-7, .push-8, .push-9, .push-10, .push-11, .push-12, .push-13, .push-14, .push-15, .push-16, .push-17, .push-18, .push-19, .push-20, .push-21, .push-22, .push-23, .push-24 { display: inline; float: left;317,8303 -.push-1, .push-2, .push-3, .push-4, .push-5, .push-6, .push-7, .push-8, .push-9, .push-10, .push-11, .push-12, .push-13, .push-14, .push-15, .push-16, .push-17, .push-18, .push-19, .push-20, .push-21, .push-22, .push-23, .push-24 { display: inline; float: left; position: relative;317,8303 -.push-1 { margin: 0 -40px 1.5em 40px;px319,8588 -.push-2 { margin: 0 -80px 1.5em 80px;px321,8629 -.push-3 { margin: 0 -120px 1.5em 120px;px323,8670 -.push-4 { margin: 0 -160px 1.5em 160px;px325,8713 -.push-5 { margin: 0 -200px 1.5em 200px;px327,8756 -.push-6 { margin: 0 -240px 1.5em 240px;px329,8799 -.push-7 { margin: 0 -280px 1.5em 280px;px331,8842 -.push-8 { margin: 0 -320px 1.5em 320px;px333,8885 -.push-9 { margin: 0 -360px 1.5em 360px;px335,8928 -.push-10 { margin: 0 -400px 1.5em 400px;px337,8971 -.push-11 { margin: 0 -440px 1.5em 440px;px339,9015 -.push-12 { margin: 0 -480px 1.5em 480px;px341,9059 -.push-13 { margin: 0 -520px 1.5em 520px;px343,9103 -.push-14 { margin: 0 -560px 1.5em 560px;px345,9147 -.push-15 { margin: 0 -600px 1.5em 600px;px347,9191 -.push-16 { margin: 0 -640px 1.5em 640px;px349,9235 -.push-17 { margin: 0 -680px 1.5em 680px;px351,9279 -.push-18 { margin: 0 -720px 1.5em 720px;px353,9323 -.push-19 { margin: 0 -760px 1.5em 760px;px355,9367 -.push-20 { margin: 0 -800px 1.5em 800px;px357,9411 -.push-21 { margin: 0 -840px 1.5em 840px;px359,9455 -.push-22 { margin: 0 -880px 1.5em 880px;px361,9499 -.push-23 { margin: 0 -920px 1.5em 920px;px363,9543 -.push-24 { margin: 0 -960px 1.5em 960px;px365,9587 -.feedback,feedback373,9773 -.feedback, .error,error373,9773 -.feedback, .error, .alert,alert373,9773 -.feedback, .error, .alert, .notice,notice373,9773 -.feedback, .error, .alert, .notice, .success,success373,9773 -.error,error375,9893 -.error a,376,9972 -input.text,text401,10607 -input.text, input.title,title401,10607 -input.text, input.title, input[input401,10607 -input.text, input.title, input[type=email], input[input401,10607 -input.text,text410,10900 -input.text, input.title,title410,10900 -input.text, input.title, input[input410,10900 -input.text, input.title, input[type=email], input[input410,10900 -input.text, input.title, input[type=email], input[type=text], input[input410,10900 -input.text:focus,focus411,11048 -input.text:focus, input.title:focus,focus411,11048 -input.text:focus, input.title:focus, input[type=email]:focus,focus411,11048 -input.text:focus, input.title:focus, input[type=email]:focus, input[type=text]:focus,focus411,11048 -input.text:focus, input.title:focus, input[type=email]:focus, input[type=text]:focus, input[type=password]:focus,focus411,11048 -input.text,text415,11285 -input.text, input.title,title415,11285 -input.text, input.title, input[input415,11285 -input.text, input.title, input[type=email], input[input415,11285 -ul,421,11517 -div.paginator span.page:hover,hover470,14146 -div.paginator span.page:hover, div.paginator span.next:hover,hover470,14146 -div.paginator span.page:hover a,471,14273 -div.paginator span.page:hover a, div.paginator span.next:hover a,471,14273 -.hgbobject .gbobject-content pre,488,15666 -.gbobject-widgets ul,494,16239 -ol#comment-list,list498,16409 -ol#comment-list, ol#pingback-list,list498,16409 -ol#comment-list li,499,16516 -ol#comment-list li, ol#pingback-list li,499,16516 -ol#comment-list li.box2,box2500,16629 -ol#comment-list li.box2, ol#pingback-list li.box2,box2500,16629 -ol#comment-list li.post-author,author501,16760 -ol#comment-list li.post-author, ol#pingback-list li.post-author,author501,16760 -ol#comment-list li p,502,16878 -ol#comment-list li p, ol#pingback-list li p,502,16878 -ol#comment-list li img,503,16972 -ol#comment-list li img, ol#pingback-list li img,503,16972 -ol#comment-list li .pingback-body,body504,17064 -ol#comment-list li .pingback-body, ol#comment-list li .trackback-body,body504,17064 -ol#comment-list li .pingback-body, ol#comment-list li .trackback-body, ol#pingback-list li .pingback-body,body504,17064 -ol#comment-list li .pingback-body, ol#comment-list li .trackback-body, ol#pingback-list li .pingback-body, ol#pingback-list li .trackback-body,body504,17064 -ol#comment-list li .pingback-body, ol#comment-list li .trackback-body, ol#pingback-list li .pingback-body, ol#pingback-list li .trackback-body, ol#trackback-list li .pingback-body,body504,17064 -ol#comment-list li .comment-author,author505,17300 -ol#comment-list li .comment-author, ol#comment-list li .pingback-author,author505,17300 -ol#comment-list li .comment-author, ol#comment-list li .pingback-author, ol#comment-list li .trackback-author,author505,17300 -ol#comment-list li .comment-author, ol#comment-list li .pingback-author, ol#comment-list li .trackback-author, ol#pingback-list li .comment-author,author505,17300 -ol#comment-list li .comment-author, ol#comment-list li .pingback-author, ol#comment-list li .trackback-author, ol#pingback-list li .comment-author, ol#pingback-list li .pingback-author,author505,17300 -ol#comment-list li .comment-author, ol#comment-list li .pingback-author, ol#comment-list li .trackback-author, ol#pingback-list li .comment-author, ol#pingback-list li .pingback-author, ol#pingback-list li .trackback-author,author505,17300 -ol#comment-list li .comment-author, ol#comment-list li .pingback-author, ol#comment-list li .trackback-author, ol#pingback-list li .comment-author, ol#pingback-list li .pingback-author, ol#pingback-list li .trackback-author, ol#trackback-list li .comment-author,author505,17300 -ol#comment-list li .comment-author, ol#comment-list li .pingback-author, ol#comment-list li .trackback-author, ol#pingback-list li .comment-author, ol#pingback-list li .pingback-author, ol#pingback-list li .trackback-author, ol#trackback-list li .comment-author, ol#trackback-list li .pingback-author,author505,17300 - -static/gstudio/css/dashboard_gstudio.css,147 -.module table th,5,117 -.managelink managelink7,174 -input,11,400 -input, textarea,11,400 -.vTextField,vTextField13,456 -.required label,15,504 - -static/gstudio/css/dashboard_objectapp.css,147 -.module table th,5,117 -.managelink managelink7,174 -input,11,400 -input, textarea,11,400 -.vTextField,vTextField13,456 -.required label,15,504 - -static/gstudio/css/grappelli-skin-default.css,15333 -.module p.help,help12,513 -p.preview a:link,link23,719 -p.preview a:hover,hover26,792 -a:link,link35,982 -a:hover,hover38,1024 -a:hover, a:active,active38,1024 -.dashboard h2 a:link,link42,1076 -.dashboard h2 a:link, .dashboard h2 a:visited,visited42,1076 -.dashboard h3 a:link,link43,1124 -.dashboard h2 a:hover,hover46,1191 -.dashboard h2 a:hover, .dashboard h2 a:active,active46,1191 -.dashboard h3 a:hover,hover47,1239 -.dashboard h4 a:link,link51,1310 -.dashboard h4 a:hover,hover54,1377 - color: #59AFCC;AFCC59,1484 - color:color62,1542 -code,75,1763 -.rte h3:last-child,child106,2226 - color: #eee;eee164,3819 - background:background165,3836 - color: #ddd;ddd171,4091 - border-left: 1px solid 192,4515 - border-left: 1px solid 195,4570 - border-right: 1px solid 196,4606 -ul.navigation-menu li.collapse.open>a.collapse-handler,handler277,7079 -ul.navigation-menu li.bookmark.disabled>a,a278,7136 -ul.messagelist li.error,error339,8820 -.module .module,module390,10302 -.group,group412,10942 -.group h2,425,11245 - border-top: 1px solid #fff;fff441,11916 -.module h2+.module,module443,11950 -.module h2+.tools,tools444,11971 - border-top:top459,12317 -.group h3,462,12339 - border-top: 1px solid #fff;fff476,12902 -.module h3+.module,module478,12936 -.module h3+.tools,tools479,12957 -.group .module .module,module487,13125 -.group .module .module>*:first-child,child491,13213 -.group h4,496,13330 - border-top: 1px solid #fff;fff506,13670 -.module .row.description,description514,13819 -.group .module.collapse.closed h3.collapse-handler,handler534,14437 -.group .module.collapse.closed h4.collapse-handler,handler535,14490 -.collapse.closed h2.collapse-handler,handler536,14543 -.module .module.collapse.closed.last .collapse-handler,handler537,14582 -.module.collapse.closed h2.collapse-handler,handler542,14931 -.module.collapse.closed h3.collapse-handler,handler543,14977 -.collapse h2.collapse-handler:hover,hover557,15447 -.group .collapse h3.collapse-handler,handler568,15844 -.group .collapse h3.collapse-handler:hover,hover575,16163 -.module .collapse h3.collapse-handler:hover,hover576,16208 -.group .collapse.open h3.collapse-handler,handler577,16254 -.group .module .collapse > h4.collapse-handler,handler591,16742 -.group .collapse > h4.collapse-handler:hover,hover599,17116 -.module .collapse > h4.collapse-handler:hover,hover600,17163 -.group .collapse.open > h4.collapse-handler,handler601,17211 -.row.first,first621,17797 -.row:first-child,child622,17810 -.row.last,last628,18106 -.row:last-child,child629,18118 -.row:last-of-type,type630,18136 -fieldset.module > .row.last,last631,18156 -fieldset.module .cell:last-child,child656,18880 -.module.thead,thead675,19314 -.module.table .tr,tr680,19394 -.module.table .th,th684,19461 -.module.thead .th:last-of-type,type689,19573 -.module.thead .td:last-of-type,type690,19606 -.module.table .module.thead .th,th694,19695 -.module.tbody .th,th700,19828 -.module.tbody .th:first-of-type,type706,19965 -.module.tbody .th:last-of-type,type713,20383 -.predelete h2,735,21104 -.predelete h2, .collapse.predelete > h2.collapse-handler,handler735,21104 -.predelete h3,736,21163 -.predelete h3, .collapse.predelete > h3.collapse-handler,handler736,21163 -.predelete h4,737,21222 -.collapse.predelete > h2.collapse-handler:hover,hover743,21531 -.collapse.predelete > h3.collapse-handler:hover,hover744,21581 -.predelete .collapse > h4.collapse-handler:hover,hover745,21631 -.collapse.open.predelete > h2.collapse-handler,handler746,21682 -.collapse.open.predelete > h3.collapse-handler,handler747,21731 -.predelete,predelete754,22114 -.predelete .module,module755,22127 -.predelete .th,th756,22147 -.selector-available,available766,22343 -.selector h2,771,22512 -.selector h2, .inline-group .selector h2,771,22512 -.inline-related fieldset .selector-available h2,772,22555 -a.selector-chooseall,chooseall795,23500 -a.selector-chooseall,chooseall803,23628 -.module.link-list,list812,23867 -.module.link-list .module,module813,23887 -.module.actions,actions814,23915 -.module.actions .module,module815,23933 -.module.feed,feed816,23959 -.link-list ul li,820,24021 -.feed ul li,821,24040 -.actions ul li,822,24054 -.actions ul li:first-child,child830,24206 -.link-list ul li:first-child,child831,24235 -.feed ul li:first-child,child832,24266 -.actions ul li:last-child,child836,24352 -.link-list ul li:last-child,child837,24380 -.feed ul li:last-child,child838,24410 -.link-list ul li.selected a,842,24497 -a.internal:link,link846,24584 -a.internal:hover,hover847,24623 -a.internal:hover, a.internal:active,active847,24623 -a.external:link,link851,24706 -a.external:hover,hover854,24766 -.module.changelist-filters:last-of-type,type869,25257 -.module.search,search880,25718 -.open a.button.toggle-filters,filters894,26186 -a.button.toggle-filters:link,link900,26540 -.selected a.button.toggle-filters:link,link904,26650 -.open a.button.toggle-filters,filters912,27268 -.open a.button.toggle-filters, .selected a.button.toggle-filters,filters912,27268 -.selected a.button.toggle-filters:hover,hover913,27335 -.selected a.button.toggle-filters:hover, .selected a.button.toggle-filters:active,active913,27335 -a.button.toggle-filters:hover,hover914,27419 -.selected a.button.toggle-filters:link,link923,28050 -.open a.button.toggle-filters,filters932,28701 -.open.selected a.button.toggle-filters,filters933,28733 -.selected a.button.toggle-filters:hover,hover934,28774 -.selected a.button.toggle-filters:hover, .selected a.button.toggle-filters:active,active934,28774 -a.button.toggle-filters:hover,hover935,28858 -.date-hierarchy a:link,link979,31024 -.date-hierarchy a:hover,hover982,31098 -.date-hierarchy a.date-hierarchy-back:hover,hover985,31169 -ul.pagination span,1009,31792 -ul.pagination a:link,link1015,32022 -ul.pagination a:hover,hover1019,32117 -.changelist-actions.all-selected,selected1058,33330 -.changelist-actions ul a,1066,33595 -.changelist-actions ul a:link,link1071,33754 -.changelist-actions ul a:hover,hover1079,34083 -h1 + .tools a:link,link1151,36317 -h1 + .tools a:hover,hover1157,36580 -h1 + .tools a.add-handler:link,link1173,37239 -h1 + .tools a.add-handler:hover,hover1180,37760 -.group h2+.tools,tools1191,38378 -.group h2+.tools,tools1199,38657 -.group .module.collapse.closed h3+.tools,tools1207,38902 -.group .module.collapse.closed h3+.tools li,1208,38945 -.module.collapse.closed:last-child h3+.tools,tools1209,38991 -.group h3+.tools,tools1213,39205 -.module.collapse.closed:last-child h4+.tools,tools1221,39427 -.login .errornote,errornote1242,40343 -.error input,1251,40576 -.error input, .error select,1251,40576 -.error input, .error select, .errors input,1251,40576 -input,1272,41038 -input, textarea,1272,41038 -input, textarea, select,1272,41038 -input,1279,41255 -input, textarea,1279,41255 -*:focus,focus1289,41565 -*:focus, input:focus,focus1289,41565 -*:focus, input:focus, textarea:focus,focus1289,41565 -option,1311,42092 -.vAutocompleteSearchField,vAutocompleteSearchField1322,42311 -input[input1330,42469 -textarea[textarea1331,42486 -input[input1341,42938 -input[type=submit], input[input1341,42938 -input[type=submit], input[type=reset], input[input1341,42938 - border-radius: 6px;px1352,43259 - border-radius: 6px; -moz-border-radius: 6px;px1352,43259 - border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px;px1352,43259 - box-shadow: 0 0 5px px1353,43336 - box-shadow: 0 0 5px #666; -moz-box-shadow: 0 0 5px px1353,43336 - box-shadow: 0 0 5px #666; -moz-box-shadow: 0 0 5px #666; -webkit-box-shadow: 0 0 5px px1353,43336 - background: #d6d6d6;d6d6d61354,43431 - box-shadow: 0 0 5px #aaa;aaa1361,43673 - box-shadow: 0 0 5px #aaa; -moz-box-shadow: 0 0 5px #aaa;aaa1361,43673 - box-shadow: 0 0 5px #aaa; -moz-box-shadow: 0 0 5px #aaa; -webkit-box-shadow: 0 0 5px #aaa;aaa1361,43673 - border: 1px solid 1365,43873 - box-shadow: 0 0 5px px1366,43901 - box-shadow: 0 0 5px #666; -moz-box-shadow: 0 0 5px px1366,43901 - box-shadow: 0 0 5px #666; -moz-box-shadow: 0 0 5px #666; -webkit-box-shadow: 0 0 5px px1366,43901 - background:background1367,43996 - box-shadow: 0 0 5px #aaa;aaa1370,44070 - box-shadow: 0 0 5px #aaa; -moz-box-shadow: 0 0 5px #aaa;aaa1370,44070 - box-shadow: 0 0 5px #aaa; -moz-box-shadow: 0 0 5px #aaa; -webkit-box-shadow: 0 0 5px #aaa;aaa1370,44070 -.footer .submit-row>*[class*="-container"]:hover,hover1372,44167 -.submit-row a.submit-link,link1383,44569 -.submit-row a.delete-link,link1384,44597 -.submit-row a.submit-link,link1388,44732 -input[input1393,44827 -.submit-row a.delete-link:link,link1395,44871 -.submit-row a.delete-link:link, .submit-row a.delete-link:visited,visited1395,44871 -.submit-row a.cancel-link:link,link1396,44939 -.submit-row a.cancel-link:link, .submit-row a.cancel-link:visited,visited1396,44939 -.submit-row a.delete-link:link,link1401,45147 -.submit-row a.cancel-link:link,link1410,45526 -.submit-row a.cancel-link:link, .submit-row a.cancel-link:visited,visited1410,45526 -input[input1420,45892 -.submit-row a.submit-link:link,link1421,45913 -input[type=submit]:hover,hover1428,46238 -.submit-row a.submit-link:hover,hover1430,46294 -.submit-row a.submit-link:hover, .submit-row a.submit-link:active,active1430,46294 -.submit-row a.delete-link:hover,hover1431,46362 -.submit-row a.delete-link:hover, .submit-row a.delete-link:active,active1431,46362 -.submit-row a.cancel-link:hover,hover1432,46430 -.submit-row a.cancel-link:hover, .submit-row a.cancel-link:active,active1432,46430 -.footer input[type=submit]:hover,hover1441,46810 -.footer #bookmark-add-cancel:hover,hover1442,46845 -.footer .submit-row a.delete-link:hover,hover1443,46882 -.footer .submit-row a.delete-link:hover, .footer .submit-row a.delete-link:active,active1443,46882 -.footer .submit-row a.cancel-link:hover,hover1444,46966 -button.fb_show,fb_show1448,47081 -button.ui-datepicker-trigger,trigger1449,47098 -button.ui-timepicker-trigger,trigger1450,47129 -button.ui-gAutocomplete-browse,browse1451,47160 -button.ui-gAutoSlugField-toggle,toggle1452,47193 -button.ui-gFacelist-browse,browse1453,47227 -a.button,button1454,47256 -.vDateField + span a,1455,47267 -.vTimeField + span a,1456,47290 -a.fb_show,fb_show1457,47313 -a.related-lookup,lookup1458,47325 -a.add-another,another1459,47344 -button.fb_show,fb_show1480,48331 -button.ui-gAutocomplete-browse,browse1481,48348 -button.ui-gFacelist-browse,browse1482,48381 -button.ui-gAutoSlugField-toggle,toggle1483,48410 -button.ui-datepicker-trigger,trigger1484,48444 -button.ui-timepicker-trigger,trigger1485,48475 -button.fb_show:hover,hover1490,48591 -button.ui-gAutocomplete-browse:hover,hover1491,48614 -button.ui-gFacelist-browse:hover,hover1492,48653 -button.ui-gAutoSlugField-toggle:hover,hover1493,48688 -button.ui-datepicker-trigger:hover,hover1494,48728 -button.ui-timepicker-trigger:hover,hover1495,48765 -button.fb_show[fb_show1499,48865 -button.ui-gAutocomplete-browse[browse1500,48892 -button.ui-gFacelist-browse[browse1501,48935 -button.ui-gAutoSlugField-toggle[toggle1502,48974 -button.ui-datepicker-trigger[trigger1503,49018 -button.ui-timepicker-trigger[trigger1504,49059 -button.ui-gAutocomplete-browse,browse1514,49289 -button.ui-gAutocomplete-browse:hover,hover1520,49719 -.errors button.ui-gAutocomplete-browse,browse1527,50171 -a.button,button1592,53327 -.datecrumbs a,1593,53338 -a.button.drop-down:link,link1612,54154 -a.button.drop-down[down1616,54258 -a.button.drop-down:hover,hover1617,54298 -a.fb_show,fb_show1629,54994 -a.fb_show:link,link1633,55055 -a.fb_show:link, a.fb_show:visited,visited1633,55055 -a.related-lookup:link,link1634,55091 -a.fb_show:hover,hover1637,55174 -a.fb_show:hover, a.fb_show:active,active1637,55174 -a.related-lookup:hover,hover1638,55210 -a.fb_show:link,link1642,55294 -a.fb_show:link, a.fb_show:visited,visited1642,55294 -a.fb_show:hover,hover1648,55701 -a.fb_show:hover, a.fb_show:active,active1648,55701 -a.related-lookup:link,link1654,56123 -a.related-lookup:hover,hover1659,56541 -a.related-lookup.m2m:link,link1668,57039 -a.related-lookup.m2m:link, a.related-lookup.m2m:visited,visited1668,57039 -div.autocomplete-wrapper-m2m a.related-lookup:link,link1669,57097 -a.related-lookup.m2m:hover,hover1674,57585 -a.related-lookup.m2m:hover, a.related-lookup.m2m:active,active1674,57585 -div.autocomplete-wrapper-m2m a.related-lookup:hover,hover1675,57643 -.error input + button,1695,58432 -.error .vDateField + button,1696,58456 -.error .vTimeField + button,1697,58486 -.error input + a.fb_show,fb_show1698,58516 -.error input + a.related-lookup,lookup1699,58543 -.error input + a.add-another,another1700,58577 -.errors input + button,1701,58608 -.errors .vDateField + button,1702,58633 -.errors .vTimeField + button,1703,58664 -.errors input + a.fb_show,fb_show1704,58695 -.errors input + a.related-lookup,lookup1705,58723 -.errors input + a.add-another,another1706,58758 -input:focus + button,1714,58938 -.vDateField:focus + span a,1715,58961 -.vTimeField:focus + span a,1716,58990 -input:focus + a.fb_show,fb_show1717,59019 -input:focus + a.related-lookup,lookup1718,59045 -div.autocomplete-wrapper-fk input:focus + a.related-lookup,lookup1725,59350 -tr.alt th,1734,59894 -.row1 th,1737,59944 -.row2 th,1740,59992 -.selected th,1743,60037 -thead th,1750,60158 -thead th a:link,link1774,61045 -thead th a:hover,hover1778,61137 -thead th a:hover, thead th a:active,active1778,61137 -tbody th,1789,61339 -thead th:first-child,child1799,61504 - border: 1px solid #bdbdbd;bdbdbd1819,61836 - border:border1822,61914 - border-top: 1px solid #e8e8e8;e8e8e81823,61929 - border-left: 1px solid #e0e0e0;e0e0e01824,61964 - border-top: 1px solid #fff;fff1827,62077 - border-left:left1830,62186 - border-radius: 5px;px1835,62263 - border-radius: 5px; -moz-border-radius: 5px;px1835,62263 - border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px;px1835,62263 - border-top-left-radius: 5px;px1842,62545 - border-top-left-radius: 5px; -moz-border-radius-topleft: 5px;px1842,62545 - border-top-left-radius: 5px; -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px;px1842,62545 - border-top-right-radius: 5px;px1846,62723 - border-top-right-radius: 5px; -moz-border-radius-topright: 5px;px1846,62723 - border-top-right-radius: 5px; -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px;px1846,62723 - border-bottom-left-radius: 5px;px1850,62959 - border-bottom-left-radius: 5px; -moz-border-radius-bottomleft: 5px;px1850,62959 - border-bottom-left-radius: 5px; -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px;px1850,62959 - border-bottom-right-radius: 5px;px1854,63191 - border-bottom-right-radius: 5px; -moz-border-radius-bottomright: 5px;px1854,63191 - border-bottom-right-radius: 5px; -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px;px1854,63191 - border-left:left1859,63412 -tbody th:first-child,child1879,63987 -tbody tr:last-child td,1882,64054 - -static/gstudio/js/wymeditor/iframe/default/wymiframe.html,24 -WYMeditor iframe21,646 - -static/gstudio/js/wymeditor/iframe/default/lbl-p.png,992 -ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡só5¦KË—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›ÜÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌ㧛§Âóç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËýø¿áyòñN`Áå½³k™¥5»/>B
Yr“oÀòùc3Üg,šÑÊZú0Ì&LÖŽ†Ïß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´StqtQ´Stq12,1547 -ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡só5¦KË—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›ÜÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌ㧛§Âóç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËýø¿áyòñN`Áå½³k™¥5»/>B
Yr“oÀòùc3Üg,šÑÊZú0Ì&LÖŽ†Ïß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûgYû12,1547 -ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡só5¦KË—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›ÜÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌ㧛§Âóç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËýø¿áyòñN`Áå½³k™¥5»/>B
Yr“oÀòùc3Üg,šÑÊZú0Ì&LÖŽ†Ïß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ©Œ¹;Ûj¶rvg¬jlRlc웸j¶rvg¬jlRlcì›12,1547 - -static/gstudio/js/wymeditor/iframe/default/wymiframe.css,3744 - p,26,671 - h1,27,676 - h2,28,682 - h3,29,688 - h4,30,694 - h5,31,700 - h6,32,706 - ul,33,712 - ol,34,718 - table,35,724 - blockquote,36,733 - ul,42,958 - h1 h1,77,2463 - h1 h1, h1 h2,77,2463 - h1 h1, h1 h2, h1 h3,77,2463 - h1 h1, h1 h2, h1 h3, h1 h4,77,2463 - h1 h1, h1 h2, h1 h3, h1 h4, h1 h5,77,2463 - h1 h1, h1 h2, h1 h3, h1 h4, h1 h5, h1 h6,77,2463 - h1 h1, h1 h2, h1 h3, h1 h4, h1 h5, h1 h6, h1 p,77,2463 - h1 h1, h1 h2, h1 h3, h1 h4, h1 h5, h1 h6, h1 p, h1 pre,77,2463 - h1 h1, h1 h2, h1 h3, h1 h4, h1 h5, h1 h6, h1 p, h1 pre, h1 address,77,2463 - h2 h1,78,2533 - h2 h1, h2 h2,78,2533 - h2 h1, h2 h2, h2 h3,78,2533 - h2 h1, h2 h2, h2 h3, h2 h4,78,2533 - h2 h1, h2 h2, h2 h3, h2 h4, h2 h5,78,2533 - h2 h1, h2 h2, h2 h3, h2 h4, h2 h5, h2 h6,78,2533 - h2 h1, h2 h2, h2 h3, h2 h4, h2 h5, h2 h6, h2 p,78,2533 - h2 h1, h2 h2, h2 h3, h2 h4, h2 h5, h2 h6, h2 p, h2 pre,78,2533 - h2 h1, h2 h2, h2 h3, h2 h4, h2 h5, h2 h6, h2 p, h2 pre, h2 address,78,2533 - h3 h1,79,2603 - h3 h1, h3 h2,79,2603 - h3 h1, h3 h2, h3 h3,79,2603 - h3 h1, h3 h2, h3 h3, h3 h4,79,2603 - h3 h1, h3 h2, h3 h3, h3 h4, h3 h5,79,2603 - h3 h1, h3 h2, h3 h3, h3 h4, h3 h5, h3 h6,79,2603 - h3 h1, h3 h2, h3 h3, h3 h4, h3 h5, h3 h6, h3 p,79,2603 - h3 h1, h3 h2, h3 h3, h3 h4, h3 h5, h3 h6, h3 p, h3 pre,79,2603 - h3 h1, h3 h2, h3 h3, h3 h4, h3 h5, h3 h6, h3 p, h3 pre, h3 address,79,2603 - h4 h1,80,2673 - h4 h1, h4 h2,80,2673 - h4 h1, h4 h2, h4 h3,80,2673 - h4 h1, h4 h2, h4 h3, h4 h4,80,2673 - h4 h1, h4 h2, h4 h3, h4 h4, h4 h5,80,2673 - h4 h1, h4 h2, h4 h3, h4 h4, h4 h5, h4 h6,80,2673 - h4 h1, h4 h2, h4 h3, h4 h4, h4 h5, h4 h6, h4 p,80,2673 - h4 h1, h4 h2, h4 h3, h4 h4, h4 h5, h4 h6, h4 p, h4 pre,80,2673 - h4 h1, h4 h2, h4 h3, h4 h4, h4 h5, h4 h6, h4 p, h4 pre, h4 address,80,2673 - h5 h1,81,2743 - h5 h1, h5 h2,81,2743 - h5 h1, h5 h2, h5 h3,81,2743 - h5 h1, h5 h2, h5 h3, h5 h4,81,2743 - h5 h1, h5 h2, h5 h3, h5 h4, h5 h5,81,2743 - h5 h1, h5 h2, h5 h3, h5 h4, h5 h5, h5 h6,81,2743 - h5 h1, h5 h2, h5 h3, h5 h4, h5 h5, h5 h6, h5 p,81,2743 - h5 h1, h5 h2, h5 h3, h5 h4, h5 h5, h5 h6, h5 p, h5 pre,81,2743 - h5 h1, h5 h2, h5 h3, h5 h4, h5 h5, h5 h6, h5 p, h5 pre, h5 address,81,2743 - h6 h1,82,2813 - h6 h1, h6 h2,82,2813 - h6 h1, h6 h2, h6 h3,82,2813 - h6 h1, h6 h2, h6 h3, h6 h4,82,2813 - h6 h1, h6 h2, h6 h3, h6 h4, h6 h4,82,2813 - h6 h1, h6 h2, h6 h3, h6 h4, h6 h4, h6 h6,82,2813 - h6 h1, h6 h2, h6 h3, h6 h4, h6 h4, h6 h6, h6 p,82,2813 - h6 h1, h6 h2, h6 h3, h6 h4, h6 h4, h6 h6, h6 p, h6 pre,82,2813 - h6 h1, h6 h2, h6 h3, h6 h4, h6 h4, h6 h6, h6 p, h6 pre, h6 address,82,2813 - p h1,83,2883 - p h1, p h2,83,2883 - p h1, p h2, p h3,83,2883 - p h1, p h2, p h3, p h4,83,2883 - p h1, p h2, p h3, p h4, p h5,83,2883 - p h1, p h2, p h3, p h4, p h5, p h6,83,2883 - p h1, p h2, p h3, p h4, p h5, p h6, p pre,83,2883 - p h1, p h2, p h3, p h4, p h5, p h6, p pre, p address,83,2883 - pre h1,84,2939 - pre h1, pre h2,84,2939 - pre h1, pre h2, pre h3,84,2939 - pre h1, pre h2, pre h3, pre h4,84,2939 - pre h1, pre h2, pre h3, pre h4, pre h5,84,2939 - pre h1, pre h2, pre h3, pre h4, pre h5, pre h6,84,2939 - pre h1, pre h2, pre h3, pre h4, pre h5, pre h6, pre p,84,2939 - pre h1, pre h2, pre h3, pre h4, pre h5, pre h6, pre p, pre pre,84,2939 - pre h1, pre h2, pre h3, pre h4, pre h5, pre h6, pre p, pre pre, pre address,84,2939 - address h1,85,3018 - address h1, address h2,85,3018 - address h1, address h2, address h3,85,3018 - address h1, address h2, address h3, address h4,85,3018 - address h1, address h2, address h3, address h4, address h5,85,3018 - address h1, address h2, address h3, address h4, address h5, address h6,85,3018 - address p,86,3092 - address p, address pre,86,3092 - -static/gstudio/js/wymeditor/skins/twopanels/icons.png,45 -]11,2788 -]ÉBXóhžhò‰Üõ.Õ3ϲ±›RR12,3024 - -static/gstudio/js/wymeditor/skins/twopanels/skin.css,393 - .wym_skin_twopanels p,21,599 - .wym_skin_twopanels p, .wym_skin_twopanels h2,21,599 - .wym_skin_twopanels p, .wym_skin_twopanels h2, .wym_skin_twopanels h3,21,599 - .wym_skin_twopanels ul,22,678 - .wym_skin_twopanels .wym_section h2,67,2688 - .wym_skin_twopanels .wym_dropdown:hover ul,86,3967 - .wym_skin_twopanels .wym_buttons li a 93,4443 - -static/gstudio/js/wymeditor/skins/silver/README,21 -<script type=17,564 - -static/gstudio/js/wymeditor/skins/silver/skin.css,446 - .wym_skin_silver p,21,603 - .wym_skin_silver p, .wym_skin_silver h2,21,603 - .wym_skin_silver p, .wym_skin_silver h2, .wym_skin_silver h3,21,603 - .wym_skin_silver ul,22,673 - .wym_skin_silver .wym_section h2,67,2630 - .wym_skin_silver .wym_dropdown:hover ul,87,4007 - .wym_skin_silver .wym_buttons li a 96,4728 -.wym_skin_silver .wym_panel a,277,12569 -div.wym_dropdown a:hover,hover292,12903 - -static/gstudio/js/wymeditor/skins/silver/COPYING,1403 - Version 2,47 - Copyright 4,95 -your programs,20,926 - When we speak of free software,22,947 - When we speak of free software, we are referring to freedom,22,947 -11 of the WIPO copyright treaty adopted on 20 December 183,9244 - When you convey a covered work,187,9381 -the covered work,190,9592 -modification of the work as a means of enforcing,191,9663 -users, your or third parties' legal rights to forbid circumvention oftion of192,9732 -receive it,198,9929 -receive it, in any medium,198,9929 -appropriately publish on each copy an appropriate copyright notice;199,9992 -non-permissive terms added in accord with section 7 apply to the code;201,10118 -keep intact all notices of the absence of any warranty;202,10189 - Appropriate Legal Notices; however,231,11578 - Notices displayed by works containing it;370,19236 - c) Prohibiting misrepresentation of the origin of that material,372,19286 - reasonable ways as different from the original version;374,19425 - material by anyone who conveys the material 383,19780 -modify it is void,411,21191 - However,415,21356 - the Free Software Foundation,639,33294 - the Free Software Foundation, either version 3 of the License,639,33294 - the Free Software Foundation, either version 3 of the License, or639,33294 -parts of the General Public License. Of course,661,34332 -might be different;662,34405 - -static/gstudio/js/wymeditor/skins/silver/images/bg.selector.silver.gif,72 -J´¨Ñ£H“*zcÔ‰>iö”JÀ…iö”JÀ…2,620 -Œ HÁVP‚¬ Ž2hÁF*$! @(6,1500 - -static/gstudio/js/wymeditor/skins/minimal/skin.css,270 -.wym_skin_minimal div.wym_tools h2,32,718 -.wym_skin_minimal div.wym_containers h2,33,754 -.wym_skin_minimal div.wym_area_top,wym_area_top48,1026 -.wym_skin_minimal div.wym_area_right,wym_area_right49,1062 -.wym_skin_minimal div.wym_containers,wym_containers50,1100 - -static/gstudio/js/wymeditor/skins/minimal/images/bg.selector.silver.gif,72 -J´¨Ñ£H“*zcÔ‰>iö”JÀ…iö”JÀ…2,620 -Œ HÁVP‚¬ Ž2hÁF*$! @(6,1500 - -static/gstudio/js/wymeditor/skins/default/icons.png,45 -]11,2788 -]ÉBXóhžhò‰Üõ.Õ3ϲ±›RR12,3024 - -static/gstudio/js/wymeditor/skins/default/skin.css,373 - .wym_skin_default p,20,575 - .wym_skin_default p, .wym_skin_default h2,20,575 - .wym_skin_default p, .wym_skin_default h2, .wym_skin_default h3,20,575 - .wym_skin_default ul,21,648 - .wym_skin_default .wym_section h2,66,2613 - .wym_skin_default .wym_dropdown:hover ul,85,3868 - .wym_skin_default .wym_buttons li a 92,4336 - -static/gstudio/js/wymeditor/skins/wymeditor_icon.png,13 -DËD5,704 - -static/gstudio/js/wymeditor/skins/django/icons.png,855 -B„5lB„5l5,564 -g ˜ig ˜8,1412 -¦4T•s•ž÷=2#·—ù|ÝZ{«õ¤&ªä.ò{‰À'K
Üøµ#G³æTã\¥†#9;ôx¦´ÉE& V ¿Ùàõ~ðÊšxP‹í‚´ë·Ei¹ÏE¤üƒKvfûFQµ¸Ìm¤sþ—ŠªRP¸ì< Ý •-q†F8R‚–:C#ÓlÚ’ghR‚–<C#ÓlÚ’ghR‚–<C“´ä˜:¹%ÏФ¡ž¡9½fjAŸ.1¬ûq„g"ŠÄŽê?9‚1G¿‡èÚ¬}®;%iÿ1iÿ111,2665 -v@vu¤ë¼ËJndŒ:*¯<pz ”k[?Ѹ֚‹œ ›ÌœtB"p“Õ+™W‚ʚ墖޶°AÔxžãu1SSl[îÿ;#a¼þ|ºÅßñ9Šm H ½‘„²´Êñîœ]_‘^]+Ü‚cH¨9Á×oýÝþ}È»!v$`é~4‹r±edK @Ò
}%ò¢6Á’@(§À–(r¢¼9qÐ…æȲnœä\_H5‡¢çdƒªWPh®l¯ÈÙ³gk&ŽŽì×yŸ73gÜn«oR4ÐÏ_Ž5Š¦-2*J£¿fÿÃxžÊüi£ZhùùóçsÀ«¯¾:0ùÓš¿Î°I³éÁƒ¾¿¼ž;w®-8U½µl'í
´‚õû¦Ç>pÝæâ'@Ϭé·ãÕW_…ÞmVƹ&Ðüâ׿âYá*}1íHpîÜ9£~ûô3¼Œ,S]S15,4078 -Ýûö¶t§tYJ³Št§tYJ³16,4628 -î ¸Y„Do†P8uê_Í&`}Ã1ËÊÊŒØ<ïŠ ººZê_B !KÞ‡—KÞ‡18,5109 -ÑU]U20,5704 -ÑU]PPÀPP20,5704 -‹«0€ýÀÆvB~Q/ÓI[P[YÁ]ÃÁk|àˆö© /ká@ldQ}-†v‹`O ÍöJ ´Ú*nµV[ÏnµV[22,6043 - -static/gstudio/js/wymeditor/skins/django/skin.css,363 - .wym_skin_django p,21,610 - .wym_skin_django p, .wym_skin_django h2,21,610 - .wym_skin_django p, .wym_skin_django h2, .wym_skin_django h3,21,610 - .wym_skin_django ul,22,680 - .wym_skin_django .wym_section h2,67,2667 - .wym_skin_django .wym_dropdown:hover ul,86,3923 - .wym_skin_django .wym_buttons li a 95,4488 - -static/gstudio/js/wymeditor/skins/compact/icons.png,45 -]11,2788 -]ÉBXóhžhò‰Üõ.Õ3ϲ±›RR12,3024 - -static/gstudio/js/wymeditor/skins/compact/skin.css,373 - .wym_skin_compact p,21,633 - .wym_skin_compact p, .wym_skin_compact h2,21,633 - .wym_skin_compact p, .wym_skin_compact h2, .wym_skin_compact h3,21,633 - .wym_skin_compact ul,22,706 - .wym_skin_compact .wym_section h2,67,2657 - .wym_skin_compact .wym_dropdown:hover ul,86,3912 - .wym_skin_compact .wym_buttons li a 93,4380 - -static/gstudio/js/wymeditor/plugins/resizable/readme.txt,145 -The ``resizable`` plugin takes exactly one parameter,61,1916 - minHeight:minHeight67,2204 - var jQueryPlugins 89,3049 -Changelog110,3941 - -static/gstudio/js/wymeditor/plugins/tidy/README,89 -Copyright (c) 2005 - 2009 Jean-Francois Hovinne,2,62 -Dual licensed under the MIT 3,137 - -static/gstudio/js/markitup/templates/preview.html,33 -markItUp! preview template5,243 - -static/gstudio/js/markitup/skins/django/style.css,408 -.markItUp a:link,link9,302 - font:12px 'Courier New', Courier,28,652 - font:12px 'Courier New', Courier, monospace;28,652 - padding:5px;px29,698 - width:790px;px30,712 - height:220px;px31,726 - clear:both;both32,741 - line-height:18px;px33,754 - overflow:auto;auto34,773 -.markItUpHeader ul .markItUpDropMenu markItUpDropMenu68,1428 -.markItUpHeader ul ul .markItUpDropMenu markItUpDropMenu87,1841 - -static/gstudio/js/markitup/skins/django/images/menu.png,270 -wAÁ©÷~¸á“ÐkQ)?Âö•r• ár• 6,1115 -pOšxfØpOšxf9,1905 -chg€Ð’ê¡*ƒ…òäKxZÎ×¹RiPÉz¯Å»ozÐ+ÁœdcnÈ:0ÕªJ±RÓÛâÛ(V}svàÍ·äBà
–ðbÛ`Ö”ÌúàFÛðë9F#Ù ¦ÞÜb
¼Ñ¾r=r10,2288 -¹1Ëúþ+Kú¨èdXŒ];JÄ£Žïcˆx$§DÑ×·Þž¢X`i× ì¨ëÑ@lÌûrn°m$¨Æ^×9΄ïzBGÏžzBGÏ53,17284 - -static/gstudio/js/markitup/sets/textile/images/quotes.png,50 -µDMs6gRÎLDMs6gRÎ4,156 -µDMs6gRÎL:,Óp÷p4,156 - -static/gstudio/js/markitup/sets/textile/images/h2.png,11 -${$4,125 - -static/gstudio/js/markitup/sets/html/images/h2.png,11 -${$4,125 - -static/gstudio/js/markitup/sets/html/images/image.png,101 -‰PNGPNG1,0 -º]ñ»Hà Bv„åÌ“µÚˆ_Sÿ%Ò;ô6×9Host
wöEwöE4,391 -ó]*f"Å"ô½.\00CLâCL5,439 - -static/gstudio/js/markitup/sets/markdown/images/quotes.png,50 -µDMs6gRÎLDMs6gRÎ4,156 -µDMs6gRÎL:,Óp÷p4,156 - -static/gstudio/js/markitup/sets/markdown/images/h2.png,11 -${$4,125 - -static/gstudio/js/markitup/sets/restructuredtext/images/quotes.png,50 -µDMs6gRÎLDMs6gRÎ4,156 -µDMs6gRÎL:,Óp÷p4,156 - -static/gstudio/js/markitup/sets/restructuredtext/images/h2.png,11 -${$4,125 - -ping.py,417 -class URLRessources(17,343 - def __init__(20,429 -class DirectoryPinger(29,835 - def __init__(32,913 - def run(44,1313 - def ping_nodetype(54,1730 -class ExternalUrlsPinger(78,2694 - def __init__(81,2778 - def run(93,3194 - def is_external_url(108,3749 - def find_external_urls(115,4008 - def find_pingback_href(123,4360 - def find_pingback_urls(132,4746 - def pingback_url(160,5790 - -plugins/cms_app.py,29 -class GstudioApphook(10,226 - -plugins/cms_plugins.py,318 -class CMSLatestNodetypesPlugin(19,535 - def formfield_for_manytomany(52,1375 - def render(61,1787 - def icon_src(85,2754 -class CMSSelectedNodetypesPlugin(90,2893 - def render(100,3265 - def icon_src(107,3555 -class CMSRandomNodetypesPlugin(112,3694 - def render(121,4028 - def icon_src(129,4371 - -plugins/migrations/0002_auto__add_field_latestnodetypesplugin_template_to_render__add_field_sele.py,71 -class Migration(5,63 - def forwards(7,98 - def backwards(15,696 - -plugins/migrations/0003_auto__del_field_latestnodetypesplugin_metatype__del_field_latestnodetypesp.py,73 -class Migration(6,92 - def forwards(8,127 - def backwards(40,2023 - -plugins/migrations/0001_initial.py,73 -class Migration(6,92 - def forwards(8,127 - def backwards(33,1744 - -plugins/migrations/0005_auto__add_randomnodetypesplugin.py,71 -class Migration(5,63 - def forwards(7,98 - def backwards(17,668 - -plugins/migrations/0004_auto__add_field_latestnodetypesplugin_submetatypes.py,71 -class Migration(5,63 - def forwards(7,98 - def backwards(12,345 - -plugins/admin.py,67 -class NodetypePlaceholderAdmin(14,413 - def save_model(33,1627 - -plugins/models.py,364 -class LatestNodetypesPlugin(21,684 - def render_template(42,1484 - def copy_relations(47,1642 - def __unicode__(53,1895 -class SelectedNodetypesPlugin(57,1984 - def render_template(68,2363 - def copy_relations(73,2521 - def __unicode__(77,2680 -class RandomNodetypesPlugin(81,2767 - def __unicode__(91,3135 -def invalidate_menu_cache(95,3224 - -plugins/placeholder.py,61 -class NodetypePlaceholder(7,122 - class Meta:Meta12,269 - -plugins/menu.py,270 -class NodetypeMenu(17,492 - def get_nodes(21,627 -class MetatypeMenu(63,2442 - def get_nodes(67,2549 -class AuthorMenu(80,3084 - def get_nodes(84,3185 -class TagMenu(98,3784 - def get_nodes(102,3876 -class NodetypeModifier(115,4395 - def modify(119,4529 - -sitemaps.py,457 -class NodetypeSitemap(13,308 - def items(18,418 - def lastmod(22,521 -class MetatypeSitemap(27,635 - def cache(31,727 - def items(42,1168 - def lastmod(48,1334 - def priority(55,1554 -class AuthorSitemap(63,1776 - def items(68,1883 - def lastmod(72,1982 - def location(79,2201 -class TagSitemap(84,2339 - def cache(88,2421 - def items(97,2813 - def lastmod(103,2953 - def priority(108,3119 - def location(115,3338 - -models.py,5116 -class Author(102,3247 - def nodetypes_published(108,3379 - def get_absolute_url(113,3538 - class Meta:Meta118,3713 -class NID(122,3779 - def get_serialized_dict(137,4453 - def get_absolute_url(144,4662 - def ref(154,5000 - def get_edit_url(170,5871 - def get_serialized_data(175,6005 - def __unicode__(184,6353 - class Meta:Meta188,6408 -class Node(193,6452 - def __unicode__(202,6860 - class Meta:Meta205,6914 -class Edge(208,6954 - def __unicode__(211,6973 - class Meta:Meta214,7027 -class Metatype(218,7068 - def nodetypes_published(228,7345 - def get_nbh(235,7518 - def get_rendered_nbh(256,8292 - def tree_path(281,9261 - def __unicode__(287,9460 - def composed_sentence(291,9528 - def get_absolute_url(299,9805 - class Meta:Meta304,9937 -class Nodetype(314,10099 - def tree_path(390,13317 - def tree_path_sentence(397,13530 - def html_content(404,13798 - def get_relations(416,14297 - def get_rendered_nbh(438,15044 - def previous_nodetype(516,17957 - def next_nodetype(524,18203 - def word_count(532,18467 - def is_actual(537,18610 - def is_visible(543,18818 - def related_published(548,18971 - def discussions(553,19122 - def comments(559,19303 - def pingbacks(565,19497 - def trackbacks(570,19641 - def comments_are_open(575,19788 - def short_url(583,20091 - def __unicode__(587,20204 - def memberof_sentence(591,20272 - def subtypeof_sentence(601,20675 - def subtypeof(608,20982 - def get_absolute_url(615,21163 - def get_serialized_data(623,21478 - class Meta:Meta632,21835 -class Objecttype(641,22131 - def __unicode__(646,22193 - def get_attributetypes(650,22261 - def get_relationtypes(654,22359 - def get_left_subjecttypes(665,22680 - def get_rightroles(676,23020 - def get_subjecttypes(687,23356 - def member_of_metatypes(699,23697 - def get_members(711,24014 - def get_nbh(722,24280 - def get_rendered_nbh(752,25180 - class Meta:Meta797,26922 -class Relationtype(809,27213 - def get_serialized_data(825,28563 - def __unicode__(835,28921 - class Meta:Meta838,28975 -class Attributetype(848,29270 - def __unicode__(878,32472 - class Meta:Meta881,32526 -class Relation(892,32829 - def ApplicableNodeTypes_filter(904,33583 - class Meta:Meta934,34527 - def __unicode__(942,34896 - def composed_sentence(946,34976 - def inversed_sentence(951,35262 - def key_value(956,35529 - def inverse_key_value(960,35639 - def relation_sentence(965,35765 - def partial_composition(973,36050 -class Attribute(980,36290 - class Meta:Meta995,37066 - def subject_filter(1003,37417 - def __unicode__(1015,37732 - def edge_node_dict(1019,37815 - def composed_sentence(1026,38088 - def composed_attribution(1033,38380 - def partial_composition(1040,38586 - def subject_filter(1047,38807 -class AttributeCharField(1057,39110 - def __unicode__(1061,39223 -class AttributeTextField(1064,39277 - def __unicode__(1068,39372 -class AttributeIntegerField(1071,39430 - def __unicode__(1074,39545 -class AttributeCommaSeparatedIntegerField(1077,39601 - def __unicode__(1081,39769 -class AttributeBigIntegerField(1084,39823 - def __unicode__(1088,39953 -class AttributePositiveIntegerField(1091,40007 - def __unicode__(1095,40152 -class AttributeDecimalField(1098,40206 - def __unicode__(1102,40342 -class AttributeFloatField(1105,40396 - def __unicode__(1109,40520 -class AttributeBooleanField(1112,40574 - def __unicode__(1116,40678 -class AttributeNullBooleanField(1119,40732 - def __unicode__(1123,40858 -class AttributeDateField(1126,40912 - def __unicode__(1130,41023 -class AttributeDateTimeField(1133,41077 - def __unicode__(1137,41205 -class AttributeTimeField(1140,41263 - def __unicode__(1144,41374 -class AttributeEmailField(1147,41428 - def __unicode__(1151,41540 -class AttributeFileField(1154,41594 - def __unicode__(1158,41709 -class AttributeFilePathField(1161,41763 - def __unicode__(1165,41874 -class AttributeImageField(1168,41928 - def __unicode__(1172,42046 -class AttributeURLField(1175,42100 - def __unicode__(1179,42204 -class AttributeIPAddressField(1182,42258 - def __unicode__(1186,42381 -class Processtype(1190,42436 - def __unicode__(1204,43103 - class Meta:Meta1207,43157 -class Systemtype(1216,43393 - class to 1219,43434 - def __unicode__(1235,44526 - class Meta:Meta1238,44580 -class AttributeSpecification(1245,44816 - def composed_subject(1257,45294 - def __unicode__(1267,45571 - class Meta:Meta1271,45637 -class RelationSpecification(1277,45833 - def composed_subject(1286,46127 - def __unicode__(1295,46424 - class Meta:Meta1299,46490 -class NodeSpecification(1305,46685 - def composed_subject(1314,47206 - def __unicode__(1326,47675 - class Meta:Meta1330,47741 -class Union(1336,47932 - def __unicode__(1342,48114 -class Complement(1345,48168 - def __unicode__(1351,48361 -class Intersection(1354,48415 - def __unicode__(1360,48617 - -xmlrpc/metaweblog.py,469 -def authenticate(30,941 -def blog_structure(46,1583 -def user_structure(54,1823 -def author_structure(66,2217 -def metatype_structure(74,2431 -def post_structure(90,3077 -def get_users_blogs(119,4431 -def get_user_info(128,4744 -def get_authors(137,5064 -def delete_post(147,5453 -def get_post(157,5850 -def get_recent_posts(167,6231 -def get_metatypes(177,6662 -def new_metatype(187,7057 -def new_post(204,7793 -def edit_post(248,9782 -def new_media_object(291,11649 - -xmlrpc/pingback.py,113 -def generate_pingback_content(28,829 -def pingback_ping(54,1551 -def pingback_extensions_get_pingbacks(114,3736 - -comparison.py,268 -def pearson_score(9,160 -class ClusteredModel(26,685 - def __init__(30,789 - def dataset(34,901 -class VectorBuilder(44,1227 - def __init__(47,1309 - def build_dataset(54,1519 - def generate_key(82,2515 - def flush(86,2649 - def __call__(91,2780 - -xmlrpc/__init__.py,0 - -plugins/migrations/__init__.py,0 - -plugins/__init__.py,0 - -plugins/settings.py,0 - -etags,0 - -files,0 - -static/gstudio/js/markitup/sets/restructuredtext/images/h4.png,0 - -static/gstudio/js/markitup/sets/restructuredtext/images/list-numeric.png,0 - -static/gstudio/js/markitup/sets/restructuredtext/images/code.png,0 - -static/gstudio/js/markitup/sets/restructuredtext/images/list-bullet.png,0 - -static/gstudio/js/markitup/sets/restructuredtext/images/h5.png,0 - -static/gstudio/js/markitup/sets/restructuredtext/images/picture.png,0 - -static/gstudio/js/markitup/sets/restructuredtext/images/h3.png,0 - -static/gstudio/js/markitup/sets/restructuredtext/images/link.png,0 - -static/gstudio/js/markitup/sets/restructuredtext/images/preview.png,0 - -static/gstudio/js/markitup/sets/restructuredtext/images/h1.png,0 - -static/gstudio/js/markitup/sets/restructuredtext/images/italic.png,0 - -static/gstudio/js/markitup/sets/restructuredtext/images/bold.png,0 - -static/gstudio/js/markitup/sets/restructuredtext/style.css,0 - -static/gstudio/js/markitup/sets/markdown/images/h4.png,0 - -static/gstudio/js/markitup/sets/markdown/images/list-numeric.png,0 - -static/gstudio/js/markitup/sets/markdown/images/code.png,0 - -static/gstudio/js/markitup/sets/markdown/images/list-bullet.png,0 - -static/gstudio/js/markitup/sets/markdown/images/h5.png,0 - -static/gstudio/js/markitup/sets/markdown/images/picture.png,0 - -static/gstudio/js/markitup/sets/markdown/images/h3.png,0 - -static/gstudio/js/markitup/sets/markdown/images/link.png,0 - -static/gstudio/js/markitup/sets/markdown/images/preview.png,0 - -static/gstudio/js/markitup/sets/markdown/images/h1.png,0 - -static/gstudio/js/markitup/sets/markdown/images/italic.png,0 - -static/gstudio/js/markitup/sets/markdown/images/h6.png,0 - -static/gstudio/js/markitup/sets/markdown/images/bold.png,0 - -static/gstudio/js/markitup/sets/markdown/style.css,0 - -static/gstudio/js/markitup/sets/html/images/h4.png,0 - -static/gstudio/js/markitup/sets/html/images/list-numeric.png,0 - -static/gstudio/js/markitup/sets/html/images/clean.png,0 - -static/gstudio/js/markitup/sets/html/images/list-item.png,0 - -static/gstudio/js/markitup/sets/html/images/list-bullet.png,0 - -static/gstudio/js/markitup/sets/html/images/h5.png,0 - -static/gstudio/js/markitup/sets/html/images/picture.png,0 - -static/gstudio/js/markitup/sets/html/images/h3.png,0 - -static/gstudio/js/markitup/sets/html/images/link.png,0 - -static/gstudio/js/markitup/sets/html/images/preview.png,0 - -static/gstudio/js/markitup/sets/html/images/h1.png,0 - -static/gstudio/js/markitup/sets/html/images/italic.png,0 - -static/gstudio/js/markitup/sets/html/images/stroke.png,0 - -static/gstudio/js/markitup/sets/html/images/paragraph.png,0 - -static/gstudio/js/markitup/sets/html/images/h6.png,0 - -static/gstudio/js/markitup/sets/html/images/bold.png,0 - -static/gstudio/js/markitup/sets/html/style.css,0 - -static/gstudio/js/markitup/sets/textile/images/h4.png,0 - -static/gstudio/js/markitup/sets/textile/images/list-numeric.png,0 - -static/gstudio/js/markitup/sets/textile/images/code.png,0 - -static/gstudio/js/markitup/sets/textile/images/list-bullet.png,0 - -static/gstudio/js/markitup/sets/textile/images/h5.png,0 - -static/gstudio/js/markitup/sets/textile/images/picture.png,0 - -static/gstudio/js/markitup/sets/textile/images/h3.png,0 - -static/gstudio/js/markitup/sets/textile/images/link.png,0 - -static/gstudio/js/markitup/sets/textile/images/preview.png,0 - -static/gstudio/js/markitup/sets/textile/images/h1.png,0 - -static/gstudio/js/markitup/sets/textile/images/italic.png,0 - -static/gstudio/js/markitup/sets/textile/images/stroke.png,0 - -static/gstudio/js/markitup/sets/textile/images/paragraph.png,0 - -static/gstudio/js/markitup/sets/textile/images/h6.png,0 - -static/gstudio/js/markitup/sets/textile/images/bold.png,0 - -static/gstudio/js/markitup/sets/textile/style.css,0 - -static/gstudio/js/markitup/skins/django/images/submenu.png,0 - -static/gstudio/js/markitup/skins/django/images/handle.png,0 - -static/gstudio/js/markitup/templates/preview.css,0 - -static/gstudio/js/wymeditor/plugins/fullscreen/icon_fullscreen.gif,0 - -static/gstudio/js/wymeditor/plugins/tidy/wand.png,0 - -static/gstudio/js/wymeditor/plugins/tidy/tidy.php,0 - -static/gstudio/js/wymeditor/skins/minimal/images/bg.wymeditor.png,0 - -static/gstudio/js/wymeditor/skins/minimal/images/icons.silver.gif,0 - -static/gstudio/js/wymeditor/skins/minimal/images/bg.header.gif,0 - -static/gstudio/js/wymeditor/skins/silver/images/bg.wymeditor.png,0 - -static/gstudio/js/wymeditor/skins/silver/images/icons.silver.gif,0 - -static/gstudio/js/wymeditor/skins/silver/images/bg.header.gif,0 - -static/gstudio/js/wymeditor/iframe/default/lbl-h5.png,0 - -static/gstudio/js/wymeditor/iframe/default/lbl-h3.png,0 - -static/gstudio/js/wymeditor/iframe/default/lbl-pre.png,0 - -static/gstudio/js/wymeditor/iframe/default/lbl-h6.png,0 - -static/gstudio/js/wymeditor/iframe/default/lbl-blockquote.png,0 - -static/gstudio/js/wymeditor/iframe/default/lbl-h1.png,0 - -static/gstudio/js/wymeditor/iframe/default/lbl-h4.png,0 - -static/gstudio/js/wymeditor/iframe/default/lbl-h2.png,0 - -static/gstudio/css/slider.css,0 - -static/gstudio/css/jquery.autocomplete.css,0 - -static/gstudio/css/wymeditor_styles.css,0 - -static/gstudio/css/src/slider.sass,0 - -static/gstudio/css/src/_gbobject.sass,0 - -static/gstudio/css/src/ie.sass,0 - -static/gstudio/css/src/_paginator.sass,0 - -static/gstudio/css/src/_calendar.sass,0 - -static/gstudio/css/src/_gstudio.sass,0 - -static/gstudio/css/src/_tag-cloud.sass,0 - -static/gstudio/img/background.gif,0 - -static/gstudio/img/tags.png,0 - -static/gstudio/img/rss.png,0 - -static/gstudio/img/bullet.png,0 - -static/gstudio/img/wlw/objectapp.png,0 - -static/gstudio/img/favicon.ico,0 - -static/gstudio/img/grid.png,0 - -static/gstudio/img/preview.png,0 - -static/gstudio/img/comments.png,0 - -static/gstudio/img/trans.png,0 - -static/gstudio/img/shorturl.png,0 - -static/gstudio/img/manage.png,0 - -static/gstudio/img/help.png,0 - -spam_checker/backends/__init__.py,0 - -templates/registration/password_reset_email.html,0 - -templates/registration/activation_email.txt,0 - -templates/registration/password_reset_confirm.html,0 - -templates/registration/registration_complete.html,0 - -templates/registration/login.html,0 - -templates/registration/password_change_done.html,0 - -templates/registration/password_reset_form.html,0 - -templates/registration/password_reset_done.html,0 - -templates/registration/password_change_form.html,0 - -templates/registration/password_reset_complete.html,0 - -templates/registration/activation_email_subject.txt,0 - -templates/registration/activate.html,0 - -templates/registration/logout.html,0 - -templates/registration/registration_form.html,0 - -templates/feeds/comment_title.html,0 - -templates/feeds/trackback_description.html,0 - -templates/feeds/comment_description.html,0 - -templates/feeds/pingback_description.html,0 - -templates/feeds/discussion_description.html,0 - -templates/feeds/trackback_title.html,0 - -templates/feeds/nodetype_title.html,0 - -templates/feeds/nodetype_description.html,0 - -templates/feeds/pingback_title.html,0 - -templates/feeds/discussion_title.html,0 - -templates/index.html,0 - -templates/admin/gstudio/widgets/draft_nodetypes.html,0 - -templates/admin/gstudio/widgets/_content_stats.html,0 - -templates/admin/gstudio/widgets/recent_comments.html,0 - -templates/admin/gstudio/widgets/_recent_linkbacks.html,0 - -templates/admin/gstudio/widgets/recent_linkbacks.html,0 - -templates/admin/gstudio/widgets/_recent_comments.html,0 - -templates/admin/gstudio/widgets/_draft_nodetypes.html,0 - -templates/admin/gstudio/widgets/content_stats.html,0 - -templates/comments/comment_reply_email.txt,0 - -templates/comments/comment_notification_email.txt,0 - -templates/comments/gstudio/nodetype/form.html,0 - -templates/comments/comment_authors_email.txt,0 - -templates/gstudio/_nodetype_neighbourhood.html,0 - -templates/gstudio/author/nodetype_list.html,0 - -templates/gstudio/tag/nodetype_list.html,0 - -templates/gstudio/cms/random_nodetypes.html,0 - -templates/gstudio/cms/nodetype_list.html,0 - -templates/gstudio/cms/nodetype_detail.html,0 - -templates/gstudio/metatype/nodetype_list.html,0 - -templates/gstudio/_subtype_detail.html,0 - -templates/gstudio/tags/featured_nodetypes.html,0 - -templates/gstudio/tags/breadcrumbs.html,0 - -templates/gstudio/tags/similar_nodetypes.html,0 - -templates/gstudio/tags/random_nodetypes.html,0 - -templates/gstudio/tags/tag_cloud.html,0 - -templates/gstudio/tags/recent_comments.html,0 - -templates/gstudio/tags/archives_nodetypes_tree.html,0 - -templates/gstudio/tags/recent_nodetypes.html,0 - -templates/gstudio/tags/archives_nodetypes.html,0 - -templates/gstudio/tags/popular_nodetypes.html,0 - -templates/gstudio/tags/recent_linkbacks.html,0 - -templates/gstudio/tags/calendar.html,0 - -templates/gstudio/tags/dummy.html,0 - -templates/gstudio/tags/archives_nodetypes_link.html,0 - -templates/gstudio/tags/pagination.html,0 - -templates/gstudio/tags/authors.html,0 - -templates/gstudio/tags/nodetypes.html,0 - -templates/gstudio/tags/metatypes.html,0 - -templates/gstudio/nodetype_archive.html,0 - -migrations/0001_initial.pyc,0 - -migrations/__init__.pyc,0 - -migrations/__init__.py,0 - -locale/de/LC_MESSAGES/django.po,0 - -locale/pt_BR/LC_MESSAGES/django.po,0 - -locale/ml/LC_MESSAGES/django.po,0 - -locale/zh_CN/LC_MESSAGES/django.po,0 - -locale/ru/LC_MESSAGES/django.po,0 - -locale/es/LC_MESSAGES/django.po,0 - -locale/hu/LC_MESSAGES/django.po,0 - -locale/it/LC_MESSAGES/django.po,0 - -locale/te/LC_MESSAGES/django.po,0 - -locale/fr/LC_MESSAGES/django.po,0 - -locale/mr/LC_MESSAGES/django.po,0 - -locale/bl/LC_MESSAGES/django.po,0 - -locale/pu/LC_MESSAGES/django.po,0 - -locale/nl/LC_MESSAGES/django.po,0 - -locale/hi/LC_MESSAGES/django.po,0 - -locale/pl/LC_MESSAGES/django.po,0 - -templatetags/__init__.py,0 - -url_shortener/backends/__init__.py,0 - -admin/__init__.py,0 - -views/__init__.py,0 - -__init__.pyc,0 - -__init__.py,0 - -tests/templates/gstudio/nodetype_search.html,0 - -tests/templates/gstudio/nodetype_list.html,0 - -tests/templates/gstudio/nodetype_detail.html,0 - -tests/urls.py,0 - -urls/capabilities.py,0 - -urls/discussions.py,0 - -urls/sitemap.py,0 - -urls/tags.py,0 - -urls/nodetypes.py,0 - -urls/search.py,0 - -urls/trackback.py,0 - -urls/__init__.py,0 - -urls/authors.py,0 - -urls/metatypes.py,0 - -urls/quick_nodetype.py,0 - -urls/feeds.py,0 - -management/commands/__init__.py,0 - -management/__init__.py,0 - -settings.py,0 - -testsettings.py,0 diff --git a/gstudio/admin/objecttype.py b/gstudio/admin/objecttype.py index 5072fe9a..45e07c0d 100644 --- a/gstudio/admin/objecttype.py +++ b/gstudio/admin/objecttype.py @@ -177,7 +177,6 @@ class ObjecttypeAdmin(parent_class): if not form.cleaned_data.get('authors'): form.cleaned_data['authors'].append(request.user) - nodetype.save() # nodetype.nbhood = nodetype.get_nbh # nodetype.last_update = datetime.now() diff --git a/gstudio/models.py b/gstudio/models.py index 167ed8cd..57121947 100644 --- a/gstudio/models.py +++ b/gstudio/models.py @@ -65,6 +65,7 @@ + """Super models of Gstudio """ import warnings @@ -303,8 +304,7 @@ class NID(models.Model): # # Returned value is a list, so splice it. # vrs = vrs[0] # except: - # return None - + # return None # return vrs.object @@ -327,36 +327,61 @@ class NID(models.Model): @property def getat(self): + """This is will give the possible attributetypes """ try: + pt = [] attributetype = [] - ot = self.ref - attributetype.append(ot.subjecttype_of.all()) + returndict = {} + + pt.append(self.ref) + obj = self.ref + while obj.parent: + pt.append((obj.parent).ref) + obj=obj.parent + + for each in pt: + attributetype.append(each.subjecttype_of.all()) + attributetype = [num for elem in attributetype for num in elem] - return attributetype + + for i in attributetype: + if str(i.applicable_nodetypes) == 'OT': + returndict.update({str(i.title):i.id}) + + return returndict.keys() 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 =[] 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 =[] + reltype =[] + titledict = {} + inverselist = [] + finaldict = {} + listval=[] + pt.append(self.ref) + obj = self.ref + while obj.parent: + pt.append((obj.parent).ref) + obj=obj.parent + 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}) @@ -364,16 +389,16 @@ class NID(models.Model): 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]}) + if pt[j].id == listval[i].left_subjecttype_id and str(listval[i].left_applicable_nodetypes) == 'OT' : + finaldict.update({titledict.keys()[i]:titledict.values()[i]}) + if pt[j].id == listval[i].right_subjecttype_id and str(listval[i].right_applicable_nodetypes)=='OT': + finaldict.update({inverselist[i]:titledict.values()[i]}) + - return finaldict.values() + return finaldict.keys() @property @@ -391,59 +416,59 @@ class NID(models.Model): version = Version.objects.get(id=self.id) return version.serialized_data + - - def get_Version_graph_json(self,ssid): + # 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) - # ver_dict=str(ver['nbhood']) - # ver_dict=ast.literal_eval(ver_dict) + # # # 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['nbhood']) - 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 }) + # 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(self.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 + # 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 + # except: + # pass + # # print g_json - return json.dumps(g_json) + # return json.dumps(g_json) def __unicode__(self): @@ -452,7 +477,7 @@ class NID(models.Model): class Meta: """NID's Meta""" - + class Node(NID): """ @@ -472,7 +497,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.") + nbhood = models.TextField(help_text="The rendered neighbourhood of the model.") + # nbh = models.TextField(help_text="The neighbourhood of the model.") published = NodePublishedManager() def __unicode__(self): @@ -480,18 +506,9 @@ class Node(NID): class Meta: abstract=False - + + - 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. - - class Edge(NID): @@ -540,7 +557,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) @@ -638,23 +655,38 @@ class Metatype(Node): """ Returns the neighbourhood of the metatype """ + history=[] + version_list=self.get_ssid + if version_list: + length=len(version_list) + history_ssid=version_list[length-1] + history_dict=self.version_info(history_ssid) + history_nbh_dict=ast.literal_eval(history_dict['nbhood']) + #ssid_current.append(history_ssid) + history=history_nbh_dict['history'] + history.append(history_ssid) + else: + history.append(0) nbh = {} + history_list=self.get_ssid nbh['title'] = self.title nbh['altnames'] = self.altnames nbh['plural'] = self.plural if self.parent: - nbh['typeof'] = self.parent + obj=NID.objects.get(id=self.parent) + typeof[parent] = obj.ref.get_absolute_url() + #nbh['typeof'] = self.parent # 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('<a href="%s">%s</a>' % (each.get_absolute_url(), each.title)) nbh['contains_members'] = contains_members_list 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) - + nbh['history']=history return nbh @@ -663,7 +695,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 +705,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 @@ -693,7 +725,7 @@ class Metatype(Node): def save(self, *args, **kwargs): super(Metatype, self).save(*args, **kwargs) # Call the "real" save() method. - self.nbhood=self.get_nbh + self.nbhood=self.get_rendered_nbh if GSTUDIO_VERSIONING: with reversion.create_revision(): @@ -856,8 +888,8 @@ class Nodetype(Node): rels['possible_rightroles'] = right_subset return rels - - + + def get_graph_json(self): @@ -865,6 +897,7 @@ class Nodetype(Node): g_json["node_metadata"]= [] g_json["relations"]=[] + global counter global attr_counter nbh = self.get_nbh @@ -875,9 +908,9 @@ class Nodetype(Node): predicate_id[key] = val counter = counter + 1 - this_node = {"_id":str(self.id),"title":self.title,"screen_name":self.title, "url":self.get_absolute_url(),"expanded":"true","refType":self.reftype} + this_node = {"_id":str(self.id),"title":self.title,"screen_name":self.title, "url":self.get_absolute_url(),"refType":self.reftype} g_json["node_metadata"].append(this_node) - + for key in predicate_id.keys(): if nbh[key]: @@ -895,10 +928,11 @@ class Nodetype(Node): flag=0 # create nodes - g_json["node_metadata"].append({"_id":str(item.id),"screen_name":item.title,"title":self.title, "url":item.get_absolute_url(),"expanded":"false","refType":item.reftype,"inverse":item.inverse,"flag":flag}) + g_json["node_metadata"].append({"_id":str(item.id),"screen_name":item.title,"title":self.title, "url":item.get_absolute_url(),"refType":item.reftype,"inverse":item.inverse,"flag":flag}) - g_json["node_metadata"].append({"_id":str(item.id),"screen_name":item.title,"title":self.title, "url":item.get_absolute_url(),"expanded":"false","refType":item.reftype}) + + g_json["node_metadata"].append({"_id":str(item.id),"screen_name":item.title,"title":self.title, "url":item.get_absolute_url(),"refType":item.reftype}) #create links g_json["relations"].append({"from":predicate_id[key] ,"type":str(key), "value":1,"to":item.id }) @@ -913,6 +947,7 @@ class Nodetype(Node): pass + return json.dumps(g_json) @@ -950,15 +985,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 @@ -996,7 +1031,7 @@ class Nodetype(Node): return relations @property - def get_relations1(self): + def get_rendered_relations(self): """ Returns all the relations of the nodetype """ @@ -1020,7 +1055,7 @@ class Nodetype(Node): if each.relationtype.title==key: fl=1 predicate_values.append(predicate) - reltype[key]=predicate_values + reltype[key]=predicate_values if fl==0: predicate_values=predicate reltype[relation]=predicate_values @@ -1060,6 +1095,7 @@ class Nodetype(Node): relations['rrelations']=reltype return relations + @property def get_attributes(self): attributes_dict = {} @@ -1085,19 +1121,37 @@ class Nodetype(Node): val.extend(value) attributes_dict[atr_key]=val return attributes_dict - + + # def history(self,ssid): + #ver @property def get_rendered_nbh(self): """ Returns the neighbourhood of the nodetype """ + history=[] + version_list=self.get_ssid + if version_list: + length=len(version_list) + history_ssid=version_list[length-1] + history_dict=self.version_info(history_ssid) + history_nbh_dict=ast.literal_eval(history_dict['nbhood']) + #ssid_current.append(history_ssid) + history=history_nbh_dict['history'] + history.append(history_ssid) + else: + history.append(0) nbh = {} nbh['title'] = self.title nbh['count_title'] = len(nbh['title']) nbh['altnames'] = self.altnames nbh['count_altnames'] = len(nbh['altnames']) - nbh['plural'] = self.plural - nbh['count_plural'] = len(nbh['plural']) + nbh['plural'] = self.plural + try: + nbh['count_plural'] = len(nbh['plural']) + except: + pass + #get all MTs member_of_dict = {} for each in self.metatypes.all(): @@ -1149,8 +1203,8 @@ class Nodetype(Node): relns={} rellft={} relrgt={} - if self.get_relations1: - NTrelns=self.get_relations1 + if self.get_rendered_relations: + NTrelns=self.get_rendered_relations for key,value in NTrelns.items(): if key=="rrelations": relrgt={} @@ -1158,7 +1212,7 @@ class Nodetype(Node): relnvalue={} if isinstance(rgtvalue,list): for items in rgtvalue: - relnvalue[items]=items.get_absolute_url() + relnvalue[items.title]=items.get_absolute_url() else: relnvalue[rgtvalue]=rgtvalue.get_absolute_url() @@ -1171,7 +1225,7 @@ class Nodetype(Node): relnvalue={} if isinstance(lftvalue,list): for items in lftvalue: - relnvalue[items]=items.get_absolute_url() + relnvalue[items.title]=items.get_absolute_url() else: relnvalue[lftvalue]=lftvalue.get_absolute_url() @@ -1201,7 +1255,7 @@ class Nodetype(Node): rightroles[each.title]=each.get_absolute_url() nbh['rightroles']=rightroles nbh['count_rightroles'] = len(nbh['rightroles']) - + nbh['history']=history return nbh @@ -1286,22 +1340,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 @@ -1332,16 +1386,7 @@ class Nodetype(Node): verbose_name_plural = _('node types') permissions = (('can_view_all', 'Can view all'), ('can_change_author', 'Can change author'), ) - - # Save for nodetype - 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. - - - + class Objecttype(Nodetype): ''' Object class @@ -1349,11 +1394,7 @@ class Objecttype(Nodetype): def __unicode__(self): return self.title - - - - - + @property def get_attributetypes(self): @@ -1455,61 +1496,190 @@ class Objecttype(Nodetype): #nbh['authors'] = self.authors.all() return nbh - @property def get_rendered_nbh(self): + """ + Returns the neighbourhood of the nodetype """ - Returns the neighbourhood of the nodetype with the hyperlinks of nodes rendered - """ + history=[] + version_list=self.get_ssid + if version_list: + length=len(version_list) + history_ssid=version_list[length-1] + history_dict=self.version_info(history_ssid) + history_nbh_dict=ast.literal_eval(history_dict['nbhood']) + #ssid_current.append(history_ssid) + history=history_nbh_dict['history'] + history.append(history_ssid) + else: + history.append(0) nbh = {} nbh['title'] = self.title + nbh['count_title'] = len(nbh['title']) nbh['altnames'] = self.altnames - nbh['plural'] = self.plural - member_of_metatypes_list = [] + nbh['count_altnames'] = len(nbh['altnames']) + nbh['plural'] = self.plural + #nbh['count_plural'] = len(nbh['plural']) + #get all MTs + member_of_dict = {} for each in self.metatypes.all(): - member_of_metatypes_list.append('<a href="%s">%s</a>' % (each.get_absolute_url(), each.title)) - nbh['member_of_metatypes'] = member_of_metatypes_list - - - attributetypes_list = [] - for each in self.get_attributetypes: - attributetypes_list.append('<a href="%s">%s</a>' % (each.get_absolute_url(), each.title)) - nbh['attributetypes'] = attributetypes_list - - - # get all the RTs for the objecttype - reltypes_list = [] - for each in self.get_relationtypes: - reltypes_list.append('<a href="%s">%s</a>' % (each.get_absolute_url(), each.title)) - nbh['relationtypes'] = reltypes_list - - nbh['type_of'] = self.parent - - nbh['contains_subtypes'] = Nodetype.objects.filter(parent=self.id) - # get all the objects inheriting this OT - contains_members_list = [] - for each in self.gbobjects.all(): - contains_members_list.append('<a href="%s">%s</a>' % (each.get_absolute_url(), each.title)) - nbh['contains_members'] = contains_members_list - - prior_nodes_list = [] + member_of_dict[each.title]= each.get_absolute_url() + nbh['member_of_metatypes']=member_of_dict + nbh['count_member_of_metatypes'] = len(nbh['member_of_metatypes']) + typeof={} + parent=self.parent_id + if parent: + obj=NID.objects.get(id=parent) + typeof[parent] = obj.ref.get_absolute_url() + nbh['type_of']=typeof + nbh['count_type_of'] = len(nbh['type_of']) + #get all subtypes + subtypes={} + for each in Nodetype.objects.filter(parent=self.id): + subtypes[each.title] =each.get_absolute_url() + nbh['contains_subtypes']=subtypes + nbh['count_contains_subtypes'] = len(nbh['contains_subtypes']) + # get all the objects inheriting this OT + contains_members_dict = {} + for each in self.member_objects.all(): + contains_members_dict[each.title]= each.get_absolute_url() + nbh['contains_members'] = contains_members_dict + nbh['count_contains_members'] = len(nbh['contains_members']) + #get prior nodes + priornodes_dict = {} for each in self.prior_nodes.all(): - prior_nodes_list.append('<a href="%s">%s</a>' % (each.get_absolute_url(), each.title)) - nbh['prior_nodes'] = prior_nodes_list - - posterior_nodes_list = [] + priornodes_dict[each.title]= each.get_absolute_url() + nbh['priornodes'] = priornodes_dict + nbh['count_priornodes'] = len(nbh['priornodes']) + #get posterior nodes + posteriornodes_dict = {} for each in self.posterior_nodes.all(): - posterior_nodes_list.append('<a href="%s">%s</a>' % (each.get_absolute_url(), each.title)) - nbh['posterior_nodes'] = posterior_nodes_list - - author_list = [] + posteriornodes_dict[each.title]= each.get_absolute_url() + nbh['posteriornodes'] = posteriornodes_dict + nbh['count_posteriornodes'] = len(nbh['posteriornodes']) + #get authors + author_dict = {} for each in self.authors.all(): - author_list.append('<a href="%s"></a>' % (each.get_absolute_url())) - nbh['authors'] = author_list + author_dict['User'] = each.get_absolute_url() + nbh['authors'] = author_dict + #get siblings + siblings={} + for each in self.get_siblings(): + siblings[each.title]=each.get_absolute_url() + nbh['siblings']=siblings + nbh['count_siblings'] = len(nbh['siblings']) + #get Relations + relns={} + rellft={} + relrgt={} + if self.get_rendered_relations: + NTrelns=self.get_rendered_relations + for key,value in NTrelns.items(): + if key=="rrelations": + relrgt={} + for rgtkey,rgtvalue in value.items(): + relnvalue={} + if isinstance(rgtvalue,list): + for items in rgtvalue: + relnvalue[items.title]=items.get_absolute_url() + else: + relnvalue[rgtvalue]=rgtvalue.get_absolute_url() + + relrgt[rgtkey]=relnvalue + + else: + rellft={} + relns['left']=rellft + for lftkey,lftvalue in value.items(): + relnvalue={} + if isinstance(lftvalue,list): + for items in lftvalue: + relnvalue[items.title]=items.get_absolute_url() + else: + relnvalue[lftvalue]=lftvalue.get_absolute_url() + + rellft[lftkey]=relnvalue + + nbh['relations']=relrgt + + nbh['relations'].update(rellft) + nbh['count_relations'] = len(nbh['relations']) + #get Attributes + attributes =self.get_attributes + nbh['attributes']=attributes + nbh['count_attributes'] = len(nbh['attributes']) + #get ATs + attributetypes={} + for each in self.subjecttype_of.all(): + attributetypes[each.title]=each.get_absolute_url() + nbh['ats']=attributetypes + #get RTs as leftroles and rightroles + leftroles = {} + for each in self.left_subjecttype_of.all(): + leftroles[each.title]=each.get_absolute_url() + nbh['leftroles']=leftroles + nbh['count_leftroles'] = len(nbh['leftroles']) + rightroles = {} + for each in self.right_subjecttype_of.all(): + rightroles[each.title]=each.get_absolute_url() + nbh['rightroles']=rightroles + nbh['count_rightroles'] = len(nbh['rightroles']) + nbh['history']=history return nbh + + 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) + ver_dict1=self.version_info(ssid) + #ver_dict=str(ver['nbhood']) + ver_dict=ast.literal_eval(ver_dict['nbhood']) + 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(self.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) + + class Meta: """ object type's meta class @@ -1521,15 +1691,22 @@ class Objecttype(Nodetype): # Save for Objecttype # @reversion.create_revision() - def save(self, *args, **kwargs): + def save(self,*args, **kwargs): self.nodemodel = self.__class__.__name__ super(Objecttype, self).save(*args, **kwargs) # Call the "real" save() method. - self.nbhood=self.get_nbh + self.nbhood=self.get_rendered_nbh + if GSTUDIO_VERSIONING: + with reversion.create_revision(): + self.nodemodel = self.__class__.__name__ + if self.parent: + ot=NID.objects.get(id=self.parent.id) + ot.ref.save() + super(Objecttype, self).save(*args, **kwargs) # Call the "real" save() method. + + def save_revert_or_merge(self,*args, **kwargs): if GSTUDIO_VERSIONING: with reversion.create_revision(): super(Objecttype, self).save(*args, **kwargs) # Call the "real" save() method. - - @@ -1563,6 +1740,171 @@ class Relationtype(Nodetype): def __unicode__(self): return self.title + @property + + def get_rendered_nbh(self): + """ + Returns the neighbourhood of the Relationtype + """ + history=[] + version_list=self.get_ssid + if version_list: + length=len(version_list) + history_ssid=version_list[length-1] + history_dict=self.version_info(history_ssid) + history_nbh_dict=ast.literal_eval(history_dict['nbhood']) + #ssid_current.append(history_ssid) + history=history_nbh_dict['history'] + history.append(history_ssid) + else: + history.append(0) + nbh = {} + nbh['title'] = self.title + nbh['count_title'] = len(nbh['title']) + nbh['altnames'] = self.altnames + nbh['count_altnames'] = len(nbh['altnames']) + nbh['plural'] = self.plural +# nbh['count_plural'] = len(nbh['plural']) + #get all MTs + member_of_dict = {} + for each in self.metatypes.all(): + member_of_dict[each.title]= each.get_absolute_url() + nbh['member_of_metatypes']=member_of_dict + nbh['count_member_of_metatypes'] = len(nbh['member_of_metatypes']) + typeof={} + parent=self.parent_id + if parent: + obj=NID.objects.get(id=parent) + typeof[parent] = obj.ref.get_absolute_url() + nbh['type_of']=typeof + nbh['count_type_of'] = len(nbh['type_of']) + #get all subtypes + subtypes={} + for each in Nodetype.objects.filter(parent=self.id): + subtypes[each.title] =each.get_absolute_url() + nbh['contains_subtypes']=subtypes + nbh['count_contains_subtypes'] = len(nbh['contains_subtypes']) + # get all the objects inheriting this OT + contains_members_dict = {} + for each in self.member_objects.all(): + contains_members_dict[each.title]= each.get_absolute_url() + nbh['contains_members'] = contains_members_dict + nbh['count_contains_members'] = len(nbh['contains_members']) + #get prior nodes + priornodes_dict = {} + for each in self.prior_nodes.all(): + priornodes_dict[each.title]= each.get_absolute_url() + nbh['priornodes'] = priornodes_dict + nbh['count_priornodes'] = len(nbh['priornodes']) + #get posterior nodes + posteriornodes_dict = {} + for each in self.posterior_nodes.all(): + posteriornodes_dict[each.title]= each.get_absolute_url() + nbh['posteriornodes'] = posteriornodes_dict + nbh['count_posteriornodes'] = len(nbh['posteriornodes']) + #get authors + author_dict = {} + for each in self.authors.all(): + author_dict['User'] = each.get_absolute_url() + nbh['authors'] = author_dict + #get siblings + siblings={} + for each in self.get_siblings(): + siblings[each.title]=each.get_absolute_url() + nbh['siblings']=siblings + nbh['count_siblings'] = len(nbh['siblings']) + #get Relations + relns={} + rellft={} + relrgt={} + if self.get_rendered_relations: + NTrelns=self.get_rendered_relations + for key,value in NTrelns.items(): + if key=="rrelations": + relrgt={} + for rgtkey,rgtvalue in value.items(): + relnvalue={} + if isinstance(rgtvalue,list): + for items in rgtvalue: + relnvalue[items]=items.get_absolute_url() + else: + relnvalue[rgtvalue]=rgtvalue.get_absolute_url() + + relrgt[rgtkey]=relnvalue + + else: + rellft={} + relns['left']=rellft + for lftkey,lftvalue in value.items(): + relnvalue={} + if isinstance(lftvalue,list): + for items in lftvalue: + relnvalue[items]=items.get_absolute_url() + else: + relnvalue[lftvalue]=lftvalue.get_absolute_url() + + rellft[lftkey]=relnvalue + + nbh['relations']=relrgt + + nbh['relations'].update(rellft) + nbh['count_relations'] = len(nbh['relations']) + #get Attributes + attributes =self.get_attributes + nbh['attributes']=attributes + nbh['count_attributes'] = len(nbh['attributes']) + #get ATs + attributetypes={} + for each in self.subjecttype_of.all(): + attributetypes[each.title]=each.get_absolute_url() + nbh['ats']=attributetypes + #get RTs as leftroles and rightroles + leftroles = {} + for each in self.left_subjecttype_of.all(): + leftroles[each.title]=each.get_absolute_url() + nbh['leftroles']=leftroles + nbh['count_leftroles'] = len(nbh['leftroles']) + rightroles = {} + for each in self.right_subjecttype_of.all(): + rightroles[each.title]=each.get_absolute_url() + nbh['rightroles']=rightroles + nbh['count_rightroles'] = len(nbh['rightroles']) + nbh['history']=history + return nbh + + + + def get_nbh(self): + """ + Returns the neighbourhood of the nodetype + """ + nbh = {} + nbh['title'] = self.title + nbh['altnames'] = self.altnames + nbh['plural'] = self.plural + + nbh['contains_subtypes'] = Nodetype.objects.filter(parent=self.id) + # get all the objects inheriting this OT + nbh['contains_members'] = self.member_objects.all() + nbh['prior_nodes'] = self.prior_nodes.all() + nbh['posterior_nodes'] = self.posterior_nodes.all() + nbh['inverse']=self.inverse + nbh['left_subjecttype']=self.left_subjecttype + nbh['left_applicable_nodetypes']=self.left_applicable_nodetypes + nbh['left_cardinality']=self.left_cardinality + nbh['right_subjecttype']=self.right_subjecttype + nbh['right_applicable_nodetypes']=self.right_applicable_nodetypes + nbh['right_cardinality']=self.right_cardinality + nbh['is_symmetrical']=self.is_symmetrical + nbh['is_reflexive']=self.is_reflexive + nbh['is_transitive']=self.is_transitive + + + + return nbh + + + class Meta: """ relation type's meta class @@ -1576,12 +1918,12 @@ class Relationtype(Nodetype): # @reversion.create_revision() def save(self, *args, **kwargs): self.nodemodel = self.__class__.__name__ + super(Relationtype, self).save(*args, **kwargs) # Call the "real" save() method. + self.nbhood=self.get_rendered_nbh if GSTUDIO_VERSIONING: with reversion.create_revision(): self.nodemodel = self.__class__.__name__ - - - super(Relationtype, self).save(*args, **kwargs) # Call the "real" save() method. + super(Relationtype, self).save(*args, **kwargs) # Call the "real" save() method. @@ -1615,6 +1957,140 @@ class Attributetype(Nodetype): editable=models.NullBooleanField(verbose_name='required', null=True, blank=True, help_text='If False, the field will not be editable') + + @property + def get_rendered_nbh(self): + """ + Returns the neighbourhood of the Attributetype + """ + history=[] + version_list=self.get_ssid + if version_list: + length=len(version_list) + history_ssid=version_list[length-1] + history_dict=self.version_info(history_ssid) + history_nbh_dict=ast.literal_eval(history_dict['nbhood']) + #ssid_current.append(history_ssid) + history=history_nbh_dict['history'] + history.append(history_ssid) + else: + history.append(0) + nbh = {} + nbh['title'] = self.title + nbh['count_title'] = len(nbh['title']) + nbh['altnames'] = self.altnames + nbh['count_altnames'] = len(nbh['altnames']) + # nbh['plural'] = self.plural + # nbh['count_plural'] = len(nbh['plural']) + #get all MTs + member_of_dict = {} + for each in self.metatypes.all(): + member_of_dict[each.title]= each.get_absolute_url() + nbh['member_of_metatypes']=member_of_dict + nbh['count_member_of_metatypes'] = len(nbh['member_of_metatypes']) + typeof={} + parent=self.parent_id + if parent: + obj=NID.objects.get(id=parent) + typeof[parent] = obj.ref.get_absolute_url() + nbh['type_of']=typeof + nbh['count_type_of'] = len(nbh['type_of']) + #get all subtypes + subtypes={} + for each in Nodetype.objects.filter(parent=self.id): + subtypes[each.title] =each.get_absolute_url() + nbh['contains_subtypes']=subtypes + nbh['count_contains_subtypes'] = len(nbh['contains_subtypes']) + # get all the objects inheriting this OT + contains_members_dict = {} + for each in self.member_objects.all(): + contains_members_dict[each.title]= each.get_absolute_url() + nbh['contains_members'] = contains_members_dict + nbh['count_contains_members'] = len(nbh['contains_members']) + #get prior nodes + priornodes_dict = {} + for each in self.prior_nodes.all(): + priornodes_dict[each.title]= each.get_absolute_url() + nbh['priornodes'] = priornodes_dict + nbh['count_priornodes'] = len(nbh['priornodes']) + #get posterior nodes + posteriornodes_dict = {} + for each in self.posterior_nodes.all(): + posteriornodes_dict[each.title]= each.get_absolute_url() + nbh['posteriornodes'] = posteriornodes_dict + nbh['count_posteriornodes'] = len(nbh['posteriornodes']) + #get authors + author_dict = {} + for each in self.authors.all(): + author_dict['User'] = each.get_absolute_url() + nbh['authors'] = author_dict + #get siblings + siblings={} + for each in self.get_siblings(): + siblings[each.title]=each.get_absolute_url() + nbh['siblings']=siblings + nbh['count_siblings'] = len(nbh['siblings']) + #get Relations + relns={} + rellft={} + relrgt={} + if self.get_rendered_relations: + NTrelns=self.get_rendered_relations + for key,value in NTrelns.items(): + if key=="rrelations": + relrgt={} + for rgtkey,rgtvalue in value.items(): + relnvalue={} + if isinstance(rgtvalue,list): + for items in rgtvalue: + relnvalue[items]=items.get_absolute_url() + else: + relnvalue[rgtvalue]=rgtvalue.get_absolute_url() + + relrgt[rgtkey]=relnvalue + + else: + rellft={} + relns['left']=rellft + for lftkey,lftvalue in value.items(): + relnvalue={} + if isinstance(lftvalue,list): + for items in lftvalue: + relnvalue[items]=items.get_absolute_url() + else: + relnvalue[lftvalue]=lftvalue.get_absolute_url() + + rellft[lftkey]=relnvalue + + nbh['relations']=relrgt + + nbh['relations'].update(rellft) + nbh['count_relations'] = len(nbh['relations']) + #get Attributes + attributes =self.get_attributes + nbh['attributes']=attributes + nbh['count_attributes'] = len(nbh['attributes']) + #get ATs + attributetypes={} + for each in self.subjecttype_of.all(): + attributetypes[each.title]=each.get_absolute_url() + nbh['ats']=attributetypes + #get RTs as leftroles and rightroles + leftroles = {} + for each in self.left_subjecttype_of.all(): + leftroles[each.title]=each.get_absolute_url() + nbh['leftroles']=leftroles + nbh['count_leftroles'] = len(nbh['leftroles']) + rightroles = {} + for each in self.right_subjecttype_of.all(): + rightroles[each.title]=each.get_absolute_url() + nbh['rightroles']=rightroles + nbh['count_rightroles'] = len(nbh['rightroles']) + nbh['history']=history + + return nbh + + def __unicode__(self): return self.title @@ -1638,13 +2114,17 @@ class Attributetype(Nodetype): def save(self, *args, **kwargs): self.nodemodel = self.__class__.__name__ - -# self.nbhood=self.get_nbh + super(Attributetype, self).save(*args, **kwargs) # Call the "real" save() method. + self.nbhood=self.get_rendered_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. + def save_revert_or_merge(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. + class Relation(Edge): @@ -1705,12 +2185,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): @@ -1727,27 +2207,35 @@ 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 def save(self, *args, **kwargs): + + """ + left_subject and right_subject should be saved after creating the relation + """ self.nodemodel = self.__class__.__name__ + if GSTUDIO_VERSIONING: with reversion.create_revision(): super(Relation, self).save(*args, **kwargs) # Call the "real" save() method. + left_subject = self.left_subject + right_subject = self.right_subject + left_subject.ref.save() + right_subject.ref.save() super(Relation, self).save(*args, **kwargs) # Call the "real" save() method. - class Attribute(Edge): ''' Attribute value store for default datatype varchar. Subject can be any of the @@ -1798,21 +2286,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): @@ -1830,7 +2318,8 @@ class Attribute(Edge): if GSTUDIO_VERSIONING: with reversion.create_revision(): super(Attribute, self).save(*args, **kwargs) # Call the "real" save() method. - + subject=self.subject + subject.ref.save() super(Attribute, self).save(*args, **kwargs) # Call the "real" save() method. @@ -1847,11 +2336,14 @@ class AttributeCharField(Attribute): # @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. - + subject=self.subject + subject.ref.save() super(AttributeCharField, self).save(*args, **kwargs) # Call the "real" save() method. + class AttributeTextField(Attribute): @@ -1867,6 +2359,8 @@ class AttributeTextField(Attribute): if GSTUDIO_VERSIONING: with reversion.create_revision(): super(AttributeTextField, self).save(*args, **kwargs) # Call the "real" save() method. + subject=self.subject + subject.ref.save() super(AttributeTextField, self).save(*args, **kwargs) # Call the "real" save() method. @@ -1882,7 +2376,8 @@ class AttributeIntegerField(Attribute): if GSTUDIO_VERSIONING: with reversion.create_revision(): super(AttributeIntegerField, self).save(*args, **kwargs) # Call the "real" save() method. - + subject=self.subject + subject.ref.save() super(AttributeIntegerField, self).save(*args, **kwargs) # Call the "real" save() method. @@ -1900,6 +2395,8 @@ class AttributeCommaSeparatedIntegerField(Attribute): if GSTUDIO_VERSIONING: with reversion.create_revision(): super(AttributeCommaSeparatedIntegerField, self).save(*args, **kwargs) # Call the "real" save() method. + subject=self.subject + subject.ref.save() super(AttributeCommaSeparatedIntegerField, self).save(*args, **kwargs) # Call the "real" save() method. class AttributeBigIntegerField(Attribute): @@ -1908,6 +2405,17 @@ class AttributeBigIntegerField(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(AttributeBigIntegerField, self).save(*args, **kwargs) # Call the "real" save() method. + subject=self.subject + subject.ref.save() + super(AttributeBigIntegerField, self).save(*args, **kwargs) # Call the "real" save() method. + class AttributePositiveIntegerField(Attribute): @@ -1922,6 +2430,8 @@ class AttributePositiveIntegerField(Attribute): if GSTUDIO_VERSIONING: with reversion.create_revision(): super(AttributePositiveIntegerField, self).save(*args, **kwargs) # Call the "real" save() method. + subject=self.subject + subject.ref.save() super(AttributePositiveIntegerField, self).save(*args, **kwargs) # Call the "real" save() method. @@ -1936,8 +2446,8 @@ class AttributeDecimalField(Attribute): if GSTUDIO_VERSIONING: with reversion.create_revision(): super(AttributeDecimalField, self).save(*args, **kwargs) # Call the "real" save() method. - - + subject=self.subject + subject.ref.save() super(AttributeDecimalField, self).save(*args, **kwargs) # Call the "real" save() method. class AttributeFloatField(Attribute): @@ -1953,7 +2463,8 @@ class AttributeFloatField(Attribute): if GSTUDIO_VERSIONING: with reversion.create_revision(): super(AttributeFloatField, self).save(*args, **kwargs) # Call the "real" save() method. - + subject=self.subject + subject.ref.save() super(AttributeFloatField, self).save(*args, **kwargs) # Call the "real" save() method. @@ -1968,7 +2479,8 @@ class AttributeBooleanField(Attribute): if GSTUDIO_VERSIONING: with reversion.create_revision(): super(AttributeBooleanField, self).save(*args, **kwargs) # Call the "real" save() method. - + subject=self.subject + subject.ref.save() super(AttributeBooleanField, self).save(*args, **kwargs) # Call the "real" save() method. @@ -1985,6 +2497,8 @@ class AttributeNullBooleanField(Attribute): if GSTUDIO_VERSIONING: with reversion.create_revision(): super(AttributeNullBooleanField, self).save(*args, **kwargs) # Call the "real" save() method. + subject=self.subject + subject.ref.save() super(AttributeNullBooleanField, self).save(*args, **kwargs) # Call the "real" save() method. @@ -2000,7 +2514,8 @@ class AttributeDateField(Attribute): if GSTUDIO_VERSIONING: with reversion.create_revision(): super(AttributeDateField, self).save(*args, **kwargs) # Call the "real" save() method. - + subject=self.subject + subject.ref.save() super(AttributeDateField, self).save(*args, **kwargs) # Call the "real" save() method. @@ -2017,7 +2532,8 @@ class AttributeDateTimeField(Attribute): if GSTUDIO_VERSIONING: with reversion.create_revision(): super(AttributeDateTimeField, self).save(*args, **kwargs) # Call the "real" save() method. - + subject=self.subject + subject.ref.save() super(AttributeDateTimeField, self).save(*args, **kwargs) # Call the "real" save() method. @@ -2034,13 +2550,14 @@ class AttributeTimeField(Attribute): if GSTUDIO_VERSIONING: with reversion.create_revision(): super(AttributeTimeField, self).save(*args, **kwargs) # Call the "real" save() method. - + subject=self.subject + subject.ref.save() super(AttributeTimeField, self).save(*args, **kwargs) # Call the "real" save() method. class AttributeEmailField(Attribute): - value = models.CharField(max_length=100,verbose_name='value') + value = models.EmailField(max_length=100,verbose_name='value') def __unicode__(self): return self.title @@ -2050,13 +2567,14 @@ class AttributeEmailField(Attribute): if GSTUDIO_VERSIONING: with reversion.create_revision(): super(AttributeEmailField, self).save(*args, **kwargs) # Call the "real" save() method. - + subject=self.subject + subject.ref.save() super(AttributeEmailField, self).save(*args, **kwargs) # Call the "real" save() method. class AttributeFileField(Attribute): - value = models.FileField(upload_to='/media', verbose_name='file') + value = models.FileField(upload_to='media/'+UPLOAD_TO, verbose_name='file') def __unicode__(self): return self.title @@ -2067,7 +2585,8 @@ class AttributeFileField(Attribute): if GSTUDIO_VERSIONING: with reversion.create_revision(): super(AttributeFileField, self).save(*args, **kwargs) # Call the "real" save() method. - + subject=self.subject + subject.ref.save() super(AttributeFileField, self).save(*args, **kwargs) # Call the "real" save() method. @@ -2084,13 +2603,14 @@ class AttributeFilePathField(Attribute): if GSTUDIO_VERSIONING: with reversion.create_revision(): super(AttributeFilePathField, self).save(*args, **kwargs) # Call the "real" save() method. - + subject=self.subject + subject.ref.save() super(AttributeFilePathField, self).save(*args, **kwargs) # Call the "real" save() method. class AttributeImageField(Attribute): - value = models.ImageField(upload_to='/media', verbose_name='image') + value = models.ImageField(upload_to = UPLOAD_TO, verbose_name='image') def __unicode__(self): return self.title @@ -2098,6 +2618,11 @@ class AttributeImageField(Attribute): # @reversion.create_revision() def save(self, *args, **kwargs): self.nodemodel = self.__class__.__name__ + if GSTUDIO_VERSIONING: + with reversion.create_revision(): + super(AttributeImageField, self).save(*args, **kwargs) # Call the "real" save() method. + subject=self.subject + subject.ref.save() super(AttributeImageField, self).save(*args, **kwargs) # Call the "real" save() method. @@ -2114,7 +2639,8 @@ class AttributeURLField(Attribute): if GSTUDIO_VERSIONING: with reversion.create_revision(): super(AttributeURLField, self).save(*args, **kwargs) # Call the "real" save() method. - + subject=self.subject + subject.ref.save() super(AttributeURLField, self).save(*args, **kwargs) # Call the "real" save() method. @@ -2131,7 +2657,8 @@ class AttributeIPAddressField(Attribute): if GSTUDIO_VERSIONING: with reversion.create_revision(): super(AttributeIPAddressField, self).save(*args, **kwargs) # Call the "real" save() method. - + subject=self.subject + subject.ref.save() super(AttributeIPAddressField, self).save(*args, **kwargs) # Call the "real" save() method. @@ -2161,11 +2688,13 @@ class Processtype(Nodetype): # @reversion.create_revision() def save(self, *args, **kwargs): self.nodemodel = self.__class__.__name__ + super(Processtype, self).save(*args, **kwargs) # Call the "real" save() method. + self.nbhood=self.get_rendered_nbh 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. + @@ -2202,13 +2731,12 @@ class Systemtype(Nodetype): # @reversion.create_revision() def save(self, *args, **kwargs): self.nodemodel = self.__class__.__name__ + super(Systemtype, self).save(*args, **kwargs) # Call the "real" save() method. + self.nbhood=self.get_rendered_nbh 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. - - class AttributeSpecification(Node): """ @@ -2229,7 +2757,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): @@ -2270,7 +2798,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 @@ -2312,7 +2840,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 @@ -2351,7 +2879,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: @@ -2436,7 +2964,7 @@ if GSTUDIO_VERSIONING == True: reversion.register(NID) if not reversion.is_registered(Systemtype): - reversion.register(Systemtype) + reversion.register(Systemtype,follow=["nodetype_ptr"] ) if not reversion.is_registered(Objecttype): reversion.register(Objecttype , follow=["nodetype_ptr"]) @@ -2449,7 +2977,7 @@ if GSTUDIO_VERSIONING == True: if not reversion.is_registered(Processtype): - reversion.register(Processtype, follow=["changing_attributetype_set", "changing_relationtype_set"]) + reversion.register(Processtype, follow=["nodetype_ptr","changing_attributetype_set", "changing_relationtype_set"]) if not reversion.is_registered(Nodetype): reversion.register(Nodetype, follow=["node_ptr","parent", "metatypes","prior_nodes", "posterior_nodes"]) @@ -2459,10 +2987,10 @@ if GSTUDIO_VERSIONING == True: if not reversion.is_registered(Relationtype): - reversion.register(Relationtype, follow=["left_subjecttype", "right_subjecttype"]) + reversion.register(Relationtype, follow=["nodetype_ptr","left_subjecttype", "right_subjecttype"]) if not reversion.is_registered(Attributetype): - reversion.register(Attributetype, follow=["subjecttype"]) + reversion.register(Attributetype, follow=["nodetype_ptr","subjecttype"]) if not reversion.is_registered(Attribute): reversion.register(Attribute, follow=["subject", "attributetype"]) diff --git a/gstudio/settings.py b/gstudio/settings.py index 75606676..a0c40c9a 100644 --- a/gstudio/settings.py +++ b/gstudio/settings.py @@ -153,4 +153,4 @@ USE_TWITTER = getattr(settings, 'GSTUDIO_USE_TWITTER', bool(TWITTER_ACCESS_KEY and TWITTER_ACCESS_SECRET and \ TWITTER_CONSUMER_KEY and TWITTER_CONSUMER_SECRET)) -GSTUDIO_VERSIONING = False +GSTUDIO_VERSIONING = True diff --git a/gstudio/templates/gstudio/display.html b/gstudio/templates/gstudio/display.html index 184b58de..9d48285d 100644 --- a/gstudio/templates/gstudio/display.html +++ b/gstudio/templates/gstudio/display.html @@ -1,4 +1,3 @@ - {% load i18n comments gstudio_tags %} {% load gstudio_tags i18n %} {% get_tags as nodetype_tags %} @@ -6,7 +5,6 @@ - <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xml:lang="{{ LANGUAGE_CODE }}" lang="{{ LANGUAGE_CODE }}" version="-//W3C//DTD XHTML 1.1//EN" xmlns="http://www.w3.org/1999/xhtml"> <head> @@ -165,7 +163,7 @@ .attr("width", w) .attr("height", h); - vis.append("svg:g").attr("class", "edges"); + vis.append("svg:g").attr("class", "edges"); vis.append("svg:g").attr("class", "nodes"); $(function() { @@ -176,7 +174,7 @@ $(function() { success : function(json) { //var node = NID.objects.get(slug='{{ slug }}'); - var force; + var force; // this contains all the nodes as a dict with _id as the key @@ -336,18 +334,18 @@ $(function() { nodes_by_id[{{ nt.id }}].y = h/2.0; all_edges = new Array(); - all_edges = all_edges.concat(follows_edges, member_of, contains_members, contains_subtypes, mentions_edges, right_subjecttype_of, left_subjecttype_of, subjecttype_of, type_of,plural,altnames,contains_members,content, prior_nodes, posterior_nodes); - /* all_edges.concat(follows_edges); - all_edges.concat(member_of_metatype); + all_edges = all_edges.concat(follows_edges, member_of, contains_members, contains_subtypes, mentions_edges, right_subjecttype_of, left_subjecttype_of, subjecttype_of, type_of,plural,altnames,contains_members,content, prior_nodes, posterior_nodes); + /* all_edges.concat(follows_edges); + all_edges.concat(member_of_metatype); all_edges.concat(contains_members); - all_edges.concat(contains_subtypes); - all_edges.concat(mentions_edges); + all_edges.concat(contains_subtypes); + all_edges.concat(mentions_edges); - document.getElementById('debugbox1').value= follows_edges; //member_of_metatype + document.getElementById('debugbox1').value= follows_edges; //member_of_metatype document.getElementById('debugbox2').value= mentions_edges; - //document.getElementById('debugbox2').value= member_of_metatype; - document.getElementById('debugbox3').value= all_edges; + //document.getElementById('debugbox2').value= member_of_metatype; + document.getElementById('debugbox3').value= all_edges; */ var force = d3.layout.force() .linkStrength(0.5) @@ -372,7 +370,7 @@ $(function() { if(nodes_by_id[e.to] && !nodes_by_id[e.to].added){ nodes_by_id[e.to].added = true; acc.push(nodes_by_id[e.to]); - } + } return acc; }, []); @@ -390,7 +388,7 @@ $(function() { } */ ) .attr("x1", function(d) { return d.source.x; - }) + }) .attr("y1", function(d) { return d.source.y; }) @@ -405,13 +403,13 @@ $(function() { }) .append("a") - .text(function(d) { return d.type; }); + .text(function(d) { return d.type; }); - var node = d3.select("#chart g.nodes").selectAll("g.node").data(nodes); + var node = d3.select("#chart g.nodes").selectAll("g.node").data(nodes); var new_g = node.enter().append("svg:a") - .attr("class", function(d) { if (d._id=={{ nt.id }}) return "mainnode"; else if (isNaN(d._id)) return "relnode"; else if ((d._id)<0) return "nodetext"; else return "node"; }) + .attr("class", function(d) { if (d._id=={{ nt.id }}) return "mainnode"; else if (isNaN(d._id)) return "relnode"; else if ((d._id)<0) return "nodetext"; else return "node"; }) .attr("xlink:href",function(d){return d.url;}) .call(force.drag); @@ -428,14 +426,14 @@ $(function() { new_g.append("svg:text") .attr("class",function(d) { if (d._id=={{ nt.id }}) return "mainnode"; else if (isNaN(d._id)) return "relnode"; else if ((d._id)<0) return "nodetext"; else return "node"; }) .attr("dy", 20) - .attr("dx", 25) - .attr("text-anchor",function text(d) { if (isNaN(d._id) || (d._id)<0) return "middle" ; else return "left"}) + .attr("dx", 25) + .attr("text-anchor",function text(d) { if (isNaN(d._id) || (d._id)<0) return "middle" ; else return "left"}) -// .attr("style",function text(d) { if (isNaN(d._id)) return "font-size:9.00pt;fill:#333;" ; else return "font-size:9.00pt;fill:black;"}) +// .attr("style",function text(d) { if (isNaN(d._id)) return "font-size:9.00pt;fill:#333;" ; else return "font-size:9.00pt;fill:black;"}) .text(function(d) { return d.screen_name; - }); + }); node.exit().remove(); @@ -465,7 +463,7 @@ $(function() { /* $('input#follows').change(function(){ update(all_edges); }); - */ + */ /* $('input#mentions').change(function(){ update(all_edges); @@ -480,9 +478,12 @@ $(function() { }); -</script> +</script> </div> </div> + + + <div> {% include "gstudio/_header.html" %} <div id="breadcrumbs" class="span-24 last"> @@ -493,81 +494,186 @@ $(function() { <h3>{% block content %} {% block nodetype-content %} <h2 class="nodetype-title"> - <a href="{{ nt.get_absolute_url }}" title="{{ nt.title }}" rel="bookmark">{{ ver_dict.title }} {{ nt.id }}.{{ cnt }} + <a href="{{ nt.get_absolute_url }}" title="{{ nt.title }}" rel="bookmark">{{ ver_nbh_dict.title }} {{ nt.id }}.{{ version_no }} </a> + <a href="{{ nt.get_edit_url }}/history/{{ ssid }}" target="_blank" title = "edit">[edit]</a> </h2> - {% with nt.html_content|safe as object_content %} - <b>Name:<nbsp></b>{{ ver_dict.title }}<br/> - {% if ver_dict.altnames %} - <b> Alternate names:<nbsp></b>{{ ver_dict.altnames}} - <br/> - {% endif %} - {% if ver_dict.plural %} - <b> Plural Name:<nbsp></b>{{ ver_dict.plural }} <br/> - {% endif %} - {% if nt.get_rendered_nbh.authors %}<b>Authors: <nbsp> </b> - {% endif %} - {% for author in nt.authors.all %} - <span class="vcard author"> - <a href="{% url gstudio_author_detail author %}" class="fn nickname url" rel="author" - title="{% blocktrans with author as author %}Show {{ author }} nodetypes{% endblocktrans %}">{{ author }}</a> - </span>{% if not forloop.last %}, {% endif %} - {% endfor %} <br/> - {% endwith %} - {% endblock %} - {% endblock %} + {% with nt.html_content|safe as object_content %} + <b>Name:<nbsp></b> {{ ver_nbh_dict.title }} <br/> + + {% if ver_nbh_dict.plural %} + <b> Plural Name:<nbsp></b> + {{ ver_nbh_dict.plural}} <br/> + {% endif %} + {% if ver_nbh_dict.altnames %} + <b> Alternate names:<nbsp></b> + {{ ver_nbh_dict.altnames}} <br/> + {% endif %} + {% if ver_nbh_dict.type_of %} + <b> Type of:<nbsp></b> + {% for typekey,typevalue in ver_nbh_dict.type_of.items %} + <a href="{{typevalue}}" title = "{{typekey}}">{{typekey}}</a>; + {% endfor %}<br/> + {% endif %} + + + {% if ver_nbh_dict.member_of_metatypes %} + + + <b> Member of Metatypes:<nbsp></b> + {% for mkey,mvalue in ver_nbh_dict.member_of_metatypes.items %} + <a href="{{mvalue}}" title = "{{mkey}}">{{mkey}}</a>; + {% endfor %}<br/> + {% endif %} + + + + {% if ver_nbh_dict.contains_subtypes %} + <b> Contains SubTypes:<nbsp></b> + {% for stkey,stvalue in ver_nbh_dict.contains_subtypes.items %} + <a href="{{stvalue}}" title = "{{stkey}}">{{stkey}}</a>; + {% endfor %}<br/> + {% endif %} + + + {% if ver_nbh_dict.contains_members %} + + + <b>Contains Members:<nbsp></b> + {% for mkey,mvalue in ver_nbh_dict.contains_members.items %} + <a href="{{mvalue}}" title = "{{mkey}}">{{mkey}}</a>; + {% endfor %}<br/> + {% endif %} + + + + + + + <b>Authors: <nbsp> </b> + + + + + {% for author in nt.authors.all %} + <span class="vcard author"> + <a href="{% url gstudio_author_detail author %}" class="fn nickname url" rel="author" + title="{% blocktrans with author as author %}Show {{ author }} nodetypes{% endblocktrans %}">{{ author }}</a> + </span>{% if not forloop.last %}, {% endif %} + {% endfor %} <br/> + + + + {% if ver_nbh_dict.priornodes %} + + + <b>Prior nodes:<nbsp></b> + {% for mkey,mvalue in ver_nbh_dict.priornodes.items %} + <a href="{{mvalue}}" title = "{{mkey}}">{{mkey}}</a>; + {% endfor %}<br/> + {% endif %} + + {% if ver_nbh_dict.posteriornodes %} + + + <b>Posterior nodes:<nbsp></b> + {% for mkey,mvalue in ver_nbh_dict.posteriornodes.items %} + <a href="{{mvalue}}" title = "{{mkey}}">{{mkey}}</a>; + {% endfor %}<br/> + {% endif %} + + {% if ver_nbh_dict.relations %} + + + {% for relkey,relvalue in ver_nbh_dict.relations.items %} + <b>{{relkey}}:<nbsp></b> + {% for relk, relv in relvalue.items %} + <a href="{{relv}}" title = "{{relk}}">{{relk}}</a>; + {% endfor %}<br/> + {% endfor %} + {% endif %} + + {% if ver_nbh_dict.attributes %} + + {% for atkey,atvalue in ver_nbh_dict.attributes.items %} + {% if atvalue %} + <b>{{atkey}}:<nbsp> </b> + {% for atr in atvalue %} + {{atr}}; + {% endfor %} <br/> + {% endif %} + {% endfor %} + {% endif %} + {% if ver_nbh_dict.leftroles %} + + + <b>Left roles:<nbsp> </b> + + {% for lrkey,lrvalue in ver_nbh_dict.leftroles.items %} + <a href="{{lrvalue}}" title = "{{lrkey}}">{{lrkey}}</a>; + {% endfor %} <br/> + {% endif %} + + {% if ver_nbh_dict.rightroles %} + + <b>Right roles:<nbsp> </b> + + {% for rrkey,rrvalue in ver_nbh_dict.rightroles.items %} + <a href="{{rrvalue}}" title = "{{rrkey}}">{{rrkey}}</a>; + {% endfor %} <br/> + {% endif %} + + + {% if ver_nbh_dict.ats %} + + + <b>Subjecttype of:<nbsp> </b> + + {% for atkey,atvalue in ver_nbh_dict.ats.items %} + <a href="{{atvalue}}" title = "{{atkey}}">{{atkey}}</a>; + {% endfor %} <br/> + {% endif %} + + + <b>Content:<nbsp></b>{{ ver_nbh_dict.content }} + + + {% endwith %} + {% endblock %} + {% endblock %} </div> <div id="sidebar"> {% block sidebar %} <div class="History"> - + <h3>{% trans "Versions" %}</h3> - <script type="text/javascript"> - function go_to_loc(sid) - { - - <!-- var len=document.history.group2.length --> - <!-- for(var i=0;i<len;i++) --> - <!-- { --> - <!-- var r=window.document.history.group2[i] --> - <!-- if(sid==r.) --> - <!-- { --> - <!-- r.disabled="false" --> - <!-- } --> - <!-- else --> - <!-- { --> - <!-- r.enabled="true" --> - <!-- } --> - <!-- } --> - - - } - </script> - <form name="history" action="/nodetypes/display/showhistory/{{ ssid }}" > + <form name="history" action="/nodetypes/display/compare_history/{{ ssid }}" > <table cellspacing="0" border="2"> <tr> - <td> <input type="radio" name="group1" value="{{ ssid }}" checked >{{ nt.id }}.{{ cnt }}</input></td> + <td> <input type="radio" name="group1" value="{{ ssid }}.{{ version_no }}" checked >{{ nt.id }}.{{ version_no }}</input></td> <td></td></tr> + {% for sid in nt.get_ssid %} - {% ifnotequal forloop.counter cnt %} + + {% if sid|stringformat:"s" != ssid|stringformat:"s" %} <tr> <td> </td> <td> - <input type="radio" id="{{ sid }}"name="group2" value="{{ sid }}" >{{ nt.id }}.{{ forloop.counter }}</input> - </td>{% endifnotequal %} - {% endfor %}</tr></table> + <input type="radio" id="{{ sid }}"name="group2" value="{{ sid }}.{{ forloop.counter }}" >{{ nt.id }}.{{ forloop.counter }}</input> + </td></tr>{% endif %} + {% endfor %}</table> <input type="submit" value="Compare" /> </form> - + </div> - + {% endblock %} </div> @@ -583,13 +689,8 @@ $(function() { {{ GSTUDIO_VERSION }}</a>. </p> </div> - </div> + </div> </div> </body> </html> - - - - - diff --git a/gstudio/templates/gstudio/nodetype_detail.html b/gstudio/templates/gstudio/nodetype_detail.html index 7947e585..1a012799 100644 --- a/gstudio/templates/gstudio/nodetype_detail.html +++ b/gstudio/templates/gstudio/nodetype_detail.html @@ -250,6 +250,7 @@ {% endblock %} <!-- Dynamic form begins --> +{% if user.is_authenticated %} <p> {% if object.reftype == 'Objecttype' %} <b>Add Attributes:</b> @@ -264,7 +265,7 @@ <a href="{{ get_absolute_url }}/objects/dynamicRelation/displaymem/{{ i }}/{{ object.title }}">{{ i }}</a><nbsp>; {% endfor %} {% endif %} - +{% endif %} </p> <!-- Dyanic form ends --> <div class="nodetype-content"> diff --git a/gstudio/templates/gstudio/skeleton.html b/gstudio/templates/gstudio/skeleton.html index eba5e283..f8e366fa 100644 --- a/gstudio/templates/gstudio/skeleton.html +++ b/gstudio/templates/gstudio/skeleton.html @@ -178,8 +178,8 @@ function init(a,b) { + - nodes_by_id = _.reduce(a, function(acc, n) { acc[n._id] = n; return acc; @@ -198,16 +198,19 @@ function init(a,b) return nodes_by_id[e.from] && nodes_by_id[e.to]&& e.type!="title" && e.type!="content" }).value(); - + } $(function fgraph() { - +neighbour_node= new Array(); +clicked_node=new Array(); +prev_node=new Array(); +neighbour_node= neighbour_node.concat({{object.id}}); $.getJSON('/nodetypes/graphs/graph_json/' + {{object.id}}, function (json1) { metadata=json1.node_metadata; relations=json1.relations; - relnset=json1.relset + init(metadata,relations); load({{object.id}}) }); @@ -338,29 +341,128 @@ function load(key) .attr("fill", "#6D6666"); - -$(window).bind('keydown',function(event){ - if(17==event.keyCode){ - new_g.on("click",function(d){ - if(d._id>0 && d.expanded=="false") - { - d3.select("#amazingViz").remove(); - d.expanded="true"; - $.getJSON('/nodetypes/graphs/graph_json/' + d._id , function (json2) { - new_metadata=json2.node_metadata; - new_relations=json2.relations; - new_relnset=json2.relset - metadata=_.union(new_metadata,metadata); - relations=_.union(new_relations,relations); - init(metadata,relations); - load(d._id) - }) +$(window).bind('keydown',function(event) { + if(event.keyCode==17){ + + new_g.on("click",function(d){ + + + + + if(d._id>0 && d.expanded=="true") + { + + $.getJSON('/nodetypes/graphs/graph_json/' + d._id , function (json2) { + new_metadata=json2.node_metadata; + + }); + + _.filter(new_metadata, function(e){if(e._id>0) + { + clicked_node=clicked_node.concat(e._id) ; + } + }); + + + index = _.indexOf(neighbour_node , d._id); + prev_node=neighbour_node.slice(0,index); + + neighbour_node = _.difference(neighbour_node,clicked_node) ; + + neighbour_node= neighbour_node.concat(prev_node); + neighbour_node = _.uniq(neighbour_node); + metadata=[] + relations=[] + metadata1=[] + relations1=[] + for(i=0;i<(neighbour_node.length);i++) + { + + d3.select("#amazingViz").remove(); + g=neighbour_node[i] + + + + $.ajax({ + async:false, + url:'/nodetypes/graphs/graph_json/' + g , + datatype:'json', + success:function (json2) { + new_metadata=json2.node_metadata; + new_relations=json2.relations; + metadata=_.union(new_metadata,metadata); + + relations=_.union(new_relations,relations); + check_Relationtype(metadata,relations); + }}); + } - - }); + _.each(metadata, function(m){ + + for(i=0;i<neighbour_node.length;i++) + { + if(m._id==neighbour_node[i]) + {m.expanded="true";} + else + {m.expanded="false";} + } + + + }); + + init(metadata,relations); + load({{object.id}}) ; -} + + + } + + + + + else if(d._id>0) + { + + neighbour_node =neighbour_node.concat(d._id); + + d3.select("#amazingViz").remove(); + + $.ajax({ + async:false, + url:'/nodetypes/graphs/graph_json/' + d._id , + datatype:'json', + success:function (json2) { + + new_metadata=json2.node_metadata; + new_relations=json2.relations; + + metadata=_.union(new_metadata,metadata); + relations=_.union(new_relations,relations); + check_Relationtype(metadata,relations); + _.each(metadata, function(m){ + + for(i=0;i<neighbour_node.length;i++) + { + if(m._id==neighbour_node[i]) + m.expanded="true"; + } + }); + + + }}); + console.log(metadata); + init(metadata,relations); + load({{object.id}}); + + + + + } }); +} + +}); + @@ -370,15 +472,7 @@ $(window).bind('keydown',function(event){ }); - /*new_g.append("svg:ellipse") - .attr("cx", function(d) { return d.x - w/2.0 +15; }) - .attr("cy", function(d) { return d.y - h/2.0 +15 ; }) - .call(force.drag) - .attr("rx", function(d) { return ((d.screen_name).length) +10 }) - .attr("ry", function(d) { if (d._id==key) return 8; else if (isNaN(d._id) || (d._id)<0) return 1; else return 7 }); - //.style("fill", function color(d) { if (d._id==key) return "red"; else if (isNaN(d._id) || (d._id)<0) return "white" ; else return "green"});*/ - - + @@ -389,8 +483,7 @@ $(window).bind('keydown',function(event){ .attr("dy", ".35em") .attr("text-anchor","middle") - // .attr("style",function text(d) { if ((d._id)>0) return "font-size:9.00pt;fill:blue;" ; else return "font-size:9.00pt;fill:black;"}) - + .text(function(d) { return d.screen_name; }); @@ -423,7 +516,7 @@ $(window).bind('keydown',function(event){ .style("fill-opacity", ".2") .style("stroke", "#666") .style("stroke-width", "1.5px") - .style("fill", function color(d) {var e=(d._id).charAt(0); if (d.expanded=="true") return "red"; else return "none"}); + .style("fill", function(d) {if ((d.expanded=="true" && d.refType=="Objecttype") ||(d._id=={{object.id}}) ) return "blue"; else if(d.expanded=="true" && d.refType=="Gbobject") return "red"; else return "none"}); @@ -462,9 +555,35 @@ $(window).bind('keydown',function(event){ } +function check_Relationtype(metadata,relations) +{ + _.each(metadata,function(d){ + if (d.refType=="Relationtype") + { + a=d.inverse; + if (d.flag==1) + { + relations= _.reject(relations,function(e) + { + return e.type==a + }); + } + else if (d.flag==0) + { + relations= _.reject(relations,function(e) + { + return e.type==d.screen_name + }); + } + } + + }); + + +} + }); -//fgraph({{object.id}}); </script> diff --git a/gstudio/templates/gstudio/version_diff.html b/gstudio/templates/gstudio/version_diff.html index a640f071..4a11ec2a 100644 --- a/gstudio/templates/gstudio/version_diff.html +++ b/gstudio/templates/gstudio/version_diff.html @@ -108,38 +108,154 @@ <h3>{% block content %} {% block nodetype-content %} <h2 class="nodetype-title"> - <a href="{{ nt1.get_absolute_url }}" title="{{ nt1.title }}" rel="bookmark">{{ ver_new.title }} + <a href="{{ nt.get_absolute_url }}" title="{{ nt.title }}" rel="bookmark">{{ ver_new_dict.title }} {{ nt.id }}.{{ version_no1 }} </a> </h2> - <!-- {% block content56 %}{% for each in diffs1 %} --> - <!-- {% autoescape off %} --> - <!-- {{ each }}<br> --> - <!-- {% endautoescape %}{% endfor %} {% endblock %} --> - <!-- <br> --> - {% with nt1.html_content|safe as object_content %}<br> - <b>Name:<nbsp></b>{{ ver_new.title }}<br/> - {% if ver_new.altnames %} - <b> Alternate names:<nbsp></b>{{ ver_new.altnames }} - <br/> - {% endif %} - {% if ver_new.plural %} - <b> Plural Name:<nbsp></b>{{ ver_new.plural }} <br/> - {% endif %} - - <b> Content:<nbsp></b>{{ ver_new.content }} <br/> - + + {% with nt.html_content|safe as object_content %}<br> - {% if nt1.get_rendered_nbh.authors %}<b>Authors: <nbsp> </b> - {% endif %} - {% for author in nt1.authors.all %} - <span class="vcard author"> - <a href="{% url gstudio_author_detail author %}" class="fn nickname url" rel="author" - title="{% blocktrans with author as author %}Show {{ author }} nodetypes{% endblocktrans %}">{{ author }}</a> - </span>{% if not forloop.last %}, {% endif %} - {% endfor %} <br/> - {% endwith %} - {% endblock %} - {% endblock %} + <b>Name:<nbsp></b> {{ ver_new_nbh_dict.title }} <br/> + + {% if ver_new_nbh_dict.plural or ver_old_nbh_dict.plural %} + <b> Plural Name:<nbsp></b> + {{ ver_new_nbh_dict.plural}} <br/> + {% endif %} + {% if ver_new_nbh_dict.altnames or ver_old_nbh_dict.altnames%} + <b> Alternate names:<nbsp></b> + {{ ver_new_nbh_dict.altnames}} <br/> + {% endif %} + {% if ver_new_nbh_dict.type_of or ver_old_nbh_dict.type_of %} + <b> Type of:<nbsp></b> + {% for typekey,typevalue in ver_new_nbh_dict.type_of.items %} + <a href="{{typevalue}}" title = "{{typekey}}">{{typekey}}</a>; + {% endfor %}<br/> + {% endif %} + + + {% if ver_new_nbh_dict.member_of_metatypes or ver_old_nbh_dict.member_of_metatypes %} + + + <b> Member of Metatypes:<nbsp></b> + {% for mkey,mvalue in ver_new_nbh_dict.member_of_metatypes.items %} + <a href="{{mvalue}}" title = "{{mkey}}">{{mkey}}</a>; + {% endfor %}<br/> + {% endif %} + + + + {% if ver_new_nbh_dict.contains_subtypes or ver_old_nbh_dict.contains_subtypes %} + <b> Contains SubTypes:<nbsp></b> + {% for stkey,stvalue in ver_new_nbh_dict.items %} + <a href="{{stvalue}}" title = "{{stkey}}">{{stkey}}</a>; + {% endfor %}<br/> + {% endif %} + + + {% if ver_new_nbh_dict.contains_members or ver_old_nbh_dict.contains_members %} + + + <b>Contains Members:<nbsp></b> + {% for mkey,mvalue in ver_new_nbh_dict.contains_members.items %} + <a href="{{mvalue}}" title = "{{mkey}}">{{mkey}}</a>; + {% endfor %}<br/> + {% endif %} + + + + + + + <!-- <b>Authors: <nbsp> </b> --> + + + + + <!-- {% for author in nt.authors.all %} --> + <!-- <span class="vcard author"> --> + <!-- <a href="{% url gstudio_author_detail author %}" class="fn nickname url" rel="author" --> + <!-- title="{% blocktrans with author as author %}Show {{ author }} nodetypes{% endblocktrans %}">{{ author }}</a> --> + <!-- </span>{% if not forloop.last %}, {% endif %} --> + <!-- {% endfor %} <br/> --> + + + + {% if ver_new_nbh_dict.priornodes or ver_old_nbh_dict.priornodes %} + + + <b>Prior nodes:<nbsp></b> + {% for mkey,mvalue in ver_new_nbh_dict.items %} + <a href="{{mvalue}}" title = "{{mkey}}">{{mkey}}</a>; + {% endfor %}<br/> + {% endif %} + + {% if ver_new_nbh_dict.posteriornodes or ver_old_nbh_dict.posteriornodes %} + + + <b>Posterior nodes:<nbsp></b> + {% for mkey,mvalue in ver_new_nbh_dict.items %} + <a href="{{mvalue}}" title = "{{mkey}}">{{mkey}}</a>; + {% endfor %}<br/> + {% endif %} + + {% if ver_new_nbh_dict.relations or ver_old_nbh_dict.relations %} + + + {% for relkey,relvalue in ver_new_nbh_dict.relations.items %} + <b>{{relkey}}:<nbsp></b> + {% for relk, relv in relvalue.items %} + <a href="{{relv}}" title = "{{relk}}">{{relk}}</a>; + {% endfor %}<br/> + {% endfor %} + {% endif %} + + {% if ver_new_nbh_dict.attributes or ver_old_nbh_dict.attributes %} + + {% for atkey,atvalue in ver_new_nbh_dict.attributes.items %} + {% if atvalue %} + <b>{{atkey}}:<nbsp> </b> + {% for atr in atvalue %} + {{atr}}; + {% endfor %} <br/> + {% endif %} + {% endfor %} + {% endif %} + {% if ver_new_nbh_dict.leftroles or ver_old_nbh_dict.leftroles %} + + + <b>Left roles:<nbsp> </b> + + {% for lrkey,lrvalue in ver_new_nbh_dict.leftroles.items %} + <a href="{{lrvalue}}" title = "{{lrkey}}">{{lrkey}}</a>; + {% endfor %} <br/> + {% endif %} + + {% if ver_new_nbh_dict.rightroles or ver_old_nbh_dict.rightroles %} + + <b>Right roles:<nbsp> </b> + + {% for rrkey,rrvalue in ver_new_nbh_dict.rightroles.items %} + <a href="{{rrvalue}}" title = "{{rrkey}}">{{rrkey}}</a>; + {% endfor %} <br/> + {% endif %} + + + {% if ver_new_nbh_dict.ats or ver_old_nbh_dict.ats %} + + + <b>Subjecttype of:<nbsp> </b> + + {% for atkey,atvalue in ver_new_nbh_dict.ats.items %} + <a href="{{atvalue}}" title = "{{atkey}}">{{atkey}}</a>; + {% endfor %} <br/> + {% endif %} + + {% if ver_new_nbh_dict.content or ver_old_nbh_dict.content %} + <b>Content:<nbsp></b>{{ ver_new_nbh_dict.content }} + {% endif %} + + {% endwith %} + {% endblock %} + {% endblock %} </td> <td> @@ -147,71 +263,126 @@ <h3>{% block content1 %} {% block nodetype-content1 %} <h2 class="nodetype-title"> - <a href="{{ nt1.get_absolute_url }}" title="{{ nt1.title }}" rel="bookmark">{{ ver_old.title }} + <a href="{{ nt.get_absolute_url }}" title="{{ nt.title }}" rel="bookmark">{{ ver_old_dict.title }} {{ nt.id }}.{{ version_no2 }} </a> - </h2><!-- <b> --> - <!-- {% block content85 %}{% for each in diffs %} --> - <!-- {% autoescape off %} --> - <!-- {{ each }}<br> --> - <!-- {% endautoescape %}{% endfor %} {% endblock %}</b> --> - <br> - {% with nt1.html_content|safe as object_content %} + </h2> <br> + {% with nt.html_content|safe as object_content %} + <b>Name:<nbsp></b>{% autoescape off %} - {{ diffs.0 }} + {{ compare_dict.title }} {% endautoescape %}<br> - {% if ver_old.altnames %} + {% if ver_old_nbh_dict.plural or ver_new_nbh_dict.plural %} + <b> Plural Name:<nbsp></b> {% autoescape off %} + {{ compare_dict.plural }} + {% endautoescape %} <br/> + {% endif %} + {% if ver_old_nbh_dict.altnames or ver_new_nbh_dict.altnames %} <b> Alternate names:<nbsp></b> {% autoescape off %} - {{ diffs.1 }} + {{ compare_dict.altnames }} {% endautoescape %} <br/> {% endif %} - {% if ver_old.plural %} - <b> Plural Name:<nbsp></b> {% autoescape off %} - {{ diffs.2 }} - {% endautoescape %} <br/> + {% if ver_new_nbh_dict.type_of or ver_old_nbh_dict.type_of %} + <b> Type of:<nbsp></b> {% autoescape off %} + {{ compare_dict.type_of }} + {% endautoescape %} + <br/> {% endif %} - - <b> Content:<nbsp></b> {% autoescape off %} - {{ diffs.3 }} + {% if ver_new_nbh_dict.member_of_metatypes or ver_old_nbh_dict.member_of_metatypes %} + <b>Member of Metatypes:<nbsp></b> {% autoescape off %} + {{ compare_dict.member_of_metatypes }} + {% endautoescape %} + <br/> + {% endif %} + {% if ver_new_nbh_dict.contains_subtypes or ver_old_nbh_dict.contains_subtypes %} + <b>Contain subtypes:<nbsp></b> {% autoescape off %} + {{ compare_dict.contains_subtypes }} + {% endautoescape %} + <br/> + {% endif %} + + {% if ver_old_nbh_dict.contains_members or ver_new_nbh_dict.contains_members %} + <b>Contains Members:<nbsp></b>{% autoescape off %} + {{ compare_dict.contains_members }} {% endautoescape %} <br/> + {% endif %} + {% if ver_new_nbh_dict.priornodes or ver_old_nbh_dict.priornodes %} + <b>Prior nodes:<nbsp></b> {% autoescape off %} + {{ compare_dict.priornodes }} + {% endautoescape %}<br/> + + + {% endif %} + {% if ver_new_nbh_dict.posteriornodes or ver_old_nbh_dict.posteriornodes %} + <b>Posterior nodes:<nbsp></b> {% autoescape off %} + {{ compare_dict.posteriornodes }} + {% endautoescape %}<br/> + + + {% endif %} + + {% if ver_new_nbh_dict.relations or ver_old_nbh_dict.relations %} + {% for relkey,relvalue in compare_dict.relations.items %} + <b>{{relkey}}:<nbsp></b> + {% autoescape off %} + + + {{ relvalue }} + + + {% endautoescape %} + <br/> + {% endfor %} + {% endif %} + + {% if ver_new_nbh_dict.attributes or ver_old_nbh_dict.attributes %} + <b>Attributes:<nbsp></b> {% autoescape off %} + {{ compare_dict.attributes }} + {% endautoescape %}<br/> + {% endif %} - - {% if nt1.get_rendered_nbh.authors %}<b>Authors: <nbsp> </b> - {% endif %} - {% for author in nt1.authors.all %} - <span class="vcard author"> - <a href="{% url gstudio_author_detail author %}" class="fn nickname url" rel="author" - title="{% blocktrans with author as author %}Show {{ author }} nodetypes{% endblocktrans %}">{{ author }}</a> - </span>{% if not forloop.last %}, {% endif %} - {% endfor %} <br/> + + {% if ver_new_nbh_dict.leftroles or ver_old_nbh_dict.leftroles %} + <b>Left roles:<nbsp> </b> {% autoescape off %} + {{ compare_dict.leftroles }} + {% endautoescape %} + <br/> + {% endif %} + {% if ver_new_nbh_dict.rightroles or ver_old_nbh_dict.rightroles %} + <b>Right roles:<nbsp> </b> {% autoescape off %} + {{ compare_dict.rightroles }} + {% endautoescape %} + <br/> + {% endif %} + {% if ver_new_nbh_dict.ats or ver_old_nbh_dict.ats %} + + + <b>Subjecttype of:<nbsp> </b> {% autoescape off %} + {{ compare_dict.ats }} + {% endautoescape %}<br> + {% endif %} + {% if ver_new_nbh_dict.content or ver_old_nbh_dict.content %} + <b> Content:<nbsp></b> {% autoescape off %} + {{ compare_dict.content }} + {% endautoescape %} <br/> + {% endif %} {% endwith %} {% endblock %} {% endblock %} - - </td> - -<!-- <th><b><i><br><u>Difference between Selected Versions</u></b></i><br><br> --> -<!-- {% block content6 %}{% for each in diffs %} --> -<!-- {% autoescape off %} --> -<!-- {{ each }}<br> --> -<!-- {% endautoescape %}{% endfor %} {% endblock %} --> -<!-- </th> --> - - </tr> -<tr><td><input type="button" value="Merge"></input><input type="button" value="RollBack"></input></td> -<td><input type="button" value="Merge"></input><input type="button" value="RollBack"></input></td> </tr> -<!-- <tr><th><b><i>Difference between Selected Versions<b><i><th><tr> --> -<!-- <tr><td><b>{% block content5 %}{% for each in diffs %} --> -<!-- {% autoescape off %} --> -<!-- {{ each }}<br> --> -<!-- {% endautoescape %}{% endfor %} {% endblock %} </b> </td></tr> --> -<!-- </table> --> - - - - - - </body> +<br> +</td></tr> +<tr><td> +<form method="get" action="/nodetypes/display/merge/{{ ssid1 }}/{{ ssid2 }}"> +<input type="submit" value="Merge {{ nt.id }}.{{ version_no1 }} with {{ nt.id }}.{{ version_no2 }}" id="merge1" name="left" ></input></td> +<td><input type="submit" value="Merge {{ nt.id }}.{{ version_no2 }} with {{ nt.id }}.{{ version_no1 }}" id="merge2" name="right"></input></td></form> +</tr> +<tr><td> +<form method="get" action="/nodetypes/display/revert" > +<input type="submit" value="Revert" name="{{ ssid1 }}"></input></td> +<td><input type="submit" value="Revert" name="{{ ssid2 }}"></input></td> +</form></tr> +</table> +</body> </html> diff --git a/gstudio/urls/history.py b/gstudio/urls/history.py index 3932cd62..b2c489e3 100644 --- a/gstudio/urls/history.py +++ b/gstudio/urls/history.py @@ -3,6 +3,8 @@ from django.conf.urls.defaults import url from django.conf.urls.defaults import patterns urlpatterns = patterns('gstudio.views.history', - url(r'^viewhistory/(?P<ssid>\d+)/(?P<cnt>\d+)/$', 'history', + url(r'^viewhistory/(?P<ssid>\d+)/(?P<version_no>\d+)/$', 'history', name='gstudio_history'), - url(r'^showhistory/(?P<ssid>\d+)/$','showHistory'),) + url(r'^compare_history/(?P<ssid>\d+)/$','compare_history'), + url(r'^merge/(?P<ssid1>\d+)/(?P<ssid2>\d+)/$','merge_version'), + url(r'^revert/$','revert_version'),) diff --git a/gstudio/views/history.py b/gstudio/views/history.py index d4adac9e..10fc7abb 100644 --- a/gstudio/views/history.py +++ b/gstudio/views/history.py @@ -12,94 +12,491 @@ from gstudio.views.decorators import protect_nodetype from gstudio.views.decorators import update_queryset import ast -def history(request,ssid,cnt): +def history(request,ssid,version_no): # iden=request.GET["id"] nt1=Version.objects.get(id=ssid) nt=nt1.object.ref ver_dict=nt.version_info(ssid) - variables = RequestContext(request,{'ver_dict':ver_dict ,'nt':nt,'ssid':ssid,'cnt':cnt }) + ver_nbh=ver_dict['nbhood'] + ver_nbh_dict=ast.literal_eval(ver_nbh) + content=ver_dict['content'] + content=content[3:-4] + ver_nbh_dict['content']=content + + variables = RequestContext(request,{'ver_nbh_dict':ver_nbh_dict ,'nt':nt,'ssid':ssid,'version_no':version_no}) template="gstudio/display.html" return render_to_response(template,variables) -def showHistory(request,ssid): - # vid1=request.GET["group1"] - vid1=ssid - vid2=request.GET["group2"] - nt=Version.objects.get(id=vid1) - nt1=nt.object.ref +def get_version_counter(value): + counter1=str(value) + index=counter1.rfind(".") + counter1=counter1[index+1:] + version_no=int(counter1) + return version_no + + +def get_diff_from_dict(ver_new_nbh_dict,ver_old_nbh_dict,field): + ver_new="" + ver_old="" + diffs="" + if ver_new_nbh_dict[field] or ver_old_nbh_dict[field]: + for each in ver_new_nbh_dict[field]: + ver_new+=str(each)+"," + ver_new=ver_new[0:-1] + for each in ver_old_nbh_dict[field]: + ver_old+=str(each)+"," + ver_old=ver_old[0:-1] + diffs = dmp.diff_main(ver_new, ver_old) + return diffs + +def compare_history(request,ssid): + ssid1=ssid + + version_counter1=request.GET["group1"] + version_no1=get_version_counter(version_counter1) + version_counter2=request.GET["group2"] + version_no2=get_version_counter(version_counter2) + counter2=float(version_counter2) + ssid2=int(counter2) + + ver_obj=Version.objects.get(id=ssid1) + ot=ver_obj.object.ref pp=pprint.PrettyPrinter(indent=4) - ver_new1=Version.objects.get(id=vid1) - ver_old1=Version.objects.get(id=vid2) - ver_new_dict=nt1.version_info(request.GET["group1"]) + ver_new_dict=ot.version_info(ssid1) content=str(ver_new_dict['content']) content=content[3:-4] ver_new_dict['content']=content - ver_old_dict=nt1.version_info(request.GET["group2"]) + + ver_old_dict=ot.version_info(ssid2) content=str(ver_old_dict['content']) content=content[3:-4] ver_old_dict['content']=content ver_new_nbh=ver_new_dict['nbhood'] - ver_new_dict1=ast.literal_eval(ver_new_nbh) + ver_new_nbh_dict=ast.literal_eval(ver_new_nbh) ver_old_nbh=ver_old_dict['nbhood'] - ver_old_dict1=ast.literal_eval(ver_old_nbh) - - # ver_new_nbh=ver_new_nbh.replace(",","\n") - # ver_old_nbh=ver_old_nbh.replace(",","\n") - d=[] - d1=[] - field=['Name','Plural Name','Alternate Name','Authors','Content'] - for each in ver_new_dict1: + ver_old_nbh_dict=ast.literal_eval(ver_old_nbh) + + compare_dict={} + for each in ver_new_nbh_dict: ver_new="" ver_old="" - if each =='altnames': - ver_new+=ver_new_dict['altnames'] - ver_old+=ver_old_dict['altnames'] - - diffs = dmp.diff_main(ver_new, ver_old) - d.append(dmp.diff_prettyHtml(diffs)) - # diffs = dmp.diff_main(ver_old, ver_new) - # d1.append(dmp.diff_prettyHtml(diffs)) + if each=='altnames': + if ver_new_nbh_dict['altnames'] or ver_old_nbh_dict['altnames']: + ver_new+=ver_new_nbh_dict['altnames'] + ver_old+=ver_old_nbh_dict['altnames'] + diffs = dmp.diff_main(ver_new, ver_old) + compare_dict['altnames']=dmp.diff_prettyHtml(diffs) + - if each =='title': - ver_new+=ver_new_dict['title'] - ver_old+=ver_old_dict['title'] - diffs = dmp.diff_main(ver_new, ver_old) - d.append(dmp.diff_prettyHtml(diffs)) - # diffs = dmp.diff_main(ver_old, ver_new) - # d1.append(dmp.diff_prettyHtml(diffs)) - if each =='plural': - ver_new+=ver_new_dict['plural'] - ver_old+=ver_old_dict['plural'] - diffs = dmp.diff_main(ver_new, ver_old) - d.append(dmp.diff_prettyHtml(diffs)) - # diffs = dmp.diff_main(ver_old, ver_new) - # d1.append(dmp.diff_prettyHtml(diffs)) - # if each =='content': + elif each=='title': + if ver_new_nbh_dict['title'] or ver_old_nbh_dict['title']: + ver_new+=ver_new_nbh_dict['title'] + ver_old+=ver_old_nbh_dict['title'] + diffs = dmp.diff_main(ver_new, ver_old) + compare_dict['title']=dmp.diff_prettyHtml(diffs) + elif each =='plural': + if ver_new_nbh_dict['plural'] or ver_old_nbh_dict['plural']: + ver_new+=ver_new_nbh_dict['plural'] + ver_old+=ver_old_nbh_dict['plural'] + diffs = dmp.diff_main(ver_new, ver_old) + compare_dict['plural']=dmp.diff_prettyHtml(diffs) + elif each =='contains_members': + diffs=get_diff_from_dict(ver_new_nbh_dict,ver_old_nbh_dict,each) + compare_dict['contains_members']=dmp.diff_prettyHtml(diffs) + elif each =='leftroles': + diffs=get_diff_from_dict(ver_new_nbh_dict,ver_old_nbh_dict,each) + compare_dict['leftroles']=dmp.diff_prettyHtml(diffs) + elif each =='ats': + diffs=get_diff_from_dict(ver_new_nbh_dict,ver_old_nbh_dict,each) + compare_dict['ats']=dmp.diff_prettyHtml(diffs) + elif each =='rightroles': + diffs=get_diff_from_dict(ver_new_nbh_dict,ver_old_nbh_dict,each) + compare_dict['rightroles']=dmp.diff_prettyHtml(diffs) + elif each =='attributes': + compare_rel_new={} + compare_rel_old={} + compare={} + for rkey,rvalue in ver_new_nbh_dict[each].items(): + ver_new="" + for relvalue in rvalue: + ver_new+=str(relvalue) + "," + ver_new=ver_new[0:-1] + compare_rel_new[str(rkey)]=ver_new + for rkey,rvalue in ver_old_nbh_dict[each].items(): + ver_old="" + for rv in rvalue: + ver_old+=str(rv) + "," + ver_old=ver_old[0:-1] + compare_rel_old[str(rkey)]=ver_old + if len(compare_rel_new) >= len(compare_rel_old): + for rkey,rvalue in compare_rel_new.items(): + if compare_rel_old.has_key(rkey): + diffs=dmp.diff_main(compare_rel_new[str(rkey)],compare_rel_old[str(rkey)]) + compare[str(rkey)]=dmp.diff_prettyHtml(diffs) + + else: + diffs=dmp.diff_main(compare_rel_new[str(rkey)],"") + compare[str(rkey)]=dmp.diff_prettyHtml(diffs) + else: + for rkey,rvalue in compare_rel_old.items(): + if compare_rel_new.has_key(rkey): + diffs=dmp.diff_main(compare_rel_new[str(rkey)],compare_rel_old[str(rkey)]) + compare[str(rkey)]=dmp.diff_prettyHtml(diffs) + else: + diffs=dmp.diff_main("",compare_rel_old[str(rkey)]) + compare[str(rkey)]=dmp.diff_prettyHtml(diffs) + compare_dict['attributes']=compare + + elif each =='relations': + + ver_new="" + ver_old="" + compare_rel_new={} + compare_rel_old={} + compare={} + for rkey,rvalue in ver_new_nbh_dict[each].items(): + ver_new="" + for relk,relvalue in rvalue.items(): + ver_new+=str(relk) + "," + ver_new=ver_new[0:-1] + compare_rel_new[str(rkey)]=ver_new + for rkey,rvalue in ver_old_nbh_dict[each].items(): + ver_old="" + for relk,relvalue in rvalue.items(): + ver_old+=str(relk) + "," + ver_old=ver_old[0:-1] + compare_rel_old[str(rkey)]=ver_old + if len(compare_rel_new) >= len(compare_rel_old): + for rkey,rvalue in compare_rel_new.items(): + if compare_rel_old.has_key(rkey): + diffs=dmp.diff_main(compare_rel_new[str(rkey)],compare_rel_old[str(rkey)]) + compare[str(rkey)]=dmp.diff_prettyHtml(diffs) + + else: + diffs=dmp.diff_main(compare_rel_new[str(rkey)],"") + compare[str(rkey)]=dmp.diff_prettyHtml(diffs) + else: + for rkey,rvalue in compare_rel_old.items(): + if compare_rel_new.has_key(rkey): + diffs=dmp.diff_main(compare_rel_new[str(rkey)],compare_rel_old[str(rkey)]) + compare[str(rkey)]=dmp.diff_prettyHtml(diffs) + else: + diffs=dmp.diff_main("",compare_rel_old[str(rkey)]) + compare[str(rkey)]=dmp.diff_prettyHtml(diffs) + compare_dict['relations']=compare + elif each =='priornodes': + diffs=get_diff_from_dict(ver_new_nbh_dict,ver_old_nbh_dict,each) + compare_dict['priornodes']=dmp.diff_prettyHtml(diffs) + elif each =='posteriornodes': + diffs=get_diff_from_dict(ver_new_nbh_dict,ver_old_nbh_dict,each) + compare_dict['posteriornodes']=dmp.diff_prettyHtml(diffs) + elif each =='type_of': + diffs=get_diff_from_dict(ver_new_nbh_dict,ver_old_nbh_dict,each) + compare_dict['type_of']=dmp.diff_prettyHtml(diffs) + elif each =='contains_subtypes': + diffs=get_diff_from_dict(ver_new_nbh_dict,ver_old_nbh_dict,each) + compare_dict['contains_subtypes']=dmp.diff_prettyHtml(diffs) + elif each =='member_of_metatypes': + diffs=get_diff_from_dict(ver_new_nbh_dict,ver_old_nbh_dict,each) + compare_dict['member_of_metatypes']=dmp.diff_prettyHtml(diffs) + + ver_new="" ver_old="" ver_new+=ver_new_dict['content'] ver_old+=ver_old_dict['content'] diffs = dmp.diff_main(ver_new, ver_old) - d.append(dmp.diff_prettyHtml(diffs)) - # diffs = dmp.diff_main(ver_old, ver_new) - # d1.append(dmp.diff_prettyHtml(diffs)) - - # for each in ver_new_dict1: -# ver_new="" - # ver_old="" - # ver_new+=each + ":" + str(ver_new_dict1[each]) -# ver_old+=each + ":" + str(ver_old_dict1[each]) - # diffs = dmp.diff_main(ver_new, ver_old) - # d.append(dmp.diff_prettyHtml(diffs)) - - # return HttpResponse(d) - ver_new=nt1.version_info(request.GET["group1"]) - ver_old=nt1.version_info(request.GET["group2"]) - - variables=RequestContext(request,{'nt':nt1,'ver_old':ver_old_dict,'ver_new':ver_new_dict,'diffs':d ,'vid1':vid1,'vid2':vid2 }) + compare_dict['content']=dmp.diff_prettyHtml(diffs) + ver_new_nbh_dict['content']=ver_new_dict['content'] + ver_old_nbh_dict['content']=ver_old_dict['content'] + + + + variables=RequestContext(request,{'nt':ot,'ver_old_dict':ver_old_dict,'ver_new_dict':ver_new_dict,'compare_dict':compare_dict ,'ssid1':ssid1,'ssid2':ssid2,'version_no1':version_no1,'version_no2':version_no2,'ver_new_nbh_dict':ver_new_nbh_dict,'ver_old_nbh_dict':ver_old_nbh_dict}) template="gstudio/version_diff.html" return render_to_response(template,variables) + +def set_objecttype_field(obj,ver_merge): + # setting the objecttypes fields + obj.slug = ver_merge['slug'] + obj.altnames=ver_merge['altnames'] + obj.rght = ver_merge['rght'] + obj.nodemodel = ver_merge['nodemodel'] + obj.lft = ver_merge['lft'] + obj.comment_enabled = ver_merge['comment_enabled'] + obj.title = ver_merge['title'] + obj.sites = ver_merge['sites'] + obj.content = ver_merge['content'] + obj.template = ver_merge['template'] + obj.tree_id = ver_merge['tree_id'] + obj.plural = ver_merge['plural'] + obj.status = ver_merge['status'] + obj.nid_ptr = NID.objects.get(id=ver_merge['nid_ptr']) + + # obj.nbh=ver_merge['nbh'] + obj.id = ver_merge['id'] + obj.pingback_enabled = ver_merge['pingback_enabled'] + + return obj +def set_attributetype_field(obj,ver_merge): + # setting the objecttypes fields + obj.subjecttype = NID.objects.get(id=ver_merge['nid_ptr']) + obj.applicable_nodetypes=ver_merge['applicable_nodetypes'] + obj.dataType = ver_merge['dataType'] + obj.verbose_name = ver_merge['verbose_name'] + obj.null = ver_merge['null'] + obj.blank = ver_merge['blank'] + obj.help_text = ver_merge['help_text'] + # obj.max_digits = ver_merge['max_digits'] + # obj.decimal_places = ver_merge['decimal_places'] + obj.auto_now = ver_merge['auto_now'] + obj.auto_now_add = ver_merge['auto_now_add'] + obj.upload_to = ver_merge['upload_to'] + obj.path = ver_merge['path'] + obj.verify_exists = ver_merge['verify_exists'] + # obj.min_length= ver_merge['min_length'] + obj.required= ver_merge['required'] + obj.label = ver_merge['label'] + obj.unique = ver_merge['unique'] + # obj.validators= ver_merge['validators'] + obj.default= ver_merge['default'] + obj.editable= ver_merge['editable'] + # return HttpResponse(ver_merge) + return obj +def set_relationtype_field(obj,ver_merge): + + + # setting the relationtype types fields + obj.inverse = ver_merge['inverse'] + obj.left_subjecttype=ver_merge['left_subjecttype'] + obj.left_applicable_nodetypes= ver_merge['left_applicable_nodetypes'] + obj.left_cardinality = ver_merge['left_cardinality'] + obj.right_subjecttype= ver_merge['right_subjecttype'] + obj.right_cadinality= ver_merge['right_cadinality'] + obj.right_cadinality= ver_merge['right_cadinality'] + obj.is_symmetrical= ver_merge['is_symmetrical'] + obj.is_reflexive= ver_merge['is_reflexive'] + obj.is_transitive= ver_merge['is_transitive'] + + return obj + +def set_processtype_field(obj,ver_merge): + # setting the processtype types fields + obj.changing_attributetype_set = ver_merge[''] + obj.changing_relationtype_set=ver_merge[''] + return obj + +def set_systemtype_field(obj,ver_merge): + # setting the systemtype types fields + obj.nodetype_set = ver_merge['nodetype_set'] + obj.relationtype_set=ver_merge['relationtype_set'] + obj.attributetype_set= ver_merge['attributetype_set'] + obj.metatype_set = ver_merge['metatype_set'] + obj.processtype_set= ver_merge['processtype_set'] + return obj + +def get_merge_dict(ssid1,ssid2,direction): + ver_merge={} + ot=Version.objects.get(id=ssid1) + obj=ot.object.ref + ver_left_dict=obj.version_info(ssid1) + ver_right_dict=obj.version_info(ssid2) + + + + if direction =='right': + # swap left and right + temp_dict={} + temp_dict=ver_left_dict + ver_left_dict=ver_right_dict + ver_right_dict=temp_dict + # swap ssid1 and ssid2 for managing nbhood history + temp=int(ssid1) + ssid1=int(ssid2) + ssid2=temp + ver_left_nbh_dict=ast.literal_eval(ver_left_dict['nbhood']) + ver_right_nbh_dict=ast.literal_eval(ver_right_dict['nbhood']) + # By default value of content is removed + if ver_left_dict['content']=='<br />': + ver_left_dict['content']='' + if ver_right_dict['content']=='<br />': + ver_right_dict['content']='' + # Getting merged dictionary + for each in ver_left_dict: + if ver_left_dict[each] and ver_right_dict[each]: + ver_merge[each]=ver_right_dict[each] + elif ver_left_dict[each]: + if not ver_right_dict[each]: + ver_merge[each]=ver_left_dict[each] + elif ver_right_dict[each]: + if not ver_left_dict[each]: + ver_merge[each]=ver_right_dict[each] + else: + if not ver_left_dict[each]: + if not ver_right_dict[each]: + ver_merge[each]=ver_right_dict[each] + ver_merge_nbh_dict={} + # processing nbhood for merged version + for each in ver_left_nbh_dict: + if isinstance(ver_left_nbh_dict[each],dict): + if ver_left_nbh_dict[each] and ver_right_nbh_dict[each]: + ver_merge_nbh_dict[each]=dict(ver_left_nbh_dict[each].items()+ver_right_nbh_dict[each].items()) + elif ver_left_nbh_dict[each]: + if not ver_right_nbh_dict[each]: + ver_merge_nbh_dict[each]=ver_left_nbh_dict[each] + elif ver_right_nbh_dict[each]: + if not ver_left_nbh_dict[each]: + ver_merge_nbh_dict[each]=ver_right_nbh_dict[each] + else: + if not ver_left_nbh_dict[each]: + if not ver_right_nbh_dict[each]: + ver_merge_nbh_dict[each]=ver_right_nbh_dict[each] + else: + if ver_left_nbh_dict[each] and ver_right_nbh_dict[each]: + ver_merge_nbh_dict[each]=ver_right_nbh_dict[each] + elif ver_left_nbh_dict[each]: + if not ver_right_nbh_dict[each]: + ver_merge_nbh_dict[each]=ver_left_nbh_dict[each] + elif ver_right_nbh_dict[each]: + if not ver_left_nbh_dict[each]: + ver_merge_nbh_dict[each]=ver_right_nbh_dict[each] + else: + if not ver_left_nbh_dict[each]: + if not ver_right_nbh_dict[each]: + ver_merge_nbh_dict[each]=ver_right_nbh_dict[each] + + # Removing auto generated fields + del(ver_merge['start_publication']) + del(ver_merge['end_publication']) + del(ver_merge['creation_date']) + del(ver_merge['last_update']) + + history_left_list=[] + history_right_list=[] + history_merged_list=[] + + history_left_list=ver_left_nbh_dict['history'] + history_left_list.append(ssid1) + history_right_list=ver_right_nbh_dict['history'] + history_right_list.append(ssid2) + history_merged_list.append(history_left_list) + history_merged_list.append(history_right_list) + ver_merge_nbh_dict['history']=history_merged_list + + obj.nbhood = unicode(ver_merge_nbh_dict) + if isinstance(obj,Objecttype): + obj=set_objecttype_field(obj,ver_merge) + if isinstance(obj,Attributetype): + obj=set_objecttype_field(obj,ver_merge) + obj=set_attributetype_field(obj,ver_merge) + if isinstance(obj,Relationtype): + obj=set_objecttype_field(obj,ver_merge) + obj=set_relationtype_field(obj,ver_merge) + if isinstance(obj,Processtype): + obj=set_objecttype_field(obj,ver_merge) + obj=set_processtype_field(obj,ver_merge) + if isinstance(obj,Systemtype): + obj=set_objecttype_field(obj,ver_merge) + obj=set_systemtype_field(obj,ver_merge) + + + obj.save_revert_or_merge() + content=ver_merge['content'] + content=content[3:-4] + ver_merge['content']= content + return ver_merge + + +def merge_version(request,ssid1,ssid2): + direction="" + ver_merge={} + for each in request.GET: + direction=each + ot=Version.objects.get(id=ssid1) + obj=ot.object.ref + ver_merge=get_merge_dict(ssid1,ssid2,direction) + slist=[] + slist=obj.get_ssid + version_counter=len(slist) + merged_ver_ssid=slist[version_counter-1] + ver_merged_dict=obj.version_info(merged_ver_ssid) + ver_merged_nbh_dict=ast.literal_eval(ver_merged_dict['nbhood']) + ver_merged_nbh_dict['content']=ver_merge['content'] + variables = RequestContext(request,{'ver_nbh_dict':ver_merged_nbh_dict ,'nt':obj,'ssid':merged_ver_ssid,'version_no':version_counter}) + template="gstudio/display.html" + return render_to_response(template,variables) + +def revert(ssid): + ver_revert={} + ot=Version.objects.get(id=ssid) + obj=ot.object.ref + ver_revert=obj.version_info(ssid) + + # Removing auto generated fields + del(ver_revert['start_publication']) + del(ver_revert['end_publication']) + del(ver_revert['creation_date']) + del(ver_revert['last_update']) + history=[] + ver_revert_nbh_dict=ast.literal_eval(ver_revert['nbhood']) + + history=ver_revert_nbh_dict['history'] + history.append(ssid) + ver_revert_nbh_dict['history']=history + + + # ver_revert_nbh_dict['history']=ver_revert_nbh_history.append(ssid) + ver_revert['nbhood']=unicode(ver_revert_nbh_dict) + obj.nbhood=ver_revert['nbhood'] + if isinstance(obj,Objecttype): + obj=set_objecttype_field(obj,ver_revert) + if isinstance(obj,Attributetype): + obj=set_objecttype_field(obj,ver_revert) + obj=set_attributetype_field(obj,ver_revert) + if isinstance(obj,Relationtype): + obj=set_objecttype_field(obj,ver_revert) + obj=set_relationtype_field(obj,ver_revert) + if isinstance(obj,Processtype): + obj=set_objecttype_field(obj,ver_revert) + obj=set_processtype_field(obj,ver_revert) + if isinstance(obj,Systemtype): + obj=set_objecttype_field(obj,ver_revert) + obj=set_systemtype_field(obj,ver_revert) + + obj.save_revert_or_merge() + + # formatting content field + content=ver_revert['content'] + content=content[3:-4] + ver_revert['content']= content + + return ver_revert + +def revert_version(request): + ver_revert={} + for each in request.GET: + ssid=each + ssid=int(ssid) + ot=Version.objects.get(id=ssid) + obj=ot.object.ref + + ver_revert=revert(ssid) + ver_revert['nbhood'] + slist=[] + slist=obj.get_ssid + version_counter=len(slist) + revert_ver_ssid=slist[version_counter-1] + ver_revert_dict=obj.version_info(revert_ver_ssid) + ver_revert_nbh_dict=ast.literal_eval(ver_revert_dict['nbhood']) + ver_revert_nbh_dict['content']=ver_revert['content'] + + variables = RequestContext(request,{'ver_nbh_dict':ver_revert_nbh_dict ,'nt':obj,'ssid':revert_ver_ssid,'version_no':version_counter}) + template="gstudio/display.html" + return render_to_response(template,variables) + # return HttpResponse(ver_revert['nbhood']) + + diff --git a/objectapp/TAGS b/objectapp/TAGS deleted file mode 100644 index 82ecaf2f..00000000 --- a/objectapp/TAGS +++ /dev/null @@ -1,1945 +0,0 @@ - -fixtures/helloworld.json,158 - "login_required": false,67,1886 - "comment_enabled": true,70,1990 - "login_required": false,101,5063 - "comment_enabled": true,104,5167 - -feeds.py,2021 -class ObjectappFeed(28,992 - def __init__(32,1085 -class GbobjectFeed(40,1342 - def item_pubdate(45,1517 - def item_objecttypes(49,1632 - def item_author_name(53,1783 - def item_author_email(59,2007 - def item_author_link(63,2132 - def item_enclosure_url(72,2460 - def item_enclosure_length(81,2733 - def item_enclosure_mime_type(85,2842 -class LatestGbobjects(90,2961 - def link(93,3039 - def items(97,3157 - def title(101,3281 - def description(105,3402 -class ObjecttypeGbobjects(110,3543 - def get_object(113,3625 - def items(117,3760 - def link(121,3912 - def title(125,4012 - def description(129,4135 -class AuthorGbobjects(134,4282 - def get_object(137,4357 - def items(141,4511 - def link(145,4668 - def title(149,4797 - def description(153,4915 -class TagGbobjects(158,5049 - def get_object(161,5117 - def items(165,5251 - def link(170,5446 - def title(174,5565 - def description(178,5680 -class SearchGbobjects(183,5819 - def get_object(186,5901 - def items(193,6131 - def link(197,6277 - def title(201,6420 - def description(205,6536 -class GbobjectDiscussions(210,6676 - def get_object(215,6879 - def items(222,7238 - def item_pubdate(226,7370 - def item_link(230,7484 - def link(234,7591 - def item_author_name(238,7689 - def item_author_email(242,7804 - def item_author_link(246,7929 - def title(250,8049 - def description(254,8158 -class GbobjectComments(259,8305 - def items(264,8502 - def item_link(268,8628 - def title(272,8749 - def description(276,8855 - def item_enclosure_url(280,8998 - def item_enclosure_length(284,9144 - def item_enclosure_mime_type(288,9253 -class GbobjectPingbacks(293,9372 - def items(298,9573 - def item_link(302,9701 - def title(306,9824 - def description(310,9931 -class GbobjectTrackbacks(315,10076 - def items(320,10281 - def item_link(324,10411 - def title(328,10536 - def description(332,10644 - -signals.py,175 -def disable_for_loaddata(10,160 - def wrapper(16,363 -def ping_directories_handler(26,598 -def ping_external_urls_handler(38,976 -def disconnect_objectapp_signals(48,1276 - -management/commands/feed2objectapp.py,206 -class Command(23,748 - def __init__(42,1550 - def write_out(50,1851 - def handle_label(56,2096 - def import_gbobjects(80,3061 - def import_objecttypes(130,5400 - def import_tags(138,5733 - -management/commands/spam_cleanup.py,51 -class Command(9,238 - def handle_noargs(14,393 - -management/commands/wp2objectapp.py,421 -class Command(29,919 - def __init__(56,2052 - def write_out(64,2353 - def handle_label(70,2598 - def import_authors(97,3610 - def migrate_author(120,4480 - def import_objecttypes(151,5881 - def import_tags(175,6979 - def get_gbobject_tags(188,7607 - def get_gbobject_objecttypes(198,8031 - def import_gbobject(208,8455 - def import_gbobjects(261,10905 - def import_comments(283,11937 - -management/commands/blogger2objectapp.py,497 -class Command(26,810 - def __init__(44,1673 - def write_out(51,1935 - def handle_noargs(57,2180 - def select_blog_id(108,4201 - def get_Objecttype(129,5020 - def import_posts(139,5289 - def import_comments(176,7171 -def convert_blogger_timestamp(211,8393 -def is_draft(217,8572 -def get_blog_id(225,8740 -def get_post_id(229,8815 -class BloggerManager(233,8890 - def __init__(235,8921 - def get_blogs(241,9166 - def get_posts(246,9306 - def get_comments(251,9468 - -management/commands/objectapp2wp.py,52 -class Command(16,459 - def handle_noargs(21,649 - -context_processors.py,18 -def version(5,75 - -tests/feeds.py,833 -class ObjectappFeedsTestCase(33,1155 - def setUp(37,1281 - def create_published_gbobject(44,1637 - def create_discussions(58,2215 - def test_gbobject_feed(75,3344 - def test_gbobject_feed_enclosure(94,4296 - def test_latest_gbobjects(118,5477 - def test_Objecttype_gbobjects(129,5921 - def test_author_gbobjects(142,6564 - def test_tag_gbobjects(153,7149 - def test_search_gbobjects(165,7716 - class FakeRequest:FakeRequest166,7753 - def __init__(167,7780 - def test_gbobject_discussions(182,8492 - def test_gbobject_comments(204,9660 - def test_gbobject_pingbacks(223,10639 - def test_gbobject_trackbacks(236,11280 - def test_gbobject_feed_no_authors(249,11926 - def test_gbobject_feed_rss_or_atom(258,12286 - def test_discussion_feed_with_same_slugs(269,12736 - -tests/signals.py,286 -class SignalsTestCase(12,356 - def test_disable_for_loaddata(15,423 - def make_top(19,516 - def call(22,567 - def test_ping_directories_handler(29,712 - def fake_pinger(33,826 - def test_ping_external_urls_handler(61,1918 - def fake_pinger(65,2037 - -tests/metaweblog.py,491 -class MetaWeblogTestCase(23,737 - def setUp(27,844 - def test_authenticate(63,2573 - def test_get_users_blogs(79,3433 - def test_get_user_info(88,3866 - def test_get_authors(102,4563 - def test_get_objecttypes(112,5073 - def test_new_Objecttype(151,7147 - def test_get_recent_posts(167,8077 - def test_delete_post(173,8365 - def test_get_post(182,8798 - def test_new_post(207,10234 - def test_edit_post(224,11049 - def test_new_media_object(281,13891 - -tests/spam_checker.py,72 -class SpamCheckerTestCase(11,253 - def test_get_spam_checker(14,339 - -tests/quick_gbobject.py,119 -class QuickGbobjectTestCase(10,234 - def setUp(14,353 - def tearDown(18,456 - def test_quick_gbobject(21,530 - -tests/url_shortener.py,121 -class URLShortenerTestCase(12,323 - def setUp(15,411 - def tearDown(18,499 - def test_get_url_shortener(21,590 - -tests/__init__.py,19 -def suite(32,1630 - -tests/managers.py,585 -class ManagersTestCase(18,482 - def setUp(20,517 - def test_tags_published(51,2027 - def test_author_published_manager_get_query_set(56,2251 - def test_gbobjects_published(65,2651 - def test_gbobject_published_manager_get_query_set(86,3805 - def test_gbobject_published_manager_on_site(107,4805 - def test_gbobject_published_manager_basic_search(115,5187 - def test_gbobject_published_manager_advanced_search(123,5634 - def test_gbobject_published_manager_advanced_search_with_punctuation(227,11470 - def test_gbobject_published_manager_search(238,12007 - -tests/custom_views_detail_urls.py,73 -def call_with_template_and_extra_context(13,380 - def wrapper(18,537 - -tests/views.py,1337 -class ViewsBaseCase(17,494 - def setUp(22,584 - def tearDown(62,2283 - def create_published_gbobject(66,2445 - def check_publishing_context(79,2966 -class ObjectappViewsTestCase(92,3513 - def test_objectapp_gbobject_archive_index(100,3780 - def test_objectapp_gbobject_archive_year(103,3883 - def test_objectapp_gbobject_archive_month(106,3990 - def test_objectapp_gbobject_archive_day(109,4101 - def test_objectapp_gbobject_shortlink(112,4213 - def test_objectapp_gbobject_detail(117,4444 - def test_objectapp_gbobject_detail_login(135,5278 - def test_objectapp_gbobject_detail_password(142,5580 - def test_objectapp_gbobject_channel(157,6395 - def test_objectapp_Objecttype_list(160,6505 - def test_objectapp_Objecttype_detail(167,6873 - def test_objectapp_Objecttype_detail_paginated(172,7157 - def test_objectapp_author_list(193,8274 - def test_objectapp_author_detail(200,8617 - def test_objectapp_tag_list(205,8889 - def test_objectapp_tag_detail(212,9137 - def test_objectapp_gbobject_search(217,9393 - def test_objectapp_sitemap(228,9970 - def test_objectapp_trackback(239,10581 -class ObjectappCustomDetailViews(275,12268 - def test_custom_Objecttype_detail(283,12586 - def test_custom_author_detail(289,12920 - def test_custom_tag_detail(295,13246 - -tests/moderator.py,249 -class GbobjectCommentModeratorTestCase(14,428 - def setUp(17,518 - def test_email(31,1123 - def test_do_email_notification(48,1938 - def test_do_email_authors(58,2465 - def test_do_email_reply(72,3198 - def test_moderate(103,4855 - -tests/objecttype.py,138 -class ObjecttypeTestCase(10,244 - def setUp(12,281 - def test_gbobjects_published(27,977 - def test_gbobjects_tree_path(47,1818 - -tests/templates/objectapp/_gbobject_detail.html,23 -{{ object.title }}1,0 - -tests/templates/objectapp/base.html,56 -Objectapp's Blog - {% block title %}{% endblock %}3,16 - -tests/custom_url_shortener.py,19 -def backend(8,184 - -tests/admin.py,238 -class GbobjectAdminTestCase(10,228 - def setUp(14,341 - def tearDown(24,798 - def test_gbobject_add_and_change(27,872 -class ObjecttypeAdminTestCase(54,2153 - def setUp(58,2271 - def test_Objecttype_add_and_change(62,2438 - -tests/custom_spam_checker.py,19 -def backend(8,183 - -tests/utils.py,76 -class TestTransport(8,123 - def __init__(12,236 - def request(16,359 - -tests/gbobject.py,827 -class GbobjectTestCase(24,761 - def setUp(26,796 - def test_discussions(32,1002 - def test_str(85,3847 - def test_word_count(88,3940 - def test_comments_are_open(91,4027 - def test_is_actual(102,4523 - def test_is_visible(111,4935 - def test_short_url(118,5224 - def test_previous_gbobject(128,5770 - def test_next_gbobject(149,6858 - def test_related_published(170,7926 -class GbobjectHtmlContentTestCase(192,8877 - def setUp(194,8923 - def tearDown(203,9256 - def test_html_content_default(207,9392 - def test_html_content_textitle(216,9789 - def test_html_content_markdown(231,10506 - def test_html_content_restructuredtext(246,11203 -class GbobjectGetBaseModelTestCase(262,11934 - def setUp(264,11981 - def tearDown(267,12083 - def test_get_base_model(270,12188 - -tests/ping.py,387 -class DirectoryPingerTestCase(13,318 - def setUp(15,400 - def test_ping_gbobject(24,781 -class ExternalUrlsPingerTestCase(31,998 - def setUp(34,1087 - def test_is_external_url(42,1411 - def test_find_external_urls(57,2172 - def test_find_pingback_href(71,2829 - def fake_urlopen(89,3551 - def test_find_pingback_urls(105,4301 - def test_pingback_url(120,4944 - -tests/sitemaps.py,274 -class ObjectappSitemapsTestCase(18,537 - def setUp(22,666 - def test_gbobject_sitemap(43,1722 - def test_Objecttype_sitemap(49,1962 - def test_author_sitemap(58,2390 - def test_tag_sitemap(68,2851 - def test_Objecttype_sitemap_zero_division_error(77,3284 - -tests/pingback.py,251 -class PingBackTestCase(24,738 - def fake_urlopen(28,842 - def setUp(39,1281 - def tearDown(85,3648 - def test_generate_pingback_content(90,3855 - def test_pingback_ping(113,4909 - def test_pingback_extensions_get_pingbacks(166,7319 - -tests/comparison.py,142 -class ComparisonTestCase(10,260 - def test_pearson_score(13,339 - def test_clustered_model(21,722 - def test_vector_builder(35,1514 - -tests/templatetags.py,955 -class TemplateTagsTestCase(40,1849 - def setUp(43,1927 - def publish_gbobject(51,2235 - def test_get_objecttypes(57,2436 - def test_get_authors(67,2914 - def test_get_recent_gbobjects(80,3496 - def test_get_featured_gbobjects(93,4072 - def test_get_random_gbobjects(106,4658 - def test_get_popular_gbobjects(119,5234 - def test_get_similar_gbobjects(152,6853 - def test_get_archives_gbobjects(176,7972 - def test_get_archives_tree(199,9028 - def test_get_calendar_gbobjects(222,10096 - def test_get_recent_comments(268,12343 - def test_get_recent_linkbacks(296,13612 - def test_objectapp_pagination(324,14902 - class FakeRequest(325,14943 - def __init__(326,14978 - def test_objectapp_breadcrumbs(411,19121 - class FakeRequest(412,19163 - def __init__(413,19198 - def test_get_gravatar(486,22745 - def test_get_tags(496,23187 - def test_get_tag_cloud(519,23988 - -managers.py,310 -def tags_published(12,171 -class AuthorPublishedManager(22,555 - def get_query_set(25,650 -def gbobjects_published(36,1045 -class GbobjectPublishedManager(45,1366 - def get_query_set(48,1465 - def on_site(53,1639 - def search(58,1843 - def advanced_search(65,2050 - def basic_search(70,2227 - -search.py,70 -def createQ(23,634 -def unionQ(81,2728 -def advanced_search(129,4198 - -views/quick_gbobject.py,64 -class QuickGbobjectForm(18,542 -def view_quick_gbobject(27,839 - -views/authors.py,26 -def author_detail(14,425 - -views/trackback.py,31 -def gbobject_trackback(14,427 - -views/search.py,27 -def gbobject_search(9,234 - -views/gbobjects.py,31 -def gbobject_shortlink(26,895 - -views/tags.py,44 -def tag_list(15,418 -def tag_detail(24,819 - -views/objecttypes.py,64 -def get_Objecttype_or_404(10,311 -def Objecttype_detail(16,499 - -views/sitemap.py,19 -def sitemap(8,174 - -views/channels.py,28 -def gbobject_channel(7,133 - -views/decorators.py,187 -def update_queryset(15,493 - def wrapper(23,813 -def password(33,1050 -def protect_gbobject(47,1623 - def wrapper(53,1839 -def template_name_for_gbobject_queryset_filtered(72,2640 - -moderator.py,194 -class GbobjectCommentModerator(23,910 - def email(34,1388 - def do_email_notification(50,2108 - def do_email_authors(67,2993 - def do_email_reply(89,4151 - def moderate(116,5607 - -admin/process.py,802 -class ProcessAdmin(24,773 - def __init__(76,3621 - def get_title(81,3790 - def get_authors(92,4279 - def get_objecttypes(105,4852 - def get_tags(118,5452 - def get_sites(130,5961 - def get_comments_are_open(138,6281 - def get_is_actual(144,6535 - def get_is_visible(150,6743 - def get_link(156,6957 - def get_short_url(163,7233 - def save_model(174,7625 - def queryset(188,8235 - def formfield_for_manytomany(195,8519 - def get_actions(206,9018 - def make_mine(220,9549 - def make_published(229,9944 - def make_hidden(237,10337 - def make_tweet(244,10641 - def close_comments(260,11391 - def close_pingbacks(268,11778 - def put_on_top(276,12136 - def ping_directories(285,12582 - def get_urls(308,13643 - def _media(326,14564 - -admin/system.py,801 -class SystemAdmin(24,772 - def __init__(76,3646 - def get_title(81,3814 - def get_authors(92,4299 - def get_objecttypes(105,4869 - def get_tags(118,5466 - def get_sites(130,5972 - def get_comments_are_open(138,6290 - def get_is_actual(144,6541 - def get_is_visible(150,6746 - def get_link(156,6957 - def get_short_url(163,7230 - def save_model(174,7620 - def queryset(188,8222 - def formfield_for_manytomany(195,8505 - def get_actions(206,9003 - def make_mine(220,9533 - def make_published(229,9919 - def make_hidden(237,10306 - def make_tweet(244,10610 - def close_comments(260,11355 - def close_pingbacks(268,11735 - def put_on_top(276,12085 - def ping_directories(285,12525 - def get_urls(308,13579 - def _media(326,14491 - -admin/forms.py,327 -class ProcessAdminForm(28,954 - class Meta:Meta30,996 -class SystemAdminForm(34,1074 - class Meta:Meta36,1115 -class ObjecttypeAdminForm(42,1194 - def __init__(49,1465 - def clean_parent(55,1749 - class Meta:Meta63,2035 -class GbobjectAdminForm(68,2121 - def __init__(77,2472 - class Meta:Meta87,2836 - -admin/widgets.py,462 -class TreeNodeChoiceField(13,346 - def __init__(16,542 - def label_from_instance(22,836 -class MPTTModelChoiceIterator(29,1114 - def choice(31,1225 -class MPTTModelMultipleChoiceField(39,1551 - def __init__(41,1670 - def label_from_instance(45,1859 - def _get_choices(51,2136 -class MPTTFilteredSelectMultiple(60,2390 - def __init__(62,2505 - def render_options(66,2692 - def render_option(74,3076 - class Media:Media103,4437 - -admin/gbobject.py,801 -class GbobjectAdmin(24,774 - def __init__(64,3043 - def get_title(69,3213 - def get_authors(80,3706 - def get_objecttypes(93,4282 - def get_tags(106,4885 - def get_sites(118,5397 - def get_comments_are_open(126,5719 - def get_is_actual(132,5976 - def get_is_visible(138,6187 - def get_link(144,6404 - def get_short_url(151,6683 - def save_model(162,7077 - def queryset(176,7695 - def formfield_for_manytomany(183,7982 - def get_actions(194,8482 - def make_mine(208,9014 - def make_published(217,9412 - def make_hidden(225,9805 - def make_tweet(232,10115 - def close_comments(248,10870 - def close_pingbacks(256,11256 - def put_on_top(264,11612 - def ping_directories(273,12058 - def get_urls(296,13118 - def _media(314,14048 - -url_shortener/__init__.py,30 -def get_url_shortener(11,292 - -url_shortener/backends/bitly.py,20 -def backend(17,513 - -url_shortener/backends/default.py,19 -def backend(8,183 - -templatetags/objectapp_tags.py,713 -def get_objecttypes(40,1325 -def get_this_nodes_uri(46,1529 -def get_authors(52,1674 -def get_recent_gbobjects(59,1906 -def get_featured_gbobjects(66,2183 -def get_random_gbobjects(74,2502 -def get_popular_gbobjects(84,2867 -def get_similar_gbobjects(109,3829 - def compute_related(120,4183 -def get_archives_gbobjects(152,5322 -def get_archives_gbobjects_tree(160,5662 -def get_calendar_gbobjects(169,6044 -def get_recent_comments(198,7130 -def get_recent_linkbacks(215,7887 -def objectapp_pagination(234,8628 -def objectapp_breadcrumbs(273,10381 -def get_gravatar(287,10945 -class TagsNode(299,11316 - def __init__(300,11338 - def render(303,11415 -def get_tags(309,11533 -def get_tag_cloud(323,11945 - -templatetags/objectapp_admin_tags.py,62 -def get_draft_gbobjects(16,460 -def get_content_stats(24,764 - -templatetags/zbreadcrumbs.py,147 -class Crumb(9,190 - def __init__(11,245 -def year_crumb(16,335 -def month_crumb(23,546 -def day_crumb(32,879 -def retrieve_breadcrumbs(62,2278 - -templatetags/zcalendar.py,176 -class ObjectappCalendar(15,379 - def __init__(18,454 - def formatday(24,683 - def formatmonth(39,1467 - def formatweekday(52,2067 - def formatmonthname(58,2312 - -migrations/0001_initial.py,76 -class Migration(7,125 - def forwards(9,160 - def backwards(174,10519 - -templates/objectapp/password.html,72 -{% trans "Password required" %}7,137 -{% endblock %}id_password34,820 - -templates/objectapp/opensearch.xml,97 -<?xml version=1,0 -<OpenSearchDescription xmlns=4,97 - <Url type=11,502 - <Query role=15,1047 - -templates/objectapp/tags/slider_gbobjects.html,170 -{% for gbobject in gbobjects %}slider4,64 -{{ gbobject.title }}nav-slider-{{ forloop.counter }}9,394 -{{ gbobject.title }}gbobject-slider-{{ forloop.counter }}20,734 - -templates/objectapp/_gbobject_detail.html,50 -{{ object.title }}gbobject-{{ object.pk }}6,315 - -templates/objectapp/gbobject_trackback.xml,19 -<?xml version=1,0 - -templates/objectapp/skeleton.html,319 -Gnowledge Studio - {% block title %}{% endblock %}75,4675 -{% include "gstudio/_header.html" %}gstudio80,4806 -/ {% block breadcrumbs %}{% endblock %}breadcrumbs84,4896 -{% block content %}content89,5052 -The content block need to be overrided!90,5075 -{% block sidebar %}sidebar94,5193 -Powered by footer99,5300 - -templates/objectapp/sitemap.html,187 -{% trans "Sitemap" %}7,152 -{% trans "Gbobjects per objecttypes" %}10,221 -{% trans "All the gbobjects" %}31,847 -{% trans "Objecttypes" %}50,1420 -{% trans "Monthly archives" %}67,2087 - -templates/objectapp/objecttype_list.html,36 -{% trans "Objecttype list" %}9,214 - -templates/objectapp/gbobject_list.html,169 -{{ Objecttype.title }}23,1597 -{% trans "Tag" %} : {{ tag }}30,1750 -{% blocktrans with author.username as author %}Gbobjects by {{ author }}{% endblocktrans %}34,1818 - -templates/objectapp/gbobject_archive_year.html,78 -{% trans "Archives" %} {{ year }}9,225 -{% trans "Monthly archives" %}13,288 - -templates/objectapp/tag_list.html,29 -{% trans "Tag list" %}9,190 - -templates/objectapp/rsd.xml,42 -<?xml version=1,0 - <api name=8,336 - -templates/objectapp/wlwmanifest.xml,34 -{% load i18n %}<?xml version=1,0 - -templates/objectapp/wxr.xml,142 -<?xml version=1,0 -<!-- generator=8,421 - <Objecttype domain=44,2185 - <Objecttype domain=46,2390 - <guid isPermaLink=48,2496 - -templates/objectapp/login.html,35 -{% trans "Login required" %}7,134 - -templates/objectapp/base.html,414 -{% trans "Search" %}23,956 -{% trans "Objecttypes" %}searchbox35,1611 -{% trans "Authors" %}39,1701 -{% trans "Calendar" %}43,1784 -{% trans "Tags" %}47,1875 -{% trans "Recent gbobjects" %}51,1956 -{% trans "Recent comments" %}55,2059 -{% trans "Recent linkbacks" %}59,2161 -{% trans "Random gbobjects" %}63,2263 -{% trans "Popular gbobjects" %}67,2366 -{% trans "Archives" %}71,2471 -{% trans "Tools" %}76,2599 - -templates/objectapp/gbobject_search.html,128 -{% trans "Search results for" %} {% if pattern %}'{{ pattern }}'{% endif %}14,814 -{% if is_paginated %}main_searchbox46,2028 - -templates/objectapp/gbobject_archive_day.html,58 -{% trans "Archives" %} {{ day|date:"DATE_FORMAT" }}9,261 - -templates/objectapp/_header.html,81 - header4,44 -{% firstof user.first_name user.username %}user-tools11,413 - -templates/objectapp/author_list.html,32 -{% trans "Author list" %}9,196 - -templates/objectapp/gbobject_detail.html,640 -{% trans "Next gbobject" %}45,2337 -{% trans "Previous gbobject" %}59,2710 -{% trans "Related gbobjects" %}72,3046 -{% trans "Similar gbobjects" %}83,3373 -{% trans "Comments" %}comments91,3555 -{% for comment in comment_list %}comment-list95,3710 -{% if comment.url %}comment_{{ comment.pk }}102,4146 -{% trans "Pingbacks" %}pingbacks132,4897 -{% for pingback in pingback_list %}pingback-list136,5057 -{{ pingback.user_name }}pingback_{{ pingback.pk }}140,5281 -{% trans "Trackbacks" %}trackbacks166,5947 -{% for trackback in trackback_list %}trackback-list169,6063 -{{ trackback.user_name }}trackback_{{ trackback.pk }}173,6294 - -templates/objectapp/gbobject_archive_month.html,102 -{% trans "Archives" %} {{ month|date:"YEAR_MONTH_FORMAT" }}9,277 -{% trans "Daily archives" %}13,366 - -templates/comments/objectapp/gbobject/posted.html,44 -{% trans "Thanks for your comment" %}7,143 - -templates/comments/objectapp_gbobject_preview.html,250 -{% blocktrans count form.errors|length as errors %}Please correct following error.{% plural %}Please correct following errors.{% endblocktrans %}9,189 -{% trans "Preview of the comment" %}12,360 -{% if form.cleaned_data.url %}comment_preview20,787 - -templates/admin/objectapp/app_index.html,80 -{% include "admin/objectapp/widgets/content_stats.html" %}content-main28,1062 - -templates/admin/objectapp/widgets/quickpost.html,110 -{% csrf_token %}quickpost4,124 -{% trans "Content" %}:id_title17,527 -{% trans "Tags" %}:id_content25,782 - -templates/admin/objectapp/widgets/base.html,74 -{% block title %}{% endblock %}{% block module_id %}{% endblock %}3,116 - -templates/500.html,167 -{% trans "Server error" %}11,217 -{% trans "Useful links" %}15,411 -{% trans "Recent gbobjects" %}31,781 -{% trans "Search" %}36,882 -{% endblock %}searchbox46,1228 - -templates/404.html,169 -{% trans "Page not found" %}11,219 -{% trans "Useful links" %}15,330 -{% trans "Recent gbobjects" %}31,700 -{% trans "Search" %}36,801 -{% endblock %}searchbox46,1147 - -TAGS,200 -fixtures/helloworld.json,json2,2 - "login_required": false,3,31 - "comment_enabled": true,4,70 - "login_required": false,5,109 - "comment_enabled": true,6,149 -feeds.py,py8,191 - -spam_checker/__init__.py,55 -def get_spam_checker(10,211 -def check_is_spam(26,713 - -spam_checker/backends/mollom.py,20 -def backend(22,707 - -spam_checker/backends/all_is_spam.py,18 -def backend(4,56 - -spam_checker/backends/automattic.py,20 -def backend(21,611 - -spam_checker/backends/typepad.py,42 -class TypePad(21,611 -def backend(26,731 - -static/objectapp/img/sitemap.png,41 -d€r`)¬‚B(†Í°*`/Ô@4ÀQh†“p.ÂU¸U7,703 - -static/objectapp/img/objecttype.png,94 -(Ë’öû=m6ò}_ÙàB¦Ó©Çø`fÀëÉܲê`·ÛÑd2¡0͇¸®BaøªRÇgÁMÓPQÊbE‘Ò‡T iÛÖ$iÛÖ5,253 - -static/objectapp/img/wlw/watermark.png,608 -jTÐÄÙ¢0EP^HÁS´§©/Iýåih‘¾Á.‘èAs¨!:JŠ¤»?Êpñ!Êñ{X,X4,899 -‚ä†<VÜV5,995 -3Y¨V·,¶é±ëDN5%FÒPÐnÄÆ‘<6d_¡ê+¬™PcM7S¯,ÿøtüÖ¿šú+ÿKÀ>jhª dCi÷”T(–i(Ó÷:j"
÷¾~›ËožP.Zê½#9EŽ
ZidhÈA!2/ÒgÊÜ OöˆQ0}¦Œ-Q„ª$L5’¬Q„ª$L5’10,1712 -®Û7GLç7 èƒpR49×è"˜vƒkö„’º8t0Z“ç†8u¤aIž–”©E¡°ÍSïH®&wï§1ßÏêèýØæú(Üî
⯕ïÌF~î¿,¼ö⣨õ)^¯È»cÆÍ !,!ytQå( D?¡t&ïÖäÝ ’ía“Ê
VY\PF@ìñº“
qènS…ÂÆš’<q¿B©¹CJ²Û]!}‡žÇO}…ööOúÕ®» æÍuƒ®gtÎhèD c€:¡-ȸ$Ï)4”¹£‹ 0nÂ6‡YYš£‘k×w¬×
Å^§ï+VjæîÿþÆwè—þRÏþ»HyðUYS
r Bc‡r Bc15,3313 -·š1«‘Ø/‰ç5 ÍŠì)+L6H†’-)5Ž,-JÕ83â‡.j¼F% ¿èÑÑ"C‹‰ÍA5ªÚÓ#ä«¡\@fÃðfÃ21,4864 - -static/objectapp/img/wlw/comments.png,84 -ÔV”VV”5,151 -ÔV”V”" Rh£òpš´MC";ib;5,151 -ÔV”V”" Rh£òpš´MC";ib;~Åkï®wg~Åkï®w5,151 - -static/objectapp/img/plugin.png,992 -ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡só5¦KË—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›ÜÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌ㧛§Âóç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËýø¿áyòñN`Áå½³k™¥5»/>B
Yr“oÀòùc3Üg,šÑÊZú0Ì&LÖŽ†Ïß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´StqtQ´Stq12,1526 -ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡só5¦KË—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›ÜÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌ㧛§Âóç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËýø¿áyòñN`Áå½³k™¥5»/>B
Yr“oÀòùc3Üg,šÑÊZú0Ì&LÖŽ†Ïß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûgYû12,1526 -ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡só5¦KË—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›ÜÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌ㧛§Âóç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËýø¿áyòñN`Áå½³k™¥5»/>B
Yr“oÀòùc3Üg,šÑÊZú0Ì&LÖŽ†Ïß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ©Œ¹;Ûj¶rvg¬jlRlc웸j¶rvg¬jlRlcì›12,1526 - -static/objectapp/css/src/_base.sass,40 -$blueprint_font_family: unquote(13,424 - -static/objectapp/css/src/screen.sass,106 -ul,13,265 - h1,49,907 - h1, h2,49,907 - ul,62,1087 - li ul,65,1165 - +tag-cloud(cloud84,1495 - -static/objectapp/css/src/print.sass,179 - a,10,125 - a, a:link,link10,125 - a, a:link, a:visited,visited10,125 - a, a:link, a:visited, a:focus,focus10,125 - a, a:link, a:visited, a:focus, a:active,active10,125 - -static/objectapp/css/src/dashboard_objectapp.sass,41 - th,11,117 - background: url(15,163 - -static/objectapp/css/print.css,354 -h1,8,330 -h1, h2,8,330 -h1, h2, h3,8,330 -h1, h2, h3, h4,8,330 -h1, h2, h3, h4, h5,8,330 -a:link,link13,528 -body a,28,874 -body a, body a:link,link28,874 -body a, body a:link, body a:visited,visited28,874 -body a, body a:link, body a:visited, body a:focus,focus28,874 -body a, body a:link, body a:visited, body a:focus, body a:active,active28,874 - -static/objectapp/css/config.rb,19 -project_type 2,47 - -static/objectapp/css/ie.css,32 -fieldset,19,419 -legend,21,464 - -static/objectapp/css/screen.css,14875 -h1,3,103 -h1, h2,3,103 -h1, h2, h3,3,103 -h1, h2, h3, h4,3,103 -h1, h2, h3, h4, h5,3,103 -h1 img,4,167 -h1 img, h2 img,4,167 -h1 img, h2 img, h3 img,4,167 -h1 img, h2 img, h3 img, h4 img,4,167 -h1 img, h2 img, h3 img, h4 img, h5 img,4,167 -strong,30,1009 -em,32,1045 -sup,34,1078 -abbr,36,1108 -pre,44,1283 -pre, code,44,1283 -li ul,46,1374 -ul,48,1403 -th,65,1720 -th, td,65,1720 -table.striped tr:nth-child(child67,1768 -.column,column97,2475 -.column, .span-1, .span-2, .span-3, .span-4, .span-5, .span-6, .span-7, .span-8, .span-9, .span-10, .span-11, .span-12, .span-13, .span-14, .span-15, .span-16, .span-17, .span-18, .span-19, .span-20, .span-21, .span-22, .span-23, .span-24 { display: inline;97,2475 -.column, .span-1, .span-2, .span-3, .span-4, .span-5, .span-6, .span-7, .span-8, .span-9, .span-10, .span-11, .span-12, .span-13, .span-14, .span-15, .span-16, .span-17, .span-18, .span-19, .span-20, .span-21, .span-22, .span-23, .span-24 { display: inline; float: left;97,2475 -.column, .span-1, .span-2, .span-3, .span-4, .span-5, .span-6, .span-7, .span-8, .span-9, .span-10, .span-11, .span-12, .span-13, .span-14, .span-15, .span-16, .span-17, .span-18, .span-19, .span-20, .span-21, .span-22, .span-23, .span-24 { display: inline; float: left; margin-right: 10px;px97,2475 -* html .column,column98,2768 -* html .column, * html .span-1, * html .span-2, * html .span-3, * html .span-4, * html .span-5, * html .span-6, * html .span-7, * html .span-8, * html .span-9, * html .span-10, * html .span-11, * html .span-12, * html .span-13, * html .span-14, * html .span-15, * html .span-16, * html .span-17, * html .span-18, * html .span-19, * html .span-20, * html .span-21, * html .span-22, * html .span-23, * html .span-24 { overflow-x: hidden;98,2768 -.span-1 { width: 30px;px102,3235 -.span-2 { width: 70px;px104,3261 -.span-3 { width: 110px;px106,3287 -.span-4 { width: 150px;px108,3314 -.span-5 { width: 190px;px110,3341 -.span-6 { width: 230px;px112,3368 -.span-7 { width: 270px;px114,3395 -.span-8 { width: 310px;px116,3422 -.span-9 { width: 350px;px118,3449 -.span-10 { width: 390px;px120,3476 -.span-11 { width: 430px;px122,3504 -.span-12 { width: 470px;px124,3532 -.span-13 { width: 510px;px126,3560 -.span-14 { width: 550px;px128,3588 -.span-15 { width: 590px;px130,3616 -.span-16 { width: 630px;px132,3644 -.span-17 { width: 670px;px134,3672 -.span-18 { width: 710px;px136,3700 -.span-19 { width: 750px;px138,3728 -.span-20 { width: 790px;px140,3756 -.span-21 { width: 830px;px142,3784 -.span-22 { width: 870px;px144,3812 -.span-23 { width: 910px;px146,3840 -.span-24 { width: 950px;px148,3868 -.span-24 { width: 950px; margin:margin148,3868 -input.span-1, textarea.span-1, select.span-1 { width: 30px;px150,3907 -input.span-2, textarea.span-2, select.span-2 { width: 70px;px151,3969 -input.span-3, textarea.span-3, select.span-3 { width: 110px;px152,4031 -input.span-4, textarea.span-4, select.span-4 { width: 150px;px153,4094 -input.span-5, textarea.span-5, select.span-5 { width: 190px;px154,4157 -input.span-6, textarea.span-6, select.span-6 { width: 230px;px155,4220 -input.span-7, textarea.span-7, select.span-7 { width: 270px;px156,4283 -input.span-8, textarea.span-8, select.span-8 { width: 310px;px157,4346 -input.span-9, textarea.span-9, select.span-9 { width: 350px;px158,4409 -input.span-10, textarea.span-10, select.span-10 { width: 390px;px159,4472 -input.span-11, textarea.span-11, select.span-11 { width: 430px;px160,4538 -input.span-12, textarea.span-12, select.span-12 { width: 470px;px161,4604 -input.span-13, textarea.span-13, select.span-13 { width: 510px;px162,4670 -input.span-14, textarea.span-14, select.span-14 { width: 550px;px163,4736 -input.span-15, textarea.span-15, select.span-15 { width: 590px;px164,4802 -input.span-16, textarea.span-16, select.span-16 { width: 630px;px165,4868 -input.span-17, textarea.span-17, select.span-17 { width: 670px;px166,4934 -input.span-18, textarea.span-18, select.span-18 { width: 710px;px167,5000 -input.span-19, textarea.span-19, select.span-19 { width: 750px;px168,5066 -input.span-20, textarea.span-20, select.span-20 { width: 790px;px169,5132 -input.span-21, textarea.span-21, select.span-21 { width: 830px;px170,5198 -input.span-22, textarea.span-22, select.span-22 { width: 870px;px171,5264 -input.span-23, textarea.span-23, select.span-23 { width: 910px;px172,5330 -input.span-24, textarea.span-24, select.span-24 { width: 950px;px173,5396 -.append-1 { padding-right: 40px;px175,5463 -.append-2 { padding-right: 80px;px177,5499 -.append-3 { padding-right: 120px;px179,5535 -.append-4 { padding-right: 160px;px181,5572 -.append-5 { padding-right: 200px;px183,5609 -.append-6 { padding-right: 240px;px185,5646 -.append-7 { padding-right: 280px;px187,5683 -.append-8 { padding-right: 320px;px189,5720 -.append-9 { padding-right: 360px;px191,5757 -.append-10 { padding-right: 400px;px193,5794 -.append-11 { padding-right: 440px;px195,5832 -.append-12 { padding-right: 480px;px197,5870 -.append-13 { padding-right: 520px;px199,5908 -.append-14 { padding-right: 560px;px201,5946 -.append-15 { padding-right: 600px;px203,5984 -.append-16 { padding-right: 640px;px205,6022 -.append-17 { padding-right: 680px;px207,6060 -.append-18 { padding-right: 720px;px209,6098 -.append-19 { padding-right: 760px;px211,6136 -.append-20 { padding-right: 800px;px213,6174 -.append-21 { padding-right: 840px;px215,6212 -.append-22 { padding-right: 880px;px217,6250 -.append-23 { padding-right: 920px;px219,6288 -.prepend-1 { padding-left: 40px;px221,6326 -.prepend-2 { padding-left: 80px;px223,6362 -.prepend-3 { padding-left: 120px;px225,6398 -.prepend-4 { padding-left: 160px;px227,6435 -.prepend-5 { padding-left: 200px;px229,6472 -.prepend-6 { padding-left: 240px;px231,6509 -.prepend-7 { padding-left: 280px;px233,6546 -.prepend-8 { padding-left: 320px;px235,6583 -.prepend-9 { padding-left: 360px;px237,6620 -.prepend-10 { padding-left: 400px;px239,6657 -.prepend-11 { padding-left: 440px;px241,6695 -.prepend-12 { padding-left: 480px;px243,6733 -.prepend-13 { padding-left: 520px;px245,6771 -.prepend-14 { padding-left: 560px;px247,6809 -.prepend-15 { padding-left: 600px;px249,6847 -.prepend-16 { padding-left: 640px;px251,6885 -.prepend-17 { padding-left: 680px;px253,6923 -.prepend-18 { padding-left: 720px;px255,6961 -.prepend-19 { padding-left: 760px;px257,6999 -.prepend-20 { padding-left: 800px;px259,7037 -.prepend-21 { padding-left: 840px;px261,7075 -.prepend-22 { padding-left: 880px;px263,7113 -.prepend-23 { padding-left: 920px;px265,7151 -.pull-1, .pull-2, .pull-3, .pull-4, .pull-5, .pull-6, .pull-7, .pull-8, .pull-9, .pull-10, .pull-11, .pull-12, .pull-13, .pull-14, .pull-15, .pull-16, .pull-17, .pull-18, .pull-19, .pull-20, .pull-21, .pull-22, .pull-23, .pull-24 { display: inline;267,7189 -.pull-1, .pull-2, .pull-3, .pull-4, .pull-5, .pull-6, .pull-7, .pull-8, .pull-9, .pull-10, .pull-11, .pull-12, .pull-13, .pull-14, .pull-15, .pull-16, .pull-17, .pull-18, .pull-19, .pull-20, .pull-21, .pull-22, .pull-23, .pull-24 { display: inline; float: left;267,7189 -.pull-1, .pull-2, .pull-3, .pull-4, .pull-5, .pull-6, .pull-7, .pull-8, .pull-9, .pull-10, .pull-11, .pull-12, .pull-13, .pull-14, .pull-15, .pull-16, .pull-17, .pull-18, .pull-19, .pull-20, .pull-21, .pull-22, .pull-23, .pull-24 { display: inline; float: left; position: relative;267,7189 -.pull-1 { margin-left: -40px;px269,7474 -.pull-2 { margin-left: -80px;px271,7507 -.pull-3 { margin-left: -120px;px273,7540 -.pull-4 { margin-left: -160px;px275,7574 -.pull-5 { margin-left: -200px;px277,7608 -.pull-6 { margin-left: -240px;px279,7642 -.pull-7 { margin-left: -280px;px281,7676 -.pull-8 { margin-left: -320px;px283,7710 -.pull-9 { margin-left: -360px;px285,7744 -.pull-10 { margin-left: -400px;px287,7778 -.pull-11 { margin-left: -440px;px289,7813 -.pull-12 { margin-left: -480px;px291,7848 -.pull-13 { margin-left: -520px;px293,7883 -.pull-14 { margin-left: -560px;px295,7918 -.pull-15 { margin-left: -600px;px297,7953 -.pull-16 { margin-left: -640px;px299,7988 -.pull-17 { margin-left: -680px;px301,8023 -.pull-18 { margin-left: -720px;px303,8058 -.pull-19 { margin-left: -760px;px305,8093 -.pull-20 { margin-left: -800px;px307,8128 -.pull-21 { margin-left: -840px;px309,8163 -.pull-22 { margin-left: -880px;px311,8198 -.pull-23 { margin-left: -920px;px313,8233 -.pull-24 { margin-left: -960px;px315,8268 -.push-1, .push-2, .push-3, .push-4, .push-5, .push-6, .push-7, .push-8, .push-9, .push-10, .push-11, .push-12, .push-13, .push-14, .push-15, .push-16, .push-17, .push-18, .push-19, .push-20, .push-21, .push-22, .push-23, .push-24 { display: inline;317,8303 -.push-1, .push-2, .push-3, .push-4, .push-5, .push-6, .push-7, .push-8, .push-9, .push-10, .push-11, .push-12, .push-13, .push-14, .push-15, .push-16, .push-17, .push-18, .push-19, .push-20, .push-21, .push-22, .push-23, .push-24 { display: inline; float: left;317,8303 -.push-1, .push-2, .push-3, .push-4, .push-5, .push-6, .push-7, .push-8, .push-9, .push-10, .push-11, .push-12, .push-13, .push-14, .push-15, .push-16, .push-17, .push-18, .push-19, .push-20, .push-21, .push-22, .push-23, .push-24 { display: inline; float: left; position: relative;317,8303 -.push-1 { margin: 0 -40px 1.5em 40px;px319,8588 -.push-2 { margin: 0 -80px 1.5em 80px;px321,8629 -.push-3 { margin: 0 -120px 1.5em 120px;px323,8670 -.push-4 { margin: 0 -160px 1.5em 160px;px325,8713 -.push-5 { margin: 0 -200px 1.5em 200px;px327,8756 -.push-6 { margin: 0 -240px 1.5em 240px;px329,8799 -.push-7 { margin: 0 -280px 1.5em 280px;px331,8842 -.push-8 { margin: 0 -320px 1.5em 320px;px333,8885 -.push-9 { margin: 0 -360px 1.5em 360px;px335,8928 -.push-10 { margin: 0 -400px 1.5em 400px;px337,8971 -.push-11 { margin: 0 -440px 1.5em 440px;px339,9015 -.push-12 { margin: 0 -480px 1.5em 480px;px341,9059 -.push-13 { margin: 0 -520px 1.5em 520px;px343,9103 -.push-14 { margin: 0 -560px 1.5em 560px;px345,9147 -.push-15 { margin: 0 -600px 1.5em 600px;px347,9191 -.push-16 { margin: 0 -640px 1.5em 640px;px349,9235 -.push-17 { margin: 0 -680px 1.5em 680px;px351,9279 -.push-18 { margin: 0 -720px 1.5em 720px;px353,9323 -.push-19 { margin: 0 -760px 1.5em 760px;px355,9367 -.push-20 { margin: 0 -800px 1.5em 800px;px357,9411 -.push-21 { margin: 0 -840px 1.5em 840px;px359,9455 -.push-22 { margin: 0 -880px 1.5em 880px;px361,9499 -.push-23 { margin: 0 -920px 1.5em 920px;px363,9543 -.push-24 { margin: 0 -960px 1.5em 960px;px365,9587 -.feedback,feedback373,9773 -.feedback, .error,error373,9773 -.feedback, .error, .alert,alert373,9773 -.feedback, .error, .alert, .notice,notice373,9773 -.feedback, .error, .alert, .notice, .success,success373,9773 -.error,error375,9893 -.error a,376,9972 -input.text,text401,10607 -input.text, input.title,title401,10607 -input.text, input.title, input[input401,10607 -input.text, input.title, input[type=email], input[input401,10607 -input.text,text410,10900 -input.text, input.title,title410,10900 -input.text, input.title, input[input410,10900 -input.text, input.title, input[type=email], input[input410,10900 -input.text, input.title, input[type=email], input[type=text], input[input410,10900 -input.text:focus,focus411,11048 -input.text:focus, input.title:focus,focus411,11048 -input.text:focus, input.title:focus, input[type=email]:focus,focus411,11048 -input.text:focus, input.title:focus, input[type=email]:focus, input[type=text]:focus,focus411,11048 -input.text:focus, input.title:focus, input[type=email]:focus, input[type=text]:focus, input[type=password]:focus,focus411,11048 -input.text,text415,11285 -input.text, input.title,title415,11285 -input.text, input.title, input[input415,11285 -input.text, input.title, input[type=email], input[input415,11285 -ul,421,11517 -div.paginator span.page:hover,hover470,14146 -div.paginator span.page:hover, div.paginator span.next:hover,hover470,14146 -div.paginator span.page:hover a,471,14273 -div.paginator span.page:hover a, div.paginator span.next:hover a,471,14273 -.hgbobject .gbobject-content pre,488,15666 -.gbobject-widgets ul,494,16239 -ol#comment-list,list498,16409 -ol#comment-list, ol#pingback-list,list498,16409 -ol#comment-list li,499,16516 -ol#comment-list li, ol#pingback-list li,499,16516 -ol#comment-list li.box2,box2500,16629 -ol#comment-list li.box2, ol#pingback-list li.box2,box2500,16629 -ol#comment-list li.post-author,author501,16760 -ol#comment-list li.post-author, ol#pingback-list li.post-author,author501,16760 -ol#comment-list li p,502,16878 -ol#comment-list li p, ol#pingback-list li p,502,16878 -ol#comment-list li img,503,16972 -ol#comment-list li img, ol#pingback-list li img,503,16972 -ol#comment-list li .pingback-body,body504,17064 -ol#comment-list li .pingback-body, ol#comment-list li .trackback-body,body504,17064 -ol#comment-list li .pingback-body, ol#comment-list li .trackback-body, ol#pingback-list li .pingback-body,body504,17064 -ol#comment-list li .pingback-body, ol#comment-list li .trackback-body, ol#pingback-list li .pingback-body, ol#pingback-list li .trackback-body,body504,17064 -ol#comment-list li .pingback-body, ol#comment-list li .trackback-body, ol#pingback-list li .pingback-body, ol#pingback-list li .trackback-body, ol#trackback-list li .pingback-body,body504,17064 -ol#comment-list li .comment-author,author505,17300 -ol#comment-list li .comment-author, ol#comment-list li .pingback-author,author505,17300 -ol#comment-list li .comment-author, ol#comment-list li .pingback-author, ol#comment-list li .trackback-author,author505,17300 -ol#comment-list li .comment-author, ol#comment-list li .pingback-author, ol#comment-list li .trackback-author, ol#pingback-list li .comment-author,author505,17300 -ol#comment-list li .comment-author, ol#comment-list li .pingback-author, ol#comment-list li .trackback-author, ol#pingback-list li .comment-author, ol#pingback-list li .pingback-author,author505,17300 -ol#comment-list li .comment-author, ol#comment-list li .pingback-author, ol#comment-list li .trackback-author, ol#pingback-list li .comment-author, ol#pingback-list li .pingback-author, ol#pingback-list li .trackback-author,author505,17300 -ol#comment-list li .comment-author, ol#comment-list li .pingback-author, ol#comment-list li .trackback-author, ol#pingback-list li .comment-author, ol#pingback-list li .pingback-author, ol#pingback-list li .trackback-author, ol#trackback-list li .comment-author,author505,17300 -ol#comment-list li .comment-author, ol#comment-list li .pingback-author, ol#comment-list li .trackback-author, ol#pingback-list li .comment-author, ol#pingback-list li .pingback-author, ol#pingback-list li .trackback-author, ol#trackback-list li .comment-author, ol#trackback-list li .pingback-author,author505,17300 - -static/objectapp/css/dashboard_objectapp.css,147 -.module table th,5,117 -.managelink managelink7,174 -input,11,400 -input, textarea,11,400 -.vTextField,vTextField13,456 -.required label,15,504 - -static/objectapp/js/wymeditor/iframe/default/wymiframe.html,24 -WYMeditor iframe21,646 - -static/objectapp/js/wymeditor/iframe/default/lbl-p.png,992 -ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡só5¦KË—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›ÜÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌ㧛§Âóç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËýø¿áyòñN`Áå½³k™¥5»/>B
Yr“oÀòùc3Üg,šÑÊZú0Ì&LÖŽ†Ïß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´StqtQ´Stq12,1547 -ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡só5¦KË—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›ÜÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌ㧛§Âóç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËýø¿áyòñN`Áå½³k™¥5»/>B
Yr“oÀòùc3Üg,šÑÊZú0Ì&LÖŽ†Ïß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûgYû12,1547 -ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡só5¦KË—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›ÜÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌ㧛§Âóç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËýø¿áyòñN`Áå½³k™¥5»/>B
Yr“oÀòùc3Üg,šÑÊZú0Ì&LÖŽ†Ïß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ©Œ¹;Ûj¶rvg¬jlRlc웸j¶rvg¬jlRlcì›12,1547 - -static/objectapp/js/wymeditor/iframe/default/wymiframe.css,3744 - p,26,671 - h1,27,676 - h2,28,682 - h3,29,688 - h4,30,694 - h5,31,700 - h6,32,706 - ul,33,712 - ol,34,718 - table,35,724 - blockquote,36,733 - ul,42,958 - h1 h1,77,2463 - h1 h1, h1 h2,77,2463 - h1 h1, h1 h2, h1 h3,77,2463 - h1 h1, h1 h2, h1 h3, h1 h4,77,2463 - h1 h1, h1 h2, h1 h3, h1 h4, h1 h5,77,2463 - h1 h1, h1 h2, h1 h3, h1 h4, h1 h5, h1 h6,77,2463 - h1 h1, h1 h2, h1 h3, h1 h4, h1 h5, h1 h6, h1 p,77,2463 - h1 h1, h1 h2, h1 h3, h1 h4, h1 h5, h1 h6, h1 p, h1 pre,77,2463 - h1 h1, h1 h2, h1 h3, h1 h4, h1 h5, h1 h6, h1 p, h1 pre, h1 address,77,2463 - h2 h1,78,2533 - h2 h1, h2 h2,78,2533 - h2 h1, h2 h2, h2 h3,78,2533 - h2 h1, h2 h2, h2 h3, h2 h4,78,2533 - h2 h1, h2 h2, h2 h3, h2 h4, h2 h5,78,2533 - h2 h1, h2 h2, h2 h3, h2 h4, h2 h5, h2 h6,78,2533 - h2 h1, h2 h2, h2 h3, h2 h4, h2 h5, h2 h6, h2 p,78,2533 - h2 h1, h2 h2, h2 h3, h2 h4, h2 h5, h2 h6, h2 p, h2 pre,78,2533 - h2 h1, h2 h2, h2 h3, h2 h4, h2 h5, h2 h6, h2 p, h2 pre, h2 address,78,2533 - h3 h1,79,2603 - h3 h1, h3 h2,79,2603 - h3 h1, h3 h2, h3 h3,79,2603 - h3 h1, h3 h2, h3 h3, h3 h4,79,2603 - h3 h1, h3 h2, h3 h3, h3 h4, h3 h5,79,2603 - h3 h1, h3 h2, h3 h3, h3 h4, h3 h5, h3 h6,79,2603 - h3 h1, h3 h2, h3 h3, h3 h4, h3 h5, h3 h6, h3 p,79,2603 - h3 h1, h3 h2, h3 h3, h3 h4, h3 h5, h3 h6, h3 p, h3 pre,79,2603 - h3 h1, h3 h2, h3 h3, h3 h4, h3 h5, h3 h6, h3 p, h3 pre, h3 address,79,2603 - h4 h1,80,2673 - h4 h1, h4 h2,80,2673 - h4 h1, h4 h2, h4 h3,80,2673 - h4 h1, h4 h2, h4 h3, h4 h4,80,2673 - h4 h1, h4 h2, h4 h3, h4 h4, h4 h5,80,2673 - h4 h1, h4 h2, h4 h3, h4 h4, h4 h5, h4 h6,80,2673 - h4 h1, h4 h2, h4 h3, h4 h4, h4 h5, h4 h6, h4 p,80,2673 - h4 h1, h4 h2, h4 h3, h4 h4, h4 h5, h4 h6, h4 p, h4 pre,80,2673 - h4 h1, h4 h2, h4 h3, h4 h4, h4 h5, h4 h6, h4 p, h4 pre, h4 address,80,2673 - h5 h1,81,2743 - h5 h1, h5 h2,81,2743 - h5 h1, h5 h2, h5 h3,81,2743 - h5 h1, h5 h2, h5 h3, h5 h4,81,2743 - h5 h1, h5 h2, h5 h3, h5 h4, h5 h5,81,2743 - h5 h1, h5 h2, h5 h3, h5 h4, h5 h5, h5 h6,81,2743 - h5 h1, h5 h2, h5 h3, h5 h4, h5 h5, h5 h6, h5 p,81,2743 - h5 h1, h5 h2, h5 h3, h5 h4, h5 h5, h5 h6, h5 p, h5 pre,81,2743 - h5 h1, h5 h2, h5 h3, h5 h4, h5 h5, h5 h6, h5 p, h5 pre, h5 address,81,2743 - h6 h1,82,2813 - h6 h1, h6 h2,82,2813 - h6 h1, h6 h2, h6 h3,82,2813 - h6 h1, h6 h2, h6 h3, h6 h4,82,2813 - h6 h1, h6 h2, h6 h3, h6 h4, h6 h4,82,2813 - h6 h1, h6 h2, h6 h3, h6 h4, h6 h4, h6 h6,82,2813 - h6 h1, h6 h2, h6 h3, h6 h4, h6 h4, h6 h6, h6 p,82,2813 - h6 h1, h6 h2, h6 h3, h6 h4, h6 h4, h6 h6, h6 p, h6 pre,82,2813 - h6 h1, h6 h2, h6 h3, h6 h4, h6 h4, h6 h6, h6 p, h6 pre, h6 address,82,2813 - p h1,83,2883 - p h1, p h2,83,2883 - p h1, p h2, p h3,83,2883 - p h1, p h2, p h3, p h4,83,2883 - p h1, p h2, p h3, p h4, p h5,83,2883 - p h1, p h2, p h3, p h4, p h5, p h6,83,2883 - p h1, p h2, p h3, p h4, p h5, p h6, p pre,83,2883 - p h1, p h2, p h3, p h4, p h5, p h6, p pre, p address,83,2883 - pre h1,84,2939 - pre h1, pre h2,84,2939 - pre h1, pre h2, pre h3,84,2939 - pre h1, pre h2, pre h3, pre h4,84,2939 - pre h1, pre h2, pre h3, pre h4, pre h5,84,2939 - pre h1, pre h2, pre h3, pre h4, pre h5, pre h6,84,2939 - pre h1, pre h2, pre h3, pre h4, pre h5, pre h6, pre p,84,2939 - pre h1, pre h2, pre h3, pre h4, pre h5, pre h6, pre p, pre pre,84,2939 - pre h1, pre h2, pre h3, pre h4, pre h5, pre h6, pre p, pre pre, pre address,84,2939 - address h1,85,3018 - address h1, address h2,85,3018 - address h1, address h2, address h3,85,3018 - address h1, address h2, address h3, address h4,85,3018 - address h1, address h2, address h3, address h4, address h5,85,3018 - address h1, address h2, address h3, address h4, address h5, address h6,85,3018 - address p,86,3092 - address p, address pre,86,3092 - -static/objectapp/js/wymeditor/skins/twopanels/icons.png,45 -]11,2788 -]ÉBXóhžhò‰Üõ.Õ3ϲ±›RR12,3024 - -static/objectapp/js/wymeditor/skins/twopanels/skin.css,393 - .wym_skin_twopanels p,21,599 - .wym_skin_twopanels p, .wym_skin_twopanels h2,21,599 - .wym_skin_twopanels p, .wym_skin_twopanels h2, .wym_skin_twopanels h3,21,599 - .wym_skin_twopanels ul,22,678 - .wym_skin_twopanels .wym_section h2,67,2688 - .wym_skin_twopanels .wym_dropdown:hover ul,86,3967 - .wym_skin_twopanels .wym_buttons li a 93,4443 - -static/objectapp/js/wymeditor/skins/silver/README,21 -<script type=17,564 - -static/objectapp/js/wymeditor/skins/silver/skin.css,446 - .wym_skin_silver p,21,603 - .wym_skin_silver p, .wym_skin_silver h2,21,603 - .wym_skin_silver p, .wym_skin_silver h2, .wym_skin_silver h3,21,603 - .wym_skin_silver ul,22,673 - .wym_skin_silver .wym_section h2,67,2630 - .wym_skin_silver .wym_dropdown:hover ul,87,4007 - .wym_skin_silver .wym_buttons li a 96,4728 -.wym_skin_silver .wym_panel a,277,12569 -div.wym_dropdown a:hover,hover292,12903 - -static/objectapp/js/wymeditor/skins/silver/COPYING,1403 - Version 2,47 - Copyright 4,95 -your programs,20,926 - When we speak of free software,22,947 - When we speak of free software, we are referring to freedom,22,947 -11 of the WIPO copyright treaty adopted on 20 December 183,9244 - When you convey a covered work,187,9381 -the covered work,190,9592 -modification of the work as a means of enforcing,191,9663 -users, your or third parties' legal rights to forbid circumvention oftion of192,9732 -receive it,198,9929 -receive it, in any medium,198,9929 -appropriately publish on each copy an appropriate copyright notice;199,9992 -non-permissive terms added in accord with section 7 apply to the code;201,10118 -keep intact all notices of the absence of any warranty;202,10189 - Appropriate Legal Notices; however,231,11578 - Notices displayed by works containing it;370,19236 - c) Prohibiting misrepresentation of the origin of that material,372,19286 - reasonable ways as different from the original version;374,19425 - material by anyone who conveys the material 383,19780 -modify it is void,411,21191 - However,415,21356 - the Free Software Foundation,639,33294 - the Free Software Foundation, either version 3 of the License,639,33294 - the Free Software Foundation, either version 3 of the License, or639,33294 -parts of the General Public License. Of course,661,34332 -might be different;662,34405 - -static/objectapp/js/wymeditor/skins/silver/images/bg.selector.silver.gif,72 -J´¨Ñ£H“*zcÔ‰>iö”JÀ…iö”JÀ…2,620 -Œ HÁVP‚¬ Ž2hÁF*$! @(6,1500 - -static/objectapp/js/wymeditor/skins/minimal/skin.css,270 -.wym_skin_minimal div.wym_tools h2,32,718 -.wym_skin_minimal div.wym_containers h2,33,754 -.wym_skin_minimal div.wym_area_top,wym_area_top48,1026 -.wym_skin_minimal div.wym_area_right,wym_area_right49,1062 -.wym_skin_minimal div.wym_containers,wym_containers50,1100 - -static/objectapp/js/wymeditor/skins/minimal/images/bg.selector.silver.gif,72 -J´¨Ñ£H“*zcÔ‰>iö”JÀ…iö”JÀ…2,620 -Œ HÁVP‚¬ Ž2hÁF*$! @(6,1500 - -static/objectapp/js/wymeditor/skins/default/icons.png,45 -]11,2788 -]ÉBXóhžhò‰Üõ.Õ3ϲ±›RR12,3024 - -static/objectapp/js/wymeditor/skins/default/skin.css,373 - .wym_skin_default p,20,575 - .wym_skin_default p, .wym_skin_default h2,20,575 - .wym_skin_default p, .wym_skin_default h2, .wym_skin_default h3,20,575 - .wym_skin_default ul,21,648 - .wym_skin_default .wym_section h2,66,2613 - .wym_skin_default .wym_dropdown:hover ul,85,3868 - .wym_skin_default .wym_buttons li a 92,4336 - -static/objectapp/js/wymeditor/skins/wymeditor_icon.png,13 -DËD5,704 - -static/objectapp/js/wymeditor/skins/django/icons.png,855 -B„5lB„5l5,564 -g ˜ig ˜8,1412 -¦4T•s•ž÷=2#·—ù|ÝZ{«õ¤&ªä.ò{‰À'K
Üøµ#G³æTã\¥†#9;ôx¦´ÉE& V ¿Ùàõ~ðÊšxP‹í‚´ë·Ei¹ÏE¤üƒKvfûFQµ¸Ìm¤sþ—ŠªRP¸ì< Ý •-q†F8R‚–:C#ÓlÚ’ghR‚–<C#ÓlÚ’ghR‚–<C“´ä˜:¹%ÏФ¡ž¡9½fjAŸ.1¬ûq„g"ŠÄŽê?9‚1G¿‡èÚ¬}®;%iÿ1iÿ111,2665 -v@vu¤ë¼ËJndŒ:*¯<pz ”k[?Ѹ֚‹œ ›ÌœtB"p“Õ+™W‚ʚ墖޶°AÔxžãu1SSl[îÿ;#a¼þ|ºÅßñ9Šm H ½‘„²´Êñîœ]_‘^]+Ü‚cH¨9Á×oýÝþ}È»!v$`é~4‹r±edK @Ò
}%ò¢6Á’@(§À–(r¢¼9qÐ…æȲnœä\_H5‡¢çdƒªWPh®l¯ÈÙ³gk&ŽŽì×yŸ73gÜn«oR4ÐÏ_Ž5Š¦-2*J£¿fÿÃxžÊüi£ZhùùóçsÀ«¯¾:0ùÓš¿Î°I³éÁƒ¾¿¼ž;w®-8U½µl'í
´‚õû¦Ç>pÝæâ'@Ϭé·ãÕW_…ÞmVƹ&Ðüâ׿âYá*}1íHpîÜ9£~ûô3¼Œ,S]S15,4078 -Ýûö¶t§tYJ³Št§tYJ³16,4628 -î ¸Y„Do†P8uê_Í&`}Ã1ËÊÊŒØ<ïŠ ººZê_B !KÞ‡—KÞ‡18,5109 -ÑU]U20,5704 -ÑU]PPÀPP20,5704 -‹«0€ýÀÆvB~Q/ÓI[P[YÁ]ÃÁk|àˆö© /ká@ldQ}-†v‹`O ÍöJ ´Ú*nµV[ÏnµV[22,6043 - -static/objectapp/js/wymeditor/skins/django/skin.css,363 - .wym_skin_django p,21,610 - .wym_skin_django p, .wym_skin_django h2,21,610 - .wym_skin_django p, .wym_skin_django h2, .wym_skin_django h3,21,610 - .wym_skin_django ul,22,680 - .wym_skin_django .wym_section h2,67,2667 - .wym_skin_django .wym_dropdown:hover ul,86,3923 - .wym_skin_django .wym_buttons li a 95,4488 - -static/objectapp/js/wymeditor/skins/compact/icons.png,45 -]11,2788 -]ÉBXóhžhò‰Üõ.Õ3ϲ±›RR12,3024 - -static/objectapp/js/wymeditor/skins/compact/skin.css,373 - .wym_skin_compact p,21,633 - .wym_skin_compact p, .wym_skin_compact h2,21,633 - .wym_skin_compact p, .wym_skin_compact h2, .wym_skin_compact h3,21,633 - .wym_skin_compact ul,22,706 - .wym_skin_compact .wym_section h2,67,2657 - .wym_skin_compact .wym_dropdown:hover ul,86,3912 - .wym_skin_compact .wym_buttons li a 93,4380 - -static/objectapp/js/wymeditor/plugins/resizable/readme.txt,145 -The ``resizable`` plugin takes exactly one parameter,61,1916 - minHeight:minHeight67,2204 - var jQueryPlugins 89,3049 -Changelog110,3941 - -static/objectapp/js/wymeditor/plugins/tidy/README,89 -Copyright (c) 2005 - 2009 Jean-Francois Hovinne,2,62 -Dual licensed under the MIT 3,137 - -static/objectapp/js/markitup/templates/preview.html,33 -markItUp! preview template5,243 - -static/objectapp/js/markitup/skins/django/style.css,408 -.markItUp a:link,link9,302 - font:12px 'Courier New', Courier,28,652 - font:12px 'Courier New', Courier, monospace;28,652 - padding:5px;px29,698 - width:790px;px30,712 - height:220px;px31,726 - clear:both;both32,741 - line-height:18px;px33,754 - overflow:auto;auto34,773 -.markItUpHeader ul .markItUpDropMenu markItUpDropMenu68,1428 -.markItUpHeader ul ul .markItUpDropMenu markItUpDropMenu87,1841 - -static/objectapp/js/markitup/skins/django/images/menu.png,270 -wAÁ©÷~¸á“ÐkQ)?Âö•r• ár• 6,1115 -pOšxfØpOšxf9,1905 -chg€Ð’ê¡*ƒ…òäKxZÎ×¹RiPÉz¯Å»ozÐ+ÁœdcnÈ:0ÕªJ±RÓÛâÛ(V}svàÍ·äBà
–ðbÛ`Ö”ÌúàFÛðë9F#Ù ¦ÞÜb
¼Ñ¾r=r10,2288 -¹1Ëúþ+Kú¨èdXŒ];JÄ£Žïcˆx$§DÑ×·Þž¢X`i× ì¨ëÑ@lÌûrn°m$¨Æ^×9΄ïzBGÏžzBGÏ53,17284 - -static/objectapp/js/markitup/sets/textile/images/quotes.png,50 -µDMs6gRÎLDMs6gRÎ4,156 -µDMs6gRÎL:,Óp÷p4,156 - -static/objectapp/js/markitup/sets/textile/images/h2.png,11 -${$4,125 - -static/objectapp/js/markitup/sets/html/images/h2.png,11 -${$4,125 - -static/objectapp/js/markitup/sets/html/images/image.png,101 -‰PNGPNG1,0 -º]ñ»Hà Bv„åÌ“µÚˆ_Sÿ%Ò;ô6×9Host
wöEwöE4,391 -ó]*f"Å"ô½.\00CLâCL5,439 - -static/objectapp/js/markitup/sets/markdown/images/quotes.png,50 -µDMs6gRÎLDMs6gRÎ4,156 -µDMs6gRÎL:,Óp÷p4,156 - -static/objectapp/js/markitup/sets/markdown/images/h2.png,11 -${$4,125 - -static/objectapp/js/markitup/sets/restructuredtext/images/quotes.png,50 -µDMs6gRÎLDMs6gRÎ4,156 -µDMs6gRÎL:,Óp÷p4,156 - -static/objectapp/js/markitup/sets/restructuredtext/images/h2.png,11 -${$4,125 - -ping.py,417 -class URLRessources(17,347 - def __init__(20,433 -class DirectoryPinger(29,843 - def __init__(32,921 - def run(44,1321 - def ping_gbobject(54,1740 -class ExternalUrlsPinger(78,2713 - def __init__(81,2797 - def run(93,3213 - def is_external_url(108,3770 - def find_external_urls(115,4029 - def find_pingback_href(123,4382 - def find_pingback_urls(132,4768 - def pingback_url(160,5812 - -plugins/cms_app.py,31 -class ObjectappApphook(10,230 - -plugins/cms_plugins.py,318 -class CMSLatestGbobjectsPlugin(19,547 - def formfield_for_manytomany(52,1395 - def render(61,1807 - def icon_src(85,2782 -class CMSSelectedGbobjectsPlugin(90,2923 - def render(100,3297 - def icon_src(107,3587 -class CMSRandomGbobjectsPlugin(112,3728 - def render(121,4063 - def icon_src(129,4408 - -plugins/migrations/0004_auto__add_field_latestgbobjectsplugin_subobjecttypes.py,71 -class Migration(5,63 - def forwards(7,98 - def backwards(12,349 - -plugins/migrations/0005_auto__add_randomgbobjectsplugin.py,71 -class Migration(5,63 - def forwards(7,98 - def backwards(17,668 - -plugins/migrations/0002_auto__add_field_latestgbobjectsplugin_template_to_render__add_field_sele.py,71 -class Migration(5,63 - def forwards(7,98 - def backwards(15,700 - -plugins/migrations/0001_initial.py,73 -class Migration(6,92 - def forwards(8,127 - def backwards(33,1752 - -plugins/migrations/0003_auto__del_field_latestgbobjectsplugin_objecttype__del_field_latestgbobjectsp.py,73 -class Migration(6,92 - def forwards(8,127 - def backwards(40,2041 - -plugins/admin.py,67 -class GbobjectPlaceholderAdmin(14,421 - def save_model(33,1637 - -plugins/models.py,364 -class LatestGbobjectsPlugin(21,698 - def render_template(42,1508 - def copy_relations(47,1666 - def __unicode__(53,1923 -class SelectedGbobjectsPlugin(57,2012 - def render_template(68,2391 - def copy_relations(73,2549 - def __unicode__(77,2708 -class RandomGbobjectsPlugin(81,2795 - def __unicode__(91,3163 -def invalidate_menu_cache(95,3252 - -plugins/placeholder.py,61 -class GbobjectPlaceholder(7,139 - class Meta:Meta12,299 - -plugins/menu.py,272 -class GbobjectMenu(17,506 - def get_nodes(21,643 -class ObjecttypeMenu(63,2464 - def get_nodes(67,2579 -class AuthorMenu(80,3136 - def get_nodes(84,3239 -class TagMenu(98,3842 - def get_nodes(102,3936 -class GbobjectModifier(115,4459 - def modify(119,4593 - -sitemaps.py,459 -class GbobjectSitemap(13,320 - def items(18,430 - def lastmod(22,533 -class ObjecttypeSitemap(27,648 - def cache(31,744 - def items(42,1195 - def lastmod(48,1371 - def priority(55,1593 -class AuthorSitemap(63,1817 - def items(68,1924 - def lastmod(72,2023 - def location(79,2242 -class TagSitemap(84,2382 - def cache(88,2464 - def items(97,2856 - def lastmod(103,2996 - def priority(108,3162 - def location(115,3381 - -models.py,994 -class Author(52,1966 - def gbobjects_published(58,2094 - def get_absolute_url(63,2254 - class Meta:Meta68,2430 -class Gbobject(74,2501 - def get_relations(147,5681 - def get_attributes(188,7648 - def get_nbh(198,7976 - def get_relations1(218,8649 - def get_rendered_nbh(239,9396 - def html_content(273,10506 - def previous_gbobject(287,11007 - def next_gbobject(295,11253 - def word_count(303,11517 - def is_actual(308,11661 - def is_visible(314,11870 - def related_published(319,12024 - def discussions(324,12175 - def comments(330,12356 - def pingbacks(336,12550 - def trackbacks(341,12694 - def comments_are_open(346,12841 - def short_url(354,13144 - def __unicode__(358,13257 - def memberof_sentence(362,13325 - def get_absolute_url(372,13742 - class Meta:Meta380,14059 -class Process(390,14350 - def __unicode__(416,15811 - class Meta:Meta419,15865 -class System(426,16090 - def __unicode__(457,17561 - -xmlrpc/metaweblog.py,475 -def authenticate(30,955 -def blog_structure(46,1597 -def user_structure(54,1839 -def author_structure(66,2235 -def Objecttype_structure(74,2449 -def post_structure(90,3127 -def get_users_blogs(119,4485 -def get_user_info(128,4798 -def get_authors(137,5118 -def delete_post(147,5507 -def get_post(157,5906 -def get_recent_posts(167,6287 -def get_objecttypes(177,6718 -def new_Objecttype(187,7127 -def new_post(204,7901 -def edit_post(248,9902 -def new_media_object(291,11783 - -xmlrpc/pingback.py,113 -def generate_pingback_content(28,835 -def pingback_ping(54,1557 -def pingback_extensions_get_pingbacks(114,3742 - -comparison.py,268 -def pearson_score(9,166 -class ClusteredModel(26,691 - def __init__(30,795 - def dataset(34,907 -class VectorBuilder(44,1233 - def __init__(47,1315 - def build_dataset(54,1525 - def generate_key(82,2521 - def flush(86,2655 - def __call__(91,2786 - -xmlrpc/__init__.py,0 - -plugins/migrations/__init__.py,0 - -plugins/__init__.py,0 - -plugins/settings.py,0 - -static/objectapp/js/markitup/sets/restructuredtext/images/h4.png,0 - -static/objectapp/js/markitup/sets/restructuredtext/images/list-numeric.png,0 - -static/objectapp/js/markitup/sets/restructuredtext/images/code.png,0 - -static/objectapp/js/markitup/sets/restructuredtext/images/list-bullet.png,0 - -static/objectapp/js/markitup/sets/restructuredtext/images/h5.png,0 - -static/objectapp/js/markitup/sets/restructuredtext/images/picture.png,0 - -static/objectapp/js/markitup/sets/restructuredtext/images/h3.png,0 - -static/objectapp/js/markitup/sets/restructuredtext/images/link.png,0 - -static/objectapp/js/markitup/sets/restructuredtext/images/preview.png,0 - -static/objectapp/js/markitup/sets/restructuredtext/images/h1.png,0 - -static/objectapp/js/markitup/sets/restructuredtext/images/italic.png,0 - -static/objectapp/js/markitup/sets/restructuredtext/images/bold.png,0 - -static/objectapp/js/markitup/sets/restructuredtext/style.css,0 - -static/objectapp/js/markitup/sets/markdown/images/h4.png,0 - -static/objectapp/js/markitup/sets/markdown/images/list-numeric.png,0 - -static/objectapp/js/markitup/sets/markdown/images/code.png,0 - -static/objectapp/js/markitup/sets/markdown/images/list-bullet.png,0 - -static/objectapp/js/markitup/sets/markdown/images/h5.png,0 - -static/objectapp/js/markitup/sets/markdown/images/picture.png,0 - -static/objectapp/js/markitup/sets/markdown/images/h3.png,0 - -static/objectapp/js/markitup/sets/markdown/images/link.png,0 - -static/objectapp/js/markitup/sets/markdown/images/preview.png,0 - -static/objectapp/js/markitup/sets/markdown/images/h1.png,0 - -static/objectapp/js/markitup/sets/markdown/images/italic.png,0 - -static/objectapp/js/markitup/sets/markdown/images/h6.png,0 - -static/objectapp/js/markitup/sets/markdown/images/bold.png,0 - -static/objectapp/js/markitup/sets/markdown/style.css,0 - -static/objectapp/js/markitup/sets/html/images/h4.png,0 - -static/objectapp/js/markitup/sets/html/images/list-numeric.png,0 - -static/objectapp/js/markitup/sets/html/images/clean.png,0 - -static/objectapp/js/markitup/sets/html/images/list-item.png,0 - -static/objectapp/js/markitup/sets/html/images/list-bullet.png,0 - -static/objectapp/js/markitup/sets/html/images/h5.png,0 - -static/objectapp/js/markitup/sets/html/images/picture.png,0 - -static/objectapp/js/markitup/sets/html/images/h3.png,0 - -static/objectapp/js/markitup/sets/html/images/link.png,0 - -static/objectapp/js/markitup/sets/html/images/preview.png,0 - -static/objectapp/js/markitup/sets/html/images/h1.png,0 - -static/objectapp/js/markitup/sets/html/images/italic.png,0 - -static/objectapp/js/markitup/sets/html/images/stroke.png,0 - -static/objectapp/js/markitup/sets/html/images/paragraph.png,0 - -static/objectapp/js/markitup/sets/html/images/h6.png,0 - -static/objectapp/js/markitup/sets/html/images/bold.png,0 - -static/objectapp/js/markitup/sets/html/style.css,0 - -static/objectapp/js/markitup/sets/textile/images/h4.png,0 - -static/objectapp/js/markitup/sets/textile/images/list-numeric.png,0 - -static/objectapp/js/markitup/sets/textile/images/code.png,0 - -static/objectapp/js/markitup/sets/textile/images/list-bullet.png,0 - -static/objectapp/js/markitup/sets/textile/images/h5.png,0 - -static/objectapp/js/markitup/sets/textile/images/picture.png,0 - -static/objectapp/js/markitup/sets/textile/images/h3.png,0 - -static/objectapp/js/markitup/sets/textile/images/link.png,0 - -static/objectapp/js/markitup/sets/textile/images/preview.png,0 - -static/objectapp/js/markitup/sets/textile/images/h1.png,0 - -static/objectapp/js/markitup/sets/textile/images/italic.png,0 - -static/objectapp/js/markitup/sets/textile/images/stroke.png,0 - -static/objectapp/js/markitup/sets/textile/images/paragraph.png,0 - -static/objectapp/js/markitup/sets/textile/images/h6.png,0 - -static/objectapp/js/markitup/sets/textile/images/bold.png,0 - -static/objectapp/js/markitup/sets/textile/style.css,0 - -static/objectapp/js/markitup/skins/django/images/submenu.png,0 - -static/objectapp/js/markitup/skins/django/images/handle.png,0 - -static/objectapp/js/markitup/templates/preview.css,0 - -static/objectapp/js/wymeditor/plugins/fullscreen/icon_fullscreen.gif,0 - -static/objectapp/js/wymeditor/plugins/tidy/wand.png,0 - -static/objectapp/js/wymeditor/plugins/tidy/tidy.php,0 - -static/objectapp/js/wymeditor/skins/minimal/images/bg.wymeditor.png,0 - -static/objectapp/js/wymeditor/skins/minimal/images/icons.silver.gif,0 - -static/objectapp/js/wymeditor/skins/minimal/images/bg.header.gif,0 - -static/objectapp/js/wymeditor/skins/silver/images/bg.wymeditor.png,0 - -static/objectapp/js/wymeditor/skins/silver/images/icons.silver.gif,0 - -static/objectapp/js/wymeditor/skins/silver/images/bg.header.gif,0 - -static/objectapp/js/wymeditor/iframe/default/lbl-h5.png,0 - -static/objectapp/js/wymeditor/iframe/default/lbl-h3.png,0 - -static/objectapp/js/wymeditor/iframe/default/lbl-pre.png,0 - -static/objectapp/js/wymeditor/iframe/default/lbl-h6.png,0 - -static/objectapp/js/wymeditor/iframe/default/lbl-blockquote.png,0 - -static/objectapp/js/wymeditor/iframe/default/lbl-h1.png,0 - -static/objectapp/js/wymeditor/iframe/default/lbl-h4.png,0 - -static/objectapp/js/wymeditor/iframe/default/lbl-h2.png,0 - -static/objectapp/css/slider.css,0 - -static/objectapp/css/jquery.autocomplete.css,0 - -static/objectapp/css/wymeditor_styles.css,0 - -static/objectapp/css/src/slider.sass,0 - -static/objectapp/css/src/_gbobject.sass,0 - -static/objectapp/css/src/ie.sass,0 - -static/objectapp/css/src/_paginator.sass,0 - -static/objectapp/css/src/_calendar.sass,0 - -static/objectapp/css/src/_tag-cloud.sass,0 - -static/objectapp/img/background.gif,0 - -static/objectapp/img/tags.png,0 - -static/objectapp/img/rss.png,0 - -static/objectapp/img/bullet.png,0 - -static/objectapp/img/wlw/objectapp.png,0 - -static/objectapp/img/favicon.ico,0 - -static/objectapp/img/grid.png,0 - -static/objectapp/img/preview.png,0 - -static/objectapp/img/comments.png,0 - -static/objectapp/img/trans.png,0 - -static/objectapp/img/shorturl.png,0 - -static/objectapp/img/manage.png,0 - -static/objectapp/img/help.png,0 - -spam_checker/backends/__init__.py,0 - -templates/feeds/comment_title.html,0 - -templates/feeds/gbobject_title.html,0 - -templates/feeds/trackback_description.html,0 - -templates/feeds/gbobject_description.html,0 - -templates/feeds/comment_description.html,0 - -templates/feeds/pingback_description.html,0 - -templates/feeds/discussion_description.html,0 - -templates/feeds/trackback_title.html,0 - -templates/feeds/pingback_title.html,0 - -templates/feeds/discussion_title.html,0 - -templates/admin/objectapp/widgets/_content_stats.html,0 - -templates/admin/objectapp/widgets/recent_comments.html,0 - -templates/admin/objectapp/widgets/draft_gbobjects.html,0 - -templates/admin/objectapp/widgets/_recent_linkbacks.html,0 - -templates/admin/objectapp/widgets/_draft_gbobjects.html,0 - -templates/admin/objectapp/widgets/recent_linkbacks.html,0 - -templates/admin/objectapp/widgets/_recent_comments.html,0 - -templates/admin/objectapp/widgets/content_stats.html,0 - -templates/comments/comment_reply_email.txt,0 - -templates/comments/comment_notification_email.txt,0 - -templates/comments/objectapp/gbobject/form.html,0 - -templates/comments/comment_authors_email.txt,0 - -templates/objectapp/author/gbobject_list.html,0 - -templates/objectapp/gbobject_archive.html,0 - -templates/objectapp/tag/gbobject_list.html,0 - -templates/objectapp/cms/gbobject_detail.html,0 - -templates/objectapp/cms/random_gbobjects.html,0 - -templates/objectapp/cms/gbobject_list.html,0 - -templates/objectapp/objecttype/gbobject_list.html,0 - -templates/objectapp/_subtype_detail.html,0 - -templates/objectapp/tags/breadcrumbs.html,0 - -templates/objectapp/tags/recent_gbobjects.html,0 - -templates/objectapp/tags/tag_cloud.html,0 - -templates/objectapp/tags/random_gbobjects.html,0 - -templates/objectapp/tags/recent_comments.html,0 - -templates/objectapp/tags/recent_linkbacks.html,0 - -templates/objectapp/tags/popular_gbobjects.html,0 - -templates/objectapp/tags/similar_gbobjects.html,0 - -templates/objectapp/tags/archives_gbobjects.html,0 - -templates/objectapp/tags/objecttypes.html,0 - -templates/objectapp/tags/archives_gbobjects_tree.html,0 - -templates/objectapp/tags/calendar.html,0 - -templates/objectapp/tags/gbobjects.html,0 - -templates/objectapp/tags/featured_gbobjects.html,0 - -templates/objectapp/tags/dummy.html,0 - -templates/objectapp/tags/archives_gbobjects_link.html,0 - -templates/objectapp/tags/pagination.html,0 - -templates/objectapp/tags/authors.html,0 - -migrations/0001_initial.pyc,0 - -migrations/__init__.pyc,0 - -migrations/__init__.py,0 - -locale/de/LC_MESSAGES/django.po,0 - -locale/pt_BR/LC_MESSAGES/django.po,0 - -locale/zh_CN/LC_MESSAGES/django.po,0 - -locale/ru/LC_MESSAGES/django.po,0 - -locale/es/LC_MESSAGES/django.po,0 - -locale/hu/LC_MESSAGES/django.po,0 - -locale/it/LC_MESSAGES/django.po,0 - -locale/fr/LC_MESSAGES/django.po,0 - -locale/nl/LC_MESSAGES/django.po,0 - -locale/pl/LC_MESSAGES/django.po,0 - -templatetags/__init__.py,0 - -url_shortener/backends/__init__.py,0 - -admin/__init__.py,0 - -views/__init__.py,0 - -__init__.py,0 - -tests/templates/objectapp/gbobject_detail.html,0 - -tests/templates/objectapp/gbobject_search.html,0 - -tests/templates/objectapp/gbobject_list.html,0 - -tests/urls.py,0 - -urls/capabilities.py,0 - -urls/discussions.py,0 - -urls/sitemap.py,0 - -urls/objecttypes.py,0 - -urls/tags.py,0 - -urls/gbobjects.py,0 - -urls/search.py,0 - -urls/trackback.py,0 - -urls/__init__.py,0 - -urls/authors.py,0 - -urls/quick_gbobject.py,0 - -urls/feeds.py,0 - -management/commands/__init__.py,0 - -management/__init__.py,0 - -settings.py,0 - -testsettings.py,0 diff --git a/objectapp/models.py b/objectapp/models.py index cb9d467d..2673d1a6 100644 --- a/objectapp/models.py +++ b/objectapp/models.py @@ -97,7 +97,7 @@ from gstudio.models import Relation from gstudio.models import Node from gstudio.models import Edge from gstudio.models import Author - +import ast from objectapp.settings import UPLOAD_TO from objectapp.settings import MARKUP_LANGUAGE from objectapp.settings import GBOBJECT_TEMPLATES @@ -113,6 +113,7 @@ from objectapp.url_shortener import get_url_shortener from objectapp.signals import ping_directories_handler from objectapp.signals import ping_external_urls_handler from objectapp.settings import OBJECTAPP_VERSIONING + if OBJECTAPP_VERSIONING: import reversion from reversion.models import * @@ -208,12 +209,6 @@ class Gbobject(Node): objects = models.Manager() published = GbobjectPublishedManager() - - # @property - # def getdataType(self): - # gb = 'attribute'+str(self.get_dataType.display()) - # gb = gb.lower() - # return gb @property def getattributetypes(self): @@ -221,17 +216,30 @@ class Gbobject(Node): Returns the attributetypes of self as well as its parent's attributetype. """ try: - parenttype = [] + originalnt = [] + pt = [] attributetype = [] - returnlist = [] + returndict = {} obj = self - parenttype = obj.objecttypes.all() + originalnt = obj.objecttypes.all() + + for i in range(len(originalnt)): + obj = originalnt[i].ref + pt.append(obj) + while obj.parent: + pt.append((obj.parent).ref) + obj = obj.parent + attributetype.append(obj.subjecttype_of.all()) - for each in parenttype: + for each in pt: attributetype.append(each.subjecttype_of.all()) attributetype = [num for elem in attributetype for num in elem] - return attributetype + + for i in attributetype: + returndict.update({str(i.title):i.id}) + + return returndict.keys() except: return None @@ -240,6 +248,8 @@ class Gbobject(Node): @property def getrelationtypes(self): + originalnt= [] + originalpt = [] pt =[] #contains parenttype reltype =[] #contains relationtype titledict = {} #contains relationtype's title @@ -247,19 +257,22 @@ class Gbobject(Node): 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() + gb=self.ref + originalnt = gb.objecttypes.all() + for i in originalnt: + pt.append(i.ref) + + for i in range(len(originalnt)): + obj = originalnt[i].ref + while obj.parent: + pt.append((obj.parent).ref) + obj = obj.parent + pt.append(gb) 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] @@ -273,13 +286,14 @@ class Gbobject(Node): 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]}) + if pt[j].id == listval[i].left_subjecttype_id and (str(listval[i].left_applicable_nodetypes) == 'OT' or str(listval[i].left_applicable_nodetypes) == 'OB'): + finaldict.update({titledict.keys()[i]:titledict.values()[i]}) + if pt[j].id == listval[i].right_subjecttype_id and (str(listval[i].right_applicable_nodetypes)=='OT' or str(listval[i].right_applicable_nodetypes) == 'OB'): + finaldict.update({inverselist[i]:titledict.values()[i]}) - return finaldict.values() + + return finaldict.keys() def get_relations(self): relation_set = {} @@ -436,7 +450,7 @@ class Gbobject(Node): def get_graph_json(self): - # predicate_id={"plural":"a1","altnames":"a2","contains_members":"a3","contains_subtypes":"a4","prior_nodes":"a5", "posterior_nodes":"a6"} + g_json = {} g_json["node_metadata"]= [] g_json["relations"]=[] @@ -455,7 +469,7 @@ class Gbobject(Node): - this_node = {"_id":str(self.id),"title":self.title,"screen_name":self.title, "url":self.get_absolute_url(),"expanded":"true","refType":self.reftype} + this_node = {"_id":str(self.id),"title":self.title,"screen_name":self.title, "url":self.get_absolute_url(),"refType":self.reftype} g_json["node_metadata"].append(this_node) @@ -476,7 +490,7 @@ class Gbobject(Node): elif item.reftype!="Relation": # create nodes - g_json["node_metadata"].append({"_id":str(item.id),"screen_name":item.title,"title":self.title, "url":item.get_absolute_url(),"expanded":"false"}) + g_json["node_metadata"].append({"_id":str(item.id),"screen_name":item.title,"title":self.title, "url":item.get_absolute_url()}) g_json["relations"].append({"from":predicate_id[key] ,"type":str(key), "value":1,"to":item.id }) @@ -492,7 +506,7 @@ class Gbobject(Node): flag=0 - g_json["node_metadata"].append({"_id":str(item1.id),"screen_name":item1.title,"title":self.title, "url":item1.get_absolute_url(),"expanded":"false","refType":item.reftype,"inverse":item.relationtype.inverse,"flag":flag}) + g_json["node_metadata"].append({"_id":str(item1.id),"screen_name":item1.title,"title":self.title, "url":item1.get_absolute_url(),"refType":item.reftype,"inverse":item.relationtype.inverse,"flag":flag}) g_json["relations"].append({"from":predicate_id[key] ,"type":str(key), "value":1,"to":item1.id }) @@ -507,9 +521,8 @@ class Gbobject(Node): #print g_json return json.dumps(g_json) - @property - def get_relations1(self): + def get_rendered_relations(self): """ Returns all the relations of the nodetype """ @@ -533,7 +546,7 @@ class Gbobject(Node): if each.relationtype.title==key: fl=1 predicate_values.append(predicate) - reltype[key]=predicate_values + reltype[key]=predicate_values if fl==0: predicate_values=predicate reltype[relation]=predicate_values @@ -572,12 +585,26 @@ class Gbobject(Node): reltype[relation]=predicate_values relations['rrelations']=reltype return relations + @property def get_rendered_nbh(self): """ Returns the neighbourhood of the object """ fields = ['title','altname','pluralform'] + history=[] + version_list=self.get_ssid + version_list=self.get_ssid + if version_list: + length=len(version_list) + history_ssid=version_list[length-1] + history_dict=self.version_info(history_ssid) + history_nbh_dict=ast.literal_eval(history_dict['nbhood']) + #ssid_current.append(history_ssid) + history=history_nbh_dict['history'] + history.append(history_ssid) + else: + history.append(0) nbh = {} nbh['title'] = self.title nbh['altnames'] = self.altnames @@ -603,8 +630,8 @@ class Gbobject(Node): relns={} rellft={} relrgt={} - if self.get_relations1: - NTrelns=self.get_relations1 + if self.get_rendered_relations: + NTrelns=self.get_rendered_relations for key,value in NTrelns.items(): if key=="rrelations": relrgt={} @@ -612,9 +639,9 @@ class Gbobject(Node): relnvalue={} if isinstance(rgtvalue,list): for items in rgtvalue: - relnvalue[items]=items.get_absolute_url() + relnvalue[items.title]=items.get_absolute_url() else: - relnvalue[rgtvalue]=rgtvalue.get_absolute_url() + relnvalue[rgtvalue.title]=rgtvalue.get_absolute_url() relrgt[rgtkey]=relnvalue @@ -625,9 +652,9 @@ class Gbobject(Node): relnvalue={} if isinstance(lftvalue,list): for items in lftvalue: - relnvalue[items]=items.get_absolute_url() + relnvalue[items.title]=items.get_absolute_url() else: - relnvalue[lftvalue]=lftvalue.get_absolute_url() + relnvalue[lftvalue.title]=lftvalue.get_absolute_url() rellft[lftkey]=relnvalue @@ -637,7 +664,8 @@ class Gbobject(Node): #get Attributes attributes =self.get_attributes() - nbh['attributes']=attributes + nbh['attributes']=attributes + nbh['history']=history return nbh @@ -738,9 +766,11 @@ class Gbobject(Node): if self.objecttypes.count: for each in self.objecttypes.all(): return '%s is a member of objecttype %s' % (self.title, each) - return '%s is not a fully defined name, consider making it a member of a suitable objecttype' % (self.title) - + return u'%s is not a fully defined name, consider making it a member of a suitable objecttype' % (self.title) + @property + def ref(self): + return eval(self.nodemodel).objects.get(id=self.id) @models.permalink def get_absolute_url(self): """Return gbobject's URL""" @@ -753,16 +783,16 @@ class Gbobject(Node): # @reversion.create_revision() def save(self, *args, **kwargs): self.nodemodel = self.__class__.__name__ + super(Gbobject, self).save(*args, **kwargs) # Call the "real" save() method. + self.nbhood=self.get_rendered_nbh + if OBJECTAPP_VERSIONING: + with reversion.create_revision(): + super(Gbobject, self).save(*args, **kwargs) # Call the "real" save() method. + + def save_revert_or_merge(self, *args, **kwargs): if OBJECTAPP_VERSIONING: with reversion.create_revision(): super(Gbobject, self).save(*args, **kwargs) # Call the "real" save() method. - - super(Gbobject, self).save(*args, **kwargs) # Call the "real" save() method. - @property - def ref(self): - return eval(self.nodemodel).objects.get(id=self.id) - - class Meta: """Gbobject's Meta""" @@ -806,12 +836,18 @@ class Process(Gbobject): # @reversion.create_revision() def save(self, *args, **kwargs): self.nodemodel = self.__class__.__name__ + super(Process, self).save(*args, **kwargs) # Call the "real" save() method. + self.nbhood=self.get_rendered_nbh if OBJECTAPP_VERSIONING: with reversion.create_revision(): - super(Process, self).save(*args, **kwargs) # Call the "real" save() method. - - super(Process, self).save(*args, **kwargs) # Call the "real" save() method. - + super(Process, self).save(*args, **kwargs) # Call the "real" save() method. + + def save_revert_or_merge(self, *args, **kwargs): + self.nodemodel = self.__class__.__name__ + if OBJECTAPP_VERSIONING: + with reversion.create_revision(): + super(Process, self).save(*args, **kwargs) # Call the "real" save() method. + class Meta: verbose_name = _('process') verbose_name_plural = _('processes') @@ -851,11 +887,19 @@ class System(Gbobject): # @reversion.create_revision() def save(self, *args, **kwargs): self.nodemodel = self.__class__.__name__ + super(System, self).save(*args, **kwargs) # Call the "real" save() method. + self.nbhood=self.get_rendered_nbh if OBJECTAPP_VERSIONING: with reversion.create_revision(): super(System, self).save(*args, **kwargs) # Call the "real" save() method. + + def save_revert_or_merge(self, *args, **kwargs): + self.nodemodel = self.__class__.__name__ + if OBJECTAPP_VERSIONING: + with reversion.create_revision(): + super(System, self).save(*args, **kwargs) # Call the "real" save() method. - super(System, self).save(*args, **kwargs) # Call the "real" save() method. + def __unicode__(self): @@ -864,13 +908,13 @@ class System(Gbobject): if OBJECTAPP_VERSIONING == True: if not reversion.is_registered(Process): - reversion.register(Process, follow=["priorstate_attribute_set", "priorstate_relation_set", "poststate_attribute_set", "poststate_relation_set", "prior_nodes", "posterior_nodes"]) + reversion.register(Process, follow=["gbobject_ptr","priorstate_attribute_set", "priorstate_relation_set", "poststate_attribute_set", "poststate_relation_set", "prior_nodes", "posterior_nodes"]) if not reversion.is_registered(System): - reversion.register(System, follow=["systemtypes", "gbobject_set", "relation_set", "attribute_set", "process_set", "system_set", "prior_nodes", "posterior_nodes"]) + reversion.register(System, follow=["gbobject_ptr","systemtypes", "gbobject_set", "relation_set", "attribute_set", "process_set", "system_set", "prior_nodes", "posterior_nodes"]) if not reversion.is_registered(Gbobject): - reversion.register(Gbobject, follow=["objecttypes", "prior_nodes", "posterior_nodes"]) + reversion.register(Gbobject, follow=["node_ptr","objecttypes", "prior_nodes", "posterior_nodes"]) moderator.register(Gbobject, GbobjectCommentModerator) @@ -880,4 +924,4 @@ post_save.connect(ping_directories_handler, sender=Gbobject, post_save.connect(ping_external_urls_handler, sender=Gbobject, dispatch_uid='objectapp.gbobject.post_save.ping_external_urls') - + diff --git a/objectapp/settings.py b/objectapp/settings.py index ba6004dc..bb357e62 100644 --- a/objectapp/settings.py +++ b/objectapp/settings.py @@ -134,4 +134,4 @@ USE_TWITTER = getattr(settings, 'OBJECTAPP_USE_TWITTER', bool(TWITTER_ACCESS_KEY and TWITTER_ACCESS_SECRET and \ TWITTER_CONSUMER_KEY and TWITTER_CONSUMER_SECRET)) -OBJECTAPP_VERSIONING = False +OBJECTAPP_VERSIONING = True diff --git a/objectapp/static/objectapp/js/savert.js b/objectapp/static/objectapp/js/savert.js index 549e8196..b5294cc5 100644 --- a/objectapp/static/objectapp/js/savert.js +++ b/objectapp/static/objectapp/js/savert.js @@ -48,7 +48,7 @@ $ = django.jQuery absolute_url = document.getElementById("id_back_url") url = "/objects/dynamicRelation/save/"+ left.value+"/"+rt.value+"/"+right.value+"/" //alert(url); - $.get(url,function(data){ + $.get(url, function(data){ window.location.replace(absolute_url.value); }); diff --git a/objectapp/templates/objectapp/base.html b/objectapp/templates/objectapp/base.html index 90e061bb..b0161973 100644 --- a/objectapp/templates/objectapp/base.html +++ b/objectapp/templates/objectapp/base.html @@ -40,6 +40,20 @@ {% get_objecttypes %} </div> --> +<div class="History"> + + <h3>{% trans "Versions" %}</h3> + <table border="1" cellspacing="0"> + + {% for sid in object.ref.get_ssid %} + + + <a href="/objects/display/viewhistory/{{ sid }}/{{ forloop.counter }}">{{ object.title }} {{ object.id }}.{{ forloop.counter }}</a><br> + + {% endfor %} + +</div> +<br> <div class="authors"> <h3>{% trans "Authors" %}</h3> {% get_authors %} diff --git a/objectapp/templates/objectapp/display.html b/objectapp/templates/objectapp/display.html new file mode 100644 index 00000000..7c920678 --- /dev/null +++ b/objectapp/templates/objectapp/display.html @@ -0,0 +1,609 @@ +{% load i18n comments gstudio_tags %} +{% load gstudio_tags i18n %} +{% get_tags as nodetype_tags %} +{% load adminmedia grp_tags %} + + + +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +<html xml:lang="{{ LANGUAGE_CODE }}" lang="{{ LANGUAGE_CODE }}" version="-//W3C//DTD XHTML 1.1//EN" xmlns="http://www.w3.org/1999/xhtml"> + <head> + <style type="text/css"> + .link { + stroke: #ccc; + } + .nodetext { + #pointer-events: none; + font: 10px Serif; + font-style:italic; + } + .mainnode{ + + font: 15px sans-serif; + fill:"red"; + border-width: 1px; + font-weight:bold; + border-color: gray; + + } + .relnode { + font: 10px sans-serif; + font-weight:bold; + fill:#000; + } + + + .node { + border-width: 1px; + border-color: gray; + fill:"green"; + font: 10px sans-serif; + } + body { + background-color: white; + display:block; + } + #chart { + height: 90%; + margin: 0 auto; + width: 90%; + display: block; + } + svg { + margin-left: 10%; + margin-right: 10%; + display: block; + position: absolute; + } + + </style> + <!-- the header lines from grappelli --> + {% block blockbots %} + <meta name="robots" content="NONE,NOARCHIVE" /> + {% endblock %} <!-- STYLESHEETS --> + {% block stylesheets %} + <link href="{% admin_media_prefix %}css/base.css" rel="stylesheet" type="text/css" /> + {% if LANGUAGE_BIDI %} + <link href="{% block stylesheet_rtl %}{% admin_media_prefix %}css/rtl.css{% endblock %}" rel="stylesheet" type="text/css" /> + {% endif %} + <link href="{% admin_media_prefix %}jquery/ui/css/custom-theme/jquery-ui-1.8.custom.css" rel="stylesheet" type="text/css" media="screen" title="no title" charset="utf-8" /> + <link href="{% admin_media_prefix %}css/jquery-ui-grappelli-extensions.css" rel="stylesheet" type="text/css" /> + {% endblock %} <!-- EXTRASTYLES --> + {% block extrastyle %}{% endblock %} <!-- JAVASCRIPTS --> + {% block javascripts %} + <script type="text/javascript"> + // GLOBALS + var grappelli = {}, + // TODO: klemens: drop ADMIN_URL + ADMIN_URL = "{% url admin:index %}", + MODEL_URL_ARRAY = {% get_content_types %}, DATE_FORMAT = "{% get_date_format %}", TIME_FORMAT = "{% get_time_format %}", DATETIME_FORMAT = "{% get_datetime_format %}"; + </script> + <!-- jQuery, jQuery-UI --> + <script src="{% admin_media_prefix %}jquery/jquery-1.6.2.min.js" type="text/javascript"></script> + <script src="{% admin_media_prefix %}jquery/ui/js/jquery-ui-1.8.15.custom.min.js" type="text/javascript"></script> + <!-- Grappelli Main JS --> + <script src="{% admin_media_prefix %}js/grappelli/grappelli.js" type="text/javascript"></script> + <!-- Grappelli jQuery Plugins, Widgets --> + <script src="{% admin_media_prefix %}js/grappelli/jquery.grp_collapsible.js" type="text/javascript"></script> + <script src="{% admin_media_prefix %}js/grappelli/jquery.grp_collapsible_group.js" type="text/javascript"></script> + <script src="{% admin_media_prefix %}js/grappelli/jquery.grp_timepicker.js" type="text/javascript"></script> + <script src="{% admin_media_prefix %}js/grappelli/jquery.grp_related_fk.js" type="text/javascript"></script> + <script src="{% admin_media_prefix %}js/grappelli/jquery.grp_related_m2m.js" type="text/javascript"></script> + <script src="{% admin_media_prefix %}js/grappelli/jquery.grp_related_generic.js" type="text/javascript"></script> + <script src="{% admin_media_prefix %}js/grappelli/jquery.grp_autocomplete_fk.js" type="text/javascript"></script> + <script src="{% admin_media_prefix %}js/grappelli/jquery.grp_autocomplete_m2m.js" type="text/javascript"></script> + <script src="{% admin_media_prefix %}js/grappelli/jquery.grp_autocomplete_generic.js" type="text/javascript"></script> + <script type="text/javascript" src="{{STATIC_URL}}gstudio/js/jquery-ui-timepicker-0.2.9/include/jquery-1.5.1.min.js"></script> + <script type="text/javascript" src="{{STATIC_URL}}gstudio/js/jquery-ui-timepicker-0.2.9/include/jquery.ui.core.min.js"></script> + <script type="text/javascript" src="{{STATIC_URL}}gstudio/js/jquery-ui-timepicker-0.2.9/include/jquery.ui.widget.min.js"></script> + <script type="text/javascript" src="{{STATIC_URL}}gstudio/js/jquery-ui-timepicker-0.2.9/include/jquery.ui.tabs.min.js"></script> + <script type="text/javascript" src="{{STATIC_URL}}gstudio/js/jquery-ui-timepicker-0.2.9/include/jquery.ui.position.min.js"></script> + + <script type="text/javascript" src="{{STATIC_URL}}gstudio/js/jquery.ui.timepicker.js"></script> + + <script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script> + <script src="{{STATIC_URL}}gstudio/js/gstudio.js" type="text/javascript"></script> + <!-- EXTRAHEAD --> + {% block extrahead %}{% endblock %} + + {% endblock %} <!-- the header lines from gstudio --> + <meta http-equiv="content-type" content="text/html; charset=utf-8" /> + <meta http-equiv="cache-control" content="public" /> + <meta name="robots" content="follow, all" /> + <meta name="language" content="{{ LANGUAGE_CODE }}" /> + <meta name="description" content="{% block meta-description %}Demonstration of the Gstudio Blog application.{% endblock %}" /> + <meta name="keywords" content="{% block meta-keywords %}django, blog, gstudio, {{ nodetype_tags|join:", "}}{% endblock %}" /> + <meta name="author" content="gnowgi" /> + {% block meta %}{% endblock %} + <link rel="pingback" href="/xmlrpc/" /> + <link rel="shortcut icon" href="{{ STATIC_URL }}gstudio/img/favicon.ico" /> + <link rel="home" href="{% url gstudio_nodetype_archive_index %}" /> + <link rel="stylesheet" type="text/css" media="screen, projection" href="{{ STATIC_URL }}gstudio/css/grappelli_skin_default.css" /> + <link rel="stylesheet" type="text/css" media="screen, projection" href="{{ STATIC_URL }}gstudio/css/screen.css" /> + <link rel="stylesheet" type="text/css" media="screen, projection" href="{{ STATIC_URL }}gstudio/css/screen_gstudio.css" /> + <link rel="stylesheet" type="text/css" media="print" href="{{ STATIC_URL }}gstudio/css/print.css" /> + <!--[if lt IE 8]> + <link rel="stylesheet" type="text/css" media="screen, projection" href="{{ STATIC_URL }}gstudio/css/ie.css" /> + <![endif]--> + {% block link %}{% endblock %} + {% block script %}{% endblock %} <title>Gnowledge Studio - {% block title %}{% endblock %}</title> + </head> + <body id="gstudio"> + <div class="body" > + <div class="content"> + <!-- + <div id="relation_type" class="ui-buttonset"> + <span>Relation type:</span> + <input checked="checked" value="follows" type="radio" id="follows" name="radio" class="ui-helper-hidden-accessible"><label for="follows" class="ui-button ui-widget ui-state-default ui-button-text-only ui-corner-left" aria-pressed="false" role="button" aria-disabled="false"><span class="ui-button-text">Followers</span></label> + <input value="mentions" type="radio" id="mentions" name="radio" class="ui-helper-hidden-accessible"><label for="mentions" aria-pressed="true" class="ui-button ui-widget ui-state-default ui-button-text-only ui-corner-right ui-state-active" role="button" aria-disabled="false"><span class="ui-button-text">Mentions</span></label> + <input value="hashtags" type="radio" id="hashtags" name="radio"/><label for="hashtags">Shared interests</label> + </div> + --> + <div id="chart"> + <svg width="960" height="700" style="opacity: 1; "> + </div> + <script type="text/javascript" src="/static/gstudio/js/jquery.min.js" ></script> + <script type="text/javascript" src="/static/gstudio/js/jquery-ui.js" ></script> + <script type="text/javascript" src="/static/gstudio/js/underscore.js" ></script> + <script type="text/javascript" src="/static/gstudio/js/d3.js"></script> + <script type="text/javascript" src="/static/gstudio/js/d3.layout.js"></script> + <script type="text/javascript" src="/static/gstudio/js/d3.geom.js"></script> + <!-- <script type="text/javascript" src="/static/gstudio/js/force.js"></script> + + Javascript for Object type force graph + --> + <script type="text/javascript" > + + var w = 700, + h = 300, + fill = d3.scale.category20(); + + var vis = d3.select("#chart") + .append("svg:svg") + .attr("width", w) + .attr("height", h); + + vis.append("svg:g").attr("class", "edges"); + vis.append("svg:g").attr("class", "nodes"); + +$(function() { + $.ajax({ + url: '/nodetypes/graphs/version_graph_json/{{ ssid }}', + //crossDomain: true, + dataType: 'json', + success : function(json) { + + //var node = NID.objects.get(slug='{{ slug }}'); + var force; + + // this contains all the nodes as a dict with _id as the key + + var nodes_by_id = _.reduce(json.node_metadata, function(acc, n) { + acc[n._id] = n; + return acc; + }, {}); + + var member_of = _(json.member_of).chain().map(function(e) { + e.source = nodes_by_id[e.from]; + e.target = nodes_by_id[e.to]; + e.type = 'member_of'; + return e; + }).filter(function(e){ + return nodes_by_id[e.from] && nodes_by_id[e.to] + }).value(); + + + var contains_subtypes = _(json.contains_subtypes).chain().map(function(e) { + e.source = nodes_by_id[e.from]; + e.target = nodes_by_id[e.to]; + e.type = 'contains_subtypes'; + return e; + }).filter(function(e){ + return nodes_by_id[e.from] && nodes_by_id[e.to] + }).value(); + + var contains_members = _(json.contains_members).chain().map(function(e) { + e.source = nodes_by_id[e.from]; + e.target = nodes_by_id[e.to]; + e.type = 'contains_members'; + return e; + }).filter(function(e){ + return nodes_by_id[e.from] && nodes_by_id[e.to] + }).value(); + + + var left_subjecttype_of = _(json.left_subjecttype_of).chain().map(function(e) { + e.source = nodes_by_id[e.from]; + e.target = nodes_by_id[e.to]; + e.type = 'left_subjecttype_of'; + return e; + }).filter(function(e){ + return nodes_by_id[e.from] && nodes_by_id[e.to] + }).value(); + + + var subjecttype_of = _(json.subjecttype_of).chain().map(function(e) { + e.source = nodes_by_id[e.from]; + e.target = nodes_by_id[e.to]; + e.type = 'subjecttype_of'; + return e; + }).filter(function(e){ + return nodes_by_id[e.from] && nodes_by_id[e.to] + }).value(); + + var plural = _(json.plural).chain().map(function(e) { + e.source = nodes_by_id[e.from]; + e.target = nodes_by_id[e.to]; + e.type = 'plural'; + return e; + }).filter(function(e){ + return nodes_by_id[e.from] && nodes_by_id[e.to] + }).value(); + + + var altnames = _(json.altnames).chain().map(function(e) { + e.source = nodes_by_id[e.from]; + e.target = nodes_by_id[e.to]; + e.type = 'altnames'; + return e; + }).filter(function(e){ + return nodes_by_id[e.from] && nodes_by_id[e.to] + }).value(); + + var content = _(json.content).chain().map(function(e) { + e.source = nodes_by_id[e.from]; + e.target = nodes_by_id[e.to]; + e.type = 'content'; + return e; + }).filter(function(e){ + return nodes_by_id[e.from] && nodes_by_id[e.to] + }).value(); + + var contains_members = _(json.contains_members).chain().map(function(e) { + e.source = nodes_by_id[e.from]; + e.target = nodes_by_id[e.to]; + e.type = 'contains_members'; + return e; + }).filter(function(e){ + return nodes_by_id[e.from] && nodes_by_id[e.to] + }).value(); + + + + var type_of = _(json.type_of).chain().map(function(e) { + e.source = nodes_by_id[e.from]; + e.target = nodes_by_id[e.to]; + e.type = 'type_of'; + return e; + }).filter(function(e){ + return nodes_by_id[e.from] && nodes_by_id[e.to] + }).value(); + + + var right_subjecttype_of = _(json.right_subjecttype_of).chain().map(function(e) { + e.source = nodes_by_id[e.from]; + e.target = nodes_by_id[e.to]; + e.type = 'right_subjecttype_of'; + return e; + }).filter(function(e){ + return nodes_by_id[e.from] && nodes_by_id[e.to] + }).value(); + + + var follows_edges = _(json.is_followed_by).chain().map(function(e) { + e.source = nodes_by_id[e.from]; + e.target = nodes_by_id[e.to]; + e.type = 'follows_edges'; + return e; + }).filter(function(e){ + return nodes_by_id[e.from] && nodes_by_id[e.to] + }).value(); + + + + var prior_nodes = _(json.prior_nodes).chain().map(function(e) { + e.source = nodes_by_id[e.from]; + e.target = nodes_by_id[e.to]; + e.type = 'prior_node'; + return e; + }).filter(function(e){ + return nodes_by_id[e.from] && nodes_by_id[e.to] + }).value(); + + var posterior_nodes = _(json.posterior_nodes).chain().map(function(e) { + e.source = nodes_by_id[e.from]; + e.target = nodes_by_id[e.to]; + e.type = 'posterior_node'; + return e; + }).filter(function(e){ + return nodes_by_id[e.from] && nodes_by_id[e.to] + }).value(); + + + var mentions_edges = _(json.is_mentioned_by).chain().map(function(e) { + e.source = nodes_by_id[e.from]; + e.target = nodes_by_id[e.to]; + e.type = 'mentions_edges'; + return e; + }).filter(function(e){ + return nodes_by_id[e.from] && nodes_by_id[e.to] + }).value(); + + + nodes_by_id[{{ nt.id }}].x = w/2.0; + nodes_by_id[{{ nt.id }}].y = h/2.0; + + all_edges = new Array(); + all_edges = all_edges.concat(follows_edges, member_of, contains_members, contains_subtypes, mentions_edges, right_subjecttype_of, left_subjecttype_of, subjecttype_of, type_of,plural,altnames,contains_members,content, prior_nodes, posterior_nodes); + /* all_edges.concat(follows_edges); + all_edges.concat(member_of_metatype); + all_edges.concat(contains_members); + all_edges.concat(contains_subtypes); + all_edges.concat(mentions_edges); + + + document.getElementById('debugbox1').value= follows_edges; //member_of_metatype + document.getElementById('debugbox2').value= mentions_edges; + //document.getElementById('debugbox2').value= member_of_metatype; + document.getElementById('debugbox3').value= all_edges; + */ + var force = d3.layout.force() + .linkStrength(0.5) + .charge(-2000) + .friction(0.7) + .gravity(0.7) + .linkDistance(13) + .nodes([]) + .links([]) + .size([w, h]) + .start(); + + function update(edges){ + // for each func + _.each(nodes_by_id, function(n){n.added = false}); + // reduce the nodes list to have only those nodes for a given rel. + nodes = _.reduce(edges, function(acc, e) { + if(nodes_by_id[e.from] && !nodes_by_id[e.from].added){ + nodes_by_id[e.from].added = true; + acc.push(nodes_by_id[e.from]); + } + if(nodes_by_id[e.to] && !nodes_by_id[e.to].added){ + nodes_by_id[e.to].added = true; + acc.push(nodes_by_id[e.to]); + } + return acc; + }, []); + + force.nodes(nodes); + force.links(edges); + force.start(); + + link = d3.select("#chart g.edges").selectAll("line.link") + .data(edges, function(e){return e.from + "-" + e.to + "-" + e.type}); + + link.enter().append("svg:line") + .attr("class", "link") + .style("stroke-width", 2 /* function(d) { + return Math.sqrt(d.value); + } */ ) + .attr("x1", function(d) { + return d.source.x; + }) + .attr("y1", function(d) { + return d.source.y; + }) + .attr("x2", function(d) { + return d.target.x; + }) + .attr("y2", function(d) { + return d.target.y; + }) + .attr("text", function(d) { + return d.type; + }) + + .append("a") + .text(function(d) { return d.type; }); + + + var node = d3.select("#chart g.nodes").selectAll("g.node").data(nodes); + + var new_g = node.enter().append("svg:a") + .attr("class", function(d) { if (d._id=={{ nt.id }}) return "mainnode"; else if (isNaN(d._id)) return "relnode"; else if ((d._id)<0) return "nodetext"; else return "node"; }) + .attr("xlink:href",function(d){return d.url;}) + .call(force.drag); + + + + + new_g.append("svg:circle") + .attr("cx", function(d) { return d.x - w/2.0 + 15; }) + .attr("cy", function(d) { return d.y - h/2.0 + 15; }) + .attr("r", function(d) { if (d._id=={{ nt.id }}) return 8; else if (isNaN(d._id) || (d._id)<0) return 1; else return 7 }) + .style("fill", function color(d) { if (d._id=={{ nt.id }}) return "red"; else if (isNaN(d._id) || (d._id)<0) return "white" ; else return "green"}); + + + new_g.append("svg:text") + .attr("class",function(d) { if (d._id=={{ nt.id }}) return "mainnode"; else if (isNaN(d._id)) return "relnode"; else if ((d._id)<0) return "nodetext"; else return "node"; }) + .attr("dy", 20) + .attr("dx", 25) + .attr("text-anchor",function text(d) { if (isNaN(d._id) || (d._id)<0) return "middle" ; else return "left"}) + +// .attr("style",function text(d) { if (isNaN(d._id)) return "font-size:9.00pt;fill:#333;" ; else return "font-size:9.00pt;fill:black;"}) + + .text(function(d) { + return d.screen_name; + }); + + node.exit().remove(); + + + + force.on("tick", function() { + + var x_center = $("#chart").width() / 2; + var y_center = $("#chart").height() / 2; + + link.attr("x1", function(d) { return d.source.x; }) + .attr("y1", function(d) { return d.source.y; }) + .attr("x2", function(d) { return d.target.x; }) + .attr("y2", function(d) { return d.target.y; }); + + node.attr("transform", function(d) { return "translate(" + (d.x-16) + "," + (d.y-16) + ")"; }); + + }); + } + + update(all_edges); + vis.style("opacity", 1e-6) + .transition() + .duration(1000) + .style("opacity", 1); + + /* $('input#follows').change(function(){ + update(all_edges); + }); + */ + + /* $('input#mentions').change(function(){ + update(all_edges); + }); */ + } + }); + +// $("#relation_type").buttonset(); + +// $('input#mentions').change(function(){console.log(this)}); +// $('input#follows').change(function(){console.log(this)}); +}); + + +</script> + </div> +</div> + + + +<div> + {% include "gstudio/_header.html" %} + <div id="breadcrumbs" class="span-24 last"> + / {% block breadcrumbs %}{% endblock %} + </div> + <div id="body" class="span-24 last" > + <div id="content" class="hfeed span-16 border"> + <h3>{% block content %} + {% block nodetype-content %} + <h2 class="nodetype-title"> + <a href="{{ nt.get_absolute_url }}" title="{{ nt.title }}" rel="bookmark">{{ ver_nbh_dict.title }} {{ nt.id }}.{{ version_no }} + </a> + </h2> + {% with nt.html_content|safe as object_content %} + <b>Name:<nbsp></b> {{ ver_nbh_dict.title }} <br/> + + {% if ver_nbh_dict.plural %} + <b> Plural Name:<nbsp></b> + {{ ver_nbh_dict.plural}} <br/> + {% endif %} + {% if ver_nbh_dict.altnames %} + <b> Alternate names:<nbsp></b> + {{ ver_nbh_dict.altnames}} <br/> + {% endif %} + {% if ver_nbh_dict.member_of %} + <b> Member of :<nbsp></b> + + {% for mkey,mvalue in ver_nbh_dict.member_of.items %} + <a href="{{mvalue}}">{{mkey}}</a>; + {% endfor %}<br/> + {% endif %} + + {% if ver_nbh_dict.relations %} + + + {% for relkey,relvalue in ver_nbh_dict.relations.items %} + <b>{{relkey}}:<nbsp></b> + {% for relk, relv in relvalue.items %} + <a href="{{relv}}">{{relk}}</a>; + {% endfor %}<br/> + {% endfor %} + + {% endif %} + + {% if ver_nbh_dict.attributes %} + {% for atkey,atvalue in ver_nbh_dict.attributes.items %} + {% if atvalue %} + <b> {{atkey}}:<nbsp></b> + + {% for items in atvalue %} + {{items}};<nbsp> + {% endfor %} + {% endif %}<br/> + {% endfor %} + {% endif %} + <b>Authors: <nbsp> </b> + {% for author in nt.authors.all %} + <span class="vcard author"> + <a href="{% url gstudio_author_detail author %}" class="fn nickname url" rel="author" + title="{% blocktrans with author as author %}Show {{ author }} nodetypes{% endblocktrans %}">{{ author }}</a> + </span>{% if not forloop.last %}, {% endif %} + {% endfor %} <br/> + + + + + + {% endwith %} + {% endblock %} + {% endblock %} +</div> + + <div id="sidebar"> + {% block sidebar %} + + <div class="History"> + + <h3>{% trans "Versions" %}</h3> + + <form name="history" action="/objects/display/compare_history/{{ ssid }}" > + <table cellspacing="0" border="2"> + <tr> + <td> <input type="radio" name="group1" value="{{ ssid }}.{{ version_no }}" checked >{{ nt.id }}.{{ version_no }}</input></td> + <td></td></tr> + + {% for sid in nt.get_ssid %} + + {% if sid|stringformat:"s" != ssid|stringformat:"s" %} + <tr> + <td> + </td> + <td> + + <input type="radio" id="{{ sid }}"name="group2" value="{{ sid }}.{{ forloop.counter }}" >{{ nt.id }}.{{ forloop.counter }}</input> + </td></tr>{% endif %} + {% endfor %}</table> + <input type="submit" value="Compare" /> + </form> + + + </div> + + + {% endblock %} + </div> + + + <div id="footer" class="span-24 last" style="height: 5px; display:none; top: 51px; left: 88px; width: 1364px;"> + <p> + <a rel="license" + href="http://creativecommons.org/licenses/by-sa/3.0/"><img alt="Creative + Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-sa/3.0/88x31.png"/></a> All material is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons Attribution-ShareAlike 3.0 Unported License</a> unless mentioned otherwise. + <br/> + Powered by <a href="http://www.djangoproject.com">Django</a> + and <a href="http://github.com/gnowgi/django-gstudio">Gstudio + {{ GSTUDIO_VERSION }}</a>. + </p> + </div> + </div> + </div> + </body> +</html> + diff --git a/objectapp/templates/objectapp/fillAT.html b/objectapp/templates/objectapp/fillAT.html index 6a474d0d..a788c8d9 100644 --- a/objectapp/templates/objectapp/fillAT.html +++ b/objectapp/templates/objectapp/fillAT.html @@ -2,7 +2,7 @@ {% load i18n %} {% block content %} -<form action="." method="POST"> +<form action="." method="POST" enctype="multipart/form-data"> {% csrf_token %} <b>{{ title }}</b> diff --git a/objectapp/templates/objectapp/gbobject_detail.html b/objectapp/templates/objectapp/gbobject_detail.html index cfe16511..e4574206 100644 --- a/objectapp/templates/objectapp/gbobject_detail.html +++ b/objectapp/templates/objectapp/gbobject_detail.html @@ -73,6 +73,22 @@ {% endwith %} {% endblock %} + +<br/> +<p><br/> +<b>AddAttributes: </b> +<input type="hidden" id="id_object" value="{{ object.title }}"/> +{% for i in object.getattributetypes %} +<a href="{{ get_absolute_url }}/objects/dynamicAttribute/save/{{ i }}/{{ object.title }}/">{{ i }}</a><nbsp>; +{% endfor %} +</p> +<p> +<b>Add Relations: </b> +{% for i in object.getrelationtypes %} +<a href=" {{ get_absolute_url }}/objects/dynamicRelation/displaymem/{{ i }}/{{ object.title }}/">{{ i }}</a><nbsp>; +{% endfor %} +</p> + {% block gbobject-widgets %} <div class="gbobject-widgets span-16 last"> {% with object.next_gbobject as next_gbobject %} @@ -124,25 +140,10 @@ <h3>{% trans "Similar objects" %}</h3> {% get_similar_gbobjects 5 %} </div> - +</div> {% endblock %} - -<p><br/> -<b>Add Attributes: </b> -<input type="hidden" id="id_object" value="{{ object.title }}"/> -{% for i in object.getattributetypes %} -<a href="{{ get_absolute_url }}/objects/dynamicAttribute/save/{{ i }}/{{ object.title }}/">{{ i }}</a><nbsp>; -{% endfor %} -</p> -<p> -<b>Add Relations: </b> -{% for i in object.getrelationtypes %} -<a href=" {{ get_absolute_url }}/objects/dynamicRelation/displaymem/{{ i }}/{{ object.title }}/">{{ i }}</a><nbsp>; -{% endfor %} -</p> -</div> {% block gbobject-comments %} <div id="comments" class="span-16 last"> <h3>{% trans "Comments" %}</h3> diff --git a/objectapp/templates/objectapp/gbobject_list.html b/objectapp/templates/objectapp/gbobject_list.html index 73a3adff..3bc34a8d 100644 --- a/objectapp/templates/objectapp/gbobject_list.html +++ b/objectapp/templates/objectapp/gbobject_list.html @@ -1,4 +1,4 @@ -{% extends "objectapp/base.html" %} +{% extends "objectapp/version_base.html" %} {% load i18n objectapp_tags %} {% block meta-description %}{% trans "Latest gbobjects for" %} {% if Objecttype %}{% trans "the Objecttype" %} {{ Objecttype }}{% if Objecttype.description %}: {{ Objecttype.description|striptags|safe }}{% endif %}{% endif %}{% if tag %}{% trans "the tag" %} {{ tag }}{% endif %}{% if author %}{% trans "the author" %} {{ author }}{% endif %}{% if page_obj %}{% ifnotequal page_obj.number 1 %} {% trans "page" %} {{ page_obj.number }}{% endifnotequal %}{% endif %}{% endblock %} diff --git a/objectapp/templates/objectapp/selectRT.html b/objectapp/templates/objectapp/selectRT.html index 713a45cf..5ceae85e 100644 --- a/objectapp/templates/objectapp/selectRT.html +++ b/objectapp/templates/objectapp/selectRT.html @@ -5,7 +5,8 @@ {% block content %} <form method="." action="POST"> {% csrf_token %} -<b>Details of {{ gb }}</b> +<b>{{ gb }}</b> +<b>{{ reltit }}</b> <!-- -------------------------------------------- --> diff --git a/objectapp/templates/objectapp/skeleton.html b/objectapp/templates/objectapp/skeleton.html index d04b02f4..d60b9ece 100644 --- a/objectapp/templates/objectapp/skeleton.html +++ b/objectapp/templates/objectapp/skeleton.html @@ -214,7 +214,10 @@ function init(a,b) } $(function fgraph() { - +neighbour_node= new Array(); +clicked_node=new Array(); +prev_node=new Array(); +neighbour_node= neighbour_node.concat({{object.id}}); $.getJSON('/nodetypes/graphs/graph_json/' + {{object.id}}, function (json1) { metadata=json1.node_metadata; @@ -350,26 +353,124 @@ var q = 110 + "%"; -$(window).bind('keydown',function(event){ - if(17==event.keyCode){ - new_g.on("click",function(d){ - if(d._id>0 && d.expanded=="false") - { - d3.select("#amazingViz").remove(); - d.expanded="true"; - $.getJSON('/nodetypes/graphs/graph_json/' + d._id , function (json2) { - new_metadata=json2.node_metadata; - new_relations=json2.relations; - metadata=_.union(new_metadata,metadata); - relations=_.union(new_relations,relations); - init(metadata,relations); - load(d._id) - }) - +$(window).bind('keydown',function(event) { + if(event.keyCode==17){ + + new_g.on("click",function(d){ + + + + + if(d._id>0 && d.expanded=="true") + { + + $.getJSON('/nodetypes/graphs/graph_json/' + d._id , function (json2) { + new_metadata=json2.node_metadata; + + }); + + _.filter(new_metadata, function(e){if(e._id>0) + { + clicked_node=clicked_node.concat(e._id) ; + } + }); + + + index = _.indexOf(neighbour_node , d._id); + prev_node=neighbour_node.slice(0,index); + + neighbour_node = _.difference(neighbour_node,clicked_node) ; + + neighbour_node= neighbour_node.concat(prev_node); + neighbour_node = _.uniq(neighbour_node); + metadata=[] + relations=[] + metadata1=[] + relations1=[] + for(i=0;i<(neighbour_node.length);i++) + { + + d3.select("#amazingViz").remove(); + g=neighbour_node[i] + + + + $.ajax({ + async:false, + url:'/nodetypes/graphs/graph_json/' + g , + datatype:'json', + success:function (json2) { + new_metadata=json2.node_metadata; + new_relations=json2.relations; + metadata=_.union(new_metadata,metadata); + + relations=_.union(new_relations,relations); + check_Relation(metadata,relations); + + }}); + } - }); -} + _.each(metadata, function(m){ + + for(i=0;i<neighbour_node.length;i++) + { + if(m._id==neighbour_node[i]) + {m.expanded="true";} + else + {m.expanded="false";} + } + + + }); + + init(metadata,relations); + load({{object.id}}) ; + + + + } + + + + + else if(d._id>0) + { + + neighbour_node =neighbour_node.concat(d._id); + + d3.select("#amazingViz").remove(); + + $.getJSON('/nodetypes/graphs/graph_json/' + d._id , function (json2) { + new_metadata=json2.node_metadata; + new_relations=json2.relations; + + metadata=_.union(new_metadata,metadata); + relations=_.union(new_relations,relations); + check_Relation(metadata,relations); + + _.each(metadata, function(m){ + + for(i=0;i<neighbour_node.length;i++) + { + if(m._id==neighbour_node[i]) + m.expanded="true"; + } + + + }); + + init(metadata,relations); + load({{object.id}}); + + + }); + + } }); +} + +}); + new_g.on("click", function(d) { @@ -429,7 +530,8 @@ $(window).bind('keydown',function(event){ .style("fill-opacity", ".2") .style("stroke", "#666") .style("stroke-width", "1.5px") - .style("fill", function color(d) {var e=(d._id).charAt(0); if (d.expanded=="true") return "red"; else return "none"}); + .style("fill", function color(d) {if (d.expanded=="true" && d.refType=="Objecttype") return "blue"; else if(d.expanded=="true" && d.refType=="Gbobject") return "red"; else return "none"}); + @@ -467,6 +569,34 @@ $(window).bind('keydown',function(event){ } +function check_Relation(metadata,relations) +{ + _.each(metadata,function(d){ + if (d.refType=="Relation") + { + a=d.inverse; + if (d.flag==1) + { + relations= _.reject(relations,function(e) + { + return e.type==a + }); + } + else if (d.flag==0) + { + relations= _.reject(relations,function(e) + { + return e.type==d.screen_name + }); + } + } + + }); + + +} + + }); //fgraph({{object.id}}); diff --git a/objectapp/templates/objectapp/version_base.html b/objectapp/templates/objectapp/version_base.html new file mode 100644 index 00000000..6972c9e2 --- /dev/null +++ b/objectapp/templates/objectapp/version_base.html @@ -0,0 +1,129 @@ +{% extends "gstudio/skeleton.html" %} +{% load gstudio_tags i18n %} +{% load objectapp_tags i18n %} + + {% block meta %} + <meta name="generator" content="Objectapp {{ OBJECTAPP_VERSION }}" /> +{% endblock %} + +{% block link %} + <link rel="index" href="{% url objectapp_gbobject_archive_index %}" /> + <link rel="EditURI" type="application/rsd+xml" href="{% url objectapp_rsd %}" /> + <link rel="wlwmanifest" type="application/wlwmanifest+xml" href="{% url objectapp_wlwmanifest %}" /> + <link rel="search" type="application/opensearchdescription+xml" title="Objectapp's Blog" href="{% url objectapp_opensearch %}" /> + <link rel="alternate" type="application/rss+xml" title="{% trans "RSS Feed of latest gbobjects" %}" href="{% url objectapp_gbobject_latest_feed %}" /> + <!-- {% get_archives_gbobjects "objectapp/tags/archives_gbobjects_link.html" %} --> +{% endblock %} + +{% block breadcrumbs %} + {% gstudio_breadcrumbs %} +{% endblock %} + +{% block sidebar %} + <img src="{{ STATIC_URL }}objectapp/img/rss.png" alt="?" width="20" height="" /> + <a href="{% url objectapp_gbobject_latest_feed %}" class="feeds"><h4>Rssfeed</h4></a> + +<div class="search"> + <h3>{% trans "Search" %}</h3> + <form method="get" id="searchform" action="{% url nodes_search %}"> + <p> + <input type="text" value="{% trans "Keywords..." %}" name="pattern" id="searchbox" onfocus="this.value=''" /> + <input type="submit" class="submitbutton" value="OK" /> + <a title="{% trans 'You can use - to exclude words or phrases, "double quotes" for exact phrases and the AND/OR boolean operators combined with parenthesis for complex searchs.' %}"> + <img src="{{ STATIC_URL }}objectapp/img/help.png" alt="?" width="14" height="14" /> + </a> + </p> + </form> +</div> +<!-- +<div class="objecttypes"> + <h3>{% trans "Objecttypes" %}</h3> + {% get_objecttypes %} +</div> +--> +<div class="History"> + <!-- <script type="text/javascript"> --> + <!-- function go_to_loc(sid) --> + <!-- { --> + <!-- window.location.href = "{{ object.get_version_url }}"+sid --> + <!-- } --> + + <!-- </script> --> +<!-- <h3>{% trans "Versions" %}</h3> --> +<!-- {% for sid in object.get_ssid reversed %} --> +<!-- <input type="radio" name="group1" value="{{ sid }}"><a href="{{ object.get_version_url }}{{ sid }}">{{ sid }}</a></input> --> +<!-- <input type="radio" name="group2" value="{{ sid }}">{{ sid }}</input> --> +<!-- <br> --> +<!-- {% endfor %} --> +<!-- <br> --> +<!-- <input type="submit" value="Compare" /> --> +<!-- </div> --> +<!-- <br> --> + +<div class="authors"> + <h3>{% trans "Authors" %}</h3> + {% get_authors %} +</div> +<div class="calendar"> + <h3>{% trans "Calendar" %}</h3> + {% get_calendar_gbobjects %} +</div> +<div class="tags"> + <h3>{% trans "Tags" %}</h3> + {% get_tag_cloud %} +</div> +<div class="recents"> + <h3>{% trans "Recent gbobjects" %}</h3> + {% get_recent_gbobjects 5 %} +</div> +<div class="comments"> + <h3>{% trans "Recent comments" %}</h3> + {% get_recent_comments 5 %} +</div> +<div class="linkbacks"> + <h3>{% trans "Recent linkbacks" %}</h3> + {% get_recent_linkbacks 5 %} +</div> +<div class="randoms"> + <h3>{% trans "Random gbobjects" %}</h3> + {% get_random_gbobjects 5 %} +</div> +<div class="populars"> + <h3>{% trans "Popular gbobjects" %}</h3> + {% get_popular_gbobjects 5 %} +</div> +<div class="archives"> + <h3>{% trans "Archives" %}</h3> + {% get_archives_gbobjects_tree %} +</div> +{% if user.is_authenticated %} +<div class="tools"> + <h3>{% trans "Tools" %}</h3> + <ul> + {% if perms.objectapp %} + <li> + <a href="{% url admin:app_list "objectapp" %}" title="{% trans "Dashboard" %}"> + {% trans "Dashboard" %} + </a> + </li> + {% endif %} + {% if perms.objectapp.add_gbobject %} + <li> + <a href="{% url admin:objectapp_gbobject_add %}" title="{% trans "Post an gbobject" %}"> + {% trans "Post an gbobject" %} + </a> + </li> + {% endif %} + {% block admin_tools %} + {% endblock %} + <li> + <a href="{% url admin:logout %}" title="{% trans "Log out" %}"> + {% trans "Log out" %} + </a> + </li> + </ul> +</div> +{% endif %} +{% endblock %} + + diff --git a/objectapp/templates/objectapp/version_diff.html b/objectapp/templates/objectapp/version_diff.html new file mode 100644 index 00000000..a552b5c9 --- /dev/null +++ b/objectapp/templates/objectapp/version_diff.html @@ -0,0 +1,262 @@ + +{% load i18n comments gstudio_tags %} +{% load gstudio_tags i18n %} +{% get_tags as nodetype_tags %} +{% load adminmedia grp_tags %} + + +{% load gstudio_tags i18n %} +{% get_tags as nodetype_tags %} +{% load adminmedia grp_tags %} +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +<html xml:lang="{{ LANGUAGE_CODE }}" lang="{{ LANGUAGE_CODE }}" version="-//W3C//DTD XHTML 1.1//EN" xmlns="http://www.w3.org/1999/xhtml"> + <head> + <style type="text/css"> + body { + background-color: white; + display:block; + } + .content + { + } + .content1 + { + } + </style> + {% block blockbots %} + <meta name="robots" content="NONE,NOARCHIVE" /> + {% endblock %} <!-- STYLESHEETS --> + {% block stylesheets %} + <link href="{% admin_media_prefix %}css/base.css" rel="stylesheet" type="text/css" /> + {% if LANGUAGE_BIDI %} + <link href="{% block stylesheet_rtl %}{% admin_media_prefix %}css/rtl.css{% endblock %}" rel="stylesheet" type="text/css" /> + {% endif %} + <link href="{% admin_media_prefix %}jquery/ui/css/custom-theme/jquery-ui-1.8.custom.css" rel="stylesheet" type="text/css" media="screen" title="no title" charset="utf-8" /> + <link href="{% admin_media_prefix %}css/jquery-ui-grappelli-extensions.css" rel="stylesheet" type="text/css" /> + {% endblock %} <!-- EXTRASTYLES --> + {% block extrastyle %}{% endblock %} <!-- JAVASCRIPTS --> + {% block javascripts %} + <script type="text/javascript"> + // GLOBALS + var grappelli = {}, + // TODO: klemens: drop ADMIN_URL + ADMIN_URL = "{% url admin:index %}", + MODEL_URL_ARRAY = {% get_content_types %}, DATE_FORMAT = "{% get_date_format %}", TIME_FORMAT = "{% get_time_format %}", DATETIME_FORMAT = "{% get_datetime_format %}"; + </script> + <!-- jQuery, jQuery-UI --> + <script src="{% admin_media_prefix %}jquery/jquery-1.6.2.min.js" type="text/javascript"></script> + <script src="{% admin_media_prefix %}jquery/ui/js/jquery-ui-1.8.15.custom.min.js" type="text/javascript"></script> + <!-- Grappelli Main JS --> + <script src="{% admin_media_prefix %}js/grappelli/grappelli.js" type="text/javascript"></script> + <!-- Grappelli jQuery Plugins, Widgets --> + <script src="{% admin_media_prefix %}js/grappelli/jquery.grp_collapsible.js" type="text/javascript"></script> + <script src="{% admin_media_prefix %}js/grappelli/jquery.grp_collapsible_group.js" type="text/javascript"></script> + <script src="{% admin_media_prefix %}js/grappelli/jquery.grp_timepicker.js" type="text/javascript"></script> + <script src="{% admin_media_prefix %}js/grappelli/jquery.grp_related_fk.js" type="text/javascript"></script> + <script src="{% admin_media_prefix %}js/grappelli/jquery.grp_related_m2m.js" type="text/javascript"></script> + <script src="{% admin_media_prefix %}js/grappelli/jquery.grp_related_generic.js" type="text/javascript"></script> + <script src="{% admin_media_prefix %}js/grappelli/jquery.grp_autocomplete_fk.js" type="text/javascript"></script> + <script src="{% admin_media_prefix %}js/grappelli/jquery.grp_autocomplete_m2m.js" type="text/javascript"></script> + <script src="{% admin_media_prefix %}js/grappelli/jquery.grp_autocomplete_generic.js" type="text/javascript"></script> + <script type="text/javascript" src="{{STATIC_URL}}gstudio/js/jquery-ui-timepicker-0.2.9/include/jquery-1.5.1.min.js"></script> + <script type="text/javascript" src="{{STATIC_URL}}gstudio/js/jquery-ui-timepicker-0.2.9/include/jquery.ui.core.min.js"></script> + <script type="text/javascript" src="{{STATIC_URL}}gstudio/js/jquery-ui-timepicker-0.2.9/include/jquery.ui.widget.min.js"></script> + <script type="text/javascript" src="{{STATIC_URL}}gstudio/js/jquery-ui-timepicker-0.2.9/include/jquery.ui.tabs.min.js"></script> + <script type="text/javascript" src="{{STATIC_URL}}gstudio/js/jquery-ui-timepicker-0.2.9/include/jquery.ui.position.min.js"></script> + + <script type="text/javascript" src="{{STATIC_URL}}gstudio/js/jquery.ui.timepicker.js"></script> + + <script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script> + <script src="{{STATIC_URL}}gstudio/js/gstudio.js" type="text/javascript"></script> + <!-- EXTRAHEAD --> + {% block extrahead %}{% endblock %} + + {% endblock %} + <meta http-equiv="content-type" content="text/html; charset=utf-8" /> + <meta http-equiv="cache-control" content="public" /> + <meta name="robots" content="follow, all" /> + <meta name="language" content="{{ LANGUAGE_CODE }}" /> + <meta name="description" content="{% block meta-description %}Demonstration of the Gstudio Blog application.{% endblock %}" /> + <meta name="keywords" content="{% block meta-keywords %}django, blog, gstudio, {{ nodetype_tags|join:", "}}{% endblock %}" /> + <meta name="author" content="gnowgi" /> + {% block meta %}{% endblock %} + <link rel="pingback" href="/xmlrpc/" /> + <link rel="shortcut icon" href="{{ STATIC_URL }}gstudio/img/favicon.ico" /> + <link rel="home" href="{% url gstudio_nodetype_archive_index %}" /> + <link rel="stylesheet" type="text/css" media="screen, projection" href="{{ STATIC_URL }}gstudio/css/grappelli_skin_default.css" /> + <link rel="stylesheet" type="text/css" media="screen, projection" href="{{ STATIC_URL }}gstudio/css/screen.css" /> + <link rel="stylesheet" type="text/css" media="screen, projection" href="{{ STATIC_URL }}gstudio/css/screen_gstudio.css" /> + <link rel="stylesheet" type="text/css" media="print" href="{{ STATIC_URL }}gstudio/css/print.css" /> + {% block link %}{% endblock %} + {% block script %}{% endblock %} <title>Gnowledge Studio - {% block title %}{% endblock %}</title> + </head> + <body id="gstudio"> + + + + + + + {% include "gstudio/_header.html" %} + <div id="breadcrumbs" class="span-24 last"> + / {% block breadcrumbs %}{% endblock %} + </div> + <!-- <div id="body" class="span-24 last" > --> + <table border="0" > + <tr><td> + + <h3>{% block content %} + {% block nodetype-content %} + <h2 class="nodetype-title"> + <a href="{{ nt.get_absolute_url }}" title="{{ nt.title }}" rel="bookmark">{{ ver_new_dict.title }} {{ nt.id }}.{{ version_no1 }} + </a> + </h2> + + {% with nt.html_content|safe as object_content %}<br> + + <b>Name:<nbsp></b> {{ ver_new_nbh_dict.title }} <br/> + + {% if ver_new_nbh_dict.plural or ver_old_nbh_dict.plural %} + <b> Plural Name:<nbsp></b> + {{ ver_new_nbh_dict.plural}} <br/> + {% endif %} + {% if ver_new_nbh_dict.altnames or ver_old_nbh_dict.altnames%} + <b> Alternate names:<nbsp></b> + {{ ver_new_nbh_dict.altnames}} <br/> + {% endif %} + {% if ver_new_nbh_dict.member_of or ver_old_nbh_dict.member_of %} + <b> Member of :<nbsp></b> + + {% for mkey,mvalue in ver_new_nbh_dict.member_of.items %} + <a href="{{mvalue}}">{{mkey}}</a>; + {% endfor %}<br/> + {% endif %} + + {% if ver_new_nbh_dict.relations or ver_old_nbh_dict.relations %} + + {% for relkey,relvalue in ver_new_nbh_dict.relations.items %} + <b>{{relkey}}:<nbsp></b> + {% for relk, relv in relvalue.items %} + <a href="{{relv}}">{{relk}}</a>; + {% endfor %}<br/> + {% endfor %} + + {% endif %} + + {% if ver_new_nbh_dict.attributes or ver_old_nbh_dict.attributes%} + {% for atkey,atvalue in ver_new_nbh_dict.attributes.items %} + {% if atvalue %} + <b> {{atkey}}:<nbsp></b> + + {% for items in atvalue %} + {{items}};<nbsp> + {% endfor %} + {% endif %}<br/> + {% endfor %} + {% endif %} + {% if ver_new_nbh_dict.content or ver_old_nbh_dict.content %} + <b> Content:<nbsp></b>{{ ver_new_nbh_dict }} <br/> + {% endif %} + + + {% endwith %} + {% endblock %} + {% endblock %} + + </td> + <td> + + <h3>{% block content1 %} + {% block nodetype-content1 %} + <h2 class="nodetype-title"> + <a href="{{ nt.get_absolute_url }}" title="{{ nt.title }}" rel="bookmark">{{ ver_old_dict.title }} {{ nt.id }}.{{ version_no2 }} + </a> + </h2> <br> + {% with nt.html_content|safe as object_content %} + + <b>Name:<nbsp></b>{% autoescape off %} + {{ compare_dict.title }} + {% endautoescape %}<br> + {% if ver_old_nbh_dict.plural or ver_new_nbh_dict.plural %} + <b> Plural Name:<nbsp></b> {% autoescape off %} + {{ compare_dict.plural }} + {% endautoescape %} <br/> + {% endif %} + {% if ver_old_nbh_dict.altnames or ver_new_nbh_dict.altnames %} + <b> Alternate names:<nbsp></b> {% autoescape off %} + {{ compare_dict.altnames }} + {% endautoescape %} + <br/> + {% endif %} + {% if ver_new_nbh_dict.member_of or ver_old_nbh_dict.member_of %} + <b> Member of:<nbsp></b> {% autoescape off %} + {{ compare_dict.member_of }} + {% endautoescape %} + <br/> + {% endif %} + + {% if ver_new_nbh_dict.relations or ver_old_nbh_dict.relations %} + {% for relkey,relvalue in compare_dict.relations.items %} + <b>{{relkey}}:<nbsp></b> + {% autoescape off %} + + + {{ relvalue }} + + + {% endautoescape %} + <br/> + {% endfor %} + + {% endif %} + + {% if ver_old_nbh_dict.attributes or ver_new_nbh_dict.attributes %} + {% for relkey,revalue in compare_dict.attributes.items %} + <b>{{relkey}}:<nbsp></b> + {% autoescape off %} + + + {{ revalue }} + + + {% endautoescape %} + <br/> + {% endfor %} + + {% endif %} + + + {% if ver_new_nbh_dict.ats or ver_old_nbh_dict.ats %} + + + <b>Subjecttype of:<nbsp> </b> {% autoescape off %} + {{ compare_dict.ats }} + {% endautoescape %}<br> + {% endif %} + {% if ver_new_nbh_dict.content or ver_old_nbh_dict.content %} + <b> Content:<nbsp></b> {% autoescape off %} + {{ compare_dict.content }} + {% endautoescape %} <br/> + {% endif %} + {% endwith %} + {% endblock %} + {% endblock %} +<br> +</td></tr> +<tr><td> +<form method="get" action="/objects/display/merge/{{ ssid1 }}/{{ ssid2 }}"> +<input type="submit" value="Merge {{ nt.id }}.{{ version_no1 }} with {{ nt.id }}.{{ version_no2 }}" id="merge1" name="left" ></input></td> +<td><input type="submit" value="Merge {{ nt.id }}.{{ version_no2 }} with {{ nt.id }}.{{ version_no1 }}" id="merge2" name="right"></input></td></form> +</tr> +<tr><td> +<form method="get" action="/objects/display/revert" > +<input type="submit" value="Revert" name="{{ ssid1 }}"></input></td> +<td><input type="submit" value="Revert" name="{{ ssid2 }}"></input></td> +</form></tr> +</table> +</body> +</html> + + + + diff --git a/objectapp/urls/__init__.py b/objectapp/urls/__init__.py index 1406f49c..12cffc5e 100644 --- a/objectapp/urls/__init__.py +++ b/objectapp/urls/__init__.py @@ -78,6 +78,7 @@ urlpatterns = patterns( url(r'^trackback/', include('objectapp.urls.trackback')), url(r'^discussions/', include('objectapp.urls.discussions')), url(r'^add/', include('objectapp.urls.add')), + url(r'^display/',include('objectapp.urls.history')), url(r'^', include('objectapp.urls.quick_gbobject')), url(r'^', include('objectapp.urls.capabilities')), url(r'^', include('objectapp.urls.gbobjects')), diff --git a/objectapp/urls/history.py b/objectapp/urls/history.py new file mode 100644 index 00000000..83e53452 --- /dev/null +++ b/objectapp/urls/history.py @@ -0,0 +1,10 @@ +"""Urls for Gstudio forms""" +from django.conf.urls.defaults import url +from django.conf.urls.defaults import patterns + +urlpatterns = patterns('objectapp.views.history', + url(r'^viewhistory/(?P<ssid>\d+)/(?P<version_no>\d+)/$', 'history', + name='gstudio_history'), + url(r'^compare_history/(?P<ssid>\d+)/$','compare_history'), + url(r'^merge/(?P<ssid1>\d+)/(?P<ssid2>\d+)/$','merge_version'), + url(r'^revert/$','revert_version'),) diff --git a/objectapp/views/dynamicAT.py b/objectapp/views/dynamicAT.py index aec02fc2..81d442f0 100644 --- a/objectapp/views/dynamicAT.py +++ b/objectapp/views/dynamicAT.py @@ -11,14 +11,15 @@ 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) - + # def __init__(self, *args, **kwargs): + # super(ContextForm,self).__init__(*args, **kwargs) return ContextForm(*args, **kwargs) @@ -27,25 +28,53 @@ def dynamic_save(request, attit, memtit): savedict = {} memtit = NID.objects.get(title = str(memtit)) name = memtit.ref + absolute_url_node = name.get_absolute_url() + at = Attributetype.objects.get(title = str(attit)) dt = str(at.get_dataType_display()) MyModel = eval('Attribute'+dt) + + print getattr(models , dt) + + list1 = [] + rdict.update({str(at.title):MyModel}) + + print "rdict",str(rdict) + print 'dt ',dt + if request.method == 'POST': - form = MakeForm(rdict,request.POST) - if form.is_valid(): - 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) + form = MakeForm(rdict,request.POST,request.FILES) + try: + if form.is_valid(): + value = form.cleaned_data['value'] + + + if Attribute.objects.filter(subject = memtit.id , attributetype = at.id): + att = Attribute.objects.get(subject = memtit.id, attributetype = at.id) + att.delete() + del att + savedict = {'title':str(value),'slug':str(value),'svalue':str(value),'subject':memtit, 'attributetype':at,'value':str(value)} + att = MyModel.objects.create(**savedict) + att.save() + print 'savedict',str(savedict) + return HttpResponseRedirect(absolute_url_node) + else: + savedict = {'title':str(value),'slug':str(value),'svalue':str(value),'subject':memtit, 'attributetype':at,'value':str(value)} + att = MyModel.objects.create(**savedict) + att.save() + print 'savedict',str(savedict) + return HttpResponseRedirect(absolute_url_node) + except: + raise Http404() else: form = MakeForm(rdict) + template = "objectapp/fillAT.html" - context = RequestContext(request,{'form' : form,'title':str(attit), 'absolute_url_node':absolute_url_node}) + context = RequestContext(request,{'form' : form,'title':str(attit), 'absolute_url_node':absolute_url_node, 'datatype':dt}) return render_to_response(template,context) diff --git a/objectapp/views/dynamicRT.py b/objectapp/views/dynamicRT.py index 78370b54..f85fe53e 100644 --- a/objectapp/views/dynamicRT.py +++ b/objectapp/views/dynamicRT.py @@ -8,96 +8,181 @@ from django.forms import ModelForm from gstudio.models import * from objectapp.models import * - def context_member(request,reltit , memtit): + member = [] + subtype = [] + subtypemember = [] + finaldict = {} + nt = [] + parenttype = [] + +#------------------------------------------------------------- + if Objecttype.objects.filter(title = str(memtit)): + ot = Objecttype.objects.get(title = str(memtit)) + absolute_url_node = ot.get_absolute_url() + elif Gbobject.objects.filter(title = str(memtit)): + ot = Gbobject.objects.get(title = str(memtit)) + absolute_url_node = ot.get_absolute_url() +#-------------------------------------------------------------- + if Relationtype.objects.filter(title = str(reltit)): r =Relationtype.objects.get(title = str(reltit)) + role = r.left_subjecttype.ref + roletype = str(r.left_applicable_nodetypes) + print "Original is left role of relation" + newrole = r.right_subjecttype.ref + newroletype = str(r.right_applicable_nodetypes) + print 'original ' ,str(role) + print 'newrole (i.e right)', str(newrole) + else: r = Relationtype.objects.get(inverse = str(reltit)) + role = r.right_subjecttype.ref + roletype = str(r.right_applicable_nodetypes) + print "Original is right role of relation" + newrole = r.left_subjecttype.ref + newroletype = str(r.left_applicable_nodetypes) + print 'original ' ,str(role) + print 'newrole (i.e left)', str(newrole) - gbdict = {} - otmem=[] - childpt = [] - childmem = [] - finaldict={} - memdict = {} #otmem + childmem - - if Objecttype.objects.filter(title = str(memtit)): - flag = 1 - 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 = [] +#--------------------------------------------------------------------- + + if newrole.reftype == 'Objecttype' and newroletype == 'OT': + print "Objecttype and OT" + for i in newrole.get_members: + member.append(i) + + for i in member: + finaldict.update({i.id:str(i.title)}) + + # for i in newrole.get_children(): + # subtype.append(i.ref) + for i in newrole.get_descendants(): + subtype.append(i.ref) + + for i in subtype: + finaldict.update({i.id:str(i.title)}) + + for i in subtype: + subtypemember.append(i.get_members) + + subtypemember = [num for elem in subtypemember for num in elem] + + for i in subtypemember: + finaldict.update({i.id:str(i.title)}) + + finaldict.update({newrole.id:str(newrole.title)}) + + elif newrole.reftype == 'Gbobject' and newroletype == 'OB': + print "Gbobject and OB" + nt = newrole.objecttypes.all() + 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) + parenttype.append(i.ref) + + for i in parenttype: + member.append(i.get_members) + + member = [num for elem in member for num in elem] + subtypent = [] - otmem = [num for elem in otmem for num in elem] - gbdict.update({name.id :str(name.title)}) + # for i in parenttype: + # subtypent.append(i.get_children()) + # subtypent = [num for elem in subtypent for num in elem] -#----------------------------------------------------------------------- - - 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) + # for i in subtypent: + # subtype.append(i.ref) + # subtype = [num for elem in subtype for num in elem] + + for i in parenttype: + subtypent.append(i.get_descendants()) -#------------------------------------------------------------------------ + for i in subtypent: + subtype.append(i.ref) - if nodetype=="OB" and flag==0:# gb itself - finaldict=gbdict - for i in otmem: + for i in subtype: + subtypemember.append(i.get_members) + subtypemember = [num for elem in subtypemember for num in elem] + + + for i in member: 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 + for i in subtypemember: 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: + + elif newrole.reftype == 'Objecttype' and newroletype == 'OB': + print "Objecttype and OB" + for i in newrole.get_members: + member.append(i) + + for i in member: 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 - + # for i in newrole.get_children(): + # subtype.append(i.ref) + + for i in newrole.get_descendants(): + subtype.append(i.ref) + for i in subtype: + subtypemember.append(i.get_members) + + subtypemember = [num for elem in subtypemember for num in elem] + + for i in subtypemember: + finaldict.update({i.id:str(i.title)}) + + print 'member',str(member) + print 'subtype', str(subtype) + print 'subtypemember', str(subtypemember) + elif newrole.reftype == 'Gbobject' and newroletype == 'OT': + print "Gbobject and OT" + nt = newrole.objecttypes.all() + for i in nt: + parenttype.append(i.ref) + + for i in parenttype: + member.append(i.get_members) + + member = [num for elem in member for num in elem] + subtypent = [] + + # for i in parenttype: + # subtypent.append(i.get_children()) + # subtypent = [num for elem in subtypent for num in elem] + + # for i in subtypent: + # subtype.append(i.ref) + # subtype = [num for elem in subtype for num in elem] + for i in parenttype: + subtypent.append(i.get_descendants()) + + for i in subtypent: + subtype.append(i.ref) + + for i in subtype: + subtypemember.append(i.get_members) + subtypemember = [num for elem in subtypemember for num in elem] + + + for i in subtype: + finaldict.update({i.id:str(i.title)}) + + for i in parenttype: + finaldict.update({i.id:str(i.title)}) + + for i in member: + finaldict.update({i.id:str(i.title)}) + + for i in subtypemember: + finaldict.update({i.id:str(i.title)}) + + + print 'absolute_url_node', str(absolute_url_node) template="objectapp/selectRT.html" - context = RequestContext(request,{'finaldict':finaldict,'gb':name,'reltit':reltit, 'absolute_url_node': absolute_url_node}) + context = RequestContext(request,{'finaldict':finaldict,'gb':memtit,'reltit':reltit, 'absolute_url_node': absolute_url_node}) return render_to_response(template,context) @@ -107,37 +192,74 @@ def context_save(request,leftmem, reltype, rightmem): reltype = str(reltype) rightmem = str(rightmem) + + + print 'leftmem :', leftmem, 'rightmem :', rightmem + pt = [] + nt = [] + left = NID.objects.get(title = leftmem) + print 'leftid', str(left.id) right = NID.objects.get(title = rightmem) - + print 'rightid', str(right.id) + if Relationtype.objects.filter(title=reltype): relation = Relationtype.objects.get(title = reltype) else: relation = Relationtype.objects.get(inverse = reltype) rightrole = relation.right_subjecttype_id + r = relation.right_subjecttype.ref + print 'rightrole', str(r) leftrole = relation.left_subjecttype_id + l=relation.left_subjecttype.ref + print 'leftrole', str(l) #----------------------------------------------------------------------- flag = 1 if Objecttype.objects.filter(title = leftmem): - if left.id == leftrole : - flag = 0 - print "Objecttype flag = 0 " - else: - print "Objecttype flag = 1 " + + obj = Objecttype.objects.get(title = leftmem) + print 'OT', str(obj) + + while obj.parent: + pt.append((obj.parent).ref) + obj=obj.parent + for i in range(len(pt)): + if pt[i].id == leftrole : + flag = 0 + print "Objecttype flag = 0 " + break + else: + print "Objecttype flag = 1 " + elif Gbobject.objects.filter(title = leftmem): gb = Gbobject.objects.get(title = leftmem) - pt = gb.objecttypes.all() + print 'Ob', str(gb) + nt = gb.objecttypes.all() + print 'nt ', str(nt) + + + for i in range(len(nt)): + pt.append(nt[i].ref) + obj = nt[i].ref + while obj.parent: + pt.append(obj.parent.ref) + obj = obj.parent + + print 'pt ', str(pt) for i in range(len(pt)): if left.id == leftrole or pt[i].id == leftrole: flag = 0 print "Object flag = 0" + break else: print "Object flag = 1" - + print 'pt:',str(pt) #----------------------------------------------------------------------------------- + if flag == 0: + print 'left_subject_id', l 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':right.id, 'right_subject_id':left.id, 'relationtype_id':relation.id, 'left_subject_scope':' ', 'right_subject_scope':' ', 'relationtype_scope':' '} @@ -152,6 +274,6 @@ def context_save(request,leftmem, reltype, rightmem): #return savedict except IntegrityError: #Exception raised when the relational integrity of the database is affected, e.g. a foreign key check fails, duplicate key, etc. - raise Http404() + return HttpResponseRedirect("/nodetypes/") #pass diff --git a/objectapp/views/history.py b/objectapp/views/history.py new file mode 100644 index 00000000..e5e2ff1f --- /dev/null +++ b/objectapp/views/history.py @@ -0,0 +1,436 @@ +from django.http import * +from reversion.models import * +from gstudio.models import * +from django.template import RequestContext +from django.shortcuts import render_to_response +from django.views.generic.date_based import object_detail +from reversion.helpers import * +import pprint +from gstudio.models import * +from reversion.models import * +from gstudio.views.decorators import protect_nodetype +from gstudio.views.decorators import update_queryset +import ast +from objectapp.models import * + +def history(request,ssid,version_no): + # iden=request.GET["id"] + nt1=Version.objects.get(id=ssid) + nt=nt1.object.ref + ver_dict=nt.version_info(ssid) + ver_nbh=ver_dict['nbhood'] + ver_nbh_dict=ast.literal_eval(ver_nbh) + content=ver_dict['content'] + content=content[3:-4] + ver_nbh_dict['content']=content + + variables = RequestContext(request,{'ver_nbh_dict':ver_nbh_dict ,'nt':nt,'ssid':ssid,'version_no':version_no}) + template="objectapp/display.html" + return render_to_response(template,variables) + +def get_version_counter(value): + counter1=str(value) + index=counter1.rfind(".") + counter1=counter1[index+1:] + version_no=int(counter1) + return version_no + + +def get_diff_from_dict(ver_new_nbh_dict,ver_old_nbh_dict,field): + ver_new="" + ver_old="" + diffs="" + ver_new_dict={} + ver_old_dict={} + + if ver_new_nbh_dict[field] or ver_old_nbh_dict[field]: +# if isinstance(ver_new_nbh_dict[field],dict): + for each in ver_new_nbh_dict[field]: + #ver_new=ver_new_dict[each]= + ver_new+=str(each)+"," + ver_new=ver_new[0:-1] + for each in ver_old_nbh_dict[field]: + ver_old+=str(each)+"," + ver_old=ver_old[0:-1] + diffs = dmp.diff_main(ver_new, ver_old) + return diffs + +def get_diff_from_nested_dict(ver_new_nbh_dict,ver_old_nbh_dict,field): + + + return compare +def compare_history(request,ssid): + ssid1=ssid + + version_counter1=request.GET["group1"] + version_no1=get_version_counter(version_counter1) + version_counter2=request.GET["group2"] + version_no2=get_version_counter(version_counter2) + counter2=float(version_counter2) + ssid2=int(counter2) + + ver_obj=Version.objects.get(id=ssid1) + ot=ver_obj.object.ref + pp=pprint.PrettyPrinter(indent=4) + + ver_new_dict=ot.version_info(ssid1) + content=str(ver_new_dict['content']) + content=content[3:-4] + ver_new_dict['content']=content + + ver_old_dict=ot.version_info(ssid2) + content=str(ver_old_dict['content']) + content=content[3:-4] + ver_old_dict['content']=content + + ver_new_nbh=ver_new_dict['nbhood'] + ver_new_nbh_dict=ast.literal_eval(ver_new_nbh) + + ver_old_nbh=ver_old_dict['nbhood'] + ver_old_nbh_dict=ast.literal_eval(ver_old_nbh) + + compare_dict={} + for each in ver_new_nbh_dict: + ver_new="" + ver_old="" + if each=='altnames': + if ver_new_nbh_dict['altnames'] or ver_old_nbh_dict['altnames']: + ver_new+=ver_new_nbh_dict['altnames'] + ver_old+=ver_old_nbh_dict['altnames'] + diffs = dmp.diff_main(ver_new, ver_old) + compare_dict['altnames']=dmp.diff_prettyHtml(diffs) + + + elif each=='title': + if ver_new_nbh_dict['title'] or ver_old_nbh_dict['title']: + ver_new+=ver_new_nbh_dict['title'] + ver_old+=ver_old_nbh_dict['title'] + diffs = dmp.diff_main(ver_new, ver_old) + compare_dict['title']=dmp.diff_prettyHtml(diffs) + elif each =='plural': + if ver_new_nbh_dict['plural'] or ver_old_nbh_dict['plural']: + ver_new+=ver_new_nbh_dict['plural'] + ver_old+=ver_old_nbh_dict['plural'] + diffs = dmp.diff_main(ver_new, ver_old) + compare_dict['plural']=dmp.diff_prettyHtml(diffs) + elif each =='member_of': + diffs=get_diff_from_dict(ver_new_nbh_dict,ver_old_nbh_dict,each) + compare_dict['member_of']=dmp.diff_prettyHtml(diffs) + elif each =='leftroles': + diffs=get_diff_from_dict(ver_new_nbh_dict,ver_old_nbh_dict,each) + compare_dict['leftroles']=dmp.diff_prettyHtml(diffs) + elif each =='ats': + diffs=get_diff_from_dict(ver_new_nbh_dict,ver_old_nbh_dict,each) + compare_dict['ats']=dmp.diff_prettyHtml(diffs) + elif each =='rightroles': + diffs=get_diff_from_dict(ver_new_nbh_dict,ver_old_nbh_dict,each) + compare_dict['rightroles']=dmp.diff_prettyHtml(diffs) + elif each =='attributes': + + compare_rel_new={} + compare_rel_old={} + compare={} + for rkey,rvalue in ver_new_nbh_dict[each].items(): + ver_new="" + for relvalue in rvalue: + ver_new+=str(relvalue) + "," + ver_new=ver_new[0:-1] + compare_rel_new[str(rkey)]=ver_new + for rkey,rvalue in ver_old_nbh_dict[each].items(): + ver_old="" + for rv in rvalue: + ver_old+=str(rv) + "," + ver_old=ver_old[0:-1] + compare_rel_old[str(rkey)]=ver_old + if len(compare_rel_new) >= len(compare_rel_old): + for rkey,rvalue in compare_rel_new.items(): + if compare_rel_old.has_key(rkey): + diffs=dmp.diff_main(compare_rel_new[str(rkey)],compare_rel_old[str(rkey)]) + compare[str(rkey)]=dmp.diff_prettyHtml(diffs) + + else: + diffs=dmp.diff_main(compare_rel_new[str(rkey)],"") + compare[str(rkey)]=dmp.diff_prettyHtml(diffs) + else: + for rkey,rvalue in compare_rel_old.items(): + if compare_rel_new.has_key(rkey): + diffs=dmp.diff_main(compare_rel_new[str(rkey)],compare_rel_old[str(rkey)]) + compare[str(rkey)]=dmp.diff_prettyHtml(diffs) + else: + diffs=dmp.diff_main("",compare_rel_old[str(rkey)]) + compare[str(rkey)]=dmp.diff_prettyHtml(diffs) + compare_dict['attributes']=compare + + elif each =='relations': + ver_new="" + ver_old="" + compare_rel_new={} + compare_rel_old={} + compare={} + for rkey,rvalue in ver_new_nbh_dict[each].items(): + ver_new="" + for relk,relvalue in rvalue.items(): + ver_new+=str(relk) + "," + ver_new=ver_new[0:-1] + compare_rel_new[str(rkey)]=ver_new + for rkey,rvalue in ver_old_nbh_dict[each].items(): + ver_old="" + for relk,relvalue in rvalue.items(): + ver_old+=str(relk) + "," + ver_old=ver_old[0:-1] + compare_rel_old[str(rkey)]=ver_old + if len(compare_rel_new) >= len(compare_rel_old): + for rkey,rvalue in compare_rel_new.items(): + if compare_rel_old.has_key(rkey): + diffs=dmp.diff_main(compare_rel_new[str(rkey)],compare_rel_old[str(rkey)]) + compare[str(rkey)]=dmp.diff_prettyHtml(diffs) + + else: + diffs=dmp.diff_main(compare_rel_new[str(rkey)],"") + compare[str(rkey)]=dmp.diff_prettyHtml(diffs) + else: + for rkey,rvalue in compare_rel_old.items(): + if compare_rel_new.has_key(rkey): + diffs=dmp.diff_main(compare_rel_new[str(rkey)],compare_rel_old[str(rkey)]) + compare[str(rkey)]=dmp.diff_prettyHtml(diffs) + else: + diffs=dmp.diff_main("",compare_rel_old[str(rkey)]) + compare[str(rkey)]=dmp.diff_prettyHtml(diffs) + compare_dict['relations']=compare + elif each =='priornodes': + diffs=get_diff_from_dict(ver_new_nbh_dict,ver_old_nbh_dict,each) + compare_dict['priornodes']=dmp.diff_prettyHtml(diffs) + elif each =='posteriornodes': + diffs=get_diff_from_dict(ver_new_nbh_dict,ver_old_nbh_dict,each) + compare_dict['posteriornodes']=dmp.diff_prettyHtml(diffs) + elif each =='type_of': + diffs=get_diff_from_dict(ver_new_nbh_dict,ver_old_nbh_dict,each) + compare_dict['type_of']=dmp.diff_prettyHtml(diffs) + elif each =='contains_subtypes': + diffs=get_diff_from_dict(ver_new_nbh_dict,ver_old_nbh_dict,each) + compare_dict['contains_subtypes']=dmp.diff_prettyHtml(diffs) + elif each =='member_of_metatypes': + diffs=get_diff_from_dict(ver_new_nbh_dict,ver_old_nbh_dict,each) + compare_dict['member_of_metatypes']=dmp.diff_prettyHtml(diffs) + + + ver_new="" + ver_old="" + ver_new+=ver_new_dict['content'] + ver_old+=ver_old_dict['content'] + diffs = dmp.diff_main(ver_new, ver_old) + compare_dict['content']=dmp.diff_prettyHtml(diffs) + ver_new_nbh_dict['content']=ver_new_dict['content'] + ver_old_nbh_dict['content']=ver_old_dict['content'] + + + + variables=RequestContext(request,{'nt':ot,'ver_old_dict':ver_old_dict,'ver_new_dict':ver_new_dict,'compare_dict':compare_dict ,'ssid1':ssid1,'ssid2':ssid2,'version_no1':version_no1,'version_no2':version_no2,'ver_new_nbh_dict':ver_new_nbh_dict,'ver_old_nbh_dict':ver_old_nbh_dict}) + template="objectapp/version_diff.html" + return render_to_response(template,variables) + + +def get_merge_dict(ssid1,ssid2,direction): + ver_merge={} + ot=Version.objects.get(id=ssid1) + obj=ot.object.ref + ver_left_dict=obj.version_info(ssid1) + ver_right_dict=obj.version_info(ssid2) + + + + if direction =='right': + # swap left and right + temp_dict={} + temp_dict=ver_left_dict + ver_left_dict=ver_right_dict + ver_right_dict=temp_dict + # swap ssid1 and ssid2 for managing nbhood history + temp=int(ssid1) + ssid1=int(ssid2) + ssid2=temp + ver_left_nbh_dict=ast.literal_eval(ver_left_dict['nbhood']) + ver_right_nbh_dict=ast.literal_eval(ver_right_dict['nbhood']) + # By default value of content is removed + if ver_left_dict['content']=='<br />': + ver_left_dict['content']='' + if ver_right_dict['content']=='<br />': + ver_right_dict['content']='' + # Getting merged dictionary + for each in ver_left_dict: + if ver_left_dict[each] and ver_right_dict[each]: + ver_merge[each]=ver_right_dict[each] + elif ver_left_dict[each]: + if not ver_right_dict[each]: + ver_merge[each]=ver_left_dict[each] + elif ver_right_dict[each]: + if not ver_left_dict[each]: + ver_merge[each]=ver_right_dict[each] + elif not ver_left_dict[each]: + if not ver_right_dict[each]: + ver_merge[each]='' + ver_merge_nbh_dict={} + # processing nbhood for merged version + for each in ver_left_nbh_dict: + if isinstance(ver_left_nbh_dict[each],dict): + if ver_left_nbh_dict[each] and ver_right_nbh_dict[each]: + ver_merge_nbh_dict[each]=dict(ver_left_nbh_dict[each].items()+ver_right_nbh_dict[each].items()) + elif ver_left_nbh_dict[each]: + if not ver_right_nbh_dict[each]: + ver_merge_nbh_dict[each]=ver_left_nbh_dict[each] + elif ver_right_nbh_dict[each]: + if not ver_left_nbh_dict[each]: + ver_merge_nbh_dict[each]=ver_right_nbh_dict[each] + else: + if not ver_left_nbh_dict[each]: + if not ver_right_nbh_dict[each]: + ver_merge_nbh_dict[each]=ver_right_nbh_dict[each] + else: + if ver_left_nbh_dict[each] and ver_right_nbh_dict[each]: + ver_merge_nbh_dict[each]=ver_right_nbh_dict[each] + elif ver_left_nbh_dict[each]: + if not ver_right_nbh_dict[each]: + ver_merge_nbh_dict[each]=ver_left_nbh_dict[each] + elif ver_right_nbh_dict[each]: + if not ver_left_nbh_dict[each]: + ver_merge_nbh_dict[each]=ver_right_nbh_dict[each] + else: + if not ver_left_nbh_dict[each]: + if not ver_right_nbh_dict[each]: + ver_merge_nbh_dict[each]=ver_right_nbh_dict[each] + + # Removing auto generated fields + del(ver_merge['start_publication']) + del(ver_merge['end_publication']) + del(ver_merge['creation_date']) + del(ver_merge['last_update']) + + history_left_list=[] + history_right_list=[] + history_merged_list=[] + + history_left_list=ver_left_nbh_dict['history'] + history_left_list.append(ssid1) + history_right_list=ver_right_nbh_dict['history'] + history_right_list.append(ssid2) + history_merged_list.append(history_left_list) + history_merged_list.append(history_right_list) + ver_merge_nbh_dict['history']=history_merged_list + obj.nbhood = unicode(ver_merge_nbh_dict) + + # setting the objecttypes fields + obj.slug = ver_merge['slug'] + obj.altnames=ver_merge['altnames'] + obj.nodemodel = ver_merge['nodemodel'] + obj.comment_enabled = ver_merge['comment_enabled'] + obj.title = ver_merge['title'] + obj.sites = ver_merge['sites'] + obj.content = ver_merge['content'] + obj.template = ver_merge['template'] + + obj.plural = ver_merge['plural'] + obj.status = ver_merge['status'] + obj.nid_ptr = NID.objects.get(id=ver_merge['nid_ptr']) + obj.nbhood = ver_merge_nbh_dict + # obj.nbh=ver_merge['nbh'] + obj.id = ver_merge['id'] + obj.pingback_enabled = ver_merge['pingback_enabled'] + obj.save_revert_or_merge() + # formatting content field + content=ver_merge['content'] + content=content[3:-4] + ver_merge['content']= content + + return ver_merge + + +def merge_version(request,ssid1,ssid2): + direction="" + ver_merge={} + for each in request.GET: + direction=each + ot=Version.objects.get(id=ssid1) + obj=ot.object.ref + ver_merge=get_merge_dict(ssid1,ssid2,direction) + slist=[] + slist=obj.get_ssid + version_counter=len(slist) + merged_ver_ssid=slist[version_counter-1] + ver_merged_dict=obj.version_info(merged_ver_ssid) + ver_merged_nbh_dict=ast.literal_eval(ver_merged_dict['nbhood']) + ver_merged_nbh_dict['content']=ver_merge['content'] + variables = RequestContext(request,{'ver_nbh_dict':ver_merged_nbh_dict ,'nt':obj,'ssid':merged_ver_ssid,'version_no':version_counter}) + template="objectapp/display.html" + return render_to_response(template,variables) + +def revert(ssid): + ver_revert={} + ot=Version.objects.get(id=ssid) + obj=ot.object.ref + ver_revert=obj.version_info(ssid) + + # Removing auto generated fields + del(ver_revert['start_publication']) + del(ver_revert['end_publication']) + del(ver_revert['creation_date']) + del(ver_revert['last_update']) + + # setting nbhood history + history=[] + ver_revert_nbh_dict=ast.literal_eval(ver_revert['nbhood']) + + history=ver_revert_nbh_dict['history'] + history.append(ssid) + ver_revert_nbh_dict['history']=history + + # setting the revert version fields + obj.slug = ver_revert['slug'] + obj.altnames=ver_revert['altnames'] + + obj.nodemodel = ver_revert['nodemodel'] + + obj.comment_enabled = ver_revert['comment_enabled'] + obj.title = ver_revert['title'] + obj.sites = ver_revert['sites'] + obj.content = ver_revert['content'] + obj.template = ver_revert['template'] + + obj.plural = ver_revert['plural'] + obj.status = ver_revert['status'] + obj.nid_ptr = NID.objects.get(id=ver_revert['nid_ptr']) + obj.nbhood = unicode(ver_revert_nbh_dict) + # obj.nbh=ver_revert['nbh'] + obj.id = ver_revert['id'] + obj.pingback_enabled = ver_revert['pingback_enabled'] + obj.save_revert_or_merge() + # formatting content field + content=ver_revert['content'] + content=content[3:-4] + ver_revert['content']= content + + return ver_revert + +def revert_version(request): + ver_revert={} + for each in request.GET: + ssid=each + ssid=int(ssid) + ot=Version.objects.get(id=ssid) + obj=ot.object.ref + + ver_revert=revert(ssid) + ver_revert['nbhood'] + slist=[] + slist=obj.get_ssid + version_counter=len(slist) + revert_ver_ssid=slist[version_counter-1] + ver_revert_dict=obj.version_info(revert_ver_ssid) + ver_revert_nbh_dict=ast.literal_eval(ver_revert_dict['nbhood']) + ver_revert_nbh_dict['content']=ver_revert['content'] + + variables = RequestContext(request,{'ver_nbh_dict':ver_revert_nbh_dict ,'nt':obj,'ssid':revert_ver_ssid,'version_no':version_counter}) + template="objectapp/display.html" + return render_to_response(template,variables) + # return HttpResponse(ver_revert['nbhood']) + + |