From: gfawcett Date: Tue, 25 Nov 2008 03:33:21 +0000 (+0000) Subject: cleanup of syrup folder; documentation stub for Course.item_tree X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=15078ddb732fdd2c9fbfd6661901324b4d72128c;p=Syrup.git cleanup of syrup folder; documentation stub for Course.item_tree git-svn-id: svn://svn.open-ils.org/ILS-Contrib/servres/trunk@49 6d9bc8c9-1ec2-4278-b937-99fde70a366f --- diff --git a/conifer/doc/graphs/model_to_graphviz.py b/conifer/doc/graphs/model_to_graphviz.py new file mode 100644 index 0000000..1e83de5 --- /dev/null +++ b/conifer/doc/graphs/model_to_graphviz.py @@ -0,0 +1,31 @@ +# Generate a graph visualization from the model. Requires Graphviz. +# To run, from conifer directory: +# DJANGO_SETTINGS_MODULE=conifer.settings PYTHONPATH=.. python syrup/model_to_graphviz.py | fdp -Tpng > /tmp/syrup-model.png + +import django.db.models +#import conifer.syrup.models as models +import conifer.syrup.direct_models as models + +from django.db.models.fields.related import ForeignRelatedObjectsDescriptor + +print 'digraph a {' +print '{ splines=true; }' +print 'graph [ label="dotted-end is the foreign (\'many\') end", splines=true ]' + +all = set(); linked = set(); primary = set() + +for name, value in models.__dict__.items(): + if isinstance(value, type) and issubclass(value, django.db.models.Model): + local = value.__name__ + all.add(local) + for k, v in value.__dict__.items(): + if isinstance(v, ForeignRelatedObjectsDescriptor): + foreign = v.related.model.__name__ + print '%s -> %s [ arrowhead=dot, arrowtail=none ];' % (local, foreign) + primary.add(local); linked.add(local); linked.add(foreign) +for n in (all - linked): + print '%s [ style=dashed ]' % n + +for n in primary: + print '%s [ color=blue ]' % n +print '}' diff --git a/conifer/syrup/model_to_graphviz.py b/conifer/syrup/model_to_graphviz.py deleted file mode 100644 index 1e83de5..0000000 --- a/conifer/syrup/model_to_graphviz.py +++ /dev/null @@ -1,31 +0,0 @@ -# Generate a graph visualization from the model. Requires Graphviz. -# To run, from conifer directory: -# DJANGO_SETTINGS_MODULE=conifer.settings PYTHONPATH=.. python syrup/model_to_graphviz.py | fdp -Tpng > /tmp/syrup-model.png - -import django.db.models -#import conifer.syrup.models as models -import conifer.syrup.direct_models as models - -from django.db.models.fields.related import ForeignRelatedObjectsDescriptor - -print 'digraph a {' -print '{ splines=true; }' -print 'graph [ label="dotted-end is the foreign (\'many\') end", splines=true ]' - -all = set(); linked = set(); primary = set() - -for name, value in models.__dict__.items(): - if isinstance(value, type) and issubclass(value, django.db.models.Model): - local = value.__name__ - all.add(local) - for k, v in value.__dict__.items(): - if isinstance(v, ForeignRelatedObjectsDescriptor): - foreign = v.related.model.__name__ - print '%s -> %s [ arrowhead=dot, arrowtail=none ];' % (local, foreign) - primary.add(local); linked.add(local); linked.add(foreign) -for n in (all - linked): - print '%s [ style=dashed ]' % n - -for n in primary: - print '%s [ color=blue ]' % n -print '}' diff --git a/conifer/syrup/models.py b/conifer/syrup/models.py index 9207aa8..0267c27 100644 --- a/conifer/syrup/models.py +++ b/conifer/syrup/models.py @@ -117,6 +117,16 @@ class Course(m.Model): def items(self): return Item.objects.filter(course=self.id) + def item_tree(self): + """ + Return a list, representing a tree of the course items, in + display order. Every element of the list is an (Item, [Item]) + tuple, where the second element is the (optional) list of + sub-elements (if a heading) or None (if an item). + """ + raise NotImplementedError + + class Member(m.Model): course = m.ForeignKey(Course) user = m.ForeignKey(User)