summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNeha shah <shan.akshata@gmail.com>2012-05-30 15:05:33 +0530
committerNeha shah <shan.akshata@gmail.com>2012-05-30 15:05:33 +0530
commitf53d73be28062f9feff74522e20fa60dfd054e32 (patch)
tree1ba3014ca9d280787a487081c8a39cf9dcba94df
parent29ae5dbc1e26de261fe08eec6f5fa2445f969132 (diff)
parent81f1310e441c5dfd71e332aaa09e0964052ab9e3 (diff)
downloadgnowsys-f53d73be28062f9feff74522e20fa60dfd054e32.tar.gz
Merge remote branch 'sr/master'
-rw-r--r--.gitignore9
-rw-r--r--README.rst142
-rw-r--r--demo/__init__.pycbin168 -> 0 bytes
-rw-r--r--demo/dashboard.py35
-rw-r--r--demo/dashboard.pycbin5674 -> 0 bytes
-rw-r--r--demo/demo.db-oldbin467968 -> 0 bytes
-rw-r--r--demo/graphviz/__init__.pycbin131 -> 0 bytes
-rw-r--r--demo/graphviz/admin.pycbin1802 -> 0 bytes
-rw-r--r--demo/graphviz/management/__init__.pycbin142 -> 0 bytes
-rw-r--r--demo/graphviz/models.pycbin5579 -> 0 bytes
-rw-r--r--demo/grappelli/__init__.pycbin160 -> 0 bytes
-rw-r--r--demo/grappelli/dashboard/__init__.pycbin248 -> 0 bytes
-rw-r--r--demo/grappelli/dashboard/dashboards.pycbin6983 -> 0 bytes
-rw-r--r--demo/grappelli/dashboard/management/__init__.pycbin153 -> 0 bytes
-rw-r--r--demo/grappelli/dashboard/modules.pycbin14155 -> 0 bytes
-rw-r--r--demo/grappelli/dashboard/registry.pycbin2174 -> 0 bytes
-rw-r--r--demo/grappelli/dashboard/templatetags/__init__.pycbin155 -> 0 bytes
-rw-r--r--demo/grappelli/dashboard/templatetags/grp_dashboard_tags.pycbin2444 -> 0 bytes
-rw-r--r--demo/grappelli/dashboard/utils.pycbin5848 -> 0 bytes
-rw-r--r--demo/grappelli/models.pycbin130 -> 0 bytes
-rw-r--r--demo/grappelli/settings.pycbin418 -> 0 bytes
-rw-r--r--demo/grappelli/static/grappelli/css/forms.css6
-rw-r--r--demo/grappelli/static/grappelli/css/grappelli-skin-default.css13
-rw-r--r--demo/grappelli/templates/admin/change_form.html1
-rw-r--r--demo/grappelli/templatetags/__init__.pycbin145 -> 0 bytes
-rw-r--r--demo/grappelli/templatetags/grp_tags.pycbin7848 -> 0 bytes
-rw-r--r--demo/grappelli/urls.pycbin633 -> 0 bytes
-rw-r--r--demo/grappelli/views/__init__.pycbin138 -> 0 bytes
-rw-r--r--demo/grappelli/views/related.pycbin4554 -> 0 bytes
-rw-r--r--demo/init.py17
-rw-r--r--demo/rdfstore/__db.001bin24576 -> 0 bytes
-rw-r--r--demo/rdfstore/__db.002bin3481600 -> 0 bytes
-rw-r--r--demo/rdfstore/__db.003bin65544192 -> 0 bytes
-rw-r--r--demo/rdfstore/__db.004bin802816 -> 0 bytes
-rw-r--r--demo/rdfstore/c^o^s^p^bin8192 -> 0 bytes
-rw-r--r--demo/rdfstore/c^p^o^s^bin8192 -> 0 bytes
-rw-r--r--demo/rdfstore/c^s^p^o^bin8192 -> 0 bytes
-rw-r--r--demo/rdfstore/contextsbin8192 -> 0 bytes
-rw-r--r--demo/rdfstore/i2kbin8192 -> 0 bytes
-rw-r--r--demo/rdfstore/k2ibin12288 -> 0 bytes
-rw-r--r--demo/rdfstore/namespacebin8192 -> 0 bytes
-rw-r--r--demo/rdfstore/prefixbin8192 -> 0 bytes
-rw-r--r--demo/sampledata.json1
-rw-r--r--demo/settings.py4
-rw-r--r--demo/settings.pycbin4506 -> 0 bytes
-rw-r--r--demo/urls.pycbin2225 -> 0 bytes
-rw-r--r--demo/views.pycbin860 -> 0 bytes
-rw-r--r--demo/working-demo.dbbin466944 -> 0 bytes
-rw-r--r--dist/django_gstudio-0.3.dev-py2.7.eggbin2414692 -> 0 bytes
-rw-r--r--gstudio/TAGS2725
-rw-r--r--gstudio/__init__.pycbin378 -> 0 bytes
-rw-r--r--gstudio/admin/__init__.py5
-rw-r--r--gstudio/admin/attribute.py23
-rw-r--r--gstudio/admin/attribute_bigintegerfield.py8
-rw-r--r--gstudio/admin/attribute_booleanfield.py8
-rw-r--r--gstudio/admin/attribute_charfield.py8
-rw-r--r--gstudio/admin/attribute_commaseparatedintegerfield.py7
-rw-r--r--gstudio/admin/attribute_datefield.py7
-rw-r--r--gstudio/admin/attribute_datetimefield.py7
-rw-r--r--gstudio/admin/attribute_decimalfield.py7
-rw-r--r--gstudio/admin/attribute_emailfield.py7
-rw-r--r--gstudio/admin/attribute_filefield.py7
-rw-r--r--gstudio/admin/attribute_filepathfield.py7
-rw-r--r--gstudio/admin/attribute_floatfield.py7
-rw-r--r--gstudio/admin/attribute_imagefield.py7
-rw-r--r--gstudio/admin/attribute_integerfield.py8
-rw-r--r--gstudio/admin/attribute_ipaddressfield.py7
-rw-r--r--gstudio/admin/attribute_nullbooleanfield.py7
-rw-r--r--gstudio/admin/attribute_positiveintegerfield.py7
-rw-r--r--gstudio/admin/attribute_textfield.py7
-rw-r--r--gstudio/admin/attribute_timefield.py7
-rw-r--r--gstudio/admin/attribute_urlfield.py7
-rw-r--r--gstudio/admin/attributespecification.py7
-rw-r--r--gstudio/admin/attributetype.py8
-rw-r--r--gstudio/admin/complement.py7
-rw-r--r--gstudio/admin/expression.py7
-rw-r--r--gstudio/admin/forms.py16
-rw-r--r--gstudio/admin/intersection.py7
-rw-r--r--gstudio/admin/metatype.py7
-rw-r--r--gstudio/admin/nodespecification.py7
-rw-r--r--gstudio/admin/objecttype.py12
-rw-r--r--gstudio/admin/processtype.py9
-rw-r--r--gstudio/admin/relation.py23
-rw-r--r--gstudio/admin/relationspecification.py8
-rw-r--r--gstudio/admin/relationtype.py8
-rw-r--r--gstudio/admin/systemtype.py8
-rw-r--r--gstudio/admin/union.py8
-rw-r--r--gstudio/management/commands/peers.py23
-rw-r--r--gstudio/management/commands/register-peer.py52
-rw-r--r--gstudio/models.py887
-rw-r--r--gstudio/settings.py2
-rw-r--r--gstudio/static/gstudio/css/screen.css27
-rw-r--r--gstudio/static/gstudio/js/gstudio.js19
-rw-r--r--gstudio/templates/gstudio/_header.html2
-rw-r--r--gstudio/templates/gstudio/base.html20
-rw-r--r--gstudio/templates/gstudio/display.html595
-rw-r--r--gstudio/templates/gstudio/graph1.html2
-rw-r--r--gstudio/templates/gstudio/nodetype_detail.html27
-rw-r--r--gstudio/templates/gstudio/nodetype_list.html4
-rw-r--r--gstudio/templates/gstudio/skeleton.html420
-rw-r--r--gstudio/templates/gstudio/version_base.html129
-rw-r--r--gstudio/templates/gstudio/version_diff.html219
-rw-r--r--gstudio/testloop.py59
-rw-r--r--gstudio/urls/__init__.py1
-rw-r--r--gstudio/urls/ajaxurls.py2
-rw-r--r--gstudio/urls/graphs.py1
-rw-r--r--gstudio/urls/history.py8
-rw-r--r--gstudio/views/add.py23
-rw-r--r--gstudio/views/ajaxviews.py38
-rw-r--r--gstudio/views/graphs.py37
-rw-r--r--gstudio/views/history.py105
-rw-r--r--gstudio/xmlrpc/__init__.py34
-rw-r--r--gstudio/xmlrpc/metaweblog.py193
-rw-r--r--gstudio/xmlrpc/rpc/views.py186
-rw-r--r--objectapp/TAGS1945
-rw-r--r--objectapp/forms.py18
-rw-r--r--objectapp/models.py187
-rw-r--r--objectapp/settings.py4
-rw-r--r--objectapp/static/objectapp/css/screen.css24
-rw-r--r--objectapp/static/objectapp/js/savert.js12
-rw-r--r--objectapp/static/objectapp/js/setMember.js12
-rw-r--r--objectapp/templates/objectapp/_gbobject_detail.html4
-rw-r--r--objectapp/templates/objectapp/base.html4
-rw-r--r--objectapp/templates/objectapp/fillAT.html27
-rw-r--r--objectapp/templates/objectapp/gbobject_detail.html24
-rw-r--r--objectapp/templates/objectapp/selectRT.html27
-rw-r--r--objectapp/templates/objectapp/skeleton.html460
-rw-r--r--objectapp/urls/ATurl.py8
-rw-r--r--objectapp/urls/RTurl.py11
-rw-r--r--objectapp/views/add.py9
-rw-r--r--objectapp/views/dynamicAT.py179
-rw-r--r--objectapp/views/dynamicRT.py437
132 files changed, 3795 insertions, 5972 deletions
diff --git a/.gitignore b/.gitignore
index 4ef8b16e..839b8b03 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,11 @@
build/
demo/demo.db
+
+### tilde, pyc and hash files
+
+*.pyc
+*~
+\#*\#
+
+
+
diff --git a/README.rst b/README.rst
index 092b055c..0c6e4290 100644
--- a/README.rst
+++ b/README.rst
@@ -1,73 +1,130 @@
-==================
-gstudio: Gnowledge Studio
-==================
+==============
+GNOWSYS Studio
+==============
-A collaborative workspace for constructing and publishing semantic
-knowledge networks and ontologies as blogs.
+A collaborative workspace (studio) for constructing and publishing semantic
+knowledge networks and ontologies.
-Features taking shape
-=====================
-As and when a feature is tested and working it will be listed below.
+Features
+========
-Nodes implemented
-=================
+The application is devided into two sub-apps. Gstudio and
+Objectapp. The former includes classes for organizing the network or
+constructing an ontology. The latter includes classes for holding the
+instances of object-types, process-types and system-types.
Gstudio Components
------------------
* Metatypes
+
+ To hold Classes which have other classes as its members. e.g. "abstract noun", "adjective", "phylem", "class", "genus", "species" etc.
* Object types
+
+ To hold Classes: e.g. "thing", "being", "living being", "animals", "cat", "place", "person" etc.
* Relation types
+
+To define binary relations (object properties) between classes and objects. e.g., "part of", "friend of", "composed of", "located in" etc.
* Attribute types
-* System types
+
+ To define datatype properties for classes and objects. e.g., "population", "size", "length", "height", "first name", "phone number" etc.
+* System types
+
+ To bring together some of the classes into a system or
+ an ontology, a collection of the types defined above for
+ convenience. You can bring together the required classes, relations
+ and attributes into
* Process types
+
+ To define a process as prior and post states of classes or objects.
* Attributes
+
+ To store attributes
* Relations
+
+ To store binary relations
* Node Specification
+
+ A node specified (described) by its relations or attributes or both.
* Relation Specification
+
+ To create an expression using a relation with a subject, e.g.,
+ "friend of Tom", "components of a cell" etc.
+
* Attribute Specification
+
+ To specify an attribute by a subject to say for example:
+ population of India, color of a flower etc. These do not yeild a
+ proposition but an expression, which can be used as a subject in
+ another sentence.
+
+* Expression
+
+ Expression is more like a relation between two terms, but it does not yeild a proposition, e.g.,
+ "Researchers in India", "students residing in India" etc. It is modelled more like relation
+ class, except that the result is not a proposition/triple.
+
* Union
+
+ To define a class by a union relation between two or more classes.
+
* Complement
+
+ To define a class as a compleemnt of two or more classes.
+
* Intersection
+ To define a class as an intersection between two or more classes.
Objectapp Components
------------------
* Objects
+
+ To hold the instances of Object types: "Mumbai", "Tom" etc.
+
* Systems
+
+ To hold the instances of System types.
+
* Processes
+ To hold the instances of processes.
+
Online Collaborative Platform
=============================
-The application is built as a collaborative on line platform.
+The application is built as a collaborative on line platform with the following features.
Version Control
---------------
-All the nodes above are also registered with django-reversion for
-version control using django-reversion.
+
+All the changes by the users will be recorded. This feature is implemented using using django-reversion.
User Registration
-----------------
-Basic registration using django-registration
+Basic registration, authentication mechanism.
-Features you will see soon:
-===========================
+Network Navigation using SVG graphs
+==================================
* neighbourhood graphs and concept graphs
-* dynamic forms for adding attributes and relations following the
- definition
-Other Semantic Web features to come
-===================================
+
+
+Other Semantic Web features
+===========================
* data in RDF format
* rdf feed to a triple store
* sparql endpoint
+
+Features to be implemented
+==========================
+
* export and import of standard knowledge representation languages: CL, OWL, XTM etc.
Features adopted from Django-Blog-Zinnia
@@ -79,42 +136,51 @@ django-blog-zinnia, which taught us best software development
practices as well! After reviewing each feature for the purpose of
semantic blogging, we will retain or extend the following features.
+
+
* Comments
-* `Sitemaps`_
+* Sitemaps
* Archives views
* Related entries
* Private entries
* RSS or Atom Feeds
-* Tags and categories views
-* `Advanced search engine`_
+* Tags
+* Advanced search engine
* Prepublication and expiration
-* Edition in `MarkDown`_, `Textile`_ or `reStructuredText`_
+* Edition in MarkDown, Textile or reStructuredText
* Widgets (Popular entries, Similar entries, ...)
-* Spam protection with `Akismet`_ or `TypePad`_
+* Spam protection with Akismet or TypePad
* Admin dashboard
-* `MetaWeblog API`_
+* MetaWeblog API, xmlrpc
* Ping Directories
* Ping External links
-* `Bit.ly`_ support
-* `Twitter`_ support
-* `Gravatar`_ support
-* `Django-CMS`_ plugins
+* Bit.ly support
+* Twitter support
+* Gravatar support
+* Django-CMS plugins
* Collaborative work
* Tags autocompletion
-* `Entry model extendable`_
+* Entry model extendable
* Pingback/Trackback support
-* `Blogger conversion utility`_
-* `WordPress conversion utility`_
-* `WYMeditor`_, `TinyMCE`_ and `MarkItUp`_ support
+* Blogger conversion utility
+* WordPress conversion utility
+* WYMeditor, TinyMCE and MarkItUp support
* Ready to use and extendables templates
-* `Windows Live Writer`_ compatibility
+* Windows Live Writer compatibility
Examples
========
-We will soon create a sandbox site for users to play and test the features.
+A sandbox site will give you a preview of the application. Visit http://sbox.gnowledge.org/
Project Page
============
-https://www.metastudio.org/groups/gstudio/overview
+The project management is done from Savannah: https://savannah.gnu.org/projects/gnowsys/
+
+Mailing list
+============
+
+Join this list if you are intersted in using or contributing as a hacker.
+
+http://gnowledge.org/cgi-bin/mailman/listinfo/gnowsys-dev
diff --git a/demo/__init__.pyc b/demo/__init__.pyc
deleted file mode 100644
index 3aa84235..00000000
--- a/demo/__init__.pyc
+++ /dev/null
Binary files differ
diff --git a/demo/dashboard.py b/demo/dashboard.py
index 93b08055..3e4c726c 100644
--- a/demo/dashboard.py
+++ b/demo/dashboard.py
@@ -92,17 +92,29 @@ class CustomIndexDashboard(Dashboard):
collapsible=False,
children = [
modules.AppList(
- #Gstudio models here ( other than attribute datatype)
- _('Gstudio'),
+ _('Gstudio (Basic)'),
column=1,
collapsible=False,
models=(
- 'gstudio.models.Objecttype',
+ 'gstudio.models.Objecttype',
+ 'gstudio.models.Attributetype',
+ 'gstudio.models.Relationtype',
+ 'objectapp.models.Gbobject',
+ ),
+ ),
+
+ modules.AppList(
+
+
+ #Gstudio models here ( other than attribute datatype and collapsible ones)
+ _('Gstudio (Advanced)'),
+ column=1,
+ collapsible=True,
+ models=(
+
'gstudio.models.Metatype',
'gstudio.models.Relation',
- 'gstudio.models.Relationtype',
'gstudio.models.Attribute',
- 'gstudio.models.Attributetype',
'gstudio.models.Systemtype',
'gstudio.models.Processtype',
'gstudio.models.AttributeSpecification',
@@ -112,22 +124,27 @@ class CustomIndexDashboard(Dashboard):
'gstudio.models.Complement',
'gstudio.models.Intersection',
'gstudio.models.Expression',
+ 'gstudio.models.Peer',
),
),
#Object App models here
-
modules.AppList(
- _('Object App'),
+ _('Object App (Advanced)'),
column=1,
- collapsible=False,
+ collapsible=True,
models=(
- 'objectapp.models.*',
+ 'objectapp.models.Process',
+ 'objectapp.models.System',
),
),
+
+
+
+
# Gstudio Attribute datatype models here
modules.AppList(
diff --git a/demo/dashboard.pyc b/demo/dashboard.pyc
deleted file mode 100644
index d0e061ea..00000000
--- a/demo/dashboard.pyc
+++ /dev/null
Binary files differ
diff --git a/demo/demo.db-old b/demo/demo.db-old
deleted file mode 100644
index 76a326ba..00000000
--- a/demo/demo.db-old
+++ /dev/null
Binary files differ
diff --git a/demo/graphviz/__init__.pyc b/demo/graphviz/__init__.pyc
deleted file mode 100644
index 02e3f24d..00000000
--- a/demo/graphviz/__init__.pyc
+++ /dev/null
Binary files differ
diff --git a/demo/graphviz/admin.pyc b/demo/graphviz/admin.pyc
deleted file mode 100644
index d712f1cc..00000000
--- a/demo/graphviz/admin.pyc
+++ /dev/null
Binary files differ
diff --git a/demo/graphviz/management/__init__.pyc b/demo/graphviz/management/__init__.pyc
deleted file mode 100644
index 4fb5495f..00000000
--- a/demo/graphviz/management/__init__.pyc
+++ /dev/null
Binary files differ
diff --git a/demo/graphviz/models.pyc b/demo/graphviz/models.pyc
deleted file mode 100644
index 00d027e3..00000000
--- a/demo/graphviz/models.pyc
+++ /dev/null
Binary files differ
diff --git a/demo/grappelli/__init__.pyc b/demo/grappelli/__init__.pyc
deleted file mode 100644
index ad6c9f32..00000000
--- a/demo/grappelli/__init__.pyc
+++ /dev/null
Binary files differ
diff --git a/demo/grappelli/dashboard/__init__.pyc b/demo/grappelli/dashboard/__init__.pyc
deleted file mode 100644
index db1644a2..00000000
--- a/demo/grappelli/dashboard/__init__.pyc
+++ /dev/null
Binary files differ
diff --git a/demo/grappelli/dashboard/dashboards.pyc b/demo/grappelli/dashboard/dashboards.pyc
deleted file mode 100644
index 8359b870..00000000
--- a/demo/grappelli/dashboard/dashboards.pyc
+++ /dev/null
Binary files differ
diff --git a/demo/grappelli/dashboard/management/__init__.pyc b/demo/grappelli/dashboard/management/__init__.pyc
deleted file mode 100644
index 8296cb8d..00000000
--- a/demo/grappelli/dashboard/management/__init__.pyc
+++ /dev/null
Binary files differ
diff --git a/demo/grappelli/dashboard/modules.pyc b/demo/grappelli/dashboard/modules.pyc
deleted file mode 100644
index 02cc73ca..00000000
--- a/demo/grappelli/dashboard/modules.pyc
+++ /dev/null
Binary files differ
diff --git a/demo/grappelli/dashboard/registry.pyc b/demo/grappelli/dashboard/registry.pyc
deleted file mode 100644
index fca1a27a..00000000
--- a/demo/grappelli/dashboard/registry.pyc
+++ /dev/null
Binary files differ
diff --git a/demo/grappelli/dashboard/templatetags/__init__.pyc b/demo/grappelli/dashboard/templatetags/__init__.pyc
deleted file mode 100644
index 892c9838..00000000
--- a/demo/grappelli/dashboard/templatetags/__init__.pyc
+++ /dev/null
Binary files differ
diff --git a/demo/grappelli/dashboard/templatetags/grp_dashboard_tags.pyc b/demo/grappelli/dashboard/templatetags/grp_dashboard_tags.pyc
deleted file mode 100644
index 392f3299..00000000
--- a/demo/grappelli/dashboard/templatetags/grp_dashboard_tags.pyc
+++ /dev/null
Binary files differ
diff --git a/demo/grappelli/dashboard/utils.pyc b/demo/grappelli/dashboard/utils.pyc
deleted file mode 100644
index cecc4b0f..00000000
--- a/demo/grappelli/dashboard/utils.pyc
+++ /dev/null
Binary files differ
diff --git a/demo/grappelli/models.pyc b/demo/grappelli/models.pyc
deleted file mode 100644
index 2635511e..00000000
--- a/demo/grappelli/models.pyc
+++ /dev/null
Binary files differ
diff --git a/demo/grappelli/settings.pyc b/demo/grappelli/settings.pyc
deleted file mode 100644
index f8f4c5a2..00000000
--- a/demo/grappelli/settings.pyc
+++ /dev/null
Binary files differ
diff --git a/demo/grappelli/static/grappelli/css/forms.css b/demo/grappelli/static/grappelli/css/forms.css
index 84e21f6d..277334ee 100644
--- a/demo/grappelli/static/grappelli/css/forms.css
+++ b/demo/grappelli/static/grappelli/css/forms.css
@@ -2,7 +2,7 @@
/* Basic Settings, Fieldsets, Form-Rows
------------------------------------------------------------------------------------------------------- */
+----------------------------------------------------------------------------------------------------- */
form {
margin: 0;
@@ -657,7 +657,7 @@ select.span-16, textarea.span-16,
div.autocomplete-wrapper-m2m.span-16,
.span-20 label + input[type=text], .span-20 label + input[type=password],
.span-20 label + select, .span-20 label + textarea {
- width: 598px;
+ width: 230px;
}
.span-16 div.autocomplete-wrapper-m2m ul.repr,
.span-16 div.autocomplete-wrapper-m2m ul.repr li,
@@ -1240,4 +1240,4 @@ div.autocomplete-wrapper-m2m input.vManyToManyRawIdAdminField, div.autocomplete-
background: transparent !important;
box-shadow: none !important; -moz-box-shadow: none !important; -webkit-box-shadow: none !important;
cursor: default !important;
-} \ No newline at end of file
+}
diff --git a/demo/grappelli/static/grappelli/css/grappelli-skin-default.css b/demo/grappelli/static/grappelli/css/grappelli-skin-default.css
index 6f5e721f..fe718a3e 100644
--- a/demo/grappelli/static/grappelli/css/grappelli-skin-default.css
+++ b/demo/grappelli/static/grappelli/css/grappelli-skin-default.css
@@ -7,7 +7,7 @@
/* Paragraphs
------------------------------------------------------------------------------------------------------- */
+----------------------------------------------------------------------------------------------------- */
.module p.help,
p.help {
@@ -166,6 +166,7 @@ body {
background: -moz-linear-gradient(top, white, white);
background: -webkit-gradient(linear, left top, left bottom, from(white), to(white));
background: -o-linear-gradient(top, white, white);
+ background: #2B3959;
}
#header a:hover, #header a:active {
color: red;
@@ -1907,7 +1908,7 @@ a:hover, a:active, a.selected {
}
#header a:link, #header a:visited {
- color: #0872B4;
+ color: white;
}
#header a:hover, #header a:active {
color: red;
@@ -2016,11 +2017,11 @@ hr {
/* User Tools ................................................... */
#user-tools {
- border-left: 1px solid #303030;
+ border-left: 0px solid #303030;
}
#user-tools>li {
- border-left: 1px solid #404040;
- border-right: 1px solid #303030;
+ border-left: 0px solid #404040;
+ border-right: 0px solid #303030;
}
li.user-options-container.open a.user-options-handler {
color: #eee !important;
@@ -2946,7 +2947,7 @@ ul.pagination li.separator span {
/* Tooltips
------------------------------------------------------------------------------------------------------- */
+----------------------------------------------------------------------------------------------------- */
.module.search .tooltip .tooltip-content {
border: 1px solid #ccc;
diff --git a/demo/grappelli/templates/admin/change_form.html b/demo/grappelli/templates/admin/change_form.html
index c5a26544..72282905 100644
--- a/demo/grappelli/templates/admin/change_form.html
+++ b/demo/grappelli/templates/admin/change_form.html
@@ -17,6 +17,7 @@
<script src="{% admin_media_prefix %}js/grappelli/jquery.grp_inline.js" type="text/javascript"></script>
{% if change %}
<script type="text/javascript" src="{{STATIC_URL}}gstudio/js/URI.js"></script>
+
<script type="text/javascript" charset="utf-8">
(function($){
$(document).ready(function() {
diff --git a/demo/grappelli/templatetags/__init__.pyc b/demo/grappelli/templatetags/__init__.pyc
deleted file mode 100644
index 6873fc5c..00000000
--- a/demo/grappelli/templatetags/__init__.pyc
+++ /dev/null
Binary files differ
diff --git a/demo/grappelli/templatetags/grp_tags.pyc b/demo/grappelli/templatetags/grp_tags.pyc
deleted file mode 100644
index 1d9bfaa0..00000000
--- a/demo/grappelli/templatetags/grp_tags.pyc
+++ /dev/null
Binary files differ
diff --git a/demo/grappelli/urls.pyc b/demo/grappelli/urls.pyc
deleted file mode 100644
index 24a0b72d..00000000
--- a/demo/grappelli/urls.pyc
+++ /dev/null
Binary files differ
diff --git a/demo/grappelli/views/__init__.pyc b/demo/grappelli/views/__init__.pyc
deleted file mode 100644
index 1533e6e5..00000000
--- a/demo/grappelli/views/__init__.pyc
+++ /dev/null
Binary files differ
diff --git a/demo/grappelli/views/related.pyc b/demo/grappelli/views/related.pyc
deleted file mode 100644
index 01e8189e..00000000
--- a/demo/grappelli/views/related.pyc
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index c30dd62f..00000000
--- a/demo/rdfstore/__db.001
+++ /dev/null
Binary files differ
diff --git a/demo/rdfstore/__db.002 b/demo/rdfstore/__db.002
deleted file mode 100644
index 12a404df..00000000
--- a/demo/rdfstore/__db.002
+++ /dev/null
Binary files differ
diff --git a/demo/rdfstore/__db.003 b/demo/rdfstore/__db.003
deleted file mode 100644
index 7599b34a..00000000
--- a/demo/rdfstore/__db.003
+++ /dev/null
Binary files differ
diff --git a/demo/rdfstore/__db.004 b/demo/rdfstore/__db.004
deleted file mode 100644
index f5c6f0d2..00000000
--- a/demo/rdfstore/__db.004
+++ /dev/null
Binary files differ
diff --git a/demo/rdfstore/c^o^s^p^ b/demo/rdfstore/c^o^s^p^
deleted file mode 100644
index 298ca221..00000000
--- a/demo/rdfstore/c^o^s^p^
+++ /dev/null
Binary files differ
diff --git a/demo/rdfstore/c^p^o^s^ b/demo/rdfstore/c^p^o^s^
deleted file mode 100644
index 4e2d9397..00000000
--- a/demo/rdfstore/c^p^o^s^
+++ /dev/null
Binary files differ
diff --git a/demo/rdfstore/c^s^p^o^ b/demo/rdfstore/c^s^p^o^
deleted file mode 100644
index 5eb631cf..00000000
--- a/demo/rdfstore/c^s^p^o^
+++ /dev/null
Binary files differ
diff --git a/demo/rdfstore/contexts b/demo/rdfstore/contexts
deleted file mode 100644
index 8063f531..00000000
--- a/demo/rdfstore/contexts
+++ /dev/null
Binary files differ
diff --git a/demo/rdfstore/i2k b/demo/rdfstore/i2k
deleted file mode 100644
index bf455a4c..00000000
--- a/demo/rdfstore/i2k
+++ /dev/null
Binary files differ
diff --git a/demo/rdfstore/k2i b/demo/rdfstore/k2i
deleted file mode 100644
index 637056d4..00000000
--- a/demo/rdfstore/k2i
+++ /dev/null
Binary files differ
diff --git a/demo/rdfstore/namespace b/demo/rdfstore/namespace
deleted file mode 100644
index 1bfa2de8..00000000
--- a/demo/rdfstore/namespace
+++ /dev/null
Binary files differ
diff --git a/demo/rdfstore/prefix b/demo/rdfstore/prefix
deleted file mode 100644
index 55593176..00000000
--- a/demo/rdfstore/prefix
+++ /dev/null
Binary files differ
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/settings.pyc b/demo/settings.pyc
deleted file mode 100644
index 5cfa794c..00000000
--- a/demo/settings.pyc
+++ /dev/null
Binary files differ
diff --git a/demo/urls.pyc b/demo/urls.pyc
deleted file mode 100644
index a2d9523e..00000000
--- a/demo/urls.pyc
+++ /dev/null
Binary files differ
diff --git a/demo/views.pyc b/demo/views.pyc
deleted file mode 100644
index 046700ac..00000000
--- a/demo/views.pyc
+++ /dev/null
Binary files differ
diff --git a/demo/working-demo.db b/demo/working-demo.db
deleted file mode 100644
index 78a96183..00000000
--- a/demo/working-demo.db
+++ /dev/null
Binary files differ
diff --git a/dist/django_gstudio-0.3.dev-py2.7.egg b/dist/django_gstudio-0.3.dev-py2.7.egg
deleted file mode 100644
index 2d39dff2..00000000
--- a/dist/django_gstudio-0.3.dev-py2.7.egg
+++ /dev/null
Binary files differ
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
-&nbsp; 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 %} &rsaquo;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‘¾Á­.‘èA s¨!: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 ½‘„²´Êñîœ]_‘^]+Ü‚c H¨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/__init__.pyc b/gstudio/__init__.pyc
deleted file mode 100644
index 9f1566a8..00000000
--- a/gstudio/__init__.pyc
+++ /dev/null
Binary files differ
diff --git a/gstudio/admin/__init__.py b/gstudio/admin/__init__.py
index 030e0568..159fcf29 100644
--- a/gstudio/admin/__init__.py
+++ b/gstudio/admin/__init__.py
@@ -36,6 +36,8 @@ from gstudio.models import AttributeFilePathField
from gstudio.models import AttributeImageField
from gstudio.models import AttributeURLField
from gstudio.models import AttributeIPAddressField
+from gstudio.models import Peer
+
#Admin imports
@@ -79,6 +81,7 @@ from gstudio.admin.attribute_ipaddressfield import AttributeIPAddressFieldAdmin
+
admin.site.register(Objecttype, ObjecttypeAdmin)
admin.site.register(Metatype, MetatypeAdmin)
admin.site.register(Relationtype, RelationtypeAdmin)
@@ -95,6 +98,8 @@ admin.site.register(Union, UnionAdmin)
admin.site.register(Complement, ComplementAdmin)
admin.site.register(Intersection, IntersectionAdmin)
admin.site.register(Expression, ExpressionAdmin)
+admin.site.register(Peer)
+
admin.site.register(AttributeCharField, AttributeCharFieldAdmin)
admin.site.register(AttributeTextField, AttributeTextFieldAdmin)
diff --git a/gstudio/admin/attribute.py b/gstudio/admin/attribute.py
index 336509e8..20dcfd98 100644
--- a/gstudio/admin/attribute.py
+++ b/gstudio/admin/attribute.py
@@ -1,4 +1,4 @@
-"""MetatypeAdmin for Gstudio"""
+"""AttributeAdmin for Gstudio"""
from django.contrib import admin
from django.core.urlresolvers import NoReverseMatch
from django.utils.translation import ugettext_lazy as _
@@ -6,15 +6,30 @@ from django.utils.html import escape
from gstudio.admin.forms import AttributeAdminForm
from gstudio.models import *
import reversion
+from django.template.defaultfilters import slugify
+from gstudio.settings import GSTUDIO_VERSIONING
+
+if GSTUDIO_VERSIONING == True:
+ parent_class = reversion.VersionAdmin
+else:
+ parent_class = admin.ModelAdmin
+
+class AttributeAdmin(parent_class):
+ fieldsets=((_('Attribute'),{'fields': ('attributetype','attributetype_scope','subject','subject_scope','svalue','value_scope')}),
+
+)
+
+
-class AttributeAdmin(reversion.VersionAdmin):
class Media:
- js = ("gstudio/js/gstudiojs.js",)
+ js = ("gstudio/js/gstudio.js",)
def save_model(self, request, attribute, form, change):
- attribute.title = attribute.composed_attribution
+ attribute.title = attribute.composed_sentence
+ attribute.slug = slugify(attribute.title)
attribute.save()
+
diff --git a/gstudio/admin/attribute_bigintegerfield.py b/gstudio/admin/attribute_bigintegerfield.py
index 53085fb1..277623f8 100644
--- a/gstudio/admin/attribute_bigintegerfield.py
+++ b/gstudio/admin/attribute_bigintegerfield.py
@@ -1,9 +1,13 @@
from django.contrib import admin
from django.core.urlresolvers import NoReverseMatch
from django.utils.translation import ugettext_lazy as _
+from gstudio.settings import GSTUDIO_VERSIONING
from gstudio.admin.forms import AttributeBigIntegerFieldAdminForm
import reversion
-
-class AttributeBigIntegerFieldAdmin(reversion.VersionAdmin):
+if GSTUDIO_VERSIONING == True:
+ parent_class = reversion.VersionAdmin
+else:
+ parent_class = admin.ModelAdmin
+class AttributeBigIntegerFieldAdmin(parent_class):
pass
diff --git a/gstudio/admin/attribute_booleanfield.py b/gstudio/admin/attribute_booleanfield.py
index e6ce41fb..17c3efe7 100644
--- a/gstudio/admin/attribute_booleanfield.py
+++ b/gstudio/admin/attribute_booleanfield.py
@@ -3,7 +3,11 @@ from django.core.urlresolvers import NoReverseMatch
from django.utils.translation import ugettext_lazy as _
from gstudio.admin.forms import AttributeBooleanFieldAdminForm
+from gstudio.settings import GSTUDIO_VERSIONING
import reversion
-
-class AttributeBooleanFieldAdmin(reversion.VersionAdmin):
+if GSTUDIO_VERSIONING == True:
+ parent_class = reversion.VersionAdmin
+else:
+ parent_class = admin.ModelAdmin
+class AttributeBooleanFieldAdmin(parent_class):
pass
diff --git a/gstudio/admin/attribute_charfield.py b/gstudio/admin/attribute_charfield.py
index 138d89dd..6f41aa4e 100644
--- a/gstudio/admin/attribute_charfield.py
+++ b/gstudio/admin/attribute_charfield.py
@@ -1,10 +1,14 @@
from django.contrib import admin
from django.core.urlresolvers import NoReverseMatch
from django.utils.translation import ugettext_lazy as _
-
+from gstudio.settings import GSTUDIO_VERSIONING
from gstudio.admin.forms import AttributeCharFieldAdminForm
import reversion
+if GSTUDIO_VERSIONING == True:
+ parent_class = reversion.VersionAdmin
+else:
+ parent_class = admin.ModelAdmin
-class AttributeCharFieldAdmin(reversion.VersionAdmin):
+class AttributeCharFieldAdmin(parent_class):
pass
diff --git a/gstudio/admin/attribute_commaseparatedintegerfield.py b/gstudio/admin/attribute_commaseparatedintegerfield.py
index 4202f618..c3701d94 100644
--- a/gstudio/admin/attribute_commaseparatedintegerfield.py
+++ b/gstudio/admin/attribute_commaseparatedintegerfield.py
@@ -3,7 +3,12 @@ from django.core.urlresolvers import NoReverseMatch
from django.utils.translation import ugettext_lazy as _
from gstudio.admin.forms import AttributeCommaSeparatedIntegerFieldAdminForm
+from gstudio.settings import GSTUDIO_VERSIONING
import reversion
+if GSTUDIO_VERSIONING == True:
+ parent_class = reversion.VersionAdmin
+else:
+ parent_class = admin.ModelAdmin
-class AttributeCommaSeparatedIntegerFieldAdmin(reversion.VersionAdmin):
+class AttributeCommaSeparatedIntegerFieldAdmin(parent_class):
pass
diff --git a/gstudio/admin/attribute_datefield.py b/gstudio/admin/attribute_datefield.py
index 96195471..b62d2ca7 100644
--- a/gstudio/admin/attribute_datefield.py
+++ b/gstudio/admin/attribute_datefield.py
@@ -3,7 +3,12 @@ from django.core.urlresolvers import NoReverseMatch
from django.utils.translation import ugettext_lazy as _
from gstudio.admin.forms import AttributeDateFieldAdminForm
+from gstudio.settings import GSTUDIO_VERSIONING
import reversion
+if GSTUDIO_VERSIONING == True:
+ parent_class = reversion.VersionAdmin
+else:
+ parent_class = admin.ModelAdmin
-class AttributeDateFieldAdmin(reversion.VersionAdmin):
+class AttributeDateFieldAdmin(parent_class):
pass
diff --git a/gstudio/admin/attribute_datetimefield.py b/gstudio/admin/attribute_datetimefield.py
index bdbdfa55..74bc7cae 100644
--- a/gstudio/admin/attribute_datetimefield.py
+++ b/gstudio/admin/attribute_datetimefield.py
@@ -3,7 +3,12 @@ from django.core.urlresolvers import NoReverseMatch
from django.utils.translation import ugettext_lazy as _
from gstudio.admin.forms import AttributeDateTimeFieldAdminForm
+from gstudio.settings import GSTUDIO_VERSIONING
import reversion
+if GSTUDIO_VERSIONING == True:
+ parent_class = reversion.VersionAdmin
+else:
+ parent_class = admin.ModelAdmin
-class AttributeDateTimeFieldAdmin(reversion.VersionAdmin):
+class AttributeDateTimeFieldAdmin(parent_class):
pass
diff --git a/gstudio/admin/attribute_decimalfield.py b/gstudio/admin/attribute_decimalfield.py
index 168ad067..9c9dd961 100644
--- a/gstudio/admin/attribute_decimalfield.py
+++ b/gstudio/admin/attribute_decimalfield.py
@@ -3,7 +3,12 @@ from django.core.urlresolvers import NoReverseMatch
from django.utils.translation import ugettext_lazy as _
from gstudio.admin.forms import AttributeDecimalFieldAdminForm
+from gstudio.settings import GSTUDIO_VERSIONING
import reversion
+if GSTUDIO_VERSIONING == True:
+ parent_class = reversion.VersionAdmin
+else:
+ parent_class = admin.ModelAdmin
-class AttributeDecimalFieldAdmin(reversion.VersionAdmin):
+class AttributeDecimalFieldAdmin(parent_class):
pass
diff --git a/gstudio/admin/attribute_emailfield.py b/gstudio/admin/attribute_emailfield.py
index 8173f2c1..a69196a5 100644
--- a/gstudio/admin/attribute_emailfield.py
+++ b/gstudio/admin/attribute_emailfield.py
@@ -3,7 +3,12 @@ from django.core.urlresolvers import NoReverseMatch
from django.utils.translation import ugettext_lazy as _
from gstudio.admin.forms import AttributeEmailFieldAdminForm
+from gstudio.settings import GSTUDIO_VERSIONING
import reversion
+if GSTUDIO_VERSIONING == True:
+ parent_class = reversion.VersionAdmin
+else:
+ parent_class = admin.ModelAdmin
-class AttributeEmailFieldAdmin(reversion.VersionAdmin):
+class AttributeEmailFieldAdmin(parent_class):
pass
diff --git a/gstudio/admin/attribute_filefield.py b/gstudio/admin/attribute_filefield.py
index a2553c63..11b90e40 100644
--- a/gstudio/admin/attribute_filefield.py
+++ b/gstudio/admin/attribute_filefield.py
@@ -3,7 +3,12 @@ from django.core.urlresolvers import NoReverseMatch
from django.utils.translation import ugettext_lazy as _
from gstudio.admin.forms import AttributeFileFieldAdminForm
+from gstudio.settings import GSTUDIO_VERSIONING
import reversion
+if GSTUDIO_VERSIONING == True:
+ parent_class = reversion.VersionAdmin
+else:
+ parent_class = admin.ModelAdmin
-class AttributeFileFieldAdmin(reversion.VersionAdmin):
+class AttributeFileFieldAdmin(parent_class):
pass
diff --git a/gstudio/admin/attribute_filepathfield.py b/gstudio/admin/attribute_filepathfield.py
index 76d483d8..c65346d2 100644
--- a/gstudio/admin/attribute_filepathfield.py
+++ b/gstudio/admin/attribute_filepathfield.py
@@ -3,7 +3,12 @@ from django.core.urlresolvers import NoReverseMatch
from django.utils.translation import ugettext_lazy as _
from gstudio.admin.forms import AttributeFilePathFieldAdminForm
+from gstudio.settings import GSTUDIO_VERSIONING
import reversion
+if GSTUDIO_VERSIONING == True:
+ parent_class = reversion.VersionAdmin
+else:
+ parent_class = admin.ModelAdmin
-class AttributeFilePathFieldAdmin(reversion.VersionAdmin):
+class AttributeFilePathFieldAdmin(parent_class):
pass
diff --git a/gstudio/admin/attribute_floatfield.py b/gstudio/admin/attribute_floatfield.py
index 0f97b7cb..1563f92d 100644
--- a/gstudio/admin/attribute_floatfield.py
+++ b/gstudio/admin/attribute_floatfield.py
@@ -3,7 +3,12 @@ from django.core.urlresolvers import NoReverseMatch
from django.utils.translation import ugettext_lazy as _
from gstudio.admin.forms import AttributeFloatFieldAdminForm
+from gstudio.settings import GSTUDIO_VERSIONING
import reversion
+if GSTUDIO_VERSIONING == True:
+ parent_class = reversion.VersionAdmin
+else:
+ parent_class = admin.ModelAdmin
-class AttributeFloatFieldAdmin(reversion.VersionAdmin):
+class AttributeFloatFieldAdmin(parent_class):
pass
diff --git a/gstudio/admin/attribute_imagefield.py b/gstudio/admin/attribute_imagefield.py
index 80515a6c..c203e83a 100644
--- a/gstudio/admin/attribute_imagefield.py
+++ b/gstudio/admin/attribute_imagefield.py
@@ -3,7 +3,12 @@ from django.core.urlresolvers import NoReverseMatch
from django.utils.translation import ugettext_lazy as _
from gstudio.admin.forms import AttributeImageFieldAdminForm
+from gstudio.settings import GSTUDIO_VERSIONING
import reversion
+if GSTUDIO_VERSIONING == True:
+ parent_class = reversion.VersionAdmin
+else:
+ parent_class = admin.ModelAdmin
-class AttributeImageFieldAdmin(reversion.VersionAdmin):
+class AttributeImageFieldAdmin(parent_class):
pass
diff --git a/gstudio/admin/attribute_integerfield.py b/gstudio/admin/attribute_integerfield.py
index a170c959..b98251f0 100644
--- a/gstudio/admin/attribute_integerfield.py
+++ b/gstudio/admin/attribute_integerfield.py
@@ -3,7 +3,13 @@ from django.core.urlresolvers import NoReverseMatch
from django.utils.translation import ugettext_lazy as _
from gstudio.admin.forms import AttributeIntegerFieldAdminForm
+from gstudio.settings import GSTUDIO_VERSIONING
import reversion
+if GSTUDIO_VERSIONING == True:
+ parent_class = reversion.VersionAdmin
+else:
+ parent_class = admin.ModelAdmin
-class AttributeIntegerFieldAdmin(reversion.VersionAdmin):
+
+class AttributeIntegerFieldAdmin(parent_class):
pass
diff --git a/gstudio/admin/attribute_ipaddressfield.py b/gstudio/admin/attribute_ipaddressfield.py
index 1fa9a1b8..05570fc2 100644
--- a/gstudio/admin/attribute_ipaddressfield.py
+++ b/gstudio/admin/attribute_ipaddressfield.py
@@ -3,7 +3,12 @@ from django.core.urlresolvers import NoReverseMatch
from django.utils.translation import ugettext_lazy as _
from gstudio.admin.forms import AttributeIPAddressFieldAdminForm
+from gstudio.settings import GSTUDIO_VERSIONING
import reversion
+if GSTUDIO_VERSIONING == True:
+ parent_class = reversion.VersionAdmin
+else:
+ parent_class = admin.ModelAdmin
-class AttributeIPAddressFieldAdmin(reversion.VersionAdmin):
+class AttributeIPAddressFieldAdmin(parent_class):
pass
diff --git a/gstudio/admin/attribute_nullbooleanfield.py b/gstudio/admin/attribute_nullbooleanfield.py
index fba5208a..6a4d7f1c 100644
--- a/gstudio/admin/attribute_nullbooleanfield.py
+++ b/gstudio/admin/attribute_nullbooleanfield.py
@@ -3,7 +3,12 @@ from django.core.urlresolvers import NoReverseMatch
from django.utils.translation import ugettext_lazy as _
from gstudio.admin.forms import AttributeNullBooleanFieldAdminForm
+from gstudio.settings import GSTUDIO_VERSIONING
import reversion
+if GSTUDIO_VERSIONING == True:
+ parent_class = reversion.VersionAdmin
+else:
+ parent_class = admin.ModelAdmin
-class AttributeNullBooleanFieldAdmin(reversion.VersionAdmin):
+class AttributeNullBooleanFieldAdmin(parent_class):
pass
diff --git a/gstudio/admin/attribute_positiveintegerfield.py b/gstudio/admin/attribute_positiveintegerfield.py
index 1404449c..54fd939c 100644
--- a/gstudio/admin/attribute_positiveintegerfield.py
+++ b/gstudio/admin/attribute_positiveintegerfield.py
@@ -3,7 +3,12 @@ from django.core.urlresolvers import NoReverseMatch
from django.utils.translation import ugettext_lazy as _
from gstudio.admin.forms import AttributePositiveIntegerFieldAdminForm
+from gstudio.settings import GSTUDIO_VERSIONING
import reversion
+if GSTUDIO_VERSIONING == True:
+ parent_class = reversion.VersionAdmin
+else:
+ parent_class = admin.ModelAdmin
-class AttributePositiveIntegerFieldAdmin(reversion.VersionAdmin):
+class AttributePositiveIntegerFieldAdmin(parent_class):
pass
diff --git a/gstudio/admin/attribute_textfield.py b/gstudio/admin/attribute_textfield.py
index 7786af19..5ba20f32 100644
--- a/gstudio/admin/attribute_textfield.py
+++ b/gstudio/admin/attribute_textfield.py
@@ -4,6 +4,11 @@ from django.utils.translation import ugettext_lazy as _
from gstudio.admin.forms import AttributeTextFieldAdminForm
import reversion
+from gstudio.settings import GSTUDIO_VERSIONING
+if GSTUDIO_VERSIONING == True:
+ parent_class = reversion.VersionAdmin
+else:
+ parent_class = admin.ModelAdmin
-class AttributeTextFieldAdmin(reversion.VersionAdmin):
+class AttributeTextFieldAdmin(parent_class):
pass
diff --git a/gstudio/admin/attribute_timefield.py b/gstudio/admin/attribute_timefield.py
index 929b028e..c719082c 100644
--- a/gstudio/admin/attribute_timefield.py
+++ b/gstudio/admin/attribute_timefield.py
@@ -4,6 +4,11 @@ from django.utils.translation import ugettext_lazy as _
from gstudio.admin.forms import AttributeTimeFieldAdminForm
import reversion
+from gstudio.settings import GSTUDIO_VERSIONING
+if GSTUDIO_VERSIONING == True:
+ parent_class = reversion.VersionAdmin
+else:
+ parent_class = admin.ModelAdmin
-class AttributeTimeFieldAdmin(reversion.VersionAdmin):
+class AttributeTimeFieldAdmin(parent_class):
pass
diff --git a/gstudio/admin/attribute_urlfield.py b/gstudio/admin/attribute_urlfield.py
index 952beec6..75f9f80a 100644
--- a/gstudio/admin/attribute_urlfield.py
+++ b/gstudio/admin/attribute_urlfield.py
@@ -4,6 +4,11 @@ from django.utils.translation import ugettext_lazy as _
from gstudio.admin.forms import AttributeURLFieldAdminForm
import reversion
+from gstudio.settings import GSTUDIO_VERSIONING
+if GSTUDIO_VERSIONING == True:
+ parent_class = reversion.VersionAdmin
+else:
+ parent_class = admin.ModelAdmin
-class AttributeURLFieldAdmin(reversion.VersionAdmin):
+class AttributeURLFieldAdmin(parent_class):
pass
diff --git a/gstudio/admin/attributespecification.py b/gstudio/admin/attributespecification.py
index 3e7f6e12..781343b4 100644
--- a/gstudio/admin/attributespecification.py
+++ b/gstudio/admin/attributespecification.py
@@ -4,7 +4,12 @@ from django.core.urlresolvers import NoReverseMatch
from django.utils.translation import ugettext_lazy as _
from gstudio.admin.forms import AttributeSpecificationAdminForm
+from gstudio.settings import GSTUDIO_VERSIONING
import reversion
+if GSTUDIO_VERSIONING == True:
+ parent_class = reversion.VersionAdmin
+else:
+ parent_class = admin.ModelAdmin
-class AttributeSpecificationAdmin(reversion.VersionAdmin):
+class AttributeSpecificationAdmin(parent_class):
pass
diff --git a/gstudio/admin/attributetype.py b/gstudio/admin/attributetype.py
index c1f03d9f..c44db82b 100644
--- a/gstudio/admin/attributetype.py
+++ b/gstudio/admin/attributetype.py
@@ -20,11 +20,15 @@ from gstudio.managers import HIDDEN
from gstudio.managers import PUBLISHED
from gstudio.ping import DirectoryPinger
from gstudio.admin.forms import AttributetypeAdminForm
+from gstudio.settings import GSTUDIO_VERSIONING
+if GSTUDIO_VERSIONING == True:
+ parent_class = reversion.VersionAdmin
+else:
+ parent_class = admin.ModelAdmin
-
-class AttributetypeAdmin(reversion.VersionAdmin):
+class AttributetypeAdmin(parent_class):
"""Admin for Attributetype model"""
form = AttributetypeAdminForm
date_hierarchy = 'creation_date'
diff --git a/gstudio/admin/complement.py b/gstudio/admin/complement.py
index b35ad6c0..305bb46e 100644
--- a/gstudio/admin/complement.py
+++ b/gstudio/admin/complement.py
@@ -4,6 +4,11 @@ from django.utils.translation import ugettext_lazy as _
from gstudio.admin.forms import ComplementAdminForm
import reversion
+from gstudio.settings import GSTUDIO_VERSIONING
+if GSTUDIO_VERSIONING == True:
+ parent_class = reversion.VersionAdmin
+else:
+ parent_class = admin.ModelAdmin
-class ComplementAdmin(reversion.VersionAdmin):
+class ComplementAdmin(parent_class):
pass
diff --git a/gstudio/admin/expression.py b/gstudio/admin/expression.py
index a6a8fd2c..cebd6969 100644
--- a/gstudio/admin/expression.py
+++ b/gstudio/admin/expression.py
@@ -5,8 +5,13 @@ from django.utils.translation import ugettext_lazy as _
from gstudio.admin.forms import ExpressionAdminForm
import reversion
+from gstudio.settings import GSTUDIO_VERSIONING
+if GSTUDIO_VERSIONING == True:
+ parent_class = reversion.VersionAdmin
+else:
+ parent_class = admin.ModelAdmin
-class ExpressionAdmin(reversion.VersionAdmin):
+class ExpressionAdmin(parent_class):
def save_model(self, request, expression, form, change):
expression.title = expression.composed_sentence
expression.save()
diff --git a/gstudio/admin/forms.py b/gstudio/admin/forms.py
index 37b578c8..a2415c10 100644
--- a/gstudio/admin/forms.py
+++ b/gstudio/admin/forms.py
@@ -154,7 +154,7 @@ class RelationtypeAdminForm(forms.ModelForm):
super(RelationtypeAdminForm, self).__init__(*args, **kwargs)
prior = ManyToManyRel(Nodetype, 'id')
post = ManyToManyRel(Nodetype, 'id')
-
+
self.fields['priornodes'].widget = RelatedFieldWidgetWrapper(
@@ -207,18 +207,6 @@ class RelationAdminForm(forms.ModelForm):
AppNodeList = AppNode.objects.all()
return AppNodeList
-
-
-
-
-
-
-
-
-
-
-
-
class Meta:
@@ -289,7 +277,7 @@ class AttributetypeAdminForm(forms.ModelForm):
super(AttributetypeAdminForm, self).__init__(*args, **kwargs)
prior = ManyToManyRel(Nodetype, 'id')
post = ManyToManyRel(Nodetype, 'id')
-
+ self.fields['sites'].initial = [Site.objects.get_current()]
self.fields['priornodes'].widget = RelatedFieldWidgetWrapper(
self.fields['priornodes'].widget, prior, self.admin_site)
diff --git a/gstudio/admin/intersection.py b/gstudio/admin/intersection.py
index 6e9dd3e4..49f2c5d0 100644
--- a/gstudio/admin/intersection.py
+++ b/gstudio/admin/intersection.py
@@ -4,6 +4,11 @@ from django.utils.translation import ugettext_lazy as _
from gstudio.admin.forms import IntersectionAdminForm
import reversion
+from gstudio.settings import GSTUDIO_VERSIONING
+if GSTUDIO_VERSIONING == True:
+ parent_class = reversion.VersionAdmin
+else:
+ parent_class = admin.ModelAdmin
-class IntersectionAdmin(reversion.VersionAdmin):
+class IntersectionAdmin(parent_class):
pass
diff --git a/gstudio/admin/metatype.py b/gstudio/admin/metatype.py
index bb24fc75..f110bac1 100644
--- a/gstudio/admin/metatype.py
+++ b/gstudio/admin/metatype.py
@@ -5,8 +5,13 @@ from django.utils.translation import ugettext_lazy as _
from gstudio.admin.forms import MetatypeAdminForm
import reversion
+from gstudio.settings import GSTUDIO_VERSIONING
+if GSTUDIO_VERSIONING == True:
+ parent_class = reversion.VersionAdmin
+else:
+ parent_class = admin.ModelAdmin
-class MetatypeAdmin(reversion.VersionAdmin):
+class MetatypeAdmin(parent_class):
"""Admin for Metatype model"""
form = MetatypeAdminForm
fields = ('title','altnames', 'parent', 'description', 'slug')
diff --git a/gstudio/admin/nodespecification.py b/gstudio/admin/nodespecification.py
index aaf784e5..f55bd05b 100644
--- a/gstudio/admin/nodespecification.py
+++ b/gstudio/admin/nodespecification.py
@@ -4,6 +4,11 @@ from django.utils.translation import ugettext_lazy as _
from gstudio.admin.forms import NodeSpecificationAdminForm
import reversion
+from gstudio.settings import GSTUDIO_VERSIONING
+if GSTUDIO_VERSIONING == True:
+ parent_class = reversion.VersionAdmin
+else:
+ parent_class = admin.ModelAdmin
-class NodeSpecificationAdmin(reversion.VersionAdmin):
+class NodeSpecificationAdmin(parent_class):
pass
diff --git a/gstudio/admin/objecttype.py b/gstudio/admin/objecttype.py
index c98a0d78..5072fe9a 100644
--- a/gstudio/admin/objecttype.py
+++ b/gstudio/admin/objecttype.py
@@ -14,16 +14,22 @@ from django.core.urlresolvers import reverse, NoReverseMatch
from tagging.models import Tag
import reversion
+
from gstudio import settings
from gstudio.managers import HIDDEN
from gstudio.managers import PUBLISHED
from gstudio.ping import DirectoryPinger
from gstudio.admin.forms import ObjecttypeAdminForm
+from gstudio.settings import GSTUDIO_VERSIONING
+if GSTUDIO_VERSIONING == True:
+ parent_class = reversion.VersionAdmin
+else:
+ parent_class = admin.ModelAdmin
-class ObjecttypeAdmin(reversion.VersionAdmin):
+class ObjecttypeAdmin(parent_class):
"""Admin for Objecttype model"""
form = ObjecttypeAdminForm
date_hierarchy = 'creation_date'
@@ -172,8 +178,10 @@ class ObjecttypeAdmin(reversion.VersionAdmin):
if not form.cleaned_data.get('authors'):
form.cleaned_data['authors'].append(request.user)
- nodetype.last_update = datetime.now()
nodetype.save()
+ # nodetype.nbhood = nodetype.get_nbh
+ # nodetype.last_update = datetime.now()
+ # nodetype.save()
def queryset(self, request):
"""Make special filtering by user permissions"""
diff --git a/gstudio/admin/processtype.py b/gstudio/admin/processtype.py
index 72a795b1..1862de31 100644
--- a/gstudio/admin/processtype.py
+++ b/gstudio/admin/processtype.py
@@ -20,11 +20,14 @@ from gstudio.managers import HIDDEN
from gstudio.managers import PUBLISHED
from gstudio.ping import DirectoryPinger
from gstudio.admin.forms import ProcesstypeAdminForm
+from gstudio.settings import GSTUDIO_VERSIONING
-
-
-class ProcesstypeAdmin(reversion.VersionAdmin):
+if GSTUDIO_VERSIONING == True:
+ parent_class = reversion.VersionAdmin
+else:
+ parent_class = admin.ModelAdmin
+class ProcesstypeAdmin(parent_class):
"""Admin for Processtype model"""
form = ProcesstypeAdminForm
date_hierarchy = 'creation_date'
diff --git a/gstudio/admin/relation.py b/gstudio/admin/relation.py
index 688ad6ef..7009afb6 100644
--- a/gstudio/admin/relation.py
+++ b/gstudio/admin/relation.py
@@ -5,12 +5,31 @@ from django.utils.translation import ugettext_lazy as _
from gstudio.admin.forms import RelationAdminForm
import reversion
+from django.template.defaultfilters import slugify
+from gstudio.settings import GSTUDIO_VERSIONING
-class RelationAdmin(reversion.VersionAdmin):
- fieldsets=((_('Relation'),{'fields': ('title','last_update','creation_date','relationtype_scope','relationtype','left_subject_scope','left_subject' ,'right_subject_scope','right_subject')}),
+if GSTUDIO_VERSIONING == True:
+ parent_class = reversion.VersionAdmin
+else:
+ parent_class = admin.ModelAdmin
+
+class RelationAdmin(parent_class):
+ fieldsets=((_('Relation'),{'fields': ('relationtype','relationtype_scope','left_subject' ,'left_subject_scope','right_subject','right_subject_scope')}),
)
+
+ def get_title(self, edge):
+ """Return the title with word count and number of comments"""
+ title = _('%(title)s (%(word_count)i words)') % \
+ {'title': nodetype.title, 'word_count': nodetype.word_count}
+ comments = nodetype.comments.count()
+ if comments:
+ return _('%(title)s (%(comments)i comments)') % \
+ {'title': title, 'comments': comments}
+ return title
+ get_title.short_description = _('title')
def save_model(self, request, relation, form, change):
relation.title = relation.composed_sentence
+ relation.slug = slugify(relation.title)
relation.save()
diff --git a/gstudio/admin/relationspecification.py b/gstudio/admin/relationspecification.py
index 5da162b5..6018236d 100644
--- a/gstudio/admin/relationspecification.py
+++ b/gstudio/admin/relationspecification.py
@@ -4,6 +4,12 @@ from django.utils.translation import ugettext_lazy as _
from gstudio.admin.forms import RelationSpecificationAdminForm
import reversion
+from gstudio.settings import GSTUDIO_VERSIONING
-class RelationSpecificationAdmin(reversion.VersionAdmin):
+if GSTUDIO_VERSIONING == True:
+ parent_class = reversion.VersionAdmin
+else:
+ parent_class = admin.ModelAdmin
+
+class RelationSpecificationAdmin(parent_class):
pass
diff --git a/gstudio/admin/relationtype.py b/gstudio/admin/relationtype.py
index 374f9a8c..37e1a33e 100644
--- a/gstudio/admin/relationtype.py
+++ b/gstudio/admin/relationtype.py
@@ -19,11 +19,15 @@ from gstudio.managers import HIDDEN
from gstudio.managers import PUBLISHED
from gstudio.ping import DirectoryPinger
from gstudio.admin.forms import RelationtypeAdminForm
+from gstudio.settings import GSTUDIO_VERSIONING
+if GSTUDIO_VERSIONING == True:
+ parent_class = reversion.VersionAdmin
+else:
+ parent_class = admin.ModelAdmin
-
-class RelationtypeAdmin(reversion.VersionAdmin):
+class RelationtypeAdmin(parent_class):
"""Admin for Relationtype model"""
form = RelationtypeAdminForm
date_hierarchy = 'creation_date'
diff --git a/gstudio/admin/systemtype.py b/gstudio/admin/systemtype.py
index 8a128563..7041db0f 100644
--- a/gstudio/admin/systemtype.py
+++ b/gstudio/admin/systemtype.py
@@ -20,11 +20,15 @@ from gstudio.managers import HIDDEN
from gstudio.managers import PUBLISHED
from gstudio.ping import DirectoryPinger
from gstudio.admin.forms import SystemtypeAdminForm
+from gstudio.settings import GSTUDIO_VERSIONING
+if GSTUDIO_VERSIONING == True:
+ parent_class = reversion.VersionAdmin
+else:
+ parent_class = admin.ModelAdmin
-
-class SystemtypeAdmin(reversion.VersionAdmin):
+class SystemtypeAdmin(parent_class):
"""Admin for Systemtype model"""
form = SystemtypeAdminForm
date_hierarchy = 'creation_date'
diff --git a/gstudio/admin/union.py b/gstudio/admin/union.py
index 08369363..d9bc092c 100644
--- a/gstudio/admin/union.py
+++ b/gstudio/admin/union.py
@@ -3,7 +3,13 @@ from django.core.urlresolvers import NoReverseMatch
from django.utils.translation import ugettext_lazy as _
from gstudio.admin.forms import UnionAdminForm
+from gstudio.settings import GSTUDIO_VERSIONING
+
import reversion
+if GSTUDIO_VERSIONING == True:
+ parent_class = reversion.VersionAdmin
+else:
+ parent_class = admin.ModelAdmin
-class UnionAdmin(reversion.VersionAdmin):
+class UnionAdmin(parent_class):
pass
diff --git a/gstudio/management/commands/peers.py b/gstudio/management/commands/peers.py
new file mode 100644
index 00000000..cb79991b
--- /dev/null
+++ b/gstudio/management/commands/peers.py
@@ -0,0 +1,23 @@
+# Copyright (c) 2012 Free Software Foundation
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+from django.core.management.base import NoArgsCommand
+import sys
+from gstudio.models import Peer
+
+class Command(NoArgsCommand):
+ """Custom manage.py command to show all peers"""
+ def handle_noargs(self, **options):
+ sys.stdout.write("{0}\n".format(Peer.objects.all()))
diff --git a/gstudio/management/commands/register-peer.py b/gstudio/management/commands/register-peer.py
new file mode 100644
index 00000000..afe2b50b
--- /dev/null
+++ b/gstudio/management/commands/register-peer.py
@@ -0,0 +1,52 @@
+# Copyright (c) 2012 Free Software Foundation
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# from django.core.management.base import BaseCommand
+# from optparse import make_option
+# import sys
+# from gstudio.models import Peer
+
+# class Command(BaseCommand):
+# """Custom manage.py command to register a peer"""
+# option_list = BaseCommand.option_list + (
+# make_option("--ip", action="store", type="string",
+# dest="ip", help="Specify an IP"),
+# make_option("--pkey", action="store", type="string",
+# dest="pkey", help="Specify a public-key"))
+
+# def handle(self, *args, **options):
+# try:
+# ip = options["ip"]
+# pkey = options["pkey"]
+
+# if not ip:
+# sys.stderr.write("Please specify an IP\n")
+# sys.exit(2)
+
+# if not pkey:
+# sys.stderr.write("Please specify a public-key\n")
+# sys.exit(2)
+
+# pkey = open(options["pkey"]).readline().rstrip()
+
+# except (IOError, TypeError):
+# sys.stderr.write("Please specify a correct public-key\n")
+# sys.exit(2)
+
+# ip = Peer(ip="{0}".format(ip))
+# ip.save()
+
+# pkey = Peer(pkey="{0}".format(pkey))
+# pkey.save()
diff --git a/gstudio/models.py b/gstudio/models.py
index d793db0a..f6c5efeb 100644
--- a/gstudio/models.py
+++ b/gstudio/models.py
@@ -65,7 +65,9 @@
+
"""Super models of Gstudio """
+
import warnings
from datetime import datetime
from django.db import models
@@ -93,6 +95,7 @@ from gstudio.settings import NODETYPE_TEMPLATES
from gstudio.settings import NODETYPE_BASE_MODEL
from gstudio.settings import MARKDOWN_EXTENSIONS
from gstudio.settings import AUTO_CLOSE_COMMENTS_AFTER
+from gstudio.settings import GSTUDIO_VERSIONING
from gstudio.managers import nodetypes_published
from gstudio.managers import NodetypePublishedManager
from gstudio.managers import NodePublishedManager
@@ -102,10 +105,16 @@ from gstudio.moderator import NodetypeCommentModerator
from gstudio.url_shortener import get_url_shortener
from gstudio.signals import ping_directories_handler
from gstudio.signals import ping_external_urls_handler
+
import json
-import reversion
+if GSTUDIO_VERSIONING:
+ import reversion
from reversion.models import Version
from django.core import serializers
+from reversion.models import *
+from reversion.helpers import *
+import ast
+
NODETYPE_CHOICES = (
('ND', 'Nodes'),
@@ -168,6 +177,10 @@ STATUS_CHOICES = ((DRAFT, _('draft')),
(HIDDEN, _('hidden')),
(PUBLISHED, _('published')))
+
+counter = 1
+attr_counter = -1
+
class Author(User):
"""Proxy Model around User"""
@@ -205,53 +218,96 @@ class NID(models.Model):
slug = models.SlugField(help_text=_('used for publication'),
unique_for_date='creation_date',
max_length=255)
+ nodemodel = models.CharField(_('nodemodel'),max_length=255)
+
+ @property
+ def get_revisioncount(self):
+ """
+ Returns Number of Version
+ """
+ i=0
+ ver=Version.objects.get_for_object(self)
+ for each in ver:
+ i=i+1
+ return i
+ @property
+ def get_version_list(self):
+ """
+ Returns Version list
+ """
+ ver=Version.objects.get_for_object(self)
+ return ver
+ @property
+ def get_ssid(self):
+ """
+ return snapshot ids (revision id).
+ returns a list.
+ """
+ slist=[]
+ vlist=self.get_version_list
+ for each in vlist:
+ slist.append(each.id)
+ return slist
+
+ def version_info(self,ssid):
+ version_object=Version.objects.get(id=ssid)
+ return version_object.field_dict
+
+
+ def get_version_nbh(self,ssid):
+ """
+ Returns Version nbh
+ """
+ ver_dict=self.version_info(ssid)
+ ver_nbh_list=[]
+ ver_nbh_dict={}
+ for item in self.get_nbh.keys():
+ if item in ver_dict.keys():
+ ver_nbh_list.append(item)
+ for each in ver_nbh_list:
+ ver_nbh_dict[each]=ver_dict[each]
+ return ver_nbh_dict
+
def get_serialized_dict(self):
"""
return the fields in a serialized form of the current object using the __dict__ function.
"""
return self.__dict__
- @property
- def get_app_name(self):
- if self.ref.__class__.__name__=='Gbobject' or self.ref.__class__.__name__=='Process' or self.ref.__class__.__name__=='System' :
- return 'type'
-
@models.permalink
def get_absolute_url(self):
"""Return nodetype's URL"""
- if self.get_app_name=='type':
- return ('objectapp_gbobject_detail', (), {
- 'year': self.creation_date.strftime('%Y'),
- 'month': self.creation_date.strftime('%m'),
- 'day': self.creation_date.strftime('%d'),
- 'slug': self.slug})
- else:
- return ('gstudio_nodetype_detail', (), {
- 'year': self.creation_date.strftime('%Y'),
- 'month': self.creation_date.strftime('%m'),
- 'day': self.creation_date.strftime('%d'),
- 'slug': self.slug})
+
+ return ('gstudio_nodetype_detail', (), {
+ 'year': self.creation_date.strftime('%Y'),
+ 'month': self.creation_date.strftime('%m'),
+ 'day': self.creation_date.strftime('%d'),
+ 'slug': self.slug})
@property
def ref(self):
- """
- Returns the object reference the id belongs to.
- """
- try:
- """
- ALGO: get object id, go to version model, return for the given id.
- """
-
- # Retrieving only the relevant tupleset for the versioned objects
- vrs = Version.objects.filter(type=0 , object_id=self.id)
- # Returned value is a list, so splice it.
- vrs = vrs[0]
- except:
- return None
+ from objectapp.models import *
+ return eval(self.nodemodel).objects.get(id=self.id)
+
+ # """
+ # Returns the object reference the id belongs to.
+ # """
+ # try:
+ # """
+ # ALGO: get object id, go to version model, return for the given id.
+ # """
+
+ # # Retrieving only the relevant tupleset for the versioned objects
+ # # vrs = Version.objects.filter(type=0 , object_id=self.id)
+ # # Returned value is a list, so splice it.
+ # vrs = vrs[0]
+ # except:
+ # return None
- return vrs.object
+ # return vrs.object
+
@property
def reftype(self):
@@ -261,13 +317,89 @@ class NID(models.Model):
try:
"""
ALGO: simple wrapper for the __class__.__name__ so that it can be used in templates
+
"""
+ # return self.__class__.__name__
obj = self.ref
return obj.__class__.__name__
except:
return None
+ @property
+ def getat(self):
+
+ """This is will give the possible attributetypes """
+ try:
+ pt = []
+ attributetype = []
+ 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]
+
+ 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 =[]
+ 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))
+ reltype = [num for elem in reltype for num in elem] #this rqud for filtering
+
+ for i in reltype:
+ titledict.update({i:i.id})
+
+
+ for i in range(len(titledict)):
+ listval.append(Relationtype.objects.get(title = titledict.keys()[i]))
+ inverselist.append(str(titledict.keys()[i].inverse))
+
+ for j in range(len(pt)):
+ for i in range(len(listval)):
+ if pt[j].id == listval[i].left_subjecttype_id 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.keys()
@property
@@ -285,6 +417,61 @@ class NID(models.Model):
version = Version.objects.get(id=self.id)
return version.serialized_data
+
+
+ def get_Version_graph_json(self,ssid):
+
+
+ # # predicate_id={"plural":"a1","altnames":"a2","contains_members":"a3","contains_subtypes":"a4","prior_nodes":"a5", "posterior_nodes":"a6"}
+ # slist=self.get_ssid
+ ver_dict=self.version_info(ssid)
+ # ver_dict=str(ver['nbhood'])
+ # ver_dict=ast.literal_eval(ver_dict)
+
+ g_json = {}
+ g_json["node_metadata"]= []
+ predicate_id = {}
+ counter = 1
+ for key in ver_dict.keys():
+ val = "a" + str(counter)
+ predicate_id[key] = val
+ counter = counter + 1
+ #print predicate_id
+
+ attr_counter = -1
+
+ this_node = {"_id":str(ver_dict['id']),"title":ver_dict['title'],"screen_name":ver_dict['title'], "url":self.get_absolute_url()}
+ g_json["node_metadata"].append(this_node)
+
+ for key in predicate_id.keys():
+ if ver_dict[key]:
+ try:
+ g_json[str(key)]=[]
+ g_json["node_metadata"].append({"_id":str(predicate_id[key]),"screen_name":key})
+ g_json[str(key)].append({"from":self.id , "to":predicate_id[key],"value":1, "level":1 })
+ if not isinstance(ver_dict[key],basestring):
+ for item in ver_dict[key]:
+ # user
+ g_json["node_metadata"].append({"_id":str(item.id),"screen_name":item.title, "title":item.title, "url":item.get_absolute_url()})
+ g_json[str(key)].append({"from":predicate_id[key] , "to":item.id ,"value":1 })
+
+ else:
+ #value={nbh["plural"]:"a4",nbh["altnames"]:"a5"}
+ #this_node[str(key)]=nbh[key] key, nbh[key]
+ #for item in value.keys():
+ g_json["node_metadata"].append({"_id":attr_counter,"screen_name":ver_dict[key]})
+ g_json[str(key)].append({"from":predicate_id[key] , "to":attr_counter ,"value":1, "level":2 })
+ attr_counter-=1
+
+ except:
+ pass
+ # print g_json
+
+
+
+ return json.dumps(g_json)
+
+
def __unicode__(self):
return self.title
@@ -293,7 +480,6 @@ class NID(models.Model):
"""NID's Meta"""
-
class Node(NID):
"""
Super class
@@ -312,6 +498,8 @@ class Node(NID):
sites = models.ManyToManyField(Site, verbose_name=_('sites publication'),
related_name='nodetypes')
+ nbhood = models.TextField(help_text="The neighbourhood of the model.")
+
published = NodePublishedManager()
def __unicode__(self):
return self.title
@@ -319,6 +507,18 @@ 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):
@@ -327,6 +527,13 @@ class Edge(NID):
class Meta:
abstract=False
+ def save(self, *args, **kwargs):
+ if GSTUDIO_VERSIONING:
+ with reversion.create_revision():
+ super(Edge, self).save(*args, **kwargs) # Call the "real" save() method.
+
+ super(Edge, self).save(*args, **kwargs) # Call the "real" save() method.
+
class Metatype(Node):
@@ -359,7 +566,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)
@@ -467,7 +674,7 @@ class Metatype(Node):
# generate ids and names of children
nbh['contains_subtypes'] = self.children.get_query_set()
contains_members_list = []
- for each in self.nodetypes.all():
+ for each in self.nodetypes_published():
contains_members_list.append('<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)
@@ -482,7 +689,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):
@@ -492,8 +699,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
@@ -508,6 +715,18 @@ class Metatype(Node):
verbose_name = _('metatype')
verbose_name_plural = _('metatypes')
+ # Save for metatype
+
+ def save(self, *args, **kwargs):
+ super(Metatype, self).save(*args, **kwargs) # Call the "real" save() method.
+ self.nbhood=self.get_nbh
+
+ if GSTUDIO_VERSIONING:
+ with reversion.create_revision():
+ super(Metatype, self).save(*args, **kwargs) # Call the "real" save() method.
+
+
+
@@ -604,8 +823,8 @@ class Nodetype(Node):
reltypes['possible_rightroles'] = right_subset
return reltypes
-
-
+
+
@property
def get_possible_attributetypes(self):
"""
@@ -665,32 +884,6 @@ class Nodetype(Node):
return rels
-
- @property
- def get_possible_attributes(self):
- """
- Gets the relations possible for this metatype
- 1. Recursively create a set of all the ancestors i.e. parent/subtypes of the MT.
- 2. Get all the RT's linked to each ancestor
- """
- #Step 1.
- ancestor_list = []
- this_parent = self.parent
-
- # recursive thru parent field and append
- while this_parent:
- ancestor_list.append(this_parent)
- this_parent = this_parent.parent
-
- #Step 2.
- attrs = []
-
- for each in ancestor_list:
- # retrieve all the AT's from each ancestor
- attrs.extend(Attribute.objects.filter(subject=each.id))
-
- return attrs
-
def get_graph_json(self):
@@ -698,21 +891,24 @@ class Nodetype(Node):
g_json = {}
g_json["node_metadata"]= []
g_json["relations"]=[]
+ g_json["relset"]=[]
-
+ global counter
+ global attr_counter
nbh = self.get_nbh
predicate_id = {}
- counter = 1
+
for key in nbh.keys():
- val = "a" + str(counter)
+ val = str(counter) + "a"
predicate_id[key] = val
counter = counter + 1
#print predicate_id
- attr_counter = -1
+
- this_node = {"_id":str(self.id),"title":self.title,"screen_name":self.title, "url":self.get_absolute_url()}
- g_json["node_metadata"].append(this_node)
+ this_node = {"_id":str(self.id),"title":self.title,"screen_name":self.title, "url":self.get_absolute_url(),"expanded":"true"}
+ g_json["node_metadata"].append(this_node)
+ g_json["relset"].append(self.id)
for key in predicate_id.keys():
if nbh[key]:
@@ -725,42 +921,88 @@ class Nodetype(Node):
#g_json[str(key)].append({"from":self.id , "to":predicate_id[key],"value":1, "level":1 })
g_json["relations"].append({"from":self.id ,"type":str(key),"value":1,"to":predicate_id[key] })
+
if not isinstance(nbh[key],basestring):
for item in nbh[key]:
- #create nodes
- g_json["node_metadata"].append({"_id":str(item.id),"screen_name":item.title,"title":self.title, "url":item.get_absolute_url()})
+ if 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["relset"].append(item.id)
+
- # g_json[str(key)].append({"from":predicate_id[key] , "to":item.id ,"value":1 })
- #create links
- g_json["relations"].append({"from":predicate_id[key] ,"type":str(key), "value":1,"to":item.id })
+ # g_json[str(key)].append({"from":predicate_id[key] , "to":item.id ,"value":1 })
+ #create links
+ g_json["relations"].append({"from":predicate_id[key] ,"type":str(key), "value":1,"to":item.id })
+
+ else:
+
+ if item.left_subject.id==self.id:
+ item1=item.right_subject
+ elif item.right_subject.id==self.id:
+ item1=item.left_subject
+
+ g_json["node_metadata"].append({"_id":str(item1.id),"screen_name":item1.title,"title":self.title, "url":item1.get_absolute_url(),"expanded":"false"})
+
+ # g_json[str(key)].append({"from":predicate_id[key] , "to":item.id ,"value":1 })
+ #create links
+ g_json["relations"].append({"from":predicate_id[key] ,"type":str(key), "value":1,"to":item1.id })
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":nbh[key]})
+ g_json["node_metadata"].append({"_id":(str(attr_counter)+"a"),"screen_name":nbh[key]})
#g_json[str(key)].append({"from":predicate_id[key] , "to":attr_counter ,"value":1, "level":2 })
- g_json["relations"].append({"from":predicate_id[key] ,"type":str(key) ,"value":1,"to":attr_counter })
+ g_json["relations"].append({"from":predicate_id[key] ,"type":str(key) ,"value":1,"to":(str(attr_counter)+"a")})
attr_counter-=1
except:
pass
#print g_json
+
return json.dumps(g_json)
+ @property
+ def get_possible_attributes(self):
+ """
+ Gets the relations possible for this metatype
+ 1. Recursively create a set of all the ancestors i.e. parent/subtypes of the MT.
+ 2. Get all the RT's linked to each ancestor
+ """
+ #Step 1.
+ ancestor_list = []
+ this_parent = self.parent
+
+ # recursive thru parent field and append
+ while this_parent:
+ ancestor_list.append(this_parent)
+ this_parent = this_parent.parent
+
+ #Step 2.
+ attrs = []
+
+ for each in ancestor_list:
+ # retrieve all the AT's from each ancestor
+ attrs.extend(Attribute.objects.filter(subject=each.id))
+
+ return attrs
+
+
+
@property
def tree_path(self):
"""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
@@ -898,8 +1140,12 @@ class Nodetype(Node):
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():
@@ -1088,22 +1334,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
@@ -1114,6 +1360,9 @@ class Nodetype(Node):
'month': self.creation_date.strftime('%m'),
'day': self.creation_date.strftime('%d'),
'slug': self.slug})
+ def get_version_url(self):
+ """Return nodetype's URL"""
+ return "/nodetypes/display/viewhistory/"
def get_serialized_data(self):
"""
@@ -1131,6 +1380,14 @@ 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):
@@ -1140,11 +1397,7 @@ class Objecttype(Nodetype):
def __unicode__(self):
return self.title
-
- #def get_graph_json(self):
-
-
-
+
@property
def get_attributetypes(self):
@@ -1243,7 +1496,7 @@ class Objecttype(Nodetype):
nbh['posterior_nodes'] = self.posterior_nodes.all()
- nbh['authors'] = self.authors.all()
+ #nbh['authors'] = self.authors.all()
return nbh
@@ -1310,6 +1563,18 @@ class Objecttype(Nodetype):
permissions = (('can_view_all', 'Can view all'),
('can_change_author', 'Can change author'), )
+ # Save for Objecttype
+ # @reversion.create_revision()
+ 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
+ if GSTUDIO_VERSIONING:
+ with reversion.create_revision():
+ super(Objecttype, self).save(*args, **kwargs) # Call the "real" save() method.
+
+
+
@@ -1319,10 +1584,10 @@ class Relationtype(Nodetype):
'''
inverse = models.CharField(_('inverse name'), help_text=_('when subjecttypes are interchanged, what should be the name of the relation type? This is mandatory field. If the relation is symmetric, same name will do.'), max_length=255,db_index=True )
left_subjecttype = models.ForeignKey(NID,related_name="left_subjecttype_of", verbose_name='left role')
- left_applicable_nodetypes = models.CharField(max_length=2,choices=NODETYPE_CHOICES,default='OT', verbose_name='Node types for left role')
+ left_applicable_nodetypes = models.CharField(max_length=2,choices=NODETYPE_CHOICES,default='OT', verbose_name='Applicable node types for left role')
left_cardinality = models.IntegerField(null=True, blank=True, verbose_name='cardinality for the left role')
right_subjecttype = models.ForeignKey(NID,related_name="right_subjecttype_of", verbose_name='right role')
- right_applicable_nodetypes = models.CharField(max_length=2,choices=NODETYPE_CHOICES,default='OT', verbose_name='Node types for right role')
+ right_applicable_nodetypes = models.CharField(max_length=2,choices=NODETYPE_CHOICES,default='OT', verbose_name='Applicable node types for right role')
right_cardinality = models.IntegerField(null=True, blank=True, verbose_name='cardinality for the right role')
is_symmetrical = models.NullBooleanField(verbose_name='Is symmetrical?')
is_reflexive = models.NullBooleanField(verbose_name='Is reflexive?')
@@ -1342,6 +1607,37 @@ class Relationtype(Nodetype):
def __unicode__(self):
return self.title
+ @property
+ 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
@@ -1351,6 +1647,18 @@ class Relationtype(Nodetype):
permissions = (('can_view_all', 'Can view all'),
('can_change_author', 'Can change author'), )
+ # Save for Relationtype
+ # @reversion.create_revision()
+ def save(self, *args, **kwargs):
+ self.nodemodel = self.__class__.__name__
+ if GSTUDIO_VERSIONING:
+ with reversion.create_revision():
+ self.nodemodel = self.__class__.__name__
+
+
+ super(Relationtype, self).save(*args, **kwargs) # Call the "real" save() method.
+
+
class Attributetype(Nodetype):
'''
@@ -1385,6 +1693,13 @@ class Attributetype(Nodetype):
def __unicode__(self):
return self.title
+
+ @property
+ def getdataType(self):
+ at = 'attribute'+str(self.get_dataType_display())
+ at = at.lower()
+ return at
+
class Meta:
"""
attribute type's meta class
@@ -1394,6 +1709,17 @@ class Attributetype(Nodetype):
permissions = (('can_view_all', 'Can view all'),
('can_change_author', 'Can change author'), )
+ # Save for Attributetype
+
+ def save(self, *args, **kwargs):
+ self.nodemodel = self.__class__.__name__
+
+# self.nbhood=self.get_nbh
+ if GSTUDIO_VERSIONING:
+ with reversion.create_revision():
+ super(Attributetype, self).save(*args, **kwargs) # Call the "real" save() method.
+
+ super(Attributetype, self).save(*args, **kwargs) # Call the "real" save() method.
class Relation(Edge):
@@ -1454,12 +1780,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):
@@ -1476,14 +1802,25 @@ 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):
+ self.nodemodel = self.__class__.__name__
+ if GSTUDIO_VERSIONING:
+ with reversion.create_revision():
+ super(Relation, self).save(*args, **kwargs) # Call the "real" save() method.
+ super(Relation, self).save(*args, **kwargs) # Call the "real" save() method.
+
class Attribute(Edge):
@@ -1536,21 +1873,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):
@@ -1560,6 +1897,17 @@ class Attribute(Edge):
for each in Objecttype.objects.all():
if attr.subjecttype.id == each.id:
return each.get_members
+
+ # Save for Attribute
+
+ def save(self, *args, **kwargs):
+ self.nodemodel = self.__class__.__name__
+ if GSTUDIO_VERSIONING:
+ with reversion.create_revision():
+ super(Attribute, self).save(*args, **kwargs) # Call the "real" save() method.
+
+ super(Attribute, self).save(*args, **kwargs) # Call the "real" save() method.
+
@@ -1570,12 +1918,32 @@ class AttributeCharField(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(AttributeCharField, self).save(*args, **kwargs) # Call the "real" save() method.
+
+ super(AttributeCharField, self).save(*args, **kwargs) # Call the "real" save() method.
+
+
class AttributeTextField(Attribute):
value = models.TextField(verbose_name='text')
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(AttributeTextField, self).save(*args, **kwargs) # Call the "real" save() method.
+ super(AttributeTextField, self).save(*args, **kwargs) # Call the "real" save() method.
+
class AttributeIntegerField(Attribute):
value = models.IntegerField(max_length=100, verbose_name='Integer')
@@ -1583,6 +1951,17 @@ class AttributeIntegerField(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(AttributeIntegerField, self).save(*args, **kwargs) # Call the "real" save() method.
+
+ super(AttributeIntegerField, self).save(*args, **kwargs) # Call the "real" save() method.
+
+
+
class AttributeCommaSeparatedIntegerField(Attribute):
value = models.CommaSeparatedIntegerField(max_length=100, verbose_name='integers separated by comma')
@@ -1590,6 +1969,14 @@ class AttributeCommaSeparatedIntegerField(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(AttributeCommaSeparatedIntegerField, self).save(*args, **kwargs) # Call the "real" save() method.
+ super(AttributeCommaSeparatedIntegerField, self).save(*args, **kwargs) # Call the "real" save() method.
+
class AttributeBigIntegerField(Attribute):
value = models.BigIntegerField(max_length=100, verbose_name='big integer')
@@ -1604,12 +1991,29 @@ class AttributePositiveIntegerField(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(AttributePositiveIntegerField, self).save(*args, **kwargs) # Call the "real" save() method.
+ super(AttributePositiveIntegerField, self).save(*args, **kwargs) # Call the "real" save() method.
+
+
class AttributeDecimalField(Attribute):
value = models.DecimalField(max_digits=3, decimal_places=2, verbose_name='decimal')
def __unicode__(self):
return self.title
+ def save(self, *args, **kwargs):
+ self.nodemodel = self.__class__.__name__
+ if GSTUDIO_VERSIONING:
+ with reversion.create_revision():
+ super(AttributeDecimalField, self).save(*args, **kwargs) # Call the "real" save() method.
+
+
+ super(AttributeDecimalField, self).save(*args, **kwargs) # Call the "real" save() method.
class AttributeFloatField(Attribute):
@@ -1618,12 +2022,30 @@ class AttributeFloatField(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(AttributeFloatField, self).save(*args, **kwargs) # Call the "real" save() method.
+
+ super(AttributeFloatField, self).save(*args, **kwargs) # Call the "real" save() method.
+
+
class AttributeBooleanField(Attribute):
value = models.BooleanField(verbose_name='boolean')
def __unicode__(self):
return self.title
+ def save(self, *args, **kwargs):
+ self.nodemodel = self.__class__.__name__
+ if GSTUDIO_VERSIONING:
+ with reversion.create_revision():
+ super(AttributeBooleanField, self).save(*args, **kwargs) # Call the "real" save() method.
+
+ super(AttributeBooleanField, self).save(*args, **kwargs) # Call the "real" save() method.
+
class AttributeNullBooleanField(Attribute):
@@ -1632,6 +2054,15 @@ class AttributeNullBooleanField(Attribute):
def __unicode__(self):
return self.title
+
+ def save(self, *args, **kwargs):
+ self.nodemodel = self.__class__.__name__
+ if GSTUDIO_VERSIONING:
+ with reversion.create_revision():
+ super(AttributeNullBooleanField, self).save(*args, **kwargs) # Call the "real" save() method.
+ super(AttributeNullBooleanField, self).save(*args, **kwargs) # Call the "real" save() method.
+
+
class AttributeDateField(Attribute):
value = models.DateField(max_length=100, verbose_name='date')
@@ -1639,12 +2070,31 @@ class AttributeDateField(Attribute):
def __unicode__(self):
return self.title
+
+ def save(self, *args, **kwargs):
+ if GSTUDIO_VERSIONING:
+ with reversion.create_revision():
+ super(AttributeDateField, self).save(*args, **kwargs) # Call the "real" save() method.
+
+ super(AttributeDateField, self).save(*args, **kwargs) # Call the "real" save() method.
+
+
class AttributeDateTimeField(Attribute):
value = models.DateTimeField(max_length=100, verbose_name='date time')
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(AttributeDateTimeField, self).save(*args, **kwargs) # Call the "real" save() method.
+
+ super(AttributeDateTimeField, self).save(*args, **kwargs) # Call the "real" save() method.
+
class AttributeTimeField(Attribute):
@@ -1653,20 +2103,49 @@ class AttributeTimeField(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(AttributeTimeField, self).save(*args, **kwargs) # Call the "real" save() method.
+
+ 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
+ # @reversion.create_revision()
+ def save(self, *args, **kwargs):
+ if GSTUDIO_VERSIONING:
+ with reversion.create_revision():
+ super(AttributeEmailField, self).save(*args, **kwargs) # Call the "real" save() method.
+
+ super(AttributeEmailField, self).save(*args, **kwargs) # Call the "real" save() method.
+
+
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
+ # @reversion.create_revision()
+ def save(self, *args, **kwargs):
+ self.nodemodel = self.__class__.__name__
+ if GSTUDIO_VERSIONING:
+ with reversion.create_revision():
+ super(AttributeFileField, self).save(*args, **kwargs) # Call the "real" save() method.
+
+ super(AttributeFileField, self).save(*args, **kwargs) # Call the "real" save() method.
+
+
class AttributeFilePathField(Attribute):
value = models.FilePathField(verbose_name='path of file')
@@ -1674,13 +2153,29 @@ class AttributeFilePathField(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(AttributeFilePathField, self).save(*args, **kwargs) # Call the "real" save() method.
+
+ 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='media/'+UPLOAD_TO, verbose_name='image')
def __unicode__(self):
return self.title
+ # @reversion.create_revision()
+ def save(self, *args, **kwargs):
+ self.nodemodel = self.__class__.__name__
+ super(AttributeImageField, self).save(*args, **kwargs) # Call the "real" save() method.
+
+
class AttributeURLField(Attribute):
value = models.URLField(max_length=100, verbose_name='url')
@@ -1688,6 +2183,16 @@ class AttributeURLField(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(AttributeURLField, self).save(*args, **kwargs) # Call the "real" save() method.
+
+ super(AttributeURLField, self).save(*args, **kwargs) # Call the "real" save() method.
+
+
class AttributeIPAddressField(Attribute):
value = models.IPAddressField(max_length=100, verbose_name='ip address')
@@ -1695,6 +2200,16 @@ class AttributeIPAddressField(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(AttributeIPAddressField, self).save(*args, **kwargs) # Call the "real" save() method.
+
+ super(AttributeIPAddressField, self).save(*args, **kwargs) # Call the "real" save() method.
+
+
class Processtype(Nodetype):
@@ -1718,6 +2233,15 @@ class Processtype(Nodetype):
verbose_name_plural = _('process types')
permissions = (('can_view_all', 'Can view all'),
('can_change_author', 'Can change author'), )
+ # @reversion.create_revision()
+ def save(self, *args, **kwargs):
+ self.nodemodel = self.__class__.__name__
+ if GSTUDIO_VERSIONING:
+ with reversion.create_revision():
+ super(Processtype, self).save(*args, **kwargs) # Call the "real" save() method.
+
+ super(Processtype, self).save(*args, **kwargs) # Call the "real" save() method.
+
@@ -1749,6 +2273,16 @@ class Systemtype(Nodetype):
verbose_name_plural = _('system types')
permissions = (('can_view_all', 'Can view all'),
('can_change_author', 'Can change author'), )
+
+ # @reversion.create_revision()
+ def save(self, *args, **kwargs):
+ self.nodemodel = self.__class__.__name__
+ if GSTUDIO_VERSIONING:
+ with reversion.create_revision():
+ super(Systemtype, self).save(*args, **kwargs) # Call the "real" save() method.
+
+ super(Systemtype, self).save(*args, **kwargs) # Call the "real" save() method.
+
class AttributeSpecification(Node):
@@ -1770,10 +2304,11 @@ 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):
+ self.nodemodel = self.__class__.__name__
return self.composed_subject
@@ -1782,6 +2317,17 @@ class AttributeSpecification(Node):
permissions = (('can_view_all', 'Can view all'),
('can_change_author', 'Can change author'), )
+ # @reversion.create_revision()
+ def save(self, *args, **kwargs):
+ self.nodemodel = self.__class__.__name__
+ if GSTUDIO_VERSIONING:
+ with reversion.create_revision():
+ super(AttributeSpecification, self).save(*args, **kwargs) # Call the "real" save() method.
+
+ super(AttributeSpecification, self).save(*args, **kwargs) # Call the "real" save() method.
+
+
+
class RelationSpecification(Node):
"""
@@ -1799,17 +2345,28 @@ 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
+
class Meta:
verbose_name = _('relation specification')
permissions = (('can_view_all', 'Can view all'),
('can_change_author', 'Can change author'), )
+ # @reversion.create_revision()
+ def save(self, *args, **kwargs):
+ self.nodemodel = self.__class__.__name__
+ if GSTUDIO_VERSIONING:
+ with reversion.create_revision():
+ super(RelationSpecification, self).save(*args, **kwargs) # Call the "real" save() method.
+
+ super(RelationSpecification, self).save(*args, **kwargs) # Call the "real" save() method.
+
+
class NodeSpecification(Node):
"""
@@ -1830,7 +2387,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
@@ -1841,6 +2398,17 @@ class NodeSpecification(Node):
permissions = (('can_view_all', 'Can view all'),
('can_change_author', 'Can change author'), )
+ # @reversion.create_revision()
+ def save(self, *args, **kwargs):
+ self.nodemodel = self.__class__.__name__
+ if GSTUDIO_VERSIONING:
+ with reversion.create_revision():
+ super(NodeSpecification, self).save(*args, **kwargs) # Call the "real" save() method.
+
+ super(NodeSpecification, self).save(*args, **kwargs) # Call the "real" save() method.
+
+
+
class Expression(Node):
"""
@@ -1858,7 +2426,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:
@@ -1868,6 +2436,16 @@ class Expression(Node):
permissions = (('can_view_all', 'Can view all'),
('can_change_author', 'Can change author'), )
+ # @reversion.create_revision()
+ def save(self, *args, **kwargs):
+ self.nodemodel = self.__class__.__name__
+ if GSTUDIO_VERSIONING:
+ with reversion.create_revision():
+ super(Expression, self).save(*args, **kwargs) # Call the "real" save() method.
+
+ super(Expression, self).save(*args, **kwargs) # Call the "real" save() method.
+
+
class Union(Node):
@@ -1879,6 +2457,16 @@ class Union(Node):
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(Union, self).save(*args, **kwargs) # Call the "real" save() method.
+
+ super(Union, self).save(*args, **kwargs) # Call the "real" save() method.
+
+
class Complement(Node):
@@ -1890,6 +2478,16 @@ class Complement(Node):
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(Complement, self).save(*args, **kwargs) # Call the "real" save() method.
+
+ super(Complement, self).save(*args, **kwargs) # Call the "real" save() method.
+
+
class Intersection(Node):
"""
Intersection of classes
@@ -1898,44 +2496,54 @@ class Intersection(Node):
def __unicode__(self):
return self.title
-
-reversion.register(NID)
+ # @reversion.create_revision()
+ def save(self, *args, **kwargs):
+ self.nodemodel = self.__class__.__name__
+ if GSTUDIO_VERSIONING:
+ with reversion.create_revision():
+ super(Intersection, self).save(*args, **kwargs) # Call the "real" save() method.
+
+ super(Intersection, self).save(*args, **kwargs) # Call the "real" save() method.
-if not reversion.is_registered(Systemtype):
- reversion.register(Systemtype)
+
+if GSTUDIO_VERSIONING == True:
+ reversion.register(NID)
+
+ if not reversion.is_registered(Systemtype):
+ reversion.register(Systemtype)
-if not reversion.is_registered(Objecttype):
- reversion.register(Objecttype , follow=["nodetype_ptr"])
+ if not reversion.is_registered(Objecttype):
+ reversion.register(Objecttype , follow=["nodetype_ptr"])
-if not reversion.is_registered(Node):
- reversion.register(Node , follow=["nid_ptr"])
+ if not reversion.is_registered(Node):
+ reversion.register(Node , follow=["nid_ptr"])
-if not reversion.is_registered(Edge):
- reversion.register(Edge , follow=["nid_ptr"])
+ if not reversion.is_registered(Edge):
+ reversion.register(Edge , follow=["nid_ptr"])
-if not reversion.is_registered(Processtype):
- reversion.register(Processtype, follow=["changing_attributetype_set", "changing_relationtype_set"])
+ if not reversion.is_registered(Processtype):
+ reversion.register(Processtype, follow=["changing_attributetype_set", "changing_relationtype_set"])
-if not reversion.is_registered(Nodetype):
- reversion.register(Nodetype, follow=["node_ptr","parent", "metatypes","prior_nodes", "posterior_nodes"])
+ if not reversion.is_registered(Nodetype):
+ reversion.register(Nodetype, follow=["node_ptr","parent", "metatypes","prior_nodes", "posterior_nodes"])
-if not reversion.is_registered(Metatype):
- reversion.register(Metatype, follow=["node_ptr","parent"])
+ if not reversion.is_registered(Metatype):
+ reversion.register(Metatype, follow=["node_ptr","parent"])
-if not reversion.is_registered(Relationtype):
- reversion.register(Relationtype, follow=["left_subjecttype", "right_subjecttype"])
+ if not reversion.is_registered(Relationtype):
+ reversion.register(Relationtype, follow=["left_subjecttype", "right_subjecttype"])
-if not reversion.is_registered(Attributetype):
- reversion.register(Attributetype, follow=["subjecttype"])
+ if not reversion.is_registered(Attributetype):
+ reversion.register(Attributetype, follow=["subjecttype"])
-if not reversion.is_registered(Attribute):
- reversion.register(Attribute, follow=["subject", "attributetype"])
+ if not reversion.is_registered(Attribute):
+ reversion.register(Attribute, follow=["subject", "attributetype"])
-if not reversion.is_registered(Relation):
- reversion.register(Relation, follow=["left_subject", "right_subject", "relationtype"])
+ if not reversion.is_registered(Relation):
+ reversion.register(Relation, follow=["left_subject", "right_subject", "relationtype"])
moderator.register(Nodetype, NodetypeCommentModerator)
mptt.register(Metatype, order_insertion_by=['title'])
@@ -1950,5 +2558,10 @@ post_save.connect(ping_directories_handler, sender=Nodetype,
post_save.connect(ping_external_urls_handler, sender=Nodetype,
dispatch_uid='gstudio.nodetype.post_save.ping_external_urls')
+class Peer(User):
+ """Subclass for non-human users"""
+ def __unicode__(self):
+ return self.ip
-
+ ip = models.IPAddressField("Peer's IP address")
+ pkey = models.CharField(("Peer's public-key"), max_length=255)
diff --git a/gstudio/settings.py b/gstudio/settings.py
index dceb80fb..75606676 100644
--- a/gstudio/settings.py
+++ b/gstudio/settings.py
@@ -152,3 +152,5 @@ TWITTER_ACCESS_SECRET = getattr(settings, 'TWITTER_ACCESS_SECRET', '')
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
diff --git a/gstudio/static/gstudio/css/screen.css b/gstudio/static/gstudio/css/screen.css
index f786de60..c1077768 100644
--- a/gstudio/static/gstudio/css/screen.css
+++ b/gstudio/static/gstudio/css/screen.css
@@ -1,4 +1,4 @@
-body { line-height: 1.5; font-family: Arial, Helvetica, sans-serif; color: #333333; font-size: 75%; height:1500px;width:1500px}
+body { line-height: 1.5; font-family: Arial, Helvetica, sans-serif; color: #333333; font-size: 75%; height:1500px; width: 90%; }
h1, h2, h3, h4, h5, h6 { font-weight: normal; color: #176691; border-radius:15px; }
h1 img, h2 img, h3 img, h4 img, h5 img, h6 img { margin: 0; }
@@ -130,7 +130,7 @@ caption { background: #eeeeee; }
.span-15 { width: 590px; }
-.span-16 { width: 150px; }
+.span-16 { width: 500px; }
.span-17 { width: 670px; }
@@ -406,7 +406,7 @@ textarea { margin: 0.5em 0; padding: 5px; }
select { margin: 0.5em 0; }
-fieldset { border: 1px solid #cccccc; }
+fieldset { border: 1px solid #cccccc; width:150px;}
input.text, input.title, input[type=email], input[type=text], input[type=password], textarea { background-color: #fff; border: 1px solid #bbbbbb; }
input.text:focus, input.title:focus, input[type=email]:focus, input[type=text]:focus, input[type=password]:focus, textarea:focus { border: 1px solid #666666; }
@@ -424,7 +424,7 @@ ul, ol { margin: 0 1.5em 1.5em 0; padding-left: 3.333em; }
a { text-decoration: none; }
a:hover { text-decoration: underline; }
-#header { margin-bottom: 1em; border-bottom: 1px solid #e9e9f3; }
+#header { margin-bottom: 1em; border-bottom: 1px solid #e9e9f3; background: #2b3959; color: white;}
#header h1 { font-size: 2em; font-weight: bold; margin-bottom: 0; }
#header .top-navigation { float: right; }
#header .top-navigation img { border: 0; }
@@ -436,7 +436,7 @@ a:hover { text-decoration: underline; }
#b1 {position:relative; center:5%; background-color:#43AEE7; color: white; border: 1px solid #000000; font-size:1em;}
#b2 {position:relative; center:6%; background-color:#43AEE7; color: white; border: 1px solid #000000; font-size:1em;}
-#body { margin-bottom: 1em; border-bottom: 1px solid #e9e9f3; }
+#body { margin-bottom: 1em; border-bottom: 1px solid #e9e9f3; width: 100%; }
#content h1, #content h2, #content h3 { margin-top: 10px; }
@@ -446,13 +446,12 @@ a:hover { text-decoration: underline; }
float: left;
clear: both;
margin-bottom: 10px;
- margin-left: 0;
- margin-right: 60px;
+ margin-left: 0%;
+ margin-right: 0%;
margin-top: 10px;
- padding-right: 30px;
+ padding-right: 0px;
width:250px;
}
-
#graph {
position: absolute;
float: left;
@@ -475,14 +474,14 @@ a:hover { text-decoration: underline; }
font-weight: bold;
}
#graphcss {
- margin-left: 224px;
- margin-right: 150px;
+ margin-left: 231px;
+ margin-right: 0%;
margin-top: 1px;
position: absolute;
- width: 300px;
+ width: 54%;
height: 900px
}
-#sidebar{position:absolute; margin-left:1000px; margin-right:150px; margin-top:10px; width:300px;}
+#sidebar{position:relative; margin-left:85%; margin-right:0%; margin-top:10px; width:24%;}
#sidebar div:first-child h3 { margin-top:0px; }
#sidebar h3 { background-color: #C4EBF4; padding: 0.5em; }
#sidebar p { padding-left: 1em; }
@@ -504,7 +503,7 @@ a:hover { text-decoration: underline; }
#sidebar .tags div ul .tag_4 { font-size: 2em; color: #0070a8; }
#sidebar .tags div ul .tag_5 { font-size: 2.25em; color: #0099e5; }
#sidebar .tags div ul .tag_6 { font-size: 3em; color: #00adff; }
-
+#footer{position: static; top: 4px; left: -1px; margin-top: 18px;}
th.month{padding:0cm 2.5cm;}
table.month { margin-bottom: 0; }
table.month th.month { text-transform: uppercase; color: #006699; background: none; }
diff --git a/gstudio/static/gstudio/js/gstudio.js b/gstudio/static/gstudio/js/gstudio.js
index d8d9d608..7ed67e24 100644
--- a/gstudio/static/gstudio/js/gstudio.js
+++ b/gstudio/static/gstudio/js/gstudio.js
@@ -47,23 +47,24 @@ $ = django.jQuery
$("#id_attributetype").change(function() {
test = $("#id_attributetype").val()
- url = "/nodetypes/ajax/?id=" + test
+ url = "/nodetypes/ajax/ajaxattribute/?id=" + test
+
$.get(url,
- function(data){
+ function(data){
- $("#id_subject").empty()
+ $("#id_subject").empty()
- for (var key in data) {
- $('#id_subject').append(
- $('<option></option>').val(key).html(data[key])
- );
- }
+ for (var key in data) {
+ $('#id_subject').append(
+ $('<option></option>').val(key).html(data[key])
+ );
+ }
- });
+ });
});
diff --git a/gstudio/templates/gstudio/_header.html b/gstudio/templates/gstudio/_header.html
index 23d4d435..2e05c8c2 100644
--- a/gstudio/templates/gstudio/_header.html
+++ b/gstudio/templates/gstudio/_header.html
@@ -12,7 +12,7 @@
| <a href="{{ get_absolute_url }}/objects">objects</a>
{% if user.is_authenticated %}
- | <a href="{{ get_absolute_url }}/nodetypes/userdashboard">My Dashboard</a>
+
{% if user.is_staff %}
| <a href="{{ get_absolute_url }}/admin">Admin Dashboard</a>
diff --git a/gstudio/templates/gstudio/base.html b/gstudio/templates/gstudio/base.html
index 94a72eb8..f1c4aa17 100644
--- a/gstudio/templates/gstudio/base.html
+++ b/gstudio/templates/gstudio/base.html
@@ -20,8 +20,8 @@
{% 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>
+
+ <a href="{% url gstudio_nodetype_latest_feed %}" class="feeds" title="Rssfeed"><img src="{{ STATIC_URL }}gstudio/img/rss.png" alt="?" width="20" height="" /></a>
<div class="search">
<h3>{% trans "Search" %}</h3>
@@ -41,6 +41,22 @@
{% get_objecttypes %}
</div>
-->
+<div class="History">
+
+ <h3>{% trans "Versions" %}</h3>
+ <table border="1" cellspacing="0">
+
+ {% for sid in object.ref.get_ssid %}
+
+
+ <a href="{{ object.get_version_url }}{{ sid }}/{{ forloop.counter }}">{{ object.title }} {{ object.id }}.{{ forloop.counter }}</a><br>
+
+ {% endfor %}
+ </table>
+
+</div>
+<br>
+
<div class="authors">
<h3>{% trans "Authors" %}</h3>
{% get_authors %}
diff --git a/gstudio/templates/gstudio/display.html b/gstudio/templates/gstudio/display.html
new file mode 100644
index 00000000..184b58de
--- /dev/null
+++ b/gstudio/templates/gstudio/display.html
@@ -0,0 +1,595 @@
+
+{% 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_dict.title }} {{ nt.id }}.{{ cnt }}
+ </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 %}
+</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 }}" >
+ <table cellspacing="0" border="2">
+ <tr>
+ <td> <input type="radio" name="group1" value="{{ ssid }}" checked >{{ nt.id }}.{{ cnt }}</input></td>
+ <td></td></tr>
+ {% for sid in nt.get_ssid %}
+ {% ifnotequal forloop.counter cnt %}
+ <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="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/gstudio/templates/gstudio/graph1.html b/gstudio/templates/gstudio/graph1.html
index 587b703b..ab66e51f 100644
--- a/gstudio/templates/gstudio/graph1.html
+++ b/gstudio/templates/gstudio/graph1.html
@@ -94,7 +94,7 @@ $(function() {
success : function(json) {
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) {
diff --git a/gstudio/templates/gstudio/nodetype_detail.html b/gstudio/templates/gstudio/nodetype_detail.html
index 404adb98..1a012799 100644
--- a/gstudio/templates/gstudio/nodetype_detail.html
+++ b/gstudio/templates/gstudio/nodetype_detail.html
@@ -243,18 +243,31 @@
s = parseInt(s)
//alert(s)
}
- </script>
-
+ </script>
{% endwith %}
{% endblock %}
-{% if object.reftype == 'Objecttype'%}
-<a href="{{ get_absolute_url }}/objects/dynamicAttribute/save/{{ object.title }}">Add Attribute</a>
-<br/>
-<a href="{{ get_absolute_url }}/objects/dynamicRelation/displayRT/{{ object.title }}">Add Relation</a>
-{% endif %}
+<!-- Dynamic form begins -->
+{% if user.is_authenticated %}
+<p>
+{% if object.reftype == 'Objecttype' %}
+<b>Add Attributes:</b>
+{% for i in object.getat %}
+<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.getrt %}
+<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">
</div>
diff --git a/gstudio/templates/gstudio/nodetype_list.html b/gstudio/templates/gstudio/nodetype_list.html
index f4f75bd3..ebaae5c9 100644
--- a/gstudio/templates/gstudio/nodetype_list.html
+++ b/gstudio/templates/gstudio/nodetype_list.html
@@ -1,5 +1,7 @@
-{% extends "gstudio/base.html" %}
+{% extends "gstudio/version_base.html" %}
{% load i18n gstudio_tags %}
+{% load i18n objectapp_tags %}
+
{% block meta-description %}{% trans "Latest nodetypes for" %} {% if metatype %}{% trans "the metatype" %} {{ metatype }}{% if metatype.description %}: {{ metatype.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/gstudio/templates/gstudio/skeleton.html b/gstudio/templates/gstudio/skeleton.html
index 1fcf9ccf..eba5e283 100644
--- a/gstudio/templates/gstudio/skeleton.html
+++ b/gstudio/templates/gstudio/skeleton.html
@@ -10,20 +10,20 @@
}
.nodetext {
#pointer-events: none;
- font: 10px Serif;
+ font: 12px Serif;
font-style:italic;
}
.mainnode{
font: 15px sans-serif;
- fill:"red";
+ fill:"black";
border-width: 1px;
font-weight:bold;
border-color: gray;
}
.relnode {
- font: 10px sans-serif;
+ font: 12px sans-serif;
font-weight:bold;
fill:#000;
}
@@ -32,8 +32,9 @@
.node {
border-width: 1px;
border-color: gray;
- fill:"green";
- font: 10px sans-serif;
+ font: 12px sans-serif;
+ fill:#25587E;
+ font-weight:bold;
}
body {
background-color: white;
@@ -45,7 +46,7 @@
display: block;
}
svg {
- margin-left: 10%;
+ margin-left: 0%;
margin-right: 10%;
display: block;
position: absolute;
@@ -168,52 +169,18 @@
<script type="text/javascript" >
//alert(s)
//if ( parseInt(s) > 0 ){
- var a = 25 * s;
-
- if ( a > 700 )
- {
- var w = 700;
- }
- else
- {
- var w = a;
- }
- var h = 24 * s,
// }
// else{
// 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");
-
-
-
-
-var gid={{object.id}};
-$(function fgraph(gid) {
+function init(a,b)
+{
+
- $.ajax({
- url: '/nodetypes/graphs/graph_json/{{object.id}}',
- //crossDomain: true,
- dataType: 'json',
- success : function (json) {
-
-
- 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) {
+ nodes_by_id = _.reduce(a, function(acc, n) {
acc[n._id] = n;
return acc;
}, {});
@@ -222,184 +189,71 @@ $(function fgraph(gid) {
all_edges=new Array();
//this contains all the links between the nodes
- all_edges =_(json.relations).chain().map(function(e) {
+ all_edges =_(b).chain().map(function(e) {
e.source = nodes_by_id[e.from];
e.target = nodes_by_id[e.to];
-
+ //`e.type = nodes_by_id[e.type]
return e;
}).filter(function(e){
- return nodes_by_id[e.from] && nodes_by_id[e.to]&& e.type!="title"
+ return nodes_by_id[e.from] && nodes_by_id[e.to]&& e.type!="title" && e.type!="content"
}).value();
- nodes_by_id[{{object.id}}].x = w/2.0;
- nodes_by_id[{{object.id}}].y = h/2.0;
-
-
-
-
- /* 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();
-
+$(function fgraph() {
+
- 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();
-
+$.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}}) });
- 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();
+function load(key)
+{
+
+ if (s > 0 ){
+ var a = 50 * s;
+ var w = 700;
+ var p = 100 + "%";
+ var h = 620;
+ var q = 3 * s + 75 + "%";
+ }else{
+ var w = 700;
+ var p = 100 + "%";
+ var h = 620;
+ var q = 110 + "%";
+ }
+ fill = d3.scale.category20();
+
+ var vis = d3.select("#chart")
+ .append("svg:svg")
+ .attr("id", "amazingViz")
+ .attr("width", p)
+ .attr("height", q);
+ vis.append("svg:g").attr("class", "edges");
+ vis.append("svg:g").attr("class", "nodes");
+
- 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 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();
+ nodes_by_id[key].x = w/2.0;
+ nodes_by_id[key].y = h/2.0;
+
- 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();
- */
-
-
-
- //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, 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()
+
+ var force = d3.layout.force()
.linkStrength(0.5)
- .charge(-2000)
+ .charge(-5000)
.friction(0.7)
.gravity(0.7)
- .linkDistance(13)
+ .linkDistance(50)
.nodes([])
.links([])
.size([w, h])
@@ -425,7 +279,10 @@ $(function fgraph(gid) {
force.links(edges);
force.start();
- link = d3.select("#chart g.edges").selectAll("line.link")
+
+
+
+ link = d3.select("#chart g.edges").selectAll("line.link").select(this.arrowhead)
.data(edges, function(e){return e.from + "-" + e.to + "-" + e.type});
link.enter().append("svg:line")
@@ -448,41 +305,131 @@ $(function fgraph(gid) {
.attr("text", function(d) {
return d.type;
})
+ .attr("marker-end", "url(#arrowhead)");
+
+
+
- .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=={{ object.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;})
+ .attr("class", function(d) { var e=(d._id).charAt(0); if (d._id==key) return "mainnode"; else if (e=="-") return "nodetext"; else if (isNaN(d._id)) return "relnode" ; else return "node"; })
+
.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=={{ object.id }}) return 8; else if (isNaN(d._id) || (d._id)<0) return 1; else return 7 })
- .style("fill", function color(d) { if (d._id=={{ object.id }}) return "red"; else if (isNaN(d._id) || (d._id)<0) return "white" ; else return "green"});
+
+ new_g.append("svg:marker")
+ .attr("id", "arrowhead")
+ .attr("viewBox","0 0 10 10")
+ .attr("refX","20")
+ .attr("refY","5")
+ .attr("markerUnits","strokeWidth")
+ .attr("markerWidth","9")
+ .attr("markerHeight","5")
+ .attr("orient","auto")
+ .append("svg:path")
+ .attr("d","M 0 0 L 10 5 L 0 10 z")
+ .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)
+ })
+ }
- new_g.append("svg:text")
- .attr("class",function(d) { if (d._id=={{ object.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;"})
+ new_g.on("click", function(d) {
+
+ new_g.attr("xlink:href",function(d){return d.url;});
+ });
+
+
+ /*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"});*/
+
+
+
+
+
+ var text1 = new_g.append("svg:text")
+ .attr("class",function(d) {var e=(d._id).charAt(0); if (d._id==key) return "mainnode";else if (e=="-") return "nodetext"; else if (isNaN(d._id)) return "relnode"; else return "node"; })
+ .attr("y", 20)
+ .attr("x", 25)
+ .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;
});
- node.exit().remove();
-
+ var bbox = text1.node().getBBox();
+
+
+ new_g.filter(function(d) { return (d._id).charAt(0)=="-"; }).append("svg:rect")
+ .attr("x",bbox.x-22
+ )
+ .attr("y", bbox.y)
+ .attr("width", function(d) {var ttx=d.screen_name ; return (ttx.length+bbox.width+40)})
+ .attr("height", bbox.height)
+ .call(force.drag)
+ .style("fill-opacity", ".1")
+ .style("stroke", "#000")
+ .style("stroke-width","1px" );
+
+
+
+
+
+
+ new_g.filter(function(d) { return (d._id)>0;}).append("svg:ellipse")
+ .attr("cx", bbox.x+25)
+ .attr("cy", bbox.y+13)
+ .call(force.drag)
+ .attr("rx",function(d) {var ttx=d.screen_name ; return (ttx.length + 40)})
+ .attr("ry",13)
+ .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"});
+
+
+
+
+
+ node.exit().remove();
force.on("tick", function() {
@@ -509,27 +456,18 @@ $(function fgraph(gid) {
.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>
+
+}
+});
+//fgraph({{object.id}});
+
+</script>
+
</div>
<div id="sidebar">
{% block sidebar %}
@@ -537,7 +475,7 @@ $(function fgraph(gid) {
</div>
- <div id="footer" class="span-24 last">
+ <div id="footer">
<p>
<a rel="license"
@@ -550,6 +488,6 @@ $(function fgraph(gid) {
</p>
</div>
-
+ </div>
</body>
</html>
diff --git a/gstudio/templates/gstudio/version_base.html b/gstudio/templates/gstudio/version_base.html
new file mode 100644
index 00000000..15ee3a8a
--- /dev/null
+++ b/gstudio/templates/gstudio/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, &quot;double quotes&quot; 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>&nbsp;&nbsp; -->
+<!-- <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/gstudio/templates/gstudio/version_diff.html b/gstudio/templates/gstudio/version_diff.html
new file mode 100644
index 00000000..a640f071
--- /dev/null
+++ b/gstudio/templates/gstudio/version_diff.html
@@ -0,0 +1,219 @@
+
+{% 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="{{ nt1.get_absolute_url }}" title="{{ nt1.title }}" rel="bookmark">{{ ver_new.title }}
+ </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/>
+
+
+ {% 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 %}
+
+ </td>
+ <td>
+
+ <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>
+ </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 %}
+ <b>Name:<nbsp></b>{% autoescape off %}
+ {{ diffs.0 }}
+ {% endautoescape %}<br>
+ {% if ver_old.altnames %}
+ <b> Alternate names:<nbsp></b> {% autoescape off %}
+ {{ diffs.1 }}
+ {% endautoescape %}
+ <br/>
+ {% endif %}
+ {% if ver_old.plural %}
+ <b> Plural Name:<nbsp></b> {% autoescape off %}
+ {{ diffs.2 }}
+ {% endautoescape %} <br/>
+ {% endif %}
+
+ <b> Content:<nbsp></b> {% autoescape off %}
+ {{ diffs.3 }}
+ {% endautoescape %} <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 %}
+
+ </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>
+</html>
+
+
+
+
diff --git a/gstudio/testloop.py b/gstudio/testloop.py
new file mode 100644
index 00000000..84553875
--- /dev/null
+++ b/gstudio/testloop.py
@@ -0,0 +1,59 @@
+import rdflib
+from rdflib.graph import ConjunctiveGraph as Graph
+from rdflib import plugin
+from rdflib.store import Store, NO_STORE, VALID_STORE
+from rdflib.namespace import Namespace
+from rdflib.term import Literal
+from rdflib.term import URIRef
+from tempfile import mkdtemp
+from gstudio.models import *
+
+def rdf_description(name, notation='xml' ):
+ """
+ Funtion takes title of node, and rdf notation.
+ """
+ valid_formats = ["xml", "n3", "ntriples", "trix"]
+ default_graph_uri = "http://gstudio.gnowledge.org/rdfstore"
+ configString = "/var/tmp/rdfstore"
+
+ # Get the Sleepycat plugin.
+ store = plugin.get('IOMemory', Store)('rdfstore')
+
+ # Open previously created store, or create it if it doesn't exist yet
+ graph = Graph(store="IOMemory",
+ identifier = URIRef(default_graph_uri))
+ path = mkdtemp()
+ rt = graph.open(path, create=False)
+ if rt == NO_STORE:
+ #There is no underlying Sleepycat infrastructure, create it
+ graph.open(path, create=True)
+ else:
+ assert rt == VALID_STORE, "The underlying store is corrupt"
+
+
+ # Now we'll add some triples to the graph & commit the changes
+ rdflib = Namespace('http://sbox.gnowledge.org/gstudio/')
+ graph.bind("gstudio", "http://gnowledge.org/")
+ exclusion_fields = ["id", "rght", "node_ptr_id", "image", "lft", "_state", "_altnames_cache", "_tags_cache", "nid_ptr_id", "_mptt_cached_fields"]
+ node=NID.objects.get(title=name)
+ node_dict=node.__dict__
+
+ subject=str(node_dict['id'])
+ for key in node_dict:
+ if key not in exclusion_fields:
+ predicate=str(key)
+ pobject=str(node_dict[predicate])
+ graph.add((rdflib[subject], rdflib[predicate], Literal(pobject)))
+
+
+ graph.commit()
+
+ print graph.serialize(format=notation)
+
+ graph.close()
+i=0
+p=NID.objects.all()
+for each in p:
+ rdf_description(p[i])
+ i=i+1
+
diff --git a/gstudio/urls/__init__.py b/gstudio/urls/__init__.py
index b04f1485..20ac0658 100644
--- a/gstudio/urls/__init__.py
+++ b/gstudio/urls/__init__.py
@@ -32,6 +32,7 @@ urlpatterns = patterns(
url(r'^discussions/', include('gstudio.urls.discussions')),
url(r'^add/', include('gstudio.urls.add')),
url(r'^ajax/', include('gstudio.urls.ajaxurls')),
+ url(r'^display/',include('gstudio.urls.history')),
url(r'^graphs/', include('gstudio.urls.graphs')),
url(r'^userdashboard/', include('gstudio.urls.dashboard')),
url(r'^', include('gstudio.urls.quick_nodetype')),
diff --git a/gstudio/urls/ajaxurls.py b/gstudio/urls/ajaxurls.py
index 778b0dea..facc6036 100644
--- a/gstudio/urls/ajaxurls.py
+++ b/gstudio/urls/ajaxurls.py
@@ -20,7 +20,7 @@ from django.conf.urls.defaults import url
from django.conf.urls.defaults import patterns
urlpatterns = patterns('gstudio.views.ajaxviews',
- url(r'^$', 'AjaxAttribute',name='ajax_views'),
+ url(r'^ajaxattribute/$', 'AjaxAttribute',name='ajax_views'),
url(r'^relation/add/ajaxleft/$', 'AjaxRelationleft',name='ajax_relnleft_views'),
url(r'^relation/add/ajaxright/$', 'AjaxRelationright',name='ajax_relnright_views'),
url(r'^relation/ajaxleft/$', 'AjaxRelationleft',name='ajax_relnleft_views'),
diff --git a/gstudio/urls/graphs.py b/gstudio/urls/graphs.py
index 952f0214..4aa8c4b5 100644
--- a/gstudio/urls/graphs.py
+++ b/gstudio/urls/graphs.py
@@ -27,5 +27,6 @@ from gstudio.settings import ALLOW_FUTURE
urlpatterns = patterns(
'gstudio.views.graphs',
url(r'^graph_json/(?P<node_id>\d+)$','graph_json', name='graph_json_d3'),
+ url(r'^version_graph_json/(?P<ssid>\d+)$','version_graph_json', name='version_graph_d3'),
url(r'^graph/(?P<node_id>\d+)$','force_graph', name='force_graph_d3'),
)
diff --git a/gstudio/urls/history.py b/gstudio/urls/history.py
new file mode 100644
index 00000000..3932cd62
--- /dev/null
+++ b/gstudio/urls/history.py
@@ -0,0 +1,8 @@
+"""Urls for Gstudio forms"""
+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',
+ name='gstudio_history'),
+ url(r'^showhistory/(?P<ssid>\d+)/$','showHistory'),)
diff --git a/gstudio/views/add.py b/gstudio/views/add.py
index 1ed2791f..f6baf6c1 100644
--- a/gstudio/views/add.py
+++ b/gstudio/views/add.py
@@ -20,10 +20,9 @@ from django.http import HttpResponseRedirect
from django.template import RequestContext
from django.shortcuts import render_to_response
from datetime import datetime
-from reversion.models import *
from gstudio.forms import *
-@reversion.create_revision()
+
def addmetatype(request):
if request.method == 'POST':
formset = MetatypeForm(request.POST)
@@ -43,7 +42,7 @@ def addmetatype(request):
return render_to_response(template, variables)
-@reversion.create_revision()
+
def addobjecttype(request):
if request.method == 'POST':
formset = ObjecttypeForm(request.POST)
@@ -62,7 +61,7 @@ def addobjecttype(request):
return render_to_response(template, variables)
-@reversion.create_revision()
+
def addrelationtype(request):
if request.method == 'POST':
formset = RelationtypeForm(request.POST)
@@ -80,7 +79,7 @@ def addrelationtype(request):
return render_to_response(template, variables)
-@reversion.create_revision()
+
def addattributetype(request):
if request.method == 'POST':
formset = AttributetypeForm(request.POST)
@@ -97,7 +96,7 @@ def addattributetype(request):
variables = RequestContext(request,{'formset':formset})
return render_to_response(template, variables)
-@reversion.create_revision()
+
def addsystemtype(request):
if request.method == 'POST':
formset = SystemtypeForm(request.POST)
@@ -114,7 +113,7 @@ def addsystemtype(request):
variables = RequestContext(request,{'formset':formset})
return render_to_response(template, variables)
-@reversion.create_revision()
+
def addprocesstype(request):
if request.method == 'POST':
formset = ProcesstypeForm(request.POST)
@@ -131,7 +130,7 @@ def addprocesstype(request):
variables = RequestContext(request,{'formset':formset})
return render_to_response(template, variables)
-@reversion.create_revision()
+
def addattribute(request):
if request.method == 'POST':
formset = AttributeForm(request.POST)
@@ -148,7 +147,7 @@ def addattribute(request):
variables = RequestContext(request,{'formset':formset})
return render_to_response(template, variables)
-@reversion.create_revision()
+
def addrelation(request):
if request.method == 'POST':
formset = RelationForm(request.POST)
@@ -165,7 +164,7 @@ def addrelation(request):
variables = RequestContext(request,{'formset':formset})
return render_to_response(template, variables)
-@reversion.create_revision()
+
def addcomplement(request):
if request.method == 'POST':
formset = ComplementForm(request.POST)
@@ -182,7 +181,7 @@ def addcomplement(request):
variables = RequestContext(request,{'formset':formset})
return render_to_response(template, variables)
-@reversion.create_revision()
+
def addunion(request):
if request.method == 'POST':
formset = UnionForm(request.POST)
@@ -199,7 +198,7 @@ def addunion(request):
variables = RequestContext(request,{'formset':formset})
return render_to_response(template, variables)
-@reversion.create_revision()
+
def addintersection(request):
if request.method == 'POST':
formset = IntersectionForm(request.POST)
diff --git a/gstudio/views/ajaxviews.py b/gstudio/views/ajaxviews.py
index a909db26..23c06e54 100644
--- a/gstudio/views/ajaxviews.py
+++ b/gstudio/views/ajaxviews.py
@@ -27,10 +27,19 @@ def AjaxAttribute(request):
subjecttype = attr.subjecttype
returndict = {}
- for each in Objecttype.objects.all():
- if attr.subjecttype.id == each.id:
- for member in each.get_members:
+ for ots in Objecttype.objects.all():
+ if attr.subjecttype.id ==ots.id:
+ for member in ots.get_members:
returndict[member.id] = member.title
+ childrenots = ots.get_children()
+
+ if childrenots:
+ for eachchild in childrenots:
+ returndict[eachchild.id] = eachchild.title
+ membs=eachchild.ref.get_members
+ for each in membs:
+ returndict[each.id] = each.title
+
jsonobject = json.dumps(returndict)
return HttpResponse(jsonobject, "application/json")
@@ -76,22 +85,37 @@ def additemdict(sdict,itemtoadd):
sdict[itemtoadd.id]=itemtoadd.title
return sdict
def selectionlist_OT(obj):
+ # Basically the filter must filter out the OT, their members, the children and members of the children
+
global rlist
# Return all OTs and members of subtypes of OT
obs=Objecttype.objects.filter(title=obj)
# Get all members of subtypes of each OT
if obs:
+ # Add the items first
+ for each in obs:
+ rlist=additemdict(rlist,each)
obs=Objecttype.objects.get(title=obj)
+ # Add the objects first
+ # for each in obs:
+ # rlist = additemdict(rlist,each)
memobs=obs.get_members
if memobs:
for each in memobs:
rlist=additemdict(rlist,each)
childrenots=obs.get_children()
+ # Add children first
+ for each in childrenots:
+ rlist=additemdict(rlist,each)
+ # Add memebers of each child
if childrenots:
for eachchild in childrenots:
membs=eachchild.ref.get_members
for each in membs:
rlist=additemdict(rlist,each)
+
+
+
return rlist
def selectionlist_MT(obj):
@@ -308,12 +332,10 @@ def selectionlist_UP(obj):
membs=eachchild.objecttypes.all()
def selectionlist_OB(obj):
global rlist
-
- obs=Gbobject.objects.filter(title=obj)
+ obs=Objecttype.objects.get(title=obj)
#Get all members of OB
- if obs:
- obs=Gbobject.objects.get(title=obj)
- rlist=additemdict(rlist,obs)
+ for each in obs.member_objects.all():
+ rlist=additemdict(rlist,each)
return rlist
diff --git a/gstudio/views/graphs.py b/gstudio/views/graphs.py
index 1adffeca..ff2fa401 100644
--- a/gstudio/views/graphs.py
+++ b/gstudio/views/graphs.py
@@ -73,30 +73,53 @@ from gstudio.gnowql import *
#import d3
import json
import os
-
from gstudio.views.decorators import protect_nodetype
from gstudio.views.decorators import update_queryset
-def graph_json(request, node_id):
+
+
+def graph_json(request, node_id):
+
if(node_id=='189087228'):
jsonFile = open( os.path.join(os.path.dirname(__file__), '../static/gstudio/js/egonet.json'), "r")
- #testjson = json.loads(jsonFile)
+ testjson = json.loads(jsonFile)
return HttpResponse(str(jsonFile.read()), "application/json")
try:
node = NID.objects.get(id=node_id)
- node = node.ref
+ node = node.ref
except:
- return HttpResponse("Node not found.", "text/html")
+
+ return HttpResponse("node not found", "text/html")
return HttpResponse(node.get_graph_json(), "application/json")
-
+
+
+
+
+
def force_graph(request, node_id):
return render_to_response('gstudio/graph1.html',{'node_id': node_id })
-
+def version_graph_json(request,ssid):
+
+ if(ssid=='189087228'):
+ jsonFile = open( os.path.join(os.path.dirname(__file__), '../static/gstudio/js/egonet.json'), "r")
+ #testjson = json.loads(jsonFile)
+
+ return HttpResponse(str(jsonFile.read()), "application/json")
+
+ try:
+ node = Version.objects.get(id=ssid)
+
+ node = node.object.ref
+ except:
+ return HttpResponse("Node not found.", "text/html")
+
+ return HttpResponse(node.get_Version_graph_json(ssid), "application/json")
+
#node = get_node(str(object_id))
#ot = Objecttype.objects.get(title='place')
#G = ot.get_radial_graph_json()
diff --git a/gstudio/views/history.py b/gstudio/views/history.py
new file mode 100644
index 00000000..d4adac9e
--- /dev/null
+++ b/gstudio/views/history.py
@@ -0,0 +1,105 @@
+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
+
+def history(request,ssid,cnt):
+ # 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 })
+ 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
+ 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"])
+ content=str(ver_new_dict['content'])
+ content=content[3:-4]
+ ver_new_dict['content']=content
+ ver_old_dict=nt1.version_info(request.GET["group2"])
+ 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_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_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 =='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':
+ 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 })
+ template="gstudio/version_diff.html"
+ return render_to_response(template,variables)
+
diff --git a/gstudio/xmlrpc/__init__.py b/gstudio/xmlrpc/__init__.py
index 9bec5952..afb41e6f 100644
--- a/gstudio/xmlrpc/__init__.py
+++ b/gstudio/xmlrpc/__init__.py
@@ -80,6 +80,38 @@ GSTUDIO_XMLRPC_METAWEBLOG = [
('gstudio.xmlrpc.metaweblog.get_nbh',
'metaWeblog.get_nbh'),
('gstudio.xmlrpc.metaweblog.new_media_object',
- 'metaWeblog.newMediaObject')]
+ 'metaWeblog.newMediaObject'),
+ ('gstudio.xmlrpc.metaweblog.getNodetype',
+ 'metaweblog.getNodetype'),
+ ('gstudio.xmlrpc.metaweblog.nidExists',
+ 'metaweblog.nidExists'),
+ ('gstudio.xmlrpc.metaweblog.getinfoFromSSID',
+ 'metaweblog.getinfoFromSSID'),
+ #('gstudio.xmlrpc.metaweblog.getNeighbourhood',
+ #'metaweblog.getNeighbourhood'),
+ # ('gstudio.xmlrpc.metaweblog.getallNodes',
+ # 'metaweblog.getallNodes'),
+ ('gstudio.xmlrpc.metaweblog.getDatatype',
+ 'metaweblog.getDatatype'),
+ ('gstudio.xmlrpc.metaweblog.getAttributevalues',
+ 'metaweblog.getAttributevalues'),
+ ('gstudio.xmlrpc.metaweblog.getSubjecttypes',
+ 'metaweblog.getSubjecttypes'),
+ #('gstudio.xmlrpc.metaweblog.getAttributeType',
+ #'metaweblog.getAttributeType'),
+ ('gstudio.xmlrpc.metaweblog.getRoles',
+ 'metaweblog.getRoles'),
+ ('gstudio.xmlrpc.metaweblog.getSubtypes',
+ 'metaweblog.getSubtypes'),
+ #('gstudio.xmlrpc.metaweblog.Suballtypes',
+ #'metaweblog.Suballtypes'),
+ ('gstudio.xmlrpc.metaweblog.getRestrictions',
+ 'metaweblog.getRestrictions'),
+ ('gstudio.xmlrpc.metaweblog.getlatestSSID',
+ 'metaweblog.getlatestSSID'),
+ ('gstudio.xmlrpc.metaweblog.getAllSnapshots',
+ 'metaweblog.getAllSnapshots')
+]
+
GSTUDIO_XMLRPC_METHODS = GSTUDIO_XMLRPC_PINGBACK + GSTUDIO_XMLRPC_METAWEBLOG
diff --git a/gstudio/xmlrpc/metaweblog.py b/gstudio/xmlrpc/metaweblog.py
index 6c89c21c..5b273ea3 100644
--- a/gstudio/xmlrpc/metaweblog.py
+++ b/gstudio/xmlrpc/metaweblog.py
@@ -1,4 +1,4 @@
-# Copyright (c) 2011, 2012 Free Software Foundation
+ # Copyright (c) 2011, 2012 Free Software Foundation
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
@@ -70,6 +70,8 @@ from gstudio.settings import PROTOCOL
from gstudio.settings import UPLOAD_TO
from gstudio.managers import DRAFT, PUBLISHED
from django_xmlrpc.decorators import xmlrpc_func
+from django.utils.datastructures import SortedDict
+from gstudio.models import *
# http://docs.nucleuscms.org/blog/12#errorcodes
LOGIN_ERROR = 801
@@ -373,4 +375,191 @@ def new_media_object(blog_id, username, password, media):
authenticate(username, password)
path = default_storage.save(os.path.join(UPLOAD_TO, media['name']),
ContentFile(media['bits'].data))
- return {'url': default_storage.url(path)}
+ return {'url': default_storage.url(path)}
+
+
+@xmlrpc_func(returns='string', args='int')
+def getNodetype(ssid):
+ """Returns the nodetype of given ssid """
+ try :
+ g = Nodetype.objects.get(id=ssid)
+ return (g.ref._meta.module_name)
+ except Nodetype.DoesNotExist :
+ return "Node with the given ssid does not exist"
+
+@xmlrpc_func(returns='int', args='string')
+def nidExists(nid):
+ """Returns 1 if a node with given id exists, else returns a 0 """
+ try:
+ p = Nodetype.objects.get(title = nid)
+ return 1
+ except Nodetype.DoesNotExist:
+ return 0
+
+
+@xmlrpc_func(returns=['struct'],args=['string'])
+def getinfoFromSSID(ssid_list) :
+ """Given a list of ssids, it returns entire information of each ssid inside a dictionary with all the dictionaries contained within a list """
+ lst = []
+ for ssid in ssid_list :
+ try :
+ p = Objecttype.objects.get(id = ssid)
+ nbh = p.ref.get_nbh
+ lst.append(str(nbh))
+ except Objecttype.DoesNotExist :
+ return "ssid",ssid,"Does not exist"
+
+
+ return lst
+
+
+
+@xmlrpc_func(returns=['struct'], args=['string'])
+
+def getDatatype(attrtype_ssid_list) :
+ """Given a list of attributessids, it returns its datatypes """
+
+ d = {}
+ g = {}
+ for l in attrtype_ssid_list :
+ p = NID.objects.get(id = l)
+ n = p.ref._meta.module_name
+ if n == 'attributetype' :
+ ft = FIELD_TYPE_CHOICES[int(p.ref.dataType) - 1]
+ d[str(p.id)] = ft[1]
+ else :
+ return " Node does not exist "
+
+ return d
+
+
+@xmlrpc_func(returns=['struct'], args=['string'])
+
+def getAttributevalues(Attrssidlist) :
+ """Given a list of attributessid, it returns their values """
+
+ d = {}
+ for l in Attrssidlist :
+ try :
+ p = Attribute.objects.get(id = l)
+ d[str(p.id)] = p.svalue
+ except Attribute.DoesNotExist :
+ return " Node does not exist"
+
+ return d
+
+
+@xmlrpc_func(returns=['struct'], args=['string'])
+
+
+def getSubjecttypes( AttributeTypeNid ) :
+ """Given an attributetypenid, it returns the subjecttype participating in the attributetype """
+ d ={}
+ for l in AttributeTypeNid :
+ try :
+ p = Attributetype.objects.get(id = l)
+ n = p.ref.subjecttype_id
+ s = NID.objects.get(id = n)
+ d[str(s.title)]= n
+ d['applicable_nodetypes'] = p.applicable_nodetypes
+ except Attribute.DoesNotExist:
+ return " Node does not exist "
+ return d
+
+
+
+
+
+
+@xmlrpc_func(returns=['struct'], args=['string'])
+
+def getRoles(relationtypenid) :
+ """given a relationtype nid this method returns the roles participating in the relationtype """
+
+ d = {}
+ p = Relationtype.objects.get(nodetype_ptr_id = relationtypenid)
+
+ d['cardinality1 '] = p.left_cardinality
+ d['cardinality2'] = p.right_cardinality
+ d['rtid'] = p.nodetype_ptr_id
+ d['applicablenodetype1'] = p.left_applicable_nodetypes
+ d['applicablenodetype2'] = p.right_applicable_nodetypes
+ d['subjecttype1'] = p.left_subjecttype_id
+ d['subjecttype2'] = p.right_subjecttype_id
+ return d
+
+
+@xmlrpc_func(returns=['struct'], args=['string'])
+
+
+def getSubtypes(nodeid) :
+ """Returns only the immediate subtype of the node specified"""
+ i = 0
+ l = []
+ p = Objecttype.objects.get(id = nodeid)
+ n = p.get_children()
+ u = len(n)
+ while u>0 :
+ t = n[i].id
+ l.append(str(t))
+ i = i+1
+ u = u-1
+ return l
+
+
+
+
+@xmlrpc_func(returns=['struct'], args=['string'])
+
+def getRestrictions(ATlist) :
+ """Given a list of attributetype ssids, this method returns all the restrictions that the attributetypes have """
+ u = {}
+ d = {}
+ ft = []
+ for a in ATlist :
+ p = Attributetype.objects.get(id = a)
+ ft = FIELD_TYPE_CHOICES[int(p.dataType)-1]
+ u['datatype'] = ft[1]
+ u['length'] = p.max_digits
+ u['precision'] = p.decimal_places
+ d[str(p.id)] = u
+
+ return d
+
+@xmlrpc_func(returns='int', args='int')
+
+def getlatestSSID(nid) :
+ """Given the id, this method will return the latest ssid of the given id """
+
+ p = NID.objects.get(id = nid)
+ n = p.get_ssid
+ u = len(n)
+ r = n[u-1]
+ return r
+
+
+@xmlrpc_func(returns=['struct'], args='int')
+
+def getAllSnapshots(nid) :
+ """Given the id, this method will return all the ssids of the given id """
+
+ p = NID.objects.get(id = nid)
+ n = p.get_ssid
+ return n
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/gstudio/xmlrpc/rpc/views.py b/gstudio/xmlrpc/rpc/views.py
new file mode 100644
index 00000000..8c66b384
--- /dev/null
+++ b/gstudio/xmlrpc/rpc/views.py
@@ -0,0 +1,186 @@
+"""Uses SimpleXMLRPCServer's SimpleXMLRPCDispatcher to serve XML-RPC requests
+
+Authors::
+ Graham Binns
+ Reza Mohammadi
+ Julien Fache
+
+Credit must go to Brendan W. McAdams <brendan.mcadams@thewintergrp.com>, who
+posted the original SimpleXMLRPCDispatcher to the Django wiki:
+http://code.djangoproject.com/wiki/XML-RPC
+
+New BSD License
+===============
+Copyright (c) 2007, Graham Binns http://launchpad.net/~codedragon
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the <ORGANIZATION> nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+"""
+import sys
+
+import django
+from django.conf import settings
+from django.template import RequestContext
+from django.shortcuts import render_to_response
+from django.core.exceptions import ImproperlyConfigured
+from django.http import HttpResponse, HttpResponseServerError
+from gstudio.xmlrpc.metaweblog import *
+from django.utils.datastructures import SortedDict
+try:
+ from django.views.decorators.csrf import csrf_exempt
+except ImportError:
+ from django.contrib.csrf.middleware import csrf_exempt
+
+from dispatcher import DjangoXMLRPCDispatcher
+from decorators import xmlrpc_func
+
+
+# We create a local DEBUG variable from the data in settings.
+DEBUG = hasattr(settings, 'XMLRPC_DEBUG') and settings.XMLRPC_DEBUG
+
+# Declare xmlrpcdispatcher correctly depending on our python version
+if sys.version_info[:3] >= (2, 5,):
+ xmlrpcdispatcher = DjangoXMLRPCDispatcher(allow_none=True, encoding=None)
+else:
+ xmlrpcdispatcher = DjangoXMLRPCDispatcher()
+
+
+def request_datas(request):
+ if django.VERSION[1] > 3:
+ return request.body
+ return request.raw_post_data
+
+
+@xmlrpc_func(returns='string', args=['string'])
+def test_xmlrpc(text):
+ """Simply returns the args passed to it as a string"""
+ return "Here's a response! %s" % str(text)
+
+
+@csrf_exempt
+def handle_xmlrpc(request):
+ """Handles XML-RPC requests. All XML-RPC calls should be forwarded here
+
+ request
+ The HttpRequest object that carries the XML-RPC call. If this is a
+ GET request, nothing will happen (we only accept POST requests)
+ """
+ if request.method == "POST":
+ if DEBUG:
+ print request_datas(request)
+ try:
+ response = HttpResponse(content_type='text/xml')
+ response.write(
+ xmlrpcdispatcher._marshaled_dispatch(request_datas(request)))
+ if DEBUG:
+ print response
+ return response
+ except:
+ return HttpResponseServerError()
+ else:
+ methods = xmlrpcdispatcher.system_listMethods()
+ method_list = []
+
+ for method in methods:
+ sig_ = xmlrpcdispatcher.system_methodSignature(method)
+ sig = {
+ 'returns': sig_[0],
+ 'args': ", ".join(sig_[1:]),
+ }
+
+ # this just reads your docblock, so fill it in!
+ method_help = xmlrpcdispatcher.system_methodHelp(method)
+
+ method_list.append((method, sig, method_help))
+
+ if hasattr(settings, 'XMLRPC_GET_TEMPLATE'):
+ # This behaviour is deprecated
+ if settings.DEBUG:
+ print "Use of settings.XMLRPC_GET_TEMPLATE is deprecated " \
+ + "Please update your code to use django_xmlrpc/templates"
+ template = settings.XMLRPC_GET_TEMPLATE
+ else:
+ template = 'xmlrpc_get.html'
+ return render_to_response(template, {'methods': method_list},
+ context_instance=RequestContext(request))
+
+
+# Load up any methods that have been registered with the server in settings
+if hasattr(settings, 'XMLRPC_METHODS'):
+ for path, name in settings.XMLRPC_METHODS:
+ # if "path" is actually a function, just add it without fuss
+ if callable(path):
+ xmlrpcdispatcher.register_function(path, name)
+ continue
+
+ # Otherwise we try and find something that we can call
+ i = path.rfind('.')
+ module, attr = path[:i], path[i + 1:]
+
+ try:
+ mod = __import__(module, globals(), locals(), [attr])
+ except ImportError, ex:
+ raise ImproperlyConfigured("Error registering XML-RPC method: " \
+ + "module %s can't be imported" % module)
+
+ try:
+ func = getattr(mod, attr)
+ except AttributeError:
+ raise ImproperlyConfigured('Error registering XML-RPC method: ' \
+ + 'module %s doesn\'t define a method "%s"' % (module, attr))
+
+ if not callable(func):
+ raise ImproperlyConfigured('Error registering XML-RPC method: ' \
+ + '"%s" is not callable in module %s' % (attr, module))
+
+ xmlrpcdispatcher.register_function(func, name)
+ xmlrpcdispatcher.register_function(getNodetype,'getNodetype')
+ xmlrpcdispatcher.register_function(nidExists,'nidExists')
+ xmlrpcdispatcher.register_function(getinfoFromSSID,'getinfoFromSSID')
+ #xmlrpcdispatcher.register_function(getNeighbourhood,'getNeighbourhood')
+ xmlrpcdispatcher.register_function(get_nbh,'get_nbh')
+ #xmlrpcdispatcher.register_function(getallNodes,'getallNodes')
+ xmlrpcdispatcher.register_function(getDatatype,'getDatatype')
+ xmlrpcdispatcher.register_function(getAttributevalues,'getAttributevalues')
+ xmlrpcdispatcher.register_function(getSubjecttypes,'getSubjecttypes')
+ #xmlrpcdispatcher.register_function(getAttributeType,'getAttributeType')
+ xmlrpcdispatcher.register_function(getRoles,'getRoles')
+ xmlrpcdispatcher.register_function(getSubtypes,'getSubtypes')
+ #xmlrpcdispatcher.register_function(Suballtypes,'Suballtypes')
+ xmlrpcdispatcher.register_function(getRestrictions,'getRestrictions')
+ xmlrpcdispatcher.register_function(getlatestSSID,'getlatestSSID')
+ xmlrpcdispatcher.register_function(getAllSnapshots,'getAllSnapshots')
+
+
+
+
+
+
+
+# Finally, register the introspection and multicall methods with the XML-RPC
+# namespace
+xmlrpcdispatcher.register_introspection_functions()
+xmlrpcdispatcher.register_multicall_functions()
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
-&nbsp;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‘¾Á­.‘èA s¨!: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 ½‘„²´Êñîœ]_‘^]+Ü‚c H¨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/forms.py b/objectapp/forms.py
index 1d123156..a117b333 100644
--- a/objectapp/forms.py
+++ b/objectapp/forms.py
@@ -15,12 +15,8 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-from django import forms
-from django.forms import ModelForm
-from django.forms.fields import DateField
-from django.contrib.admin import widgets
-from django.contrib.admin.widgets import AdminDateWidget
+from django.forms import ModelForm
from gstudio.models import *
from objectapp.models import *
@@ -38,15 +34,3 @@ class SystemForm(ModelForm):
class Meta:
model = System
-
-
-class ContextForm(forms.Form):
-
- def __init__(self,rdict, *args, **kwargs):
- super(ContextForm, self).__init__(*args, **kwargs)
- for key, val in rdict.iteritems():
- print key, val
- self.fields[str(key)+"_"+str(val)] = getattr(forms,rdict.get(key))(required = False)
-
-
-
diff --git a/objectapp/models.py b/objectapp/models.py
index c4a612d3..6242b151 100644
--- a/objectapp/models.py
+++ b/objectapp/models.py
@@ -98,7 +98,6 @@ from gstudio.models import Node
from gstudio.models import Edge
from gstudio.models import Author
-import reversion
from objectapp.settings import UPLOAD_TO
from objectapp.settings import MARKUP_LANGUAGE
from objectapp.settings import GBOBJECT_TEMPLATES
@@ -113,6 +112,16 @@ from objectapp.moderator import GbobjectCommentModerator
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 *
+
+
+
+counter = 1
+attr_counter = -1
'''
class Author(User):
@@ -200,7 +209,92 @@ class Gbobject(Node):
objects = models.Manager()
published = GbobjectPublishedManager()
+
+ @property
+ def getattributetypes(self):
+ """
+ Returns the attributetypes of self as well as its parent's attributetype.
+ """
+ try:
+ originalnt = []
+ pt = []
+ attributetype = []
+ returndict = {}
+ obj = self
+ 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 pt:
+ attributetype.append(each.subjecttype_of.all())
+
+ attributetype = [num for elem in attributetype for num in elem]
+
+ for i in attributetype:
+ returndict.update({str(i.title):i.id})
+
+ return returndict.keys()
+
+ except:
+ return None
+
+
+
+ @property
+ def getrelationtypes(self):
+ originalnt= []
+ originalpt = []
+ pt =[] #contains parenttype
+ reltype =[] #contains relationtype
+ titledict = {} #contains relationtype's title
+ inverselist = [] #contains relationtype's inverse
+ finaldict = {} #contains either title of relationtype or inverse of relationtype
+ listval=[] #contains keys of titledict to check whether parenttype id is equals to listval's left or right subjecttypeid
+
+ gb=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))
+
+ reltype = [num for elem in reltype for num in elem]
+
+ for i in reltype:
+ titledict.update({i:i.id})
+
+
+ for i in range(len(titledict)):
+ listval.append(Relationtype.objects.get(title = titledict.keys()[i]))
+ inverselist.append(titledict.keys()[i].inverse)
+
+ for j in range(len(pt)):
+ for i in range(len(listval)):
+ if pt[j].id == listval[i].left_subjecttype_id 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.keys()
+
def get_relations(self):
relation_set = {}
# ALGO to find the relations and their left-subjecttypes and right_subjecttypes
@@ -240,7 +334,8 @@ class Gbobject(Node):
relation_set.update(rel_dict['right_subjecttypes'])
return relation_set
-
+
+
def get_attributes(self):
attributes_dict = {}
@@ -359,21 +454,24 @@ class Gbobject(Node):
g_json = {}
g_json["node_metadata"]= []
g_json["relations"]=[]
+ g_json["relset"]=[]
-
+ global counter
+ global attr_counter
nbh = self.get_nbh
predicate_id = {}
- counter = 1
+
for key in nbh.keys():
- val = "a" + str(counter)
+ val = str(counter) + "b"
predicate_id[key] = val
counter = counter + 1
#print predicate_id
- attr_counter = -1
+
- this_node = {"_id":str(self.id),"title":self.title,"screen_name":self.title, "url":self.get_absolute_url()}
+ this_node = {"_id":str(self.id),"title":self.title,"screen_name":self.title, "url":self.get_absolute_url(),"expanded":"true"}
g_json["node_metadata"].append(this_node)
+ g_json["relset"].append(self.id)
for key in predicate_id.keys():
if nbh[key]:
@@ -385,20 +483,34 @@ class Gbobject(Node):
g_json["relations"].append({"from":self.id ,"type":str(key),"value":1,"to":predicate_id[key] })
if not isinstance(nbh[key],basestring):
for item in nbh[key]:
+ if 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()})
- # g_json[str(key)].append({"from":predicate_id[key] , "to":item.id ,"value":1 })
- #create links
- g_json["relations"].append({"from":predicate_id[key] ,"type":str(key), "value":1,"to":item.id })
-
+ 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["relset"].append(item.id)
+ # g_json[str(key)].append({"from":predicate_id[key] , "to":item.id ,"value":1 })
+ #create links
+ g_json["relations"].append({"from":predicate_id[key] ,"type":str(key), "value":1,"to":item.id })
+
+ else:
+
+ if item.left_subject.id==self.id:
+ item1=item.right_subject
+ elif item.right_subject.id==self.id:
+ item1=item.left_subject
+
+ g_json["node_metadata"].append({"_id":str(item1.id),"screen_name":item1.title,"title":self.title, "url":item1.get_absolute_url(),"expanded":"false"})
+
+ # g_json[str(key)].append({"from":predicate_id[key] , "to":item.id ,"value":1 })
+ #create links
+ g_json["relations"].append({"from":predicate_id[key] ,"type":str(key), "value":1,"to":item1.id })
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":nbh[key]})
+ g_json["node_metadata"].append({"_id":(str(attr_counter)+"b"),"screen_name":nbh[key]})
#g_json[str(key)].append({"from":predicate_id[key] , "to":attr_counter ,"value":1, "level":2 })
- g_json["relations"].append({"from":predicate_id[key] ,"type":str(key) ,"value":1,"to":attr_counter })
+ g_json["relations"].append({"from":predicate_id[key] ,"type":str(key) ,"value":1,"to":(str(attr_counter)+"b") })
attr_counter-=1
except:
@@ -637,7 +749,7 @@ 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)
@models.permalink
@@ -649,6 +761,20 @@ class Gbobject(Node):
'day': self.creation_date.strftime('%d'),
'slug': self.slug})
+ # @reversion.create_revision()
+ def save(self, *args, **kwargs):
+ self.nodemodel = self.__class__.__name__
+ 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"""
ordering = ['-creation_date']
@@ -688,6 +814,15 @@ class Process(Gbobject):
def __unicode__(self):
return self.title
+ # @reversion.create_revision()
+ def save(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.
+
+ super(Process, self).save(*args, **kwargs) # Call the "real" save() method.
+
class Meta:
verbose_name = _('process')
verbose_name_plural = _('processes')
@@ -724,21 +859,29 @@ class System(Gbobject):
system_set = models.ManyToManyField('self', related_name="in_system_set_of",
verbose_name='nested systems',
blank=True, null=False)
+ # @reversion.create_revision()
+ def save(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):
return self.title
-
-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"])
+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"])
-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"])
+ 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"])
-if not reversion.is_registered(Gbobject):
- reversion.register(Gbobject, follow=["objecttypes", "prior_nodes", "posterior_nodes"])
+ if not reversion.is_registered(Gbobject):
+ reversion.register(Gbobject, follow=["objecttypes", "prior_nodes", "posterior_nodes"])
moderator.register(Gbobject, GbobjectCommentModerator)
diff --git a/objectapp/settings.py b/objectapp/settings.py
index 885a8701..ba6004dc 100644
--- a/objectapp/settings.py
+++ b/objectapp/settings.py
@@ -56,7 +56,7 @@ SAVE_PING_EXTERNAL_URLS = getattr(settings, 'OBJECTAPP_PING_EXTERNAL_URLS', True
COPYRIGHT = getattr(settings, 'OBJECTAPP_COPYRIGHT', 'Objectapp')
-PAGINATION = getattr(settings, 'OBJECTAPP_PAGINATION', 10)
+PAGINATION = getattr(settings, 'OBJECTAPP_PAGINATION', 4)
ALLOW_EMPTY = getattr(settings, 'OBJECTAPP_ALLOW_EMPTY', True)
ALLOW_FUTURE = getattr(settings, 'OBJECTAPP_ALLOW_FUTURE', True)
@@ -133,3 +133,5 @@ TWITTER_ACCESS_SECRET = getattr(settings, 'TWITTER_ACCESS_SECRET', '')
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
diff --git a/objectapp/static/objectapp/css/screen.css b/objectapp/static/objectapp/css/screen.css
index c69ca997..408dd84b 100644
--- a/objectapp/static/objectapp/css/screen.css
+++ b/objectapp/static/objectapp/css/screen.css
@@ -1,4 +1,4 @@
-body { line-height: 1.5; font-family: Arial, Helvetica, sans-serif; color: #333333; font-size: 75%; height:1500px;width:1500px}
+body { line-height: 1.5; font-family: Arial, Helvetica, sans-serif; color: #333333; font-size: 75%; height:1500px; width: 85%; }
h1, h2, h3, h4, h5, h6 { font-weight: normal; color: #000000; border-radius:15px; }
h1 img, h2 img, h3 img, h4 img, h5 img, h6 img { margin: 0; }
@@ -424,7 +424,7 @@ ul, ol { margin: 0 1.5em 1.5em 0; padding-left: 3.333em; }
a { text-decoration: none; }
a:hover { text-decoration: underline; }
-#header { margin-bottom: 1em; border-bottom: 1px solid #e9e9f3; }
+#header { margin-bottom: 1em; border-bottom: 1px solid #e9e9f3; background: #2b3959; color: white;}
#header h1 { font-size: 2em; font-weight: bold; margin-bottom: 0; }
#header .top-navigation { float: right; }
#header .top-navigation img { border: 0; }
@@ -440,7 +440,7 @@ a:hover { text-decoration: underline; }
#b1 {position:relative; center:5%; background-color:#43AEE7; color: white; border: 1px solid #000000; font-size:1em;}
#b2 {position:relative; center:6%; background-color:#43AEE7; color: white; border: 1px solid #000000; font-size:1em;}
-#body { margin-bottom: 1em; border-bottom: 1px solid #e9e9f3; }
+#body { margin-bottom: 1em; border-bottom: 0px solid #e9e9f3; width: 100%;}
#content h1, #content h2, #content h3 { margin-top: 10px; }
@@ -450,10 +450,10 @@ a:hover { text-decoration: underline; }
float: left;
clear: both;
margin-bottom: 10px;
- margin-left: 0;
- margin-right: 60px;
+ margin-left: 0%;
+ margin-right: 0%;
margin-top: 10px;
- padding-right: 30px;
+ padding-right: 0%;
width:250px;
}
@@ -479,14 +479,14 @@ a:hover { text-decoration: underline; }
font-weight: bold;
}
#graphcss{
- margin-left: 230px;
- margin-right: 150px;
+ margin-left: 237px;
+ margin-right: 0px;
margin-top: 1px;
position: absolute;
- width: 300px;
+ width: 46%;
height: 900px
}
-#sidebar{position:absolute; margin-left:600px; margin-right:150px; margin-top:10px; width:300px;}
+#sidebar{position:relative; margin-left:92%; margin-right:0px; margin-top:10px; width:23%;}
#sidebar div:first-child h3 { margin-top:0px; }
#sidebar h3 { background-color: #FFE9E8; padding: 0.5em; }
#sidebar p { padding-left: 1em; }
@@ -508,7 +508,7 @@ a:hover { text-decoration: underline; }
#sidebar .tags div ul .tag_4 { font-size: 2em; color: #0070a8; }
#sidebar .tags div ul .tag_5 { font-size: 2.25em; color: #0099e5; }
#sidebar .tags div ul .tag_6 { font-size: 3em; color: #00adff; }
-
+#footer{ position:static; border-bottom: 1px solid #E9E9F3; margin-top: 85px; }
th.month{padding:0cm 2.5cm;}
table.month { margin-bottom: 0; }
table.month th.month { text-transform: uppercase; color: #555555; background: none; }
@@ -516,7 +516,7 @@ table.month th { text-transform: capitalize; color: #555555; background-color: #
table.month td { text-align: center; font-weight: bold; }
table.month td.objecttype { background-color: #C4EBF4; }
-div.paginator { margin-bottom: 1em; }
+div.paginator { margin-bottom: 2em; }
div.paginator span { font-size: 1.2em; margin-left: 0.3em; padding: 0 0.5em 0 0.5em; float: left; border: 1px solid #e9e9f3; }
div.paginator span.index { margin-left: 0; }
div.paginator span.page:hover, div.paginator span.next:hover, div.paginator span.previous:hover { background-color: #006699; }
diff --git a/objectapp/static/objectapp/js/savert.js b/objectapp/static/objectapp/js/savert.js
index 0e1f8b07..b5294cc5 100644
--- a/objectapp/static/objectapp/js/savert.js
+++ b/objectapp/static/objectapp/js/savert.js
@@ -3,7 +3,7 @@ $ = django.jQuery
$(document).ready(function() {
- $("#id_submit_rt").ajaxSend(function(e,xhr,settings){
+ $("#id_go").ajaxSend(function(e,xhr,settings){
function getCookie(name) {
@@ -41,14 +41,14 @@ $ = django.jQuery
xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'));
}
});
- $("#id_submit_rt").click(function(){
+ $("#id_go").click(function(){
left = document.getElementById("id_left")
- rt = document.getElementById("id_reltype")
+ rt = document.getElementById("id_rel")
right = document.getElementById("id_right")
absolute_url = document.getElementById("id_back_url")
- url = "/objects/dynamicRelation/save/"+ left.value + "/" +rt.value+"/"+right.value+"/"
- // alert(url);
- $.get(url,function(data){
+ url = "/objects/dynamicRelation/save/"+ left.value+"/"+rt.value+"/"+right.value+"/"
+ //alert(url);
+ $.get(url, function(data){
window.location.replace(absolute_url.value);
});
diff --git a/objectapp/static/objectapp/js/setMember.js b/objectapp/static/objectapp/js/setMember.js
index a71b6750..977bd63c 100644
--- a/objectapp/static/objectapp/js/setMember.js
+++ b/objectapp/static/objectapp/js/setMember.js
@@ -42,10 +42,16 @@ $ = django.jQuery
}
});
$("#id_select_mem").change(function(){
- right_member = $(this).val()
- document.getElementById("id_right").value = right_member;
- // alert("hello "+ right_member);
+ right = $(this).val()
+ left =document.getElementById("id_left")
+ rel=document.getElementById("id_rel")
+ document.getElementById("id_right").value = right;
+ //url="/objects/dynamicRelation/save/"+left.value+"/"+rel.value+"/"+right+"/"
+ //alert("hello "+ ur);
+
});
});
+
+
diff --git a/objectapp/templates/objectapp/_gbobject_detail.html b/objectapp/templates/objectapp/_gbobject_detail.html
index 6b213566..ee43aba2 100644
--- a/objectapp/templates/objectapp/_gbobject_detail.html
+++ b/objectapp/templates/objectapp/_gbobject_detail.html
@@ -28,7 +28,7 @@
</div>
-</div>
+
<p>
<b>Name: </b> {{ object.title }} <br/>
@@ -76,7 +76,7 @@
</p>
-
+</div>
<div class="gbobject-body span-16 last">
diff --git a/objectapp/templates/objectapp/base.html b/objectapp/templates/objectapp/base.html
index d2b78ceb..90e061bb 100644
--- a/objectapp/templates/objectapp/base.html
+++ b/objectapp/templates/objectapp/base.html
@@ -19,8 +19,8 @@
{% 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>
+
+ <a href="{% url objectapp_gbobject_latest_feed %}" class="feeds" title="Rssfeed"><img src="{{ STATIC_URL }}objectapp/img/rss.png" alt="?" width="20" height="" /></a>
<div class="search">
<h3>{% trans "Search" %}</h3>
diff --git a/objectapp/templates/objectapp/fillAT.html b/objectapp/templates/objectapp/fillAT.html
index 6ddabe44..a788c8d9 100644
--- a/objectapp/templates/objectapp/fillAT.html
+++ b/objectapp/templates/objectapp/fillAT.html
@@ -1,28 +1,17 @@
{% extends "objectapp/base.html" %}
{% load i18n %}
{% block content %}
-<form action="." method="POST">
+<form action="." method="POST" enctype="multipart/form-data">
{% csrf_token %}
-<b>Details of {{ name }} </b>
-<table id= "id_table" class = "class_table">
- <tr>
- <th> Attribute Type </th>
- <th> Value </th>
- </tr>
- {% for field in form %}
- <tr>
- <td>{{ field.label_tag }}</td>
- <td>{{ field }} {{ field.errors }}</td>
- </tr>
- {% endfor %}
- <tr>
- <td><input type="submit" id="id_submit" value="Go"/></td>
- <td><input type="button" id="id_back" value="Back"/></td>
- </tr>
-</table>
+<b>{{ title }}</b>
+{% for field in form %}
+{{ field }} {{ field.errors }}
+{% endfor %}
+<input type="submit" id="id_submit" value="Go"/>
+<input type="button" id="id_back" value="Back"/>
<input type="hidden" id="id_back_url" value="{{ absolute_url_node }}"/>
-<input type="hidden" id="id_hidden" value=" "/>
+
</form>
{% endblock %}
diff --git a/objectapp/templates/objectapp/gbobject_detail.html b/objectapp/templates/objectapp/gbobject_detail.html
index b8ce7265..e4574206 100644
--- a/objectapp/templates/objectapp/gbobject_detail.html
+++ b/objectapp/templates/objectapp/gbobject_detail.html
@@ -1,6 +1,5 @@
{% extends "objectapp/base.html" %}
{% load i18n comments objectapp_tags %}
-
{% block title %}{{ object.title }}{% endblock %}
{% block meta-description %}{% if object.excerpt %}{{ object.excerpt|striptags }}{% else %}{{ object.content|striptags|truncatewords:100 }}{% endif %}{% endblock %}
@@ -30,15 +29,12 @@
{% endblock %}
-
-
{% block content %}
{% block gbobject-content %}
{% with object.html_content|safe as object_content %}
{% include "objectapp/_gbobject_detail.html" %}
-
<script type="text/javascript" >
var s = 0
var i
@@ -78,6 +74,20 @@
{% 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">
@@ -132,11 +142,7 @@
</div>
</div>
{% endblock %}
-
-
-
-
-
+
{% block gbobject-comments %}
<div id="comments" class="span-16 last">
diff --git a/objectapp/templates/objectapp/selectRT.html b/objectapp/templates/objectapp/selectRT.html
index cfec3c74..5ceae85e 100644
--- a/objectapp/templates/objectapp/selectRT.html
+++ b/objectapp/templates/objectapp/selectRT.html
@@ -5,33 +5,30 @@
{% block content %}
<form method="." action="POST">
{% csrf_token %}
-<b>Details of {{ gb }}</b>
+<b>{{ gb }}</b>
+<b>{{ reltit }}</b>
<!-- -------------------------------------------- -->
-<select id ="id_select_rt">
+<select id ="id_select_mem">
<option>-select-</option>
-{% if final %}
-{% for key, val in final.iteritems %}
- <option value="{{ key }}">{{ val }}</option>
+{% if finaldict %}
+{% for key, val in finaldict.iteritems %}
+ <option value="{{ val }}">{{ val }}</option>
{% endfor %}
{% else %}
- <option> No Relation </option>
+ <option> No Member </option>
<input type="button" id="id_back" value="Back"/>
{% endif %}
</select>
<!-- -------------------------------------------- -->
-
-<input id="id_left" type="hidden" value="{{ gbid }}">
-<input id="id_right" type="hidden" value=" ">
-<input id="id_reltype" type="hidden" value=" ">
+<input type="button" id="id_go" value="GO"/>
+<input type="button" id="id_back" value="Back"/>
+<input id="id_left" type="hidden" value="{{ gb }}">
+<input id="id_rel" type="hidden" value="{{ reltit }}">
<input id="id_back_url" type="hidden" value="{{ absolute_url_node }}">
-
-<!-- -------------------------------------------- -->
-
-<div id = "id_div1">
-</div>
+<input id="id_right" type="hidden" value=" ">
<!-- -------------------------------------------- -->
diff --git a/objectapp/templates/objectapp/skeleton.html b/objectapp/templates/objectapp/skeleton.html
index 4d4b0a23..d04b02f4 100644
--- a/objectapp/templates/objectapp/skeleton.html
+++ b/objectapp/templates/objectapp/skeleton.html
@@ -11,20 +11,20 @@
}
.nodetext {
#pointer-events: none;
- font: 10px Serif;
+ font: 12px Serif;
font-style:italic;
}
.mainnode{
font: 15px sans-serif;
- fill:"red";
+ fill:"black";
border-width: 1px;
font-weight:bold;
border-color: gray;
}
.relnode {
- font: 10px sans-serif;
+ font: 12px sans-serif;
font-weight:bold;
fill:#000;
}
@@ -33,8 +33,9 @@
.node {
border-width: 1px;
border-color: gray;
- fill:"green";
- font: 10px sans-serif;
+ font: 12px sans-serif;
+ fill:#25587E;
+ font-weight:bold;
}
body {
background-color: white;
@@ -46,8 +47,8 @@
display: block;
}
svg {
- margin-left: 50%;
- margin-right: 50%;
+ margin-left: 0%;
+ margin-right: 0%;
display: block;
position: absolute;
}
@@ -96,17 +97,18 @@
<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 }}objectapp/js/saveat.js"></script>
- <script type="text/javascript" src="{{ STATIC_URL }}objectapp/js/selectRT.js"></script>
+
<script type="text/javascript" src="{{ STATIC_URL }}objectapp/js/setMember.js"></script>
<script type="text/javascript" src="{{ STATIC_URL }}objectapp/js/savert.js"></script>
<script type="text/javascript" src="{{ STATIC_URL }}objectapp/js/noat.js"></script>
+
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
<script type="text/javascript" src="{{ STATIC_URL }}objectapp/js/setdate.js"></script>
+
<!-- EXTRAHEAD -->
{% block extrahead %}{% endblock %}
@@ -186,56 +188,20 @@
Javascript for Object type force graph
-->
<script type="text/javascript" >
-
- var a = 75 * s;
-
- if ( a > 700 )
- {
- var w = 700;
- }
- else
- {
- var w = a;
- }
-
- var h = 75 * s,
-
- /* var w = 700,
- h = 400,*/
- 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/graph_json/{{ object.id }}',
- //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) {
+function init(a,b)
+{
+
+
+ nodes_by_id = _.reduce(a, function(acc, n) {
acc[n._id] = n;
return acc;
}, {});
+
+
+ all_edges=new Array();
-
-
-all_edges=new Array();
-
-
-
- all_edges =_(json.relations).chain().map(function(e) {
+ //this contains all the links between the nodes
+ all_edges =_(b).chain().map(function(e) {
e.source = nodes_by_id[e.from];
e.target = nodes_by_id[e.to];
@@ -244,182 +210,61 @@ all_edges=new Array();
return nodes_by_id[e.from] && nodes_by_id[e.to]&& e.type!="title" && e.type!="content"
}).value();
- /* 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();
+$(function fgraph() {
+
- 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 authors = _(json.authors).chain().map(function(e) {
- e.source = nodes_by_id[e.from];
- e.target = nodes_by_id[e.to];
- e.type = 'authors';
- return e;
- }).filter(function(e){
- return nodes_by_id[e.from] && nodes_by_id[e.to]
- }).value();
+$.getJSON('/nodetypes/graphs/graph_json/' + {{object.id}}, function (json1) {
+ metadata=json1.node_metadata;
+ relations=json1.relations;
+ init(metadata,relations);
+ load({{object.id}}) });
-
- 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 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();
-
- 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();
+function load(key)
+{
- 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 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();
-
+if ( s > 0) {
+var w = 700;
+var p = 122 + "%";
+var h = 680;
+var q = 3 * s + 80 + "%";
+}else{
+var w = 700;
+var p = 122 + "%";
+var h = 680;
+var q = 110 + "%";
+}
+ fill = d3.scale.category20();
+
+ var vis = d3.select("#chart")
+ .append("svg:svg")
+ .attr("id", "amazingViz")
+ .attr("width", p)
+ .attr("height", q);
- 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();
-
+ vis.append("svg:g").attr("class", "edges");
+ vis.append("svg:g").attr("class", "nodes");
+
- 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[{{ object.id }}].x = w/2.0;
- nodes_by_id[{{ object.id }}].y = h/2.0;
+
+ nodes_by_id[key].x = w/2.0;
+ nodes_by_id[key].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, 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()
+
+ var force = d3.layout.force()
.linkStrength(0.5)
- .charge(-2000)
+ .charge(-5000)
.friction(0.7)
.gravity(0.7)
- .linkDistance(15)
+ .linkDistance(50)
.nodes([])
.links([])
.size([w, h])
@@ -445,18 +290,17 @@ all_edges=new Array();
force.links(edges);
force.start();
- link = d3.select("#chart g.edges").selectAll("line.link")
+ link = d3.select("#chart g.edges").selectAll("line.link").select(this.arrowhead)
.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) {
+ .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;
})
@@ -469,43 +313,128 @@ all_edges=new Array();
.attr("text", function(d) {
return d.type;
})
+
+ .attr("marker-end", "url(#arrowhead)");
+
- .append("a")
- .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=={{ object.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;})
+ .attr("class", function(d) { var e=(d._id).charAt(0); if (d._id==key) return "mainnode"; else if (e=="-") return "nodetext"; else if (isNaN(d._id)) return "relnode" ; else return "node"; })
+
.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=={{ object.id }}) return 8; else if (isNaN(d._id) || (d._id)<0) return 1; else return 7 })
- .style("fill", function color(d) { if (d._id=={{ object.id }}) return "red"; else if (isNaN(d._id) || (d._id)<0) return "white" ; else return "green"});
+
+ new_g.append("svg:marker")
+ .attr("id", "arrowhead")
+ .attr("viewBox","0 0 10 10")
+ .attr("refX","20")
+ .attr("refY","5")
+ .attr("markerUnits","strokeWidth")
+ .attr("markerWidth","9")
+ .attr("markerHeight","5")
+ .attr("orient","auto")
+ .append("svg:path")
+ .attr("d","M 0 0 L 10 5 L 0 10 z")
+ .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;
+ metadata=_.union(new_metadata,metadata);
+ relations=_.union(new_relations,relations);
+ init(metadata,relations);
+ load(d._id)
+ })
- new_g.append("svg:text")
- .attr("class",function(d) { if (d._id=={{ object.id }}) return "mainnode"; else if (isNaN(d._id)) return "relnode"; else if ((d._id)<0) return "nodetext"; else return "node"; })
+ }
+ });
+}
+});
+
+ new_g.on("click", function(d) {
+
+ new_g.attr("xlink:href",function(d){return d.url;});
+ });
+
+
+ /*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"});*/
+
+
+
+
+
+ var text1 = new_g.append("svg:text")
+ .attr("class",function(d) {var e=(d._id).charAt(0); if (d._id==key) return "mainnode";else if (e=="-") return "nodetext"; else if (isNaN(d._id)) return "relnode"; 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;"})
+ .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;
});
-
- node.exit().remove();
-
+ var bbox = text1.node().getBBox();
+
+
+ new_g.filter(function(d) { return (d._id).charAt(0)=="-"; }).append("svg:rect")
+ .attr("x",bbox.x-22)
+ .attr("y", bbox.y)
+ .attr("width", function(d) {var ttx=d.screen_name ; return (ttx.length +bbox.width+40)})
+ .attr("height", bbox.height)
+ .call(force.drag)
+ .style("fill-opacity", ".1")
+ .style("stroke", "#000")
+ .style("stroke-width","1px" );
+
+
+
+
+
+
+
+ new_g.filter(function(d) { return (d._id)>0;}).append("svg:ellipse")
+ .attr("cx", bbox.x+25)
+ .attr("cy", bbox.y+13)
+ .call(force.drag)
+ .attr("rx",function(d) {var ttx=d.screen_name ; return (ttx.length + 55)})
+ .attr("ry",14)
+ .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"});
+
+
+
+
+ node.exit().remove();
force.on("tick", function() {
@@ -522,44 +451,47 @@ all_edges=new Array();
});
}
-
+
+
+
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)});
-});
+
+}
+
+
+});
+//fgraph({{object.id}});
+
</script>
{% block graph %} {% endblock %}
</div>
- <div id="sidebar" class="span-8 last">
+ <div id="sidebar">
{% block sidebar %}
{% endblock %}
</div>
- </div>
- <div id="footer" class="span-24 last">
- <p>Powered by <a href="http://www.djangoproject.com" title="http://www.djangoproject.com">Django</a> and <a href="http://github.com/gnowgi/django-gstudio" title="http://github.com/gnowgi/django-gstudio">Gstudio {{ GSTUDIO_VERSION }}</a>.</p>
+
+ <div id="footer">
+ <p>
+
+ <a rel="license"
+ href="http://creativecommons.org/licenses/by-sa/3.0/" title="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/" title = "http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons Attribution-ShareAlike 3.0 Unported License</a> unless mentioned otherwise.
+ <br/>
+ Poweredby <a href="http://www.djangoproject.com" title="https://www.djangoproject.com/">Django</a>
+ and <a href="https://github.com/gnowgi/gnowsys-studio" title="https://github.com/gnowgi/gnowsys-studio">Gstudio
+ {{ GSTUDIO_VERSION }}</a>.
+ </p>
</div>
</div>
</body>
</html>
-
diff --git a/objectapp/urls/ATurl.py b/objectapp/urls/ATurl.py
index 00122fb9..2363fd89 100644
--- a/objectapp/urls/ATurl.py
+++ b/objectapp/urls/ATurl.py
@@ -1,12 +1,8 @@
from django.conf.urls.defaults import url
from django.conf.urls.defaults import patterns
-#from objectapp.views import testview
+
urlpatterns = patterns('objectapp.views.dynamicAT',
- url(r'^dynamicattr/$','dynamic_view',
- name = 'objectapp_dynamic_view'),
- url(r'^save/(\w.+)/$','dynamic_save',
+ url(r'^save/(\w.+)/(\w.+)/$','dynamic_save',
name='objectapp_dynamic_save'),
- # url(r'^dynamicOT/(\w.+)/$','dynamic_objecttype',
- # name='objectapp_dynamic_objecttype'),
)
diff --git a/objectapp/urls/RTurl.py b/objectapp/urls/RTurl.py
index cea15cdc..53cfb8de 100644
--- a/objectapp/urls/RTurl.py
+++ b/objectapp/urls/RTurl.py
@@ -1,13 +1,12 @@
from django.conf.urls.defaults import url
from django.conf.urls.defaults import patterns
-#from objectapp.views import testview
-urlpatterns = patterns('objectapp.views.dynamicRT',
- url(r'^displayRT/(\w.+)/$','context_RT',
- name='objectapp_context_view'),
- url(r'^displaymem/(\w+)/(\w+)/$','context_member',
+
+urlpatterns = patterns('objectapp.views.dynamicRT',
+ url(r'^displaymem/(\w.+)/(\w.+)/$','context_member',
name='objectapp_context_display'),
- url(r'^save/(\w+)/(\w+)/(\w+)/$','context_save',
+
+ url(r'^save/(\w.+)/(\w.+)/(\w.+)/$','context_save',
name='objectapp_context_save'),
)
diff --git a/objectapp/views/add.py b/objectapp/views/add.py
index afe96f98..356cc785 100644
--- a/objectapp/views/add.py
+++ b/objectapp/views/add.py
@@ -68,9 +68,10 @@ from django.template import RequestContext
from django.shortcuts import render_to_response
from datetime import datetime
from objectapp.forms import *
-from reversion.models import *
-@reversion.create_revision()
+
+
+
def addgbobject(request):
if request.method == 'POST':
formset = GbobjectForm(request.POST)
@@ -91,7 +92,7 @@ def addgbobject(request):
-@reversion.create_revision()
+
def addprocess(request):
if request.method == 'POST':
formset = ProcessForm(request.POST)
@@ -111,7 +112,7 @@ def addprocess(request):
return render_to_response(template, variables)
-@reversion.create_revision()
+
def addsystem(request):
if request.method == 'POST':
formset = ProcessForm(request.POST)
diff --git a/objectapp/views/dynamicAT.py b/objectapp/views/dynamicAT.py
index 52a6256c..a5d71de9 100644
--- a/objectapp/views/dynamicAT.py
+++ b/objectapp/views/dynamicAT.py
@@ -1,155 +1,80 @@
from django.http import *
-from django import forms
+from django.forms import ModelForm
from django.shortcuts import render_to_response
from django.template import RequestContext
+from django.forms.models import modelform_factory
from objectapp.models import *
from objectapp.forms import *
from gstudio.models import *
+from gstudio.admin.forms import *
-def dynamic_view(request):
- rdict = {}
- for j in Gbobject.objects.all():
- rdict.update({j.id:j.title})
+def MakeForm(model_cls, *args, **kwargs):
+ class ContextForm(ModelForm):
+ class Meta:
+ model = model_cls.values()[0]
+ print 'model' ,model
+ fields = ('value',)
+ print 'fields',fields
- template="objectapp/selectAT.html"
- context= RequestContext(request,{ 'rdict':rdict })
- return render_to_response(template,context)
+ def __init__(self, *args, **kwargs):
-def dynamic_save(request,tit): #view for gb and ot too
- testlst = []
- parenttype = []
- attributetype = []
- rdict = {}
- nodelist = []
- syst = []#parent for system
- try:
- offset = str(tit)
- except ValueError:
- raise Http404()
-
- #flag = 0 #means its object
-
- if Objecttype.objects.filter(title = offset):
- flag = 1
- elif Gbobject.objects.filter(title = offset):
- flag = 0
- elif Systemtype.objects.filter(title = offset):
- flag = 2
-
- if flag == 1:
- parenttype.append(Objecttype.objects.get(title = offset))
- pt_id = NID.objects.get(title = offset)
- name = pt_id
-
- elif flag == 0:
- #utit = Gbobject.objects.get(title = offset)
- gb=Gbobject.objects.get(title=offset)
- name = gb
- # checking whether object is gb or system coz created objects are treated as Gbobject n then System objects
- if System.objects.filter(title = (gb.ref).title):
- gb = System.objects.get(title = offset)
- syst = gb.systemtypes.all()
- for i in syst:
- nodelist = i.nodetype_set.all()
- parenttype.append(i)
-
- for i in nodelist:
- parenttype.append(i.ref)
-
- elif Gbobject.objects.filter(title = (gb.ref).title):
- parenttype = gb.objecttypes.all()
-
- pt_id = NID.objects.get(id = gb.id)
-
- elif flag == 2:
- systype = Systemtype.objects.get(title = offset)
- nodelist = systype.nodetype_set.all()
- parenttype.append(Systemtype.objects.get(title = offset))
- for i in nodelist:
- parenttype.append(i.ref)
- pt_id = NID.objects.get(title = offset)
- name = pt_id
+ super(ContextForm,self).__init__(*args, **kwargs)
+
+
+ return ContextForm(*args, **kwargs)
- absolute_url_node = name.get_absolute_url()
- for each in parenttype:
- attributetype.append(each.subjecttype_of.all())
- attributetype = [num for elem in attributetype for num in elem]
+def dynamic_save(request, attit, memtit):
+ rdict ={}
+ savedict = {}
+ memtit = NID.objects.get(title = str(memtit))
+ name = memtit.ref
- for each in range(len(attributetype)):
- rdict.update({attributetype[each]:str(Attributetype.get_dataType_display(attributetype[each]))})
-
- if request.method=='POST':
- form = ContextForm(rdict,request.POST)
- bound= form.is_bound
+ absolute_url_node = name.get_absolute_url()
- if form.is_valid():
- for key,val in rdict.items():
- testlst.append(str(request.POST[str(key)+"_"+str(val)]))
+ at = Attributetype.objects.get(title = str(attit))
+ dt = str(at.get_dataType_display())
+ MyModel = eval('Attribute'+dt)
+
+ rdict.update({str(at.title):MyModel})
+ print "rdict",str(rdict)
+
+ if request.method == 'POST':
+ form = MakeForm(rdict,request.POST,request.FILES)
+ try:
+ if form.is_valid():
+ value = form.cleaned_data['value']
- for val in range(len(testlst)):
- if testlst[val] != '' :
- savedict = {'title':testlst[val],'slug':testlst[val], 'svalue':testlst[val], 'subject':pt_id, 'attributetype':rdict.keys()[val]}
- att = Attribute.objects.create(**savedict)
+ if Attribute.objects.filter(subject = memtit.id) and Attribute.objects.filter(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()
- return HttpResponseRedirect(absolute_url_node)
else:
- form = ContextForm(rdict)
-
+ form = MakeForm(rdict)
+
template = "objectapp/fillAT.html"
- context = RequestContext(request,{'form' : form, 'name':name,'absolute_url_node':absolute_url_node})
+ context = RequestContext(request,{'form' : form,'title':str(attit), 'absolute_url_node':absolute_url_node})
return render_to_response(template,context)
-# def dynamic_objecttype(request,iden): #gb view for dynamic at
-# testlst = []
-# attributetype = []
-# rdict = {}
-# try:
-# offset = str(iden)
-# except ValueError:
-# raise Http404()
-
-# #uid = Gbobject.objects.get(title = offset)
-# gb=Gbobject.objects.get(title=offset)
-# parenttype = gb.objecttypes.all()
-# pt_id = NID.objects.get(id = gb.id)
-
-
-# for each in parenttype:
-# attributetype.append(each.subjecttype_of.all())
-
-# attributetype = [num for elem in attributetype for num in elem]
-
-# for each in range(len(attributetype)):
-# rdict.update({attributetype[each]:str(Attributetype.get_dataType_display(attributetype[each]))})
-
-# if request.method=='POST':
-# form = ContextForm(rdict,request.POST)
-# bound= form.is_bound
-
-# if form.is_valid():
-# for key,val in rdict.items():
-# testlst.append(str(request.POST[str(key)+"_"+str(val)]))
-
-# for val in range(len(testlst)):
-# if testlst[val] != '' :
-# savedict = {'title':testlst[val],'slug':testlst[val], 'svalue':testlst[val], 'subject':pt_id, 'attributetype':rdict.keys()[val]}
-# att = Attribute.objects.create(**savedict)
-# att.save()
-
-# return HttpResponseRedirect("/objects/")
-# else:
-# form = ContextForm(rdict)
-
-# template = "objectapp/fillAT.html"
-# context = RequestContext(request,{'form' : form})
-# return render_to_response(template,context)
diff --git a/objectapp/views/dynamicRT.py b/objectapp/views/dynamicRT.py
index f0781683..f85fe53e 100644
--- a/objectapp/views/dynamicRT.py
+++ b/objectapp/views/dynamicRT.py
@@ -1,256 +1,279 @@
-from gstudio.models import *
-from objectapp.models import *
+
from django.http import *
from django.shortcuts import render_to_response
from django.template import RequestContext
from django.db import IntegrityError
+from django.forms import ModelForm
+from gstudio.models import *
+from objectapp.models import *
-def context_RT(request, gbid):
- pt =[] #contains parenttype
- reltype =[] #contains relationtype
- titledict = {} #contains relationtype's title
- inverselist = [] #contains relationtype's inverse
- finaldict = {} #contains either title of relationtype or inverse of relationtype
- listval=[] #contains keys of titledict to check whether parenttype id is equals to listval's left or right subjecttypeid
+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)
- #flag = 0 #check whether OT or OB, flag = 0 means it is OB
+ 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)
- # if its an OT, then parse separately
- if Objecttype.objects.filter(title=str(gbid)):
- flag = 1
- elif Gbobject.objects.filter(title = str(gbid)):
- flag = 0
- elif Systemtype.objects.filter(title = str(gbid)):
- flag = 2
-
- if flag == 1:
- pt.append(Objecttype.objects.get(title = str(gbid)))
- name = NID.objects.get(title = str(gbid))
-
- for i in range(len(pt)):
- if Relationtype.objects.filter(left_subjecttype = pt[i].id):
- reltype.append(Relationtype.objects.get(left_subjecttype = pt[i].id))
- if Relationtype.objects.filter(right_subjecttype = pt[i].id):
- reltype.append(Relationtype.objects.get(right_subjecttype = pt[i].id))
-
- # it converts 2 or more list as one list
- #reltype = [num for elem in reltype for num in elem] #this rqud for filtering
-
- for i in reltype:
- titledict.update({i:i.id})
-
-
- for i in range(len(titledict)):
- listval.append(Relationtype.objects.get(title = titledict.keys()[i]))
- inverselist.append(titledict.keys()[i].inverse)
-
-
- for j in range(len(pt)):
- for i in range(len(listval)):
- if pt[j].id == listval[i].left_subjecttype_id :
- finaldict.update({titledict.values()[i]:titledict.keys()[i]})
- elif pt[j].id == listval[i].right_subjecttype_id:
- finaldict.update({titledict.values()[i]:inverselist[i]})
-
-
- elif flag == 0:
- gb= Gbobject.objects.get(title=str(gbid))
- name = gb
- pt = gb.objecttypes.all()
- for i in range(len(pt)):
- if Relationtype.objects.filter(left_subjecttype = pt[i].id):
- reltype.append(Relationtype.objects.get(left_subjecttype = pt[i].id))
- if Relationtype.objects.filter(right_subjecttype = pt[i].id):
- reltype.append(Relationtype.objects.get(right_subjecttype = pt[i].id))
- if Relationtype.objects.filter(left_subjecttype = gb):
- reltype.append(Relationtype.objects.get(left_subjecttype = gb))
- if Relationtype.objects.filter(right_subjecttype = gb):
- reltype.append(Relationtype.objects.get(right_subjecttype = gb))
-
-
- #reltype = [num for elem in reltype for num in elem]
-
- for i in reltype:
- titledict.update({i:i.id})
+#---------------------------------------------------------------------
+
+ 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)
- for i in range(len(titledict)):
- listval.append(Relationtype.objects.get(title = titledict.keys()[i]))
- inverselist.append(titledict.keys()[i].inverse)
-
- for j in range(len(pt)):
- for i in range(len(listval)):
- if pt[j].id == listval[i].left_subjecttype_id or gb.id == listval[i].left_subjecttype_id :
- finaldict.update({titledict.values()[i]: titledict.keys()[i]})
- elif pt[j].id == listval[i].right_subjecttype_id or gb.id == listval[i].right_subjecttype_id:
- finaldict.update({titledict.values()[i]:inverselist[i]})
-
- elif flag == 2:
- systype = Systemtype.objects.get(title = str(gbid))
- nodelist = []
- nodelist = systype.nodetype_set.all()
- for i in nodelist:
- pt.append(i.ref)
- pt.append(systype)
- name = NID.objects.get(title = str(gbid))
-
- for i in range(len(pt)):
- if Relationtype.objects.filter(left_subjecttype = pt[i].id):
- reltype.append(Relationtype.objects.get(left_subjecttype = pt[i].id))
- if Relationtype.objects.filter(right_subjecttype = pt[i].id):
- reltype.append(Relationtype.objects.get(right_subjecttype = pt[i].id))
-
- # it converts 2 or more list as one list
- #reltype = [num for elem in reltype for num in elem] #this rqud for filtering
-
- for i in reltype:
- titledict.update({i:i.id})
-
-
- for i in range(len(titledict)):
- listval.append(Relationtype.objects.get(title = titledict.keys()[i]))
- inverselist.append(titledict.keys()[i].inverse)
-
-
- for j in range(len(pt)):
- for i in range(len(listval)):
- if pt[j].id == listval[i].left_subjecttype_id :
- finaldict.update({titledict.values()[i]:titledict.keys()[i]})
- elif pt[j].id == listval[i].right_subjecttype_id:
- finaldict.update({titledict.values()[i]:inverselist[i]})
-
+ 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:
+ parenttype.append(i.ref)
- absolute_url_node = name.get_absolute_url()
+ for i in parenttype:
+ member.append(i.get_members)
+
+ member = [num for elem in member for num in elem]
+ subtypent = []
- template="objectapp/selectRT.html"
- context = RequestContext(request,{'final':finaldict , 'gb':name ,'gbid':name.id, 'absolute_url_node':absolute_url_node})
- return render_to_response(template,context)
+ # 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]
-def context_member(request,relid, memid):#id of relationtype, id of selected object
- try:
- relid = int(relid) #relationtype
- memid = int(memid) #left member id
- except:
- raise Http404()
+ for i in parenttype:
+ subtypent.append(i.get_descendants())
- # checks wheter memid is OT or OB
- flag=0 #means OB
+ for i in subtypent:
+ subtype.append(i.ref)
- if Objecttype.objects.filter(id = memid):
- flag=1
+ for i in subtype:
+ subtypemember.append(i.get_members)
+ subtypemember = [num for elem in subtypemember for num in elem]
+
- nt =[] #contains parent as <Nodetype:parent>
- pt= [] #contains parent as <Objecttype:parent>
+ for i in member:
+ finaldict.update({i.id:str(i.title)})
- if flag == 1:
- pt.append(Objecttype.objects.get(id=memid))
+ for i in subtypemember:
+ finaldict.update({i.id:str(i.title)})
- else:
- gb = Gbobject.objects.get(id = memid)
- nt = gb.objecttypes.all()
- for i in range(len(nt)): #conversion of nodetype in objecttype
- pt.append(Objecttype.objects.get(id = nt[i].id))
-
- memlist = [] #contains OB and OT for appearing in 1st combo box
-
- r = Relationtype.objects.get(id = relid) #contains RelationType
-
- # extracting left and right applicable nodetypes(OB or OT) of RelationType
- lefttype = str(r.left_applicable_nodetypes)
- righttype = str(r.right_applicable_nodetypes)
-
- if lefttype == righttype:
- if lefttype == "OB" and righttype == "OB":
-
- if r.left_subjecttype_id == memid:
- memlist.append(Gbobject.objects.get(id = r.right_subjecttype_id))
- else :
- memlist.append(Gbobject.objects.get(id = r.left_subjecttype_id))
-
- elif lefttype == "OT" and righttype == "OT":
- for each in range(len(pt)):
- if r.left_subjecttype_id == memid or r.left_subjecttype_id == pt[each].id:
- o = Objecttype.objects.get(title = NID.objects.get(title=(r.right_subjecttype).title))
- memlist.append(o)
- for i in o.get_members:
- memlist.append(i)
- # elif r.right_subjecttype_id == memid or r.right_subejcttype_id == pt[each].id:
- else:
- o = Objecttype.objects.get(title = NID.objects.get(title=(r.left_subjecttype).title))
- memlist.append(o)
- for i in o.get_members:
- memlist.append(i)
- else:
- if r.left_subjecttype_id == memid:
- if righttype == "OB":
- memlist.append(Gbobject.objects.get(id = r.right_subjecttype_id))
+ elif newrole.reftype == 'Objecttype' and newroletype == 'OB':
+ print "Objecttype and OB"
+ for i in newrole.get_members:
+ member.append(i)
- else :
- o = Objecttype.objects.get(title = NID.objects.get(title=(r.right_subjecttype).title))
- memlist.append(o)
- for i in o.get_members:
- memlist.append(i)
+ for i in member:
+ finaldict.update({i.id:str(i.title)})
- else:
- if lefttype == "OB":
- memlist.append(Gbobject.objects.get(id = r.left_subjecttype_id))
-
- else :
- o = Objecttype.objects.get(title = NID.objects.get(title=(r.left_subjecttype).title))
- memlist.append(o)
- for i in o.get_members:
- memlist.append(i)
-
- memdict = {} #converting list into dict and to set id of right member as hidden field
- for i in memlist:
- memdict.update({i.id:i})
+ # 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)})
- template="objectapp/fillRT.html"
- context = RequestContext(request,{'memdict':memdict})
+ 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':memtit,'reltit':reltit, 'absolute_url_node': absolute_url_node})
return render_to_response(template,context)
+
def context_save(request,leftmem, reltype, rightmem):
try:
- leftmem = int(leftmem)
- reltype = int(reltype)
- rightmem = int(rightmem)
+ leftmem = str(leftmem)
+ 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)
- relation = Relationtype.objects.get(id = 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(id = leftmem):
- if leftmem == leftrole :
- flag = 0
- print "Objecttype flag = 0 "
- else:
- print "Objecttype flag = 1 "
- elif Gbobject.objects.filter(id = leftmem):
- gb = Gbobject.objects.get(id = leftmem)
- pt = gb.objecttypes.all()
+ if Objecttype.objects.filter(title = leftmem):
+
+ 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)
+ 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 leftmem == leftrole or pt[i].id == leftrole:
+ 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:
- savedict = {'title':relation, 'slug':relation, 'left_subject_id':leftmem, 'right_subject_id':rightmem, 'relationtype_id':reltype, 'left_subject_scope':' ', 'right_subject_scope':' ', 'relationtype_scope':' ' }
+ 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':rightmem, 'right_subject_id':leftmem, 'relationtype_id':reltype, 'left_subject_scope':' ', 'right_subject_scope':' ', 'relationtype_scope':' '}
+ savedict = {'title':relation, 'slug':relation, 'left_subject_id':right.id, 'right_subject_id':left.id, 'relationtype_id':relation.id, 'left_subject_scope':' ', 'right_subject_scope':' ', 'relationtype_scope':' '}
rtt = Relation.objects.create(**savedict)
rtt.save()
- print "leftmem"+ str(leftmem) + " rightmem" + str(rightmem) + " reltype" +str(reltype)+ " leftrole"+ str(leftrole) + " rightrole " + str(rightrole)
+ print "left"+ str(left) + " right" + str(right) + " reltype" +str(relation)+ " leftrole"+ str(leftrole) + " rightrole " + str(rightrole)
+
print savedict
return HttpResponseRedirect("/nodetypes/")
#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