304 |
304 |
$type = $ref;
|
305 |
305 |
}
|
306 |
306 |
$name = $childNode->getAttribute('name');
|
307 |
|
if($ref != '' && $name == '') {
|
308 |
|
$name = $this->tableName . "_" . $ref;
|
|
307 |
if($ref != '' && $name == '' /*&& !isPrimitiveType($ref)*/) {
|
|
308 |
$name = $ref;
|
309 |
309 |
}
|
310 |
310 |
|
311 |
311 |
if($name == '') {
|
... | ... | |
530 |
530 |
}
|
531 |
531 |
|
532 |
532 |
public function toString() {
|
|
533 |
global $tableRenames;
|
533 |
534 |
$str = "class " . $this->tableName . "(models.Model):\n";
|
534 |
535 |
|
535 |
536 |
#All entities need reference to their creation info since
|
... | ... | |
539 |
540 |
|
540 |
541 |
foreach(array_keys($this->references) as $colName) {
|
541 |
542 |
$def = $this->references[$colName];
|
542 |
|
$str .= " $colName = $def\n";
|
|
543 |
$effectiveColName = $tableRenames[$colName] == null ? $colName : $tableRenames[$colName];
|
|
544 |
$str .= " $effectiveColName = $def\n";
|
543 |
545 |
}
|
544 |
546 |
foreach(array_keys($this->members) as $colName) {
|
545 |
547 |
$def = $this->members[$colName];
|
... | ... | |
597 |
599 |
}
|
598 |
600 |
|
599 |
601 |
public function makeImportFunction() {
|
|
602 |
global $tableRenames;
|
600 |
603 |
#Slightly different if there are no members
|
601 |
604 |
if(count($this->references) == 0 &&
|
602 |
605 |
count($this->members) == 0 &&
|
... | ... | |
688 |
691 |
$i += 1;
|
689 |
692 |
$tabType = $nativeVegXPointers[$colName]['fk_type'];
|
690 |
693 |
$toField = $nativeVegXPointers[$colName]['to_field'];
|
691 |
|
$def .= " $ifStmt cName == '$colName':\n".
|
|
694 |
$effectiveColName = $tableRenames[$colName] == null ? $colName : $tableRenames[$colName];
|
|
695 |
$def .= " $ifStmt cName == '$effectiveColName':\n".
|
692 |
696 |
" if(len(child.childNodes) > 0):\n".
|
693 |
697 |
" cVal = child.childNodes[0].nodeValue\n".
|
694 |
698 |
" q = $tabType.objects.filter($toField" . "__exact = cVal)\n".
|
695 |
699 |
" q = $tabType.objects.filter(entryInfo__id__exact = self.entryInfo.id)\n".
|
696 |
700 |
" if len(q) > 0:\n".
|
697 |
|
" self.$colName = q[0]\n";
|
|
701 |
" self.$effectiveColName = q[0]\n";
|
698 |
702 |
} else {
|
699 |
703 |
$ifStmt = $i == 0 ? 'if' : 'elif';
|
700 |
704 |
$i += 1;
|
701 |
|
$def .= " $ifStmt cName == '$colName':\n".
|
|
705 |
$effectiveColName = $tableRenames[$colName] == null ? $colName : $tableRenames[$colName];
|
|
706 |
$def .= " $ifStmt cName == '$effectiveColName':\n".
|
702 |
707 |
" if(len(child.childNodes) > 0):\n".
|
703 |
708 |
" cVal = child.childNodes[0].nodeValue\n".
|
704 |
|
" self.$colName = cVal\n";
|
|
709 |
" self.$effectiveColName = cVal\n";
|
705 |
710 |
}
|
706 |
711 |
}
|
707 |
712 |
}
|
... | ... | |
720 |
725 |
preg_match("/Complex one2Many/",$colDef) > 0 && preg_match("/_extend/",$colDef) == 0 &&
|
721 |
726 |
preg_match("/_id/",$colName) == 0) {
|
722 |
727 |
$i += 1;
|
723 |
|
$def .= " $ifStmt cName == '$colName':\n".
|
|
728 |
$effectiveColName = $tableRenames[$colName] == null ? $colName : $tableRenames[$colName];
|
|
729 |
$def .= " $ifStmt cName == '$effectiveColName':\n".
|
724 |
730 |
" newEl = $matches[2]().retrieveOrNew(child)\n".
|
725 |
731 |
" newEl.importVegX(child,info)\n".
|
726 |
|
" self.$colName = newEl\n";
|
|
732 |
" self.$effectiveColName = newEl\n";
|
727 |
733 |
}
|
728 |
734 |
if(preg_match("/(ManyToManyField\(')([a-zA-Z]*)/",$colDef,$matches) > 0) {
|
|
735 |
$effectiveColName = $tableRenames[$colName] == null ? $colName : $tableRenames[$colName];
|
729 |
736 |
$i += 1;
|
730 |
|
$def .= " $ifStmt cName == '$colName':\n".
|
|
737 |
$def .= " $ifStmt cName == '$effectiveColName':\n".
|
731 |
738 |
" newEl = $matches[2]().retrieveOrNew(child)\n".
|
732 |
739 |
" newEl.importVegX(child,info)\n".
|
733 |
|
" self.$colName.add(newEl)\n";
|
|
740 |
" self.$effectiveColName.add(newEl)\n";
|
734 |
741 |
}
|
735 |
742 |
}
|
736 |
743 |
|
... | ... | |
744 |
751 |
$i += 1;
|
745 |
752 |
$colDef = $this->referrers[$colName];
|
746 |
753 |
$elReferenceBack = $this->tableName . '_id';
|
747 |
|
$def .= " $ifStmt cName == '$colName':\n".
|
|
754 |
$effectiveColName = $tableRenames[$colName] == null ? $colName : $tableRenames[$colName];
|
|
755 |
$def .= " $ifStmt cName == '$effectiveColName':\n".
|
748 |
756 |
" newEl = $colDef().retrieveOrNew(child)\n".
|
749 |
757 |
" newEl.$elReferenceBack = self\n".
|
750 |
758 |
" newEl.importVegX(child,info)\n";
|
... | ... | |
788 |
796 |
}
|
789 |
797 |
|
790 |
798 |
public function makeExportFunction() {
|
|
799 |
global $tableRenames;
|
|
800 |
|
791 |
801 |
#Slightly different if there are no members
|
792 |
802 |
if(count($this->references) == 0 &&
|
793 |
803 |
count($this->members) == 0 &&
|
... | ... | |
864 |
874 |
if(preg_match("/(ForeignKey\(')([a-zA-Z]*)/",$colDef,$matches) > 0 &&
|
865 |
875 |
(preg_match("/Complex one2Many/",$colDef) > 0 || preg_match("/_extend/",$colName) > 0) &&
|
866 |
876 |
preg_match("/_id/",$colName) == 0) {
|
|
877 |
$effectiveColName = $tableRenames[$colName] == null ? $colName : $tableRenames[$colName];
|
867 |
878 |
if(preg_match("/_extend/",$colName) == 0) {
|
868 |
|
$def .= " if self.$colName != None:\n".
|
869 |
|
" newEl = doc.createElement('$colName')\n".
|
870 |
|
" myNode.appendChild(self.$colName.exportVegX(newEl,doc))\n\n";
|
|
879 |
$def .= " if self.$effectiveColName != None:\n".
|
|
880 |
" newEl = doc.createElement('$effectiveColName')\n".
|
|
881 |
" myNode.appendChild(self.$effectiveColName.exportVegX(newEl,doc))\n\n";
|
871 |
882 |
} else {
|
872 |
883 |
$def .= " if self.$colName != None:\n".
|
873 |
884 |
" myNode = self.$colName.exportVegX(myNode,doc)\n\n";
|
874 |
885 |
}
|
875 |
886 |
}
|
876 |
887 |
if(preg_match("/(ManyToManyField\(')([a-zA-Z]*)/",$colDef,$matches) > 0) {
|
|
888 |
$effectiveColName = $tableRenames[$colName] == null ? $colName : $tableRenames[$colName];
|
877 |
889 |
$def .= " for childRef in self.$colName.all():\n".
|
878 |
|
" newEl = doc.createElement('$colName')\n".
|
|
890 |
" newEl = doc.createElement('$effectiveColName')\n".
|
879 |
891 |
" myNode.appendChild(childRef.exportVegX(newEl,doc))\n\n";
|
880 |
892 |
}
|
881 |
893 |
}
|
... | ... | |
893 |
905 |
$nodeNameToUse = $this->tableName . '_any_nodes';
|
894 |
906 |
}
|
895 |
907 |
$relatedName = $nodeNameToUse . '_' . $this->tableName . '_id';
|
|
908 |
$effectiveNodeName = $nodeName;
|
|
909 |
if($tableRenames[$nodeName] != null) {
|
|
910 |
$effectiveNodeName = $tableRenames[$nodeName];
|
|
911 |
}
|
896 |
912 |
$def .= " for childRef in self.$relatedName.all():\n".
|
897 |
|
" newEl = doc.createElement('$nodeName')\n".
|
|
913 |
" newEl = doc.createElement('$effectiveNodeName')\n".
|
898 |
914 |
" myNode.appendChild(childRef.exportVegX(newEl,doc))\n\n";
|
899 |
915 |
}
|
900 |
916 |
}
|
... | ... | |
904 |
920 |
}
|
905 |
921 |
|
906 |
922 |
public function makeExportDummyDataFunction() {
|
|
923 |
global $tableRenames;
|
907 |
924 |
#Slightly different if there are no members
|
908 |
925 |
if(count($this->references) == 0 &&
|
909 |
926 |
count($this->members) == 0 &&
|
... | ... | |
974 |
991 |
(preg_match("/Complex one2Many/",$colDef) > 0 || preg_match("/_extend/",$colName) > 0) &&
|
975 |
992 |
preg_match("/_id/",$colName) == 0) {
|
976 |
993 |
if(preg_match("/_extend/",$colName) == 0) {
|
|
994 |
$effectiveColName = $tableRenames[$colName] == null ? $colName : $tableRenames[$colName];
|
977 |
995 |
$def .= " if '$matches[2]' not in usedObjectsStack:\n".
|
978 |
996 |
" usedObjectsStack.append('$matches[2]')\n".
|
979 |
|
" newEl = doc.createElement('$colName')\n".
|
|
997 |
" newEl = doc.createElement('$effectiveColName')\n".
|
980 |
998 |
" newElObj = $matches[2]()\n".
|
981 |
999 |
" myNode.appendChild(newElObj.exportDummyVegX(newEl,doc,usedObjectsStack))\n".
|
982 |
1000 |
" usedObjectsStack.pop()\n\n";
|
... | ... | |
989 |
1007 |
}
|
990 |
1008 |
}
|
991 |
1009 |
if(preg_match("/(ManyToManyField\(')([a-zA-Z]*)/",$colDef,$matches) > 0) {
|
|
1010 |
$effectiveColName = $tableRenames[$colName] == null ? $colName : $tableRenames[$colName];
|
992 |
1011 |
$def .= " if '$matches[2]' not in usedObjectsStack:\n".
|
993 |
1012 |
" usedObjectsStack.append('$matches[2]')\n".
|
994 |
|
" newEl = doc.createElement('$colName')\n".
|
|
1013 |
" newEl = doc.createElement('$effectiveColName')\n".
|
995 |
1014 |
" newElObj = $matches[2]()\n".
|
996 |
1015 |
" myNode.appendChild(newElObj.exportDummyVegX(newEl,doc,usedObjectsStack))\n".
|
997 |
1016 |
" usedObjectsStack.pop()\n\n";
|
... | ... | |
1008 |
1027 |
" myNode.setAttributeNode(childRef.exportDummyVegX(newEl,doc,usedObjectsStack))\n".
|
1009 |
1028 |
" usedObjectsStack.pop()\n\n";
|
1010 |
1029 |
} else {
|
|
1030 |
$effectiveNodeName = $tableRenames[$nodeName] == null ? $nodeName : $tableRenames[$nodeName];
|
1011 |
1031 |
$def .= " if '$colDef' not in usedObjectsStack:\n".
|
1012 |
1032 |
" usedObjectsStack.append('$colDef')\n\n".
|
1013 |
|
" newEl = doc.createElement('$nodeName')\n".
|
|
1033 |
" newEl = doc.createElement('$effectiveNodeName')\n".
|
1014 |
1034 |
" childRef = $colDef()\n".
|
1015 |
1035 |
" myNode.appendChild(childRef.exportDummyVegX(newEl,doc,usedObjectsStack))\n".
|
1016 |
1036 |
" usedObjectsStack.pop()\n\n";
|
Added ability to change the vegx node names to be different from the postgres table names.
This was the easiest way to change the postgres table names when the vegx names are
not useable for some reason. This requires that the node names be altered in the xsd
definition and then mapped back to the orginal node name in the types.php file.