def add_ontology(self, id=None, data_source=None, version=None, name=None, parentontology=None): filepath = os.path.split(os.path.abspath(data_source))[0] filename = os.path.split(data_source)[1] if name is None: name = os.path.splitext(filename)[0] self.parse_xml(data_source) if models.get_ontology_storage_system().location in filepath: # if the file we're referencing already exists in the location where we # usually store them then leave it there and just save a reference to it path = '.%s' % os.path.join( filepath.replace(models.get_ontology_storage_system().location, ''), filename) else: path = File(open(data_source)) ontology, created = models.Ontology.objects.get_or_create( path=path, parentontology=parentontology, defaults={ 'version': version, 'name': name, 'path': path, 'pk': id }) return ontology
def add_ontology(self, id=None, data_source=None, version=None, name=None, parentontology=None): filepath = os.path.split(os.path.abspath(data_source))[0] filename = os.path.split(data_source)[1] if name is None: name = os.path.splitext(filename)[0] self.parse_xml(data_source) if models.get_ontology_storage_system().location in filepath: # if the file we're referencing already exists in the location where we # usually store them then leave it there and just save a reference to it path = '.%s' % os.path.join(filepath.replace(models.get_ontology_storage_system().location, ''), filename) else: path = File(open(data_source)) ontology, created = models.Ontology.objects.get_or_create(path=path, parentontology=parentontology, defaults={'version': version, 'name': name, 'path': path, 'pk': id}) return ontology
def add_ontology(self, id=None, data_source=None, version=None, name=None, parentontology=None): self.graph.parse(data_source) filepath = os.path.split(os.path.abspath(data_source))[0] filename = os.path.split(data_source)[1] if name is None: name = os.path.splitext(filename)[0] if models.get_ontology_storage_system().location in filepath: # if the file we're referencing already exists in the location where we # usually store them then leave it there and just save a reference to it path = self.get_relative_path(data_source) else: # need to add the name argument for this to work like it used too # see: https://code.djangoproject.com/ticket/26644 # and this: https://github.com/django/django/commit/914c72be2abb1c6dd860cb9279beaa66409ae1b2#diff-d6396b594a8f63ee1e12a9278e1999edL57 path = File(open(data_source), name=filename) ontology, created = models.Ontology.objects.get_or_create( path=path, parentontology=parentontology, defaults={ "version": version, "name": name, "path": path, "pk": id }) return ontology
def get_relative_path(self, data_source): """ get's a path suitable for saving in a FileField column (mimics what Django does to create a path reference from a File object) """ ret = None try: if models.get_ontology_storage_system().location in os.path.abspath(data_source): ret = '.%s' % os.path.abspath(data_source).replace(models.get_ontology_storage_system().location,'') else: ret ='./%s' % os.path.split(data_source)[1] except: try: ret = data_source.path except: pass return ret
def handle(self, *args, **options): def choose_ontology(message): available_ontologies = [] for ontology in models.Ontology.objects.filter(parentontology=None): available_ontologies.append(ontology) if len(available_ontologies) > 0: selections = [] for index, ontology in enumerate(available_ontologies, start=1): selections.append(('%s. %s (%s)') % (index, ontology.name, ontology.pk)) selected_ontology = raw_input(message + '\n'.join(selections)+'\n') return available_ontologies[int(selected_ontology)-1] else: return None if options['reload']: ontology = None if options['source'] is not None: path = '.%s' % os.path.abspath(options['source']).replace(models.get_ontology_storage_system().location, '') ontology = models.Ontology.objects.get(parentontology=None, path=path) else: ontology = choose_ontology(_('Select the number corresponding to the\nbase ontology which you want to reload.\n')) if ontology: self.run_loader(data_source=ontology.path.path, name=ontology.name, version=ontology.version, id=ontology.pk, extensions=None, verbosity=options['verbosity']) return if options['version'] is None: print _('You must supply a version number using the -vn/--version argument.') return if options['source'] is not None: self.run_loader(data_source=options['source'], name=options['ontology_name'], version=options['version'], id=options['id'], extensions=options['extensions'], verbosity=options['verbosity']) return if options['extensions'] is not None: ontology = choose_ontology(_('Select the number corresponding to the\nbase ontology to which you want to add the extension.\n')) if ontology: for extension in options['extensions'].split(','): path_to_check = self.get_relative_path(extension) try: proposed_path = models.Ontology.objects.get(path=path_to_check).path.path print '' print _('It looks like an ontology file has already been loaded with the same name.') print _('The file currently loaded is located here:') print ' %s' % proposed_path print _('If you would simply like to reload the current ontology, you can run this command with the dash r (-r) flag') print 'eg: python manage.py load_ontology -r\n' return except: pass self.run_loader(data_source=ontology.path.path, version=options['version'], id=ontology.pk, extensions=options['extensions'], verbosity=options['verbosity']) else: print _('You must first define a base ontology (using -s) before loading an extension using the (-x) argument') return
def add_ontology(self, id=None, data_source=None, version=None, name=None, parentontology=None): self.graph.parse(data_source) filepath = os.path.split(os.path.abspath(data_source))[0] filename = os.path.split(data_source)[1] if name is None: name = os.path.splitext(filename)[0] if models.get_ontology_storage_system().location in filepath: # if the file we're referencing already exists in the location where we # usually store them then leave it there and just save a reference to it path = self.get_relative_path(data_source) else: # need to add the name argument for this to work like it used too # see: https://code.djangoproject.com/ticket/26644 # and this: https://github.com/django/django/commit/914c72be2abb1c6dd860cb9279beaa66409ae1b2#diff-d6396b594a8f63ee1e12a9278e1999edL57 path = File(open(data_source), name=filename) ontology, created = models.Ontology.objects.get_or_create(path=path, parentontology=parentontology, defaults={'version': version, 'name': name, 'path': path, 'pk': id}) return ontology
class Migration(migrations.Migration): dependencies = [] initial = True operations = [ CreateExtension(name='uuid-ossp'), CreateFunction(name='insert_relation', arguments=[ 'p_label text', 'p_relationtype text', 'p_legacyid2 text' ], declarations=[ 'v_conceptidfrom uuid = null;', 'v_conceptidto uuid = null;' ], language='plpgsql', body=''' v_conceptidfrom = (select conceptid from concepts c where trim(legacyoid) = trim(p_legacyid1)); v_conceptidto = (select conceptid from concepts c where trim(legacyoid) = trim(p_legacyid2)); IF v_conceptidfrom is not null and v_conceptidto is not null and v_conceptidto <> v_conceptidfrom and v_conceptidfrom::text||v_conceptidto::text NOT IN (SELECT conceptidfrom::text||conceptidto::text FROM relations) then INSERT INTO relations(relationid, conceptidfrom, conceptidto, relationtype) VALUES (uuid_generate_v1mc(), v_conceptidfrom, v_conceptidto, p_relationtype); return 'success!'; ELSE return 'fail! no relation inserted.'; END IF; ''', returntype='text'), CreateFunction(name='get_conceptid', arguments=['p_label text'], declarations=[ 'v_return text;', ], language='plpgsql', body=''' v_return = (select a.conceptid from concepts a, values b where 1=1 and b.valuetype = 'prefLabel' and b.value = p_label and b.conceptid = a.conceptid LIMIT 1); return v_return; ''', returntype='uuid'), CreateFunction(name='insert_concept', arguments=[ 'p_label text', 'p_note text', 'p_languageid text', 'p_legacyid text', 'p_nodetype text' ], declarations=[ 'v_conceptid uuid = public.uuid_generate_v1mc();', 'v_valueid uuid = public.uuid_generate_v1mc();', 'v_languageid text = p_languageid;', ], language='plpgsql', body=''' INSERT INTO concepts(conceptid, nodetype, legacyoid) VALUES (v_conceptid, p_nodetype, p_legacyid); IF trim(p_label) is not null and p_label<>'' then INSERT INTO values (valueid, conceptid, valuetype, value, languageid) VALUES (v_valueid, v_conceptid, 'prefLabel', trim(initcap(p_label)), v_languageid); END IF; IF trim(p_note) is not null and p_note <> '' then INSERT INTO values (valueid, conceptid, valuetype, value, languageid) VALUES (v_valueid, v_conceptid, 'scopeNote', p_note, v_languageid); END IF; return v_conceptid; ''', returntype='uuid'), migrations.CreateModel( name='GraphModel', fields=[ ('graphid', models.UUIDField(default=uuid.uuid1, serialize=False, primary_key=True)), ('name', models.TextField(null=True, blank=True)), ('description', models.TextField(null=True, blank=True)), ('deploymentfile', models.TextField(null=True, blank=True)), ('author', models.TextField(null=True, blank=True)), ('deploymentdate', models.DateTimeField(null=True, blank=True)), ('version', models.TextField(null=True, blank=True)), ('isresource', models.BooleanField()), ('isactive', models.BooleanField()), ('iconclass', models.TextField(null=True, blank=True)), ('mapfeaturecolor', models.TextField(blank=True, null=True)), ('maplinewidth', models.IntegerField(blank=True, null=True)), ('mappointsize', models.IntegerField(blank=True, null=True)), ('subtitle', models.TextField(null=True, blank=True)), ], options={ 'db_table': 'graphs', 'managed': True, }, ), migrations.CreateModel( name='Graph', fields=[], options={ 'proxy': True, }, bases=('models.GraphModel', ), ), migrations.CreateModel( name='CardModel', fields=[ ('cardid', models.UUIDField(default=uuid.uuid1, serialize=False, primary_key=True)), ('name', models.TextField(null=True, blank=True)), ('description', models.TextField(null=True, blank=True)), ('instructions', models.TextField(null=True, blank=True)), ('helpenabled', models.BooleanField(default=False)), ('helptitle', models.TextField(null=True, blank=True)), ('helptext', models.TextField(null=True, blank=True)), ('active', models.BooleanField(default=True)), ('visible', models.BooleanField(default=True)), ('sortorder', models.IntegerField(blank=True, null=True, default=None)), ], options={ 'db_table': 'cards', 'managed': True, }, ), migrations.CreateModel( name='Card', fields=[], options={ 'proxy': True, }, bases=('models.CardModel', ), ), migrations.CreateModel( name='CardXNodeXWidget', fields=[ ('card', models.ForeignKey(to='models.CardModel', db_column='cardid', on_delete=models.CASCADE)), ('id', models.UUIDField(default=uuid.uuid1, primary_key=True, serialize=False)), ('config', JSONField(blank=True, db_column='config', null=True)), ('label', models.TextField(blank=True, null=True)), ('sortorder', models.IntegerField(blank=True, null=True, default=None)), ], options={ 'db_table': 'cards_x_nodes_x_widgets', 'managed': True, }, ), migrations.CreateModel( name='Concept', fields=[ ('conceptid', models.UUIDField(default=uuid.uuid1, primary_key=True, serialize=False)), ('legacyoid', models.TextField(unique=True)), ], options={ 'db_table': 'concepts', 'managed': True, }, ), migrations.CreateModel( name='DDataType', fields=[ ('datatype', models.TextField(primary_key=True, serialize=False)), ('iconclass', models.TextField()), ('modulename', models.TextField(blank=True, null=True)), ('classname', models.TextField(blank=True, null=True)), ('configcomponent', models.TextField(blank=True, null=True)), ('defaultconfig', JSONField(blank=True, db_column='defaultconfig', null=True)), ('configname', models.TextField(blank=True, null=True)), ('isgeometric', models.BooleanField(default=False)), ], options={ 'db_table': 'd_data_types', 'managed': True, }, ), migrations.CreateModel( name='DLanguage', fields=[ ('languageid', models.TextField(primary_key=True, serialize=False)), ('languagename', models.TextField()), ('isdefault', models.BooleanField()), ], options={ 'db_table': 'd_languages', 'managed': True, }, ), migrations.CreateModel( name='DNodeType', fields=[ ('nodetype', models.TextField(primary_key=True, serialize=False)), ('namespace', models.TextField()), ], options={ 'db_table': 'd_node_types', 'managed': True, }, ), migrations.CreateModel( name='DRelationType', fields=[ ('relationtype', models.TextField(primary_key=True, serialize=False)), ('category', models.TextField()), ('namespace', models.TextField()), ], options={ 'db_table': 'd_relation_types', 'managed': True, }, ), migrations.CreateModel( name='DValueType', fields=[ ('valuetype', models.TextField(primary_key=True, serialize=False)), ('category', models.TextField(blank=True, null=True)), ('description', models.TextField(blank=True, null=True)), ('namespace', models.TextField()), ('datatype', models.TextField(blank=True, null=True)), ], options={ 'db_table': 'd_value_types', 'managed': True, }, ), migrations.CreateModel( name='Edge', fields=[ ('edgeid', models.UUIDField(default=uuid.uuid1, primary_key=True, serialize=False)), ('name', models.TextField(blank=True, null=True)), ('description', models.TextField(blank=True, null=True)), ('ontologyproperty', models.TextField(blank=True, null=True)), ('graph', models.ForeignKey(blank=False, db_column='graphid', null=False, to='models.GraphModel', on_delete=models.CASCADE)), ], options={ 'db_table': 'edges', 'managed': True, }, ), migrations.CreateModel( name='EditLog', fields=[ ('editlogid', models.UUIDField(default=uuid.uuid1, serialize=False, primary_key=True)), ('resourceclassid', models.TextField(null=True, blank=True)), ('resourceinstanceid', models.TextField(null=True, blank=True)), ('attributenodeid', models.TextField(null=True, blank=True)), ('tileinstanceid', models.TextField(null=True, blank=True)), ('edittype', models.TextField(null=True, blank=True)), ('newvalue', models.TextField(null=True, blank=True)), ('oldvalue', models.TextField(null=True, blank=True)), ('timestamp', models.DateTimeField(null=True, blank=True)), ('userid', models.TextField(null=True, blank=True)), ('user_firstname', models.TextField(null=True, blank=True)), ('user_lastname', models.TextField(null=True, blank=True)), ('user_email', models.TextField(null=True, blank=True)), ('note', models.TextField(null=True, blank=True)), ], options={ 'db_table': 'edit_log', 'managed': True, }, ), migrations.CreateModel( name='File', fields=[ ('fileid', models.UUIDField(default=uuid.uuid1, primary_key=True, serialize=False)), ('path', models.FileField(upload_to='uploadedfiles')), ], options={ 'db_table': 'files', 'managed': True, }, ), migrations.CreateModel( name='Form', fields=[ ('formid', models.UUIDField(default=uuid.uuid1, primary_key=True, serialize=False)), ('title', models.TextField(blank=True, null=True)), ('subtitle', models.TextField(blank=True, null=True)), ('iconclass', models.TextField(blank=True, null=True)), ('visible', models.BooleanField(default=True)), ('sortorder', models.IntegerField(blank=True, null=True, default=None)), ], options={ 'db_table': 'forms', 'managed': True, }, ), migrations.CreateModel( name='FormXCard', fields=[ ('id', models.UUIDField(default=uuid.uuid1, primary_key=True, serialize=False)), ('card', models.ForeignKey(to='models.CardModel', db_column='cardid', on_delete=models.CASCADE)), ('form', models.ForeignKey(to='models.Form', db_column='formid', on_delete=models.CASCADE)), ('sortorder', models.IntegerField(blank=True, null=True, default=None)), ], options={ 'db_table': 'forms_x_cards', 'managed': True, }, ), migrations.CreateModel( name='Function', fields=[ ('functionid', models.UUIDField(primary_key=True, default=uuid.uuid1, serialize=False)), ('functiontype', models.TextField(blank=True, null=True)), ('name', models.TextField(blank=True, null=True)), ('description', models.TextField(blank=True, null=True)), ('defaultconfig', JSONField(blank=True, null=True, db_column='defaultconfig')), ('modulename', models.TextField(blank=True, null=True)), ('classname', models.TextField(blank=True, null=True)), ('component', models.TextField(blank=True, null=True)), ], options={ 'db_table': 'functions', 'managed': True, }, ), migrations.CreateModel( name='FunctionXGraph', fields=[ ('id', models.UUIDField(primary_key=True, default=uuid.uuid1, serialize=False)), ('function', models.ForeignKey(to='models.Function', db_column='functionid', on_delete=models.CASCADE)), ('graph', models.ForeignKey(to='models.GraphModel', db_column='graphid', on_delete=models.CASCADE)), ('config', JSONField(blank=True, null=True, db_column='config')), ], options={ 'db_table': 'functions_x_graphs', 'managed': True, }, ), migrations.CreateModel( name='Icon', fields=[ ('id', models.AutoField(primary_key=True, serialize=True)), ('name', models.TextField(blank=True, null=True)), ('cssclass', models.TextField(blank=True, null=True)), ], options={ 'db_table': 'icons', 'managed': True, }, ), migrations.CreateModel( name='Node', fields=[ ('nodeid', models.UUIDField(default=uuid.uuid1, primary_key=True, serialize=False)), ('name', models.TextField()), ('description', models.TextField(blank=True, null=True)), ('istopnode', models.BooleanField()), ('ontologyclass', models.TextField(blank=True, null=True)), ('datatype', models.TextField()), ('graph', models.ForeignKey(blank=False, db_column='graphid', null=False, to='models.GraphModel', on_delete=models.CASCADE)), ('config', JSONField(blank=True, db_column='config', null=True)), ], options={ 'db_table': 'nodes', 'managed': True, }, ), migrations.CreateModel( name='NodeGroup', fields=[ ('nodegroupid', models.UUIDField(default=uuid.uuid1, primary_key=True, serialize=False)), ('legacygroupid', models.TextField(blank=True, null=True)), ('cardinality', models.TextField(blank=True, default='1')), ('parentnodegroup', models.ForeignKey(blank=True, db_column='parentnodegroupid', null=True, to='models.NodeGroup', on_delete=models.CASCADE)), ], options={ 'db_table': 'node_groups', 'managed': True, 'default_permissions': (), 'permissions': ( ('read_nodegroup', 'Read'), ('write_nodegroup', 'Create/Update'), ('delete_nodegroup', 'Delete'), ('no_access_to_nodegroup', 'No Access'), ) }, ), migrations.CreateModel( name='Ontology', fields=[ ('ontologyid', models.UUIDField(default=uuid.uuid1, primary_key=True)), ('name', models.TextField()), ('version', models.TextField()), ('path', models.FileField(storage=get_ontology_storage_system())), ('parentontology', models.ForeignKey(to='models.Ontology', db_column='parentontologyid', related_name='extensions', null=True, blank=True, on_delete=models.CASCADE)), ], options={ 'db_table': 'ontologies', 'managed': True, }, ), migrations.CreateModel( name='OntologyClass', fields=[ ('ontologyclassid', models.UUIDField(default=uuid.uuid1, primary_key=True)), ('source', models.TextField()), ('target', JSONField(null=True)), ('ontology', models.ForeignKey(to='models.Ontology', db_column='ontologyid', related_name='ontologyclasses', on_delete=models.CASCADE)), ], options={ 'db_table': 'ontologyclasses', 'managed': True, }, ), migrations.CreateModel( name='Relation', fields=[ ('relationid', models.UUIDField(default=uuid.uuid1, primary_key=True, serialize=False)), ('conceptfrom', models.ForeignKey(db_column='conceptidfrom', related_name='relation_concepts_from', to='models.Concept', on_delete=models.CASCADE)), ('conceptto', models.ForeignKey(db_column='conceptidto', related_name='relation_concepts_to', to='models.Concept', on_delete=models.CASCADE)), ('relationtype', models.ForeignKey(db_column='relationtype', to='models.DRelationType', on_delete=models.CASCADE)), ], options={ 'db_table': 'relations', 'managed': True, }, ), migrations.CreateModel( name='ReportTemplate', fields=[ ('templateid', models.UUIDField(default=uuid.uuid1, primary_key=True, serialize=False)), ('name', models.TextField(null=True, blank=True)), ('description', models.TextField(null=True, blank=True)), ('component', models.TextField()), ('componentname', models.TextField()), ('defaultconfig', JSONField(blank=True, db_column='defaultconfig', null=True)), ], options={ 'db_table': 'report_templates', 'managed': True, }, ), migrations.CreateModel( name='Report', fields=[ ('reportid', models.UUIDField(default=uuid.uuid1, primary_key=True, serialize=False)), ('name', models.TextField(null=True, blank=True)), ('template', models.ForeignKey(db_column='templateid', to='models.ReportTemplate', on_delete=models.CASCADE)), ('graph', models.ForeignKey(db_column='graphid', to='models.GraphModel', on_delete=models.CASCADE)), ('config', JSONField(blank=True, db_column='config', null=True)), ('formsconfig', JSONField(blank=True, db_column='formsconfig', null=True)), ('active', models.BooleanField(default=False)), ], options={ 'db_table': 'reports', 'managed': True, }, ), migrations.CreateModel( name='Resource2ResourceConstraint', fields=[ ('resource2resourceid', models.UUIDField(default=uuid.uuid1, primary_key=True, serialize=False)), ('resourceclassfrom', models.ForeignKey( blank=True, db_column='resourceclassfrom', null=True, related_name='resxres_contstraint_classes_from', to='models.Node', on_delete=models.SET_NULL)), ('resourceclassto', models.ForeignKey( blank=True, db_column='resourceclassto', null=True, related_name='resxres_contstraint_classes_to', to='models.Node', on_delete=models.SET_NULL)), ], options={ 'db_table': 'resource_2_resource_constraints', 'managed': True, }, ), migrations.CreateModel( name='ResourceInstance', fields=[ ('resourceinstanceid', models.UUIDField(default=uuid.uuid1, primary_key=True, serialize=False)), ('legacyid', models.TextField(blank=True, unique=True, null=True)), ('graph', models.ForeignKey(db_column='graphid', to='models.GraphModel', on_delete=models.CASCADE)), ('createdtime', models.DateTimeField(auto_now_add=True)), ], options={ 'db_table': 'resource_instances', 'managed': True, }, ), migrations.CreateModel( name='ResourceXResource', fields=[ ('resourcexid', models.UUIDField(default=uuid.uuid1, primary_key=True, serialize=False)), ('notes', models.TextField(blank=True, null=True)), ('datestarted', models.DateField(blank=True, null=True)), ('dateended', models.DateField(blank=True, null=True)), ], options={ 'db_table': 'resource_x_resource', 'managed': True, }, ), migrations.CreateModel( name='TileModel', fields=[ ('tileid', models.UUIDField(default=uuid.uuid1, primary_key=True, serialize=False)), ('data', JSONField(blank=True, db_column='tiledata', null=True)), ('nodegroup', models.ForeignKey(db_column='nodegroupid', to='models.NodeGroup', on_delete=models.CASCADE)), ('parenttile', models.ForeignKey(blank=True, db_column='parenttileid', null=True, to='models.TileModel', on_delete=models.CASCADE)), ('resourceinstance', models.ForeignKey(db_column='resourceinstanceid', to='models.ResourceInstance', on_delete=models.CASCADE)), ('sortorder', models.IntegerField(blank=True, null=True, default=0)), ], options={ 'db_table': 'tiles', 'managed': True, }, ), migrations.CreateModel( name='Value', fields=[ ('valueid', models.UUIDField(default=uuid.uuid1, primary_key=True, serialize=False)), ('value', models.TextField()), ('concept', models.ForeignKey(db_column='conceptid', to='models.Concept', on_delete=models.CASCADE)), ('language', models.ForeignKey(blank=True, db_column='languageid', null=True, to='models.DLanguage', on_delete=models.CASCADE)), ('valuetype', models.ForeignKey(db_column='valuetype', to='models.DValueType', on_delete=models.CASCADE)), ], options={ 'db_table': 'values', 'managed': True, }, ), migrations.CreateModel( name='Widget', fields=[ ('widgetid', models.UUIDField(default=uuid.uuid1, primary_key=True, serialize=False)), ('name', models.TextField()), ('component', models.TextField()), ('defaultconfig', JSONField(blank=True, db_column='defaultconfig', null=True)), ('helptext', models.TextField(blank=True, null=True)), ('datatype', models.TextField()), ], options={ 'db_table': 'widgets', 'managed': True, }, ), migrations.CreateModel( name='MapLayer', fields=[ ('maplayerid', models.UUIDField(default=uuid.uuid1, primary_key=True, serialize=False)), ('name', models.TextField(unique=True)), ('layerdefinitions', JSONField(blank=True, db_column='layerdefinitions', null=True)), ('isoverlay', models.BooleanField(default=False)), ('icon', models.TextField(default=None)), ('activated', models.BooleanField(default=True)), ('addtomap', models.BooleanField(default=False)), ], options={ 'db_table': 'map_layers', 'managed': True, }, ), migrations.CreateModel( name='MapSource', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.TextField(unique=True)), ('source', JSONField(blank=True, db_column='source', null=True)), ], options={ 'db_table': 'map_sources', 'managed': True, }, ), migrations.CreateModel( name='TileserverLayer', fields=[ ('name', models.TextField(unique=True)), ('path', models.TextField()), ('config', JSONField(db_column='config')), ('map_layer', models.ForeignKey(db_column='map_layerid', to='models.MapLayer', on_delete=models.CASCADE)), ('map_source', models.ForeignKey(db_column='map_sourceid', to='models.MapSource', on_delete=models.CASCADE)), ], options={ 'db_table': 'tileserver_layers', 'managed': True, }, ), migrations.CreateModel( name='GraphXMapping', fields=[ ('id', models.UUIDField(primary_key=True, default=uuid.uuid1, serialize=False)), ('graph', models.ForeignKey(to='models.GraphModel', db_column='graphid', on_delete=models.CASCADE)), ('mapping', JSONField(blank=True, db_column='mapping')), ], options={ 'db_table': 'graphs_x_mapping_file', 'managed': True, }, ), migrations.AddField( model_name='ddatatype', name='defaultwidget', field=models.ForeignKey(db_column='defaultwidget', to='models.Widget', null=True, on_delete=models.SET_NULL), ), migrations.AddField( model_name='resourcexresource', name='relationshiptype', field=models.ForeignKey(db_column='relationshiptype', to='models.Value', on_delete=models.CASCADE), ), migrations.AddField( model_name='resourcexresource', name='resourceinstanceidfrom', field=models.ForeignKey( blank=True, db_column='resourceinstanceidfrom', null=True, related_name='resxres_resource_instance_ids_from', to='models.ResourceInstance', on_delete=models.CASCADE), ), migrations.AddField( model_name='resourcexresource', name='resourceinstanceidto', field=models.ForeignKey( blank=True, db_column='resourceinstanceidto', null=True, related_name='resxres_resource_instance_ids_to', to='models.ResourceInstance', on_delete=models.CASCADE), ), migrations.AddField( model_name='node', name='nodegroup', field=models.ForeignKey(blank=True, db_column='nodegroupid', null=True, to='models.NodeGroup', on_delete=models.CASCADE), ), migrations.AddField( model_name='edge', name='domainnode', field=models.ForeignKey(db_column='domainnodeid', related_name='edge_domains', to='models.Node', on_delete=models.CASCADE), ), migrations.AddField( model_name='edge', name='rangenode', field=models.ForeignKey(db_column='rangenodeid', related_name='edge_ranges', to='models.Node', on_delete=models.CASCADE), ), migrations.AddField( model_name='concept', name='nodetype', field=models.ForeignKey(db_column='nodetype', to='models.DNodeType', on_delete=models.CASCADE), ), migrations.AddField( model_name='cardxnodexwidget', name='node', field=models.ForeignKey(db_column='nodeid', to='models.Node', on_delete=models.CASCADE), ), migrations.AddField( model_name='cardxnodexwidget', name='widget', field=models.ForeignKey(db_column='widgetid', to='models.Widget', on_delete=models.CASCADE), ), migrations.AddField( model_name='cardmodel', name='nodegroup', field=models.ForeignKey(db_column='nodegroupid', to='models.NodeGroup', on_delete=models.CASCADE), ), migrations.AddField( model_name='cardmodel', name='graph', field=models.ForeignKey(db_column='graphid', to='models.GraphModel', on_delete=models.CASCADE), ), migrations.AddField( model_name='form', name='graph', field=models.ForeignKey(to='models.GraphModel', db_column='graphid', related_name='forms', null=False, blank=False, on_delete=models.CASCADE), ), migrations.AddField( model_name='graphmodel', name='functions', field=models.ManyToManyField(to='models.Function', through='FunctionXGraph'), ), migrations.AddField( model_name='graphmodel', name='ontology', field=models.ForeignKey(to='models.Ontology', db_column='ontologyid', related_name='graphs', null=True, blank=True, on_delete=models.SET_NULL), ), migrations.AlterUniqueTogether( name='edge', unique_together={('rangenode', 'domainnode')}, ), migrations.AlterUniqueTogether( name='cardxnodexwidget', unique_together={('node', 'card', 'widget')}, ), migrations.AlterUniqueTogether( name='ontologyclass', unique_together={('source', 'ontology')}, ), migrations.AlterUniqueTogether( name='relation', unique_together={('conceptfrom', 'conceptto', 'relationtype')}, ), migrations.AlterUniqueTogether( name='functionxgraph', unique_together={('function', 'graph')}, ), CreateAutoPopulateUUIDField('graphs', ['graphid']), CreateAutoPopulateUUIDField('cards', ['cardid']), CreateAutoPopulateUUIDField('concepts', ['conceptid']), CreateAutoPopulateUUIDField('edges', ['edgeid']), CreateAutoPopulateUUIDField('edit_log', ['editlogid']), CreateAutoPopulateUUIDField('forms', ['formid']), CreateAutoPopulateUUIDField('node_groups', ['nodegroupid']), CreateAutoPopulateUUIDField('nodes', ['nodeid']), CreateAutoPopulateUUIDField('relations', ['relationid']), CreateAutoPopulateUUIDField('resource_2_resource_constraints', ['resource2resourceid']), CreateAutoPopulateUUIDField('resource_instances', ['resourceinstanceid']), CreateAutoPopulateUUIDField('tiles', ['tileid']), CreateAutoPopulateUUIDField('values', ['valueid']), CreateAutoPopulateUUIDField('widgets', ['widgetid']), migrations.RunSQL(""" ALTER TABLE nodes ADD CONSTRAINT nodes_ddatatypes_fk FOREIGN KEY (datatype) REFERENCES public.d_data_types (datatype) MATCH SIMPLE """), migrations.RunSQL( get_sql_string_from_file( os.path.join(settings.ROOT_DIR, 'db', 'dml', 'db_data.sql')), ''), migrations.RunPython(forwards_func, reverse_func), migrations.RunPython(make_permissions, reverse_code=lambda *args, **kwargs: True), ]
class Migration(migrations.Migration): dependencies = [] initial = True operations = [ CreateExtension(name='uuid-ossp'), migrations.RunSQL( get_sql_string_from_file( os.path.join(settings.ROOT_DIR, 'db', 'install', 'dependencies', 'postgis_backward_compatibility.sql')), ''), CreateFunction(name='insert_relation', arguments=[ 'p_label text', 'p_relationtype text', 'p_legacyid2 text' ], declarations=[ 'v_conceptidfrom uuid = null;', 'v_conceptidto uuid = null;' ], language='plpgsql', body=''' v_conceptidfrom = (select conceptid from concepts c where trim(legacyoid) = trim(p_legacyid1)); v_conceptidto = (select conceptid from concepts c where trim(legacyoid) = trim(p_legacyid2)); IF v_conceptidfrom is not null and v_conceptidto is not null and v_conceptidto <> v_conceptidfrom and v_conceptidfrom::text||v_conceptidto::text NOT IN (SELECT conceptidfrom::text||conceptidto::text FROM relations) then INSERT INTO relations(relationid, conceptidfrom, conceptidto, relationtype) VALUES (uuid_generate_v1mc(), v_conceptidfrom, v_conceptidto, p_relationtype); return 'success!'; ELSE return 'fail! no relation inserted.'; END IF; ''', returntype='text'), CreateFunction(name='get_conceptid', arguments=['p_label text'], declarations=[ 'v_return text;', ], language='plpgsql', body=''' v_return = (select a.conceptid from concepts a, values b where 1=1 and b.valuetype = 'prefLabel' and b.value = p_label and b.conceptid = a.conceptid LIMIT 1); return v_return; ''', returntype='uuid'), CreateFunction(name='insert_concept', arguments=[ 'p_label text', 'p_note text', 'p_languageid text', 'p_legacyid text', 'p_nodetype text' ], declarations=[ 'v_conceptid uuid = public.uuid_generate_v1mc();', 'v_valueid uuid = public.uuid_generate_v1mc();', 'v_languageid text = p_languageid;', ], language='plpgsql', body=''' INSERT INTO concepts(conceptid, nodetype, legacyoid) VALUES (v_conceptid, p_nodetype, p_legacyid); IF trim(p_label) is not null and p_label<>'' then INSERT INTO values (valueid, conceptid, valuetype, value, languageid) VALUES (v_valueid, v_conceptid, 'prefLabel', trim(initcap(p_label)), v_languageid); END IF; IF trim(p_note) is not null and p_note <> '' then INSERT INTO values (valueid, conceptid, valuetype, value, languageid) VALUES (v_valueid, v_conceptid, 'scopeNote', p_note, v_languageid); END IF; return v_conceptid; ''', returntype='uuid'), migrations.CreateModel( name='Address', fields=[ ('addressnum', models.TextField(null=True, blank=True)), ('addressstreet', models.TextField(null=True, blank=True)), ('vintage', models.TextField(null=True, blank=True)), ('city', models.TextField(null=True, blank=True)), ('postalcode', models.TextField(null=True, blank=True)), ('addressesid', models.AutoField(serialize=False, primary_key=True)), ('geometry', django.contrib.gis.db.models.fields.PointField(srid=4326, null=True, blank=True)), ], options={ 'db_table': 'addresses', 'managed': True, }, ), migrations.CreateModel( name='GraphModel', fields=[ ('graphid', models.UUIDField(default=uuid.uuid1, serialize=False, primary_key=True)), ('name', models.TextField(null=True, blank=True)), ('description', models.TextField(null=True, blank=True)), ('deploymentfile', models.TextField(null=True, blank=True)), ('author', models.TextField(null=True, blank=True)), ('deploymentdate', models.DateTimeField(null=True, blank=True)), ('version', models.TextField(null=True, blank=True)), ('isresource', models.BooleanField()), ('isactive', models.BooleanField()), ('iconclass', models.TextField(null=True, blank=True)), ('subtitle', models.TextField(null=True, blank=True)), ], options={ 'db_table': 'graphs', 'managed': True, }, ), migrations.CreateModel( name='CardModel', fields=[ ('cardid', models.UUIDField(default=uuid.uuid1, serialize=False, primary_key=True)), ('name', models.TextField(null=True, blank=True)), ('description', models.TextField(null=True, blank=True)), ('instructions', models.TextField(null=True, blank=True)), ('helpenabled', models.BooleanField(default=False)), ('helptitle', models.TextField(null=True, blank=True)), ('helptext', models.TextField(null=True, blank=True)), ('active', models.BooleanField(default=True)), ('visible', models.BooleanField(default=True)), ('sortorder', models.IntegerField(blank=True, null=True, default=None)), ('itemtext', models.TextField(null=True, blank=True)), ], options={ 'db_table': 'cards', 'managed': True, }, ), migrations.CreateModel( name='CardXNodeXWidget', fields=[ ('card', models.ForeignKey(to='models.CardModel', db_column='cardid')), ('id', models.UUIDField(default=uuid.uuid1, primary_key=True, serialize=False)), ('config', django.contrib.postgres.fields.jsonb.JSONField( blank=True, db_column='config', null=True)), ('label', models.TextField(blank=True, null=True)), ('sortorder', models.IntegerField(blank=True, null=True, default=None)), ], options={ 'db_table': 'cards_x_nodes_x_widgets', 'managed': True, }, ), migrations.CreateModel( name='Concept', fields=[ ('conceptid', models.UUIDField(default=uuid.uuid1, primary_key=True, serialize=False)), ('legacyoid', models.TextField(unique=True)), ], options={ 'db_table': 'concepts', 'managed': True, }, ), migrations.CreateModel( name='DDataType', fields=[ ('datatype', models.TextField(primary_key=True, serialize=False)), ('iconclass', models.TextField()), ], options={ 'db_table': 'd_data_types', 'managed': True, }, ), migrations.CreateModel( name='DLanguage', fields=[ ('languageid', models.TextField(primary_key=True, serialize=False)), ('languagename', models.TextField()), ('isdefault', models.BooleanField()), ], options={ 'db_table': 'd_languages', 'managed': True, }, ), migrations.CreateModel( name='DNodeType', fields=[ ('nodetype', models.TextField(primary_key=True, serialize=False)), ('namespace', models.TextField()), ], options={ 'db_table': 'd_node_types', 'managed': True, }, ), migrations.CreateModel( name='DRelationType', fields=[ ('relationtype', models.TextField(primary_key=True, serialize=False)), ('category', models.TextField()), ('namespace', models.TextField()), ], options={ 'db_table': 'd_relation_types', 'managed': True, }, ), migrations.CreateModel( name='DValueType', fields=[ ('valuetype', models.TextField(primary_key=True, serialize=False)), ('category', models.TextField(blank=True, null=True)), ('description', models.TextField(blank=True, null=True)), ('namespace', models.TextField()), ('datatype', models.TextField(blank=True, null=True)), ], options={ 'db_table': 'd_value_types', 'managed': True, }, ), migrations.CreateModel( name='Edge', fields=[ ('edgeid', models.UUIDField(default=uuid.uuid1, primary_key=True, serialize=False)), ('name', models.TextField(blank=True, null=True)), ('description', models.TextField(blank=True, null=True)), ('ontologyproperty', models.TextField(blank=True, null=True)), ('graph', models.ForeignKey(blank=False, db_column='graphid', null=False, to='models.GraphModel')), ], options={ 'db_table': 'edges', 'managed': True, }, ), migrations.CreateModel( name='EditLog', fields=[ ('editlogid', models.UUIDField(default=uuid.uuid1, serialize=False, primary_key=True)), ('resourceclassid', models.TextField(null=True, blank=True)), ('resourceinstanceid', models.TextField(null=True, blank=True)), ('attributenodeid', models.TextField(null=True, blank=True)), ('tileinstanceid', models.TextField(null=True, blank=True)), ('edittype', models.TextField(null=True, blank=True)), ('newvalue', models.TextField(null=True, blank=True)), ('oldvalue', models.TextField(null=True, blank=True)), ('timestamp', models.DateTimeField(null=True, blank=True)), ('userid', models.TextField(null=True, blank=True)), ('user_firstname', models.TextField(null=True, blank=True)), ('user_lastname', models.TextField(null=True, blank=True)), ('user_email', models.TextField(null=True, blank=True)), ('note', models.TextField(null=True, blank=True)), ], options={ 'db_table': 'edit_log', 'managed': True, }, ), migrations.CreateModel( name='Form', fields=[ ('formid', models.UUIDField(default=uuid.uuid1, primary_key=True, serialize=False)), ('title', models.TextField(blank=True, null=True)), ('subtitle', models.TextField(blank=True, null=True)), ], options={ 'db_table': 'forms', 'managed': True, }, ), migrations.CreateModel( name='FormXCard', fields=[ ('id', models.UUIDField(default=uuid.uuid1, primary_key=True, serialize=False)), ('card', models.ForeignKey(db_column='cardid', to='models.CardModel')), ('form', models.ForeignKey(db_column='formid', to='models.Form')), ], options={ 'db_table': 'forms_x_card', 'managed': True, }, ), migrations.CreateModel( name='Function', fields=[ ('functionid', models.UUIDField(default=uuid.uuid1, primary_key=True, serialize=False)), ('functiontype', models.TextField(blank=True, null=True)), ('function', models.TextField()), ('name', models.TextField(blank=True, null=True)), ('description', models.TextField(blank=True, null=True)), ], options={ 'db_table': 'functions', 'managed': True, }, ), migrations.CreateModel( name='Icon', fields=[ ('id', models.AutoField(primary_key=True, serialize=True)), ('name', models.TextField(blank=True, null=True)), ('cssclass', models.TextField(blank=True, null=True)), ], options={ 'db_table': 'icons', 'managed': True, }, ), migrations.CreateModel( name='Node', fields=[ ('nodeid', models.UUIDField(default=uuid.uuid1, primary_key=True, serialize=False)), ('name', models.TextField()), ('description', models.TextField(blank=True, null=True)), ('istopnode', models.BooleanField()), ('ontologyclass', models.TextField(blank=True, null=True)), ('datatype', models.TextField()), ('graph', models.ForeignKey(blank=False, db_column='graphid', null=False, to='models.GraphModel')), ], options={ 'db_table': 'nodes', 'managed': True, }, ), migrations.CreateModel( name='NodeGroup', fields=[ ('nodegroupid', models.UUIDField(default=uuid.uuid1, primary_key=True, serialize=False)), ('legacygroupid', models.TextField(blank=True, null=True)), ('cardinality', models.TextField(blank=True, default='n')), ('parentnodegroup', models.ForeignKey(blank=True, db_column='parentnodegroupid', null=True, to='models.NodeGroup')), ], options={ 'db_table': 'node_groups', 'managed': True, }, ), migrations.CreateModel( name='Ontology', fields=[ ('ontologyid', models.UUIDField(default=uuid.uuid1, primary_key=True)), ('name', models.TextField()), ('version', models.TextField()), ('path', models.FileField(storage=get_ontology_storage_system())), ('parentontology', models.ForeignKey(to='models.Ontology', db_column='parentontologyid', related_name='extensions', null=True, blank=True)), ], options={ 'db_table': 'ontologies', 'managed': True, }, ), migrations.CreateModel( name='OntologyClass', fields=[ ('ontologyclassid', models.UUIDField(default=uuid.uuid1, primary_key=True)), ('source', models.TextField()), ('target', JSONField(null=True)), ('ontology', models.ForeignKey(to='models.Ontology', db_column='ontologyid', related_name='ontologyclasses')), ], options={ 'db_table': 'ontologyclasses', 'managed': True, }, ), migrations.CreateModel( name='Overlay', fields=[ ('overlaytyp', models.TextField(null=True, blank=True)), ('overlayval', models.TextField(null=True, blank=True)), ('overlayid', models.AutoField(serialize=False, primary_key=True)), ('geometry', django.contrib.gis.db.models.fields.PolygonField(srid=4326, null=True, blank=True)), ], options={ 'db_table': 'overlays', 'managed': True, }, ), migrations.CreateModel( name='Parcel', fields=[ ('parcelapn', models.TextField(null=True, blank=True)), ('vintage', models.TextField(null=True, blank=True)), ('parcelsid', models.AutoField(serialize=False, primary_key=True)), ('geometry', django.contrib.gis.db.models.fields.PolygonField(srid=4326, null=True, blank=True)), ], options={ 'db_table': 'parcels', 'managed': True, }, ), migrations.CreateModel( name='Relation', fields=[ ('relationid', models.UUIDField(default=uuid.uuid1, primary_key=True, serialize=False)), ('conceptfrom', models.ForeignKey(db_column='conceptidfrom', related_name='relation_concepts_from', to='models.Concept')), ('conceptto', models.ForeignKey(db_column='conceptidto', related_name='relation_concepts_to', to='models.Concept')), ('relationtype', models.ForeignKey(db_column='relationtype', to='models.DRelationType')), ], options={ 'db_table': 'relations', 'managed': True, }, ), migrations.CreateModel( name='Resource2ResourceConstraint', fields=[ ('resource2resourceid', models.UUIDField(default=uuid.uuid1, primary_key=True, serialize=False)), ('resourceclassfrom', models.ForeignKey( blank=True, db_column='resourceclassfrom', null=True, related_name='resxres_contstraint_classes_from', to='models.Node')), ('resourceclassto', models.ForeignKey( blank=True, db_column='resourceclassto', null=True, related_name='resxres_contstraint_classes_to', to='models.Node')), ], options={ 'db_table': 'resource_2_resource_constraints', 'managed': True, }, ), migrations.CreateModel( name='ResourceClassXForm', fields=[ ('id', models.UUIDField(default=uuid.uuid1, primary_key=True, serialize=False)), ('status', models.TextField(blank=True, null=True)), ('form', models.ForeignKey(db_column='formid', to='models.Form')), ('resourceclass', models.ForeignKey(blank=True, db_column='resourceclassid', null=True, to='models.Node')), ], options={ 'db_table': 'resource_classes_x_forms', 'managed': True, }, ), migrations.CreateModel( name='ResourceInstance', fields=[ ('resourceinstanceid', models.UUIDField(default=uuid.uuid1, primary_key=True, serialize=False)), ('resourceinstancesecurity', models.TextField(blank=True, null=True)), ('resourceclass', models.ForeignKey(db_column='resourceclassid', to='models.Node')), ], options={ 'db_table': 'resource_instances', 'managed': True, }, ), migrations.CreateModel( name='ResourceXResource', fields=[ ('resourcexid', models.AutoField(primary_key=True, serialize=False)), ('notes', models.TextField(blank=True, null=True)), ('datestarted', models.DateField(blank=True, null=True)), ('dateended', models.DateField(blank=True, null=True)), ], options={ 'db_table': 'resource_x_resource', 'managed': True, }, ), migrations.CreateModel( name='Tile', fields=[ ('tileid', models.UUIDField(default=uuid.uuid1, primary_key=True, serialize=False)), ('data', django.contrib.postgres.fields.jsonb.JSONField( blank=True, db_column='tiledata', null=True)), ('nodegroup', models.ForeignKey(db_column='nodegroupid', to='models.NodeGroup')), ('parenttile', models.ForeignKey(blank=True, db_column='parenttileid', null=True, to='models.Tile')), ('resourceinstance', models.ForeignKey(db_column='resourceinstanceid', to='models.ResourceInstance')), ], options={ 'db_table': 'tiles', 'managed': True, }, ), migrations.CreateModel( name='Validation', fields=[ ('validationid', models.UUIDField(primary_key=True, default=uuid.uuid1, serialize=False)), ('validation', models.TextField(blank=True, null=True)), ('validationtype', models.TextField(blank=True, null=True)), ('name', models.TextField(blank=True, null=True)), ('description', models.TextField(blank=True, null=True)), ], options={ 'db_table': 'validations', 'managed': True, }, ), migrations.CreateModel( name='Value', fields=[ ('valueid', models.UUIDField(default=uuid.uuid1, primary_key=True, serialize=False)), ('value', models.TextField()), ('concept', models.ForeignKey(db_column='conceptid', to='models.Concept')), ('language', models.ForeignKey(blank=True, db_column='languageid', null=True, to='models.DLanguage')), ('valuetype', models.ForeignKey(db_column='valuetype', to='models.DValueType')), ], options={ 'db_table': 'values', 'managed': True, }, ), migrations.CreateModel( name='Widget', fields=[ ('widgetid', models.UUIDField(default=uuid.uuid1, primary_key=True, serialize=False)), ('name', models.TextField()), ('component', models.TextField()), ('defaultconfig', django.contrib.postgres.fields.jsonb.JSONField( blank=True, db_column='defaultconfig', null=True)), ('helptext', models.TextField(blank=True, null=True)), ('datatype', models.ForeignKey(db_column='datatype', to='models.DDataType')), ], options={ 'db_table': 'widgets', 'managed': True, }, ), migrations.AddField( model_name='ddatatype', name='defaultwidget', field=models.ForeignKey(db_column='defaultwidget', to='models.Widget', null=True), ), migrations.AddField( model_name='resourcexresource', name='relationshiptype', field=models.ForeignKey(db_column='relationshiptype', to='models.Value'), ), migrations.AddField( model_name='resourcexresource', name='resourceinstanceidfrom', field=models.ForeignKey( blank=True, db_column='resourceinstanceidfrom', null=True, related_name='resxres_resource_instance_ids_from', to='models.ResourceInstance'), ), migrations.AddField( model_name='resourcexresource', name='resourceinstanceidto', field=models.ForeignKey( blank=True, db_column='resourceinstanceidto', null=True, related_name='resxres_resource_instance_ids_to', to='models.ResourceInstance'), ), migrations.AddField( model_name='node', name='nodegroup', field=models.ForeignKey(blank=True, db_column='nodegroupid', null=True, to='models.NodeGroup'), ), migrations.AddField( model_name='edge', name='domainnode', field=models.ForeignKey(db_column='domainnodeid', related_name='edge_domains', to='models.Node'), ), migrations.AddField( model_name='edge', name='rangenode', field=models.ForeignKey(db_column='rangenodeid', related_name='edge_ranges', to='models.Node'), ), migrations.AddField( model_name='concept', name='nodetype', field=models.ForeignKey(db_column='nodetype', to='models.DNodeType'), ), migrations.AddField( model_name='cardxnodexwidget', name='function', field=models.ForeignKey(db_column='functionid', to='models.Function'), ), migrations.AddField( model_name='cardxnodexwidget', name='node', field=models.ForeignKey(db_column='nodeid', to='models.Node'), ), migrations.AddField( model_name='cardxnodexwidget', name='widget', field=models.ForeignKey(db_column='widgetid', to='models.Widget'), ), migrations.AddField( model_name='cardmodel', name='nodegroup', field=models.ForeignKey(db_column='nodegroupid', to='models.NodeGroup'), ), migrations.AddField( model_name='cardmodel', name='graph', field=models.ForeignKey(db_column='graphid', to='models.GraphModel'), ), migrations.AddField( model_name='cardmodel', name='function', field=models.ForeignKey(db_column='functionid', to='models.Function', blank=True, null=True), ), migrations.AddField( model_name='node', name='validations', field=models.ManyToManyField(to='models.Validation', db_table='validations_x_nodes'), ), migrations.AddField( model_name='graphmodel', name='ontology', field=models.ForeignKey(to='models.Ontology', db_column='ontologyid', related_name='graphs', null=True, blank=True), ), migrations.AlterUniqueTogether( name='resourceclassxform', unique_together=set([('resourceclass', 'form')]), ), migrations.AlterUniqueTogether( name='formxcard', unique_together=set([('form', 'card')]), ), migrations.AlterUniqueTogether( name='edge', unique_together=set([('rangenode', 'domainnode')]), ), migrations.AlterUniqueTogether( name='cardxnodexwidget', unique_together=set([('node', 'card', 'widget')]), ), migrations.AlterUniqueTogether( name='ontologyclass', unique_together=set([('source', 'ontology')]), ), CreateAutoPopulateUUIDField('graphs', ['graphid']), CreateAutoPopulateUUIDField('cards', ['cardid']), CreateAutoPopulateUUIDField('concepts', ['conceptid']), CreateAutoPopulateUUIDField('edges', ['edgeid']), CreateAutoPopulateUUIDField('edit_log', ['editlogid']), CreateAutoPopulateUUIDField('forms', ['formid']), CreateAutoPopulateUUIDField('node_groups', ['nodegroupid']), CreateAutoPopulateUUIDField('nodes', ['nodeid']), CreateAutoPopulateUUIDField('relations', ['relationid']), CreateAutoPopulateUUIDField('resource_2_resource_constraints', ['resource2resourceid']), CreateAutoPopulateUUIDField('resource_instances', ['resourceinstanceid']), CreateAutoPopulateUUIDField('tiles', ['tileid']), CreateAutoPopulateUUIDField('values', ['valueid']), CreateAutoPopulateUUIDField('widgets', ['widgetid']), migrations.RunSQL( get_sql_string_from_file( os.path.join(settings.ROOT_DIR, 'db', 'dml', 'db_data.sql')), ''), migrations.RunPython(forwards_func, reverse_func), ]
def handle(self, *args, **options): def choose_ontology(message): available_ontologies = [] for ontology in models.Ontology.objects.filter( parentontology=None): available_ontologies.append(ontology) if len(available_ontologies) > 0: selections = [] for index, ontology in enumerate(available_ontologies, start=1): selections.append( ("%s. %s (%s)") % (index, ontology.name, ontology.pk)) selected_ontology = input(message + "\n".join(selections) + "\n") return available_ontologies[int(selected_ontology) - 1] else: return None if options["reload"]: ontology = None if options["source"] is not None: path = ".%s" % os.path.abspath(options["source"]).replace( models.get_ontology_storage_system().location, "") ontology = models.Ontology.objects.get(parentontology=None, path=path) else: ontology = choose_ontology( _("Select the number corresponding to the\nbase ontology which you want to reload.\n" )) if ontology: self.run_loader( data_source=ontology.path.path, name=ontology.name, version=ontology.version, id=ontology.pk, extensions=None, verbosity=options["verbosity"], ) return if options["version"] is None: print( _("You must supply a version number using the -vn/--version argument." )) return if options["source"] is not None: self.run_loader( data_source=options["source"], name=options["ontology_name"], version=options["version"], id=options["id"], extensions=options["extensions"], verbosity=options["verbosity"], ) return if options["extensions"] is not None: if os.path.isfile(options["extensions"]): ontology = choose_ontology( _("Select the number corresponding to the\nbase ontology to which you want to add the extension.\n" )) if ontology: for extension in options["extensions"].split(","): path_to_check = self.get_relative_path(extension) try: proposed_path = models.Ontology.objects.get( path=path_to_check).path.path print("") print( _("It looks like an ontology file has already been loaded with the same name." )) print( _("The file currently loaded is located here:") ) print(" %s" % proposed_path) print( _("If you would simply like to reload the current ontology, \ you can run this command with the dash r (-r) flag" )) print("eg: python manage.py load_ontology -r\n") return except: pass self.run_loader( data_source=ontology.path.path, version=options["version"], id=ontology.pk, extensions=options["extensions"], verbosity=options["verbosity"], ) else: print( _("You must first define a base ontology (using -s) before loading an extension using the (-x) argument" )) else: print('The File "%s" Not Found' % options["extensions"]) return