-
Notifications
You must be signed in to change notification settings - Fork 30
Content Database Schema
This is a work in progress, please do not rely on this information while this header is present -Colorado
Model that contains the roadmap content placed under version control
title = CharField('Title', max_length=100)
author = CharField('Author(s)', max_length=100)
audience = CharField('Target audience', max_length=100)
blurb = TextField('Blurb', blank=True)
body = TextField()
version_num = IntegerField(default=0)
Model that contains the roadmap settings -- not under version control
roadmap = OneToOneField(Roadmap, primary_key=True)
creator = ForeignKey(Profile, related_name="roadmap_creator")
owners = ManyToManyField(Profile, related_name="roadmap_owners")
editors = ManyToManyField(Profile, related_name="roadmap_editors")
listed_in_main = BooleanField('show this roadmap in the search results', default=False)
sudo_listed_in_main = BooleanField('superuser only: allow this roadmap in the search results', default=True)
published = BooleanField(default=False)
url_tag = SlugField('URL tag', max_length=30, help_text='only letters, numbers, underscores, hyphens')
Model that contains the concept data under version control
id = CharField(primary_key=True) # charfield for backwards compatability
title = CharField(max_length=100)
summary = CharField(max_length=1000)
prerequisites = ManyToManyField(Concept)
goals = CharField(max_length=2000) # field type may change
exercises = CharField(max_length=2000) # field type may change
software = CharField(max_length=2000) # field type may change
pointers = CharField(max_length=2000) # field type may change
version_num = IntegerField(default=0)
Model that contains the concept data not under version control
concept = OneToOneField(Concept, primary_key=True)
status = CharField(max_length=100)# TBD {public, provisional, private}, maybe?
editors = ManyToManyField(Profile)
Model to maintain a global set of resources -- users always enter local resources and we extract the global set: can then use with e.g. autocomplete features for new concept resources
title = CharField(max_length=100)
url = CharField(max_length=200)
authors = CharField(max_length=200)
year = IntegerField(max_value=2024, min_value=0) # TODO update in 10 years...
free = BooleanField(default=False)
signup = BooleanField(default=False)
resource_type = CharField(max_length=100)
edition = CharField(max_length=100)
resource_level = CharField(max_length=100) # TODO use a set of options?
description = CharField(max_length=500)
note = CharField(max_length=500)
resource_type = CharField(max_length=100)
additional_prerequisites = ManyToManyField(Concept)
Model to maintain concept specific resources - should use functions to obtain fields (it will query the GlobalResource if the ConceptResource does not have a value for the field)
resource = ForeignKey(GlobalResource)
location = CharField(max_length=1000)
core = BooleanField(default=False)
additional_prerequisites = ManyToManyField(Concept)
authors = CharField(max_length=200)
year = IntegerField(max_value=2024, min_value=0) # TODO update in 10 years...
free = BooleanField(default=False)
signup = BooleanField(default=False)
resource_type = CharField(max_length=100)
edition = CharField(max_length=100)
resource_level = CharField(max_length=100) # TODO use a set of options?
description = CharField(max_length=500)
note = CharField(max_length=500)
resource_type = CharField(max_length=100)
additional_prerequisites = ManyToManyField(Concept)
version_num = IntegerField(default=0)
Model that contains graph data under version control
concepts = ManyToManyField(Concept)
version_num = IntegerField(default=0)
Model that contains graph data under version control. Effectively, a graph is a set of nodes, and for now, it's mostly used in the context of users creating graphs
title = CharField(max_length=100)
editors = ManyToManyField(Profile)
Model that contains "discussion section" data for roadmaps, graphs, concepts, etc TBD whether to place under v.c. TODO look for django commenting/discussion apps
- How to handle different/same resources across concepts? Emulate the global/local technique in the FFDB?