Finished up development of v5.0.0 of the plug-in. release-5.0.0

Wed, 21 Dec 2016 12:21:14 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 21 Dec 2016 12:21:14 +0100
changeset 83
b09e6a328c3d
parent 82
fc196e739797
child 84
ab47346c7358

Finished up development of v5.0.0 of the plug-in.

ChangeLog file | annotate | diff | comparison | revisions
PKGLIST file | annotate | diff | comparison | revisions
PluginDjango.e4p file | annotate | diff | comparison | revisions
PluginProjectDjango.py file | annotate | diff | comparison | revisions
PluginProjectDjango.zip file | annotate | diff | comparison | revisions
ProjectDjango/Documentation/source/Plugin_Project_Django.ProjectDjango.DjangoCheckOptionsDialog.html file | annotate | diff | comparison | revisions
ProjectDjango/Documentation/source/Plugin_Project_Django.ProjectDjango.DjangoMakeMigrationsDialog.html file | annotate | diff | comparison | revisions
ProjectDjango/Documentation/source/Plugin_Project_Django.ProjectDjango.DjangoMigrationSelectionDialog.html file | annotate | diff | comparison | revisions
ProjectDjango/Documentation/source/Plugin_Project_Django.ProjectDjango.DjangoMigrationsListDialog.html file | annotate | diff | comparison | revisions
ProjectDjango/Documentation/source/Plugin_Project_Django.ProjectDjango.DjangoSquashMigrationSelectionDialog.html file | annotate | diff | comparison | revisions
ProjectDjango/Documentation/source/Plugin_Project_Django.ProjectDjango.Project.html file | annotate | diff | comparison | revisions
ProjectDjango/Documentation/source/index-Plugin_Project_Django.ProjectDjango.html file | annotate | diff | comparison | revisions
--- a/ChangeLog	Wed Dec 21 12:19:31 2016 +0100
+++ b/ChangeLog	Wed Dec 21 12:21:14 2016 +0100
@@ -1,11 +1,13 @@
 ChangeLog
 ---------
-Version 4.2.0:
+Version 5.0.0:
 - bug fixes
 - adjustments for Django >= 1.9.0
 - added support for the various migration commands
 - added support for the check command
-- removed support for some very old commands (pre 1.5.0)
+- removed support for some very old commands (pre 1.8.0)
+- removed API files for versions < 1.8.0 and added ones for
+  versions >= 1.8.0
 
 Version 4.1.0:
 - some bug fixes
--- a/PKGLIST	Wed Dec 21 12:19:31 2016 +0100
+++ b/PKGLIST	Wed Dec 21 12:21:14 2016 +0100
@@ -1,31 +1,38 @@
 PluginProjectDjango.py
-ProjectDjango/APIs/django-1.0.4.api
-ProjectDjango/APIs/django-1.0.4.bas
-ProjectDjango/APIs/django-1.1.4.api
-ProjectDjango/APIs/django-1.1.4.bas
-ProjectDjango/APIs/django-1.3.7.api
-ProjectDjango/APIs/django-1.3.7.bas
-ProjectDjango/APIs/django-1.4.5.api
-ProjectDjango/APIs/django-1.4.5.bas
-ProjectDjango/APIs/django-1.5.0.api
-ProjectDjango/APIs/django-1.5.0.bas
+ProjectDjango/APIs/django-1.10.4.api
+ProjectDjango/APIs/django-1.10.4.bas
+ProjectDjango/APIs/django-1.8.17.api
+ProjectDjango/APIs/django-1.8.17.bas
+ProjectDjango/APIs/django-1.9.12.api
+ProjectDjango/APIs/django-1.9.12.bas
 ProjectDjango/ConfigurationPage/DjangoPage.py
 ProjectDjango/ConfigurationPage/DjangoPage.ui
 ProjectDjango/ConfigurationPage/__init__.py
+ProjectDjango/DjangoCheckOptionsDialog.py
+ProjectDjango/DjangoCheckOptionsDialog.ui
 ProjectDjango/DjangoDialog.py
 ProjectDjango/DjangoDialog.ui
 ProjectDjango/DjangoDumpdataDataDialog.py
 ProjectDjango/DjangoDumpdataDataDialog.ui
 ProjectDjango/DjangoLoaddataDataDialog.py
 ProjectDjango/DjangoLoaddataDataDialog.ui
+ProjectDjango/DjangoMakeMigrationsDialog.py
+ProjectDjango/DjangoMakeMigrationsDialog.ui
+ProjectDjango/DjangoMigrationSelectionDialog.py
+ProjectDjango/DjangoMigrationSelectionDialog.ui
+ProjectDjango/DjangoMigrationsListDialog.py
+ProjectDjango/DjangoMigrationsListDialog.ui
+ProjectDjango/DjangoSquashMigrationSelectionDialog.py
+ProjectDjango/DjangoSquashMigrationSelectionDialog.ui
 ProjectDjango/Documentation/LICENSE.GPL3
+ProjectDjango/Documentation/help/howto-debug.html
 ProjectDjango/Documentation/help/index.html
-ProjectDjango/Documentation/help/howto-debug.html
 ProjectDjango/Project.py
 ProjectDjango/__init__.py
 ProjectDjango/i18n/django_de.qm
 ProjectDjango/i18n/django_en.qm
 ProjectDjango/i18n/django_es.qm
 ProjectDjango/i18n/django_ru.qm
+ProjectDjango/icons/applied.png
 ProjectDjango/icons/django.png
 ProjectDjango/icons/django64.png
--- a/PluginDjango.e4p	Wed Dec 21 12:19:31 2016 +0100
+++ b/PluginDjango.e4p	Wed Dec 21 12:21:14 2016 +0100
@@ -230,14 +230,6 @@
               <bool>False</bool>
             </value>
             <key>
-              <string>sourceExtensions</string>
-            </key>
-            <value>
-              <list>
-                <string></string>
-              </list>
-            </value>
-            <key>
               <string>useRecursion</string>
             </key>
             <value>
--- a/PluginProjectDjango.py	Wed Dec 21 12:19:31 2016 +0100
+++ b/PluginProjectDjango.py	Wed Dec 21 12:21:14 2016 +0100
@@ -28,7 +28,7 @@
 author = "Detlev Offenbach <detlev@die-offenbachs.de>"
 autoactivate = True
 deactivateable = True
-version = "4.2.0"
+version = "5.0.0"
 className = "ProjectDjangoPlugin"
 packageName = "ProjectDjango"
 shortDescription = "Project support for Django projects."
@@ -237,6 +237,8 @@
         
         e5App().getObject("Project").projectAboutToBeCreated.connect(
             self.__object.startProjectOrApplication)
+        e5App().getObject("Project").newProject.connect(
+            self.__object.newProjectCreated)
         
         return None, True
     
@@ -262,6 +264,8 @@
         
         e5App().getObject("Project").projectAboutToBeCreated.disconnect(
             self.__object.startProjectOrApplication)
+        e5App().getObject("Project").newProject.disconnect(
+            self.__object.newProjectCreated)
         
         self.__e5project.unregisterProjectType("Django")
         
Binary file PluginProjectDjango.zip has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ProjectDjango/Documentation/source/Plugin_Project_Django.ProjectDjango.DjangoCheckOptionsDialog.html	Wed Dec 21 12:21:14 2016 +0100
@@ -0,0 +1,193 @@
+<!DOCTYPE html>
+<html><head>
+<title>Plugin_Project_Django.ProjectDjango.DjangoCheckOptionsDialog</title>
+<meta charset="UTF-8">
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body><a NAME="top" ID="top"></a>
+<h1>Plugin_Project_Django.ProjectDjango.DjangoCheckOptionsDialog</h1>
+<p>
+Module implementing a dialog to enter the options for a check operation.
+</p>
+<h3>Global Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+<table>
+<tr>
+<td><a href="#DjangoCheckOptionsDialog">DjangoCheckOptionsDialog</a></td>
+<td>Class implementing a dialog to enter the options for a check operation.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<hr /><hr />
+<a NAME="DjangoCheckOptionsDialog" ID="DjangoCheckOptionsDialog"></a>
+<h2>DjangoCheckOptionsDialog</h2>
+<p>
+    Class implementing a dialog to enter the options for a check operation.
+</p>
+<h3>Derived from</h3>
+QDialog, Ui_DjangoCheckOptionsDialog
+<h3>Class Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#DjangoCheckOptionsDialog.__init__">DjangoCheckOptionsDialog</a></td>
+<td>Constructor</td>
+</tr><tr>
+<td><a href="#DjangoCheckOptionsDialog.__moduleToPath">__moduleToPath</a></td>
+<td>Private method to convert a module name to an file path.</td>
+</tr><tr>
+<td><a href="#DjangoCheckOptionsDialog.__pathToModule">__pathToModule</a></td>
+<td>Private method to convert a file path including a .py extension to a module name.</td>
+</tr><tr>
+<td><a href="#DjangoCheckOptionsDialog.__populateTagsList">__populateTagsList</a></td>
+<td>Private slot to populate the tags list.</td>
+</tr><tr>
+<td><a href="#DjangoCheckOptionsDialog.getData">getData</a></td>
+<td>Public method to get the options for the check operation.</td>
+</tr><tr>
+<td><a href="#DjangoCheckOptionsDialog.on_deployCheckBox_toggled">on_deployCheckBox_toggled</a></td>
+<td>Private slot handling a change of the deploy check box.</td>
+</tr><tr>
+<td><a href="#DjangoCheckOptionsDialog.on_settingsFileButton_clicked">on_settingsFileButton_clicked</a></td>
+<td>Private slot to select a settings file via a file selection dialog.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="DjangoCheckOptionsDialog.__init__" ID="DjangoCheckOptionsDialog.__init__"></a>
+<h4>DjangoCheckOptionsDialog (Constructor)</h4>
+<b>DjangoCheckOptionsDialog</b>(<i>python, path, apps, deployMode, parent=None</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>python</i> (str)</dt>
+<dd>
+path of the Python executable
+</dd><dt><i>path</i> (str)</dt>
+<dd>
+site path to run the manage.py script with
+</dd><dt><i>apps</i> (list of str)</dt>
+<dd>
+list of recently used application strings
+</dd><dt><i>deployMode</i> (bool)</dt>
+<dd>
+flag indicating to activate the deployment mode
+</dd><dt><i>parent</i> (QWidget)</dt>
+<dd>
+reference to the parent widget
+</dd>
+</dl><a NAME="DjangoCheckOptionsDialog.__moduleToPath" ID="DjangoCheckOptionsDialog.__moduleToPath"></a>
+<h4>DjangoCheckOptionsDialog.__moduleToPath</h4>
+<b>__moduleToPath</b>(<i>moduleName</i>)
+<p>
+        Private method to convert a module name to an file path.
+</p><dl>
+<dt><i>moduleName</i> (str)</dt>
+<dd>
+module name to be converted
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+file path
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
+</dl><a NAME="DjangoCheckOptionsDialog.__pathToModule" ID="DjangoCheckOptionsDialog.__pathToModule"></a>
+<h4>DjangoCheckOptionsDialog.__pathToModule</h4>
+<b>__pathToModule</b>(<i>path</i>)
+<p>
+        Private method to convert a file path including a .py extension to a
+        module name.
+</p><dl>
+<dt><i>path</i> (str)</dt>
+<dd>
+file path to be converted
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+module name
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
+</dl><a NAME="DjangoCheckOptionsDialog.__populateTagsList" ID="DjangoCheckOptionsDialog.__populateTagsList"></a>
+<h4>DjangoCheckOptionsDialog.__populateTagsList</h4>
+<b>__populateTagsList</b>(<i>deployMode</i>)
+<p>
+        Private slot to populate the tags list.
+</p><dl>
+<dt><i>deployMode</i> (bool)</dt>
+<dd>
+flag indicating the deployment mode
+</dd>
+</dl><a NAME="DjangoCheckOptionsDialog.getData" ID="DjangoCheckOptionsDialog.getData"></a>
+<h4>DjangoCheckOptionsDialog.getData</h4>
+<b>getData</b>(<i></i>)
+<p>
+        Public method to get the options for the check operation.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+tuple containing the deployment flag, list of selected tags,
+            applications string and the settings file
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+tuple of bool, list of str, str and str
+</dd>
+</dl><a NAME="DjangoCheckOptionsDialog.on_deployCheckBox_toggled" ID="DjangoCheckOptionsDialog.on_deployCheckBox_toggled"></a>
+<h4>DjangoCheckOptionsDialog.on_deployCheckBox_toggled</h4>
+<b>on_deployCheckBox_toggled</b>(<i>checked</i>)
+<p>
+        Private slot handling a change of the deploy check box.
+</p><dl>
+<dt><i>checked</i> (bool)</dt>
+<dd>
+state of the check box
+</dd>
+</dl><a NAME="DjangoCheckOptionsDialog.on_settingsFileButton_clicked" ID="DjangoCheckOptionsDialog.on_settingsFileButton_clicked"></a>
+<h4>DjangoCheckOptionsDialog.on_settingsFileButton_clicked</h4>
+<b>on_settingsFileButton_clicked</b>(<i></i>)
+<p>
+        Private slot to select a settings file via a file selection dialog.
+</p>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ProjectDjango/Documentation/source/Plugin_Project_Django.ProjectDjango.DjangoMakeMigrationsDialog.html	Wed Dec 21 12:21:14 2016 +0100
@@ -0,0 +1,103 @@
+<!DOCTYPE html>
+<html><head>
+<title>Plugin_Project_Django.ProjectDjango.DjangoMakeMigrationsDialog</title>
+<meta charset="UTF-8">
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body><a NAME="top" ID="top"></a>
+<h1>Plugin_Project_Django.ProjectDjango.DjangoMakeMigrationsDialog</h1>
+<p>
+Module implementing a dialog to enter the data needed to make migrations.
+</p>
+<h3>Global Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+<table>
+<tr>
+<td><a href="#DjangoMakeMigrationsDialog">DjangoMakeMigrationsDialog</a></td>
+<td>Class implementing a dialog to enter the data needed to make migrations.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<hr /><hr />
+<a NAME="DjangoMakeMigrationsDialog" ID="DjangoMakeMigrationsDialog"></a>
+<h2>DjangoMakeMigrationsDialog</h2>
+<p>
+    Class implementing a dialog to enter the data needed to make migrations.
+</p>
+<h3>Derived from</h3>
+QDialog, Ui_DjangoMakeMigrationsDialog
+<h3>Class Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#DjangoMakeMigrationsDialog.__init__">DjangoMakeMigrationsDialog</a></td>
+<td>Constructor</td>
+</tr><tr>
+<td><a href="#DjangoMakeMigrationsDialog.getData">getData</a></td>
+<td>Public method to get the data for the migration.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="DjangoMakeMigrationsDialog.__init__" ID="DjangoMakeMigrationsDialog.__init__"></a>
+<h4>DjangoMakeMigrationsDialog (Constructor)</h4>
+<b>DjangoMakeMigrationsDialog</b>(<i>recentApps, parent=None</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>recentApps</i> (list of str)</dt>
+<dd>
+list of recently entered applications
+</dd><dt><i>parent</i> (QWidget)</dt>
+<dd>
+reference to the parent widget
+</dd>
+</dl><a NAME="DjangoMakeMigrationsDialog.getData" ID="DjangoMakeMigrationsDialog.getData"></a>
+<h4>DjangoMakeMigrationsDialog.getData</h4>
+<b>getData</b>(<i></i>)
+<p>
+        Public method to get the data for the migration.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+tuple containing the application names, a migration name
+            and the dry-run flag
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+tuple of two str and a bool
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ProjectDjango/Documentation/source/Plugin_Project_Django.ProjectDjango.DjangoMigrationSelectionDialog.html	Wed Dec 21 12:21:14 2016 +0100
@@ -0,0 +1,119 @@
+<!DOCTYPE html>
+<html><head>
+<title>Plugin_Project_Django.ProjectDjango.DjangoMigrationSelectionDialog</title>
+<meta charset="UTF-8">
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body><a NAME="top" ID="top"></a>
+<h1>Plugin_Project_Django.ProjectDjango.DjangoMigrationSelectionDialog</h1>
+<p>
+Module implementing a dialog to select an application and migration.
+</p>
+<h3>Global Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+<table>
+<tr>
+<td><a href="#DjangoMigrationSelectionDialog">DjangoMigrationSelectionDialog</a></td>
+<td>Class implementing a dialog to select an application and migration.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<hr /><hr />
+<a NAME="DjangoMigrationSelectionDialog" ID="DjangoMigrationSelectionDialog"></a>
+<h2>DjangoMigrationSelectionDialog</h2>
+<p>
+    Class implementing a dialog to select an application and migration.
+</p>
+<h3>Derived from</h3>
+QDialog, Ui_DjangoMigrationSelectionDialog
+<h3>Class Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#DjangoMigrationSelectionDialog.__init__">DjangoMigrationSelectionDialog</a></td>
+<td>Constructor</td>
+</tr><tr>
+<td><a href="#DjangoMigrationSelectionDialog.getData">getData</a></td>
+<td>Public method to get the selected data.</td>
+</tr><tr>
+<td><a href="#DjangoMigrationSelectionDialog.on_applicationComboBox_activated">on_applicationComboBox_activated</a></td>
+<td>Private slot to update the migrations combo box.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="DjangoMigrationSelectionDialog.__init__" ID="DjangoMigrationSelectionDialog.__init__"></a>
+<h4>DjangoMigrationSelectionDialog (Constructor)</h4>
+<b>DjangoMigrationSelectionDialog</b>(<i>migrations, migrationRequired=False, parent=None</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>migrations</i> (dict)</dt>
+<dd>
+dictionary containing the available migrations
+</dd><dt><i>migrationRequired</i> (bool)</dt>
+<dd>
+flag indicating that a migration must be
+            selected
+</dd><dt><i>parent</i> (QWidget)</dt>
+<dd>
+reference to the parent widget
+</dd>
+</dl><a NAME="DjangoMigrationSelectionDialog.getData" ID="DjangoMigrationSelectionDialog.getData"></a>
+<h4>DjangoMigrationSelectionDialog.getData</h4>
+<b>getData</b>(<i></i>)
+<p>
+        Public method to get the selected data.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+tuple containing the selected application name and migration
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+tuple of two str
+</dd>
+</dl><a NAME="DjangoMigrationSelectionDialog.on_applicationComboBox_activated" ID="DjangoMigrationSelectionDialog.on_applicationComboBox_activated"></a>
+<h4>DjangoMigrationSelectionDialog.on_applicationComboBox_activated</h4>
+<b>on_applicationComboBox_activated</b>(<i>app</i>)
+<p>
+        Private slot to update the migrations combo box.
+</p><dl>
+<dt><i>app</i> (str)</dt>
+<dd>
+name of the selected application
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ProjectDjango/Documentation/source/Plugin_Project_Django.ProjectDjango.DjangoMigrationsListDialog.html	Wed Dec 21 12:21:14 2016 +0100
@@ -0,0 +1,260 @@
+<!DOCTYPE html>
+<html><head>
+<title>Plugin_Project_Django.ProjectDjango.DjangoMigrationsListDialog</title>
+<meta charset="UTF-8">
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body><a NAME="top" ID="top"></a>
+<h1>Plugin_Project_Django.ProjectDjango.DjangoMigrationsListDialog</h1>
+<p>
+Module implementing a dialog show a list of all available migrations.
+</p>
+<h3>Global Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+<table>
+<tr>
+<td><a href="#DjangoMigrationsListDialog">DjangoMigrationsListDialog</a></td>
+<td>Class implementing a dialog show a list of all available migrations.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<hr /><hr />
+<a NAME="DjangoMigrationsListDialog" ID="DjangoMigrationsListDialog"></a>
+<h2>DjangoMigrationsListDialog</h2>
+<p>
+    Class implementing a dialog show a list of all available migrations.
+</p>
+<h3>Derived from</h3>
+QDialog, Ui_DjangoMigrationsListDialog
+<h3>Class Attributes</h3>
+<table>
+<tr><td>MigrationsListMode</td></tr><tr><td>MigrationsPlanMode</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#DjangoMigrationsListDialog.__init__">DjangoMigrationsListDialog</a></td>
+<td>Constructor</td>
+</tr><tr>
+<td><a href="#DjangoMigrationsListDialog.__applyAllMigrations">__applyAllMigrations</a></td>
+<td>Private slot to apply all migrations.</td>
+</tr><tr>
+<td><a href="#DjangoMigrationsListDialog.__applyMigration">__applyMigration</a></td>
+<td>Private slot to apply the selected migrations.</td>
+</tr><tr>
+<td><a href="#DjangoMigrationsListDialog.__createListItem">__createListItem</a></td>
+<td>Private method to create an item for list mode.</td>
+</tr><tr>
+<td><a href="#DjangoMigrationsListDialog.__createPlanItem">__createPlanItem</a></td>
+<td>Private method to create an item for plan mode.</td>
+</tr><tr>
+<td><a href="#DjangoMigrationsListDialog.__finish">__finish</a></td>
+<td>Private slot called when the process finished or the user pressed the button.</td>
+</tr><tr>
+<td><a href="#DjangoMigrationsListDialog.__makeMigrations">__makeMigrations</a></td>
+<td>Private slot to make migrations for the selected apps.</td>
+</tr><tr>
+<td><a href="#DjangoMigrationsListDialog.__procFinished">__procFinished</a></td>
+<td>Private slot connected to the finished signal.</td>
+</tr><tr>
+<td><a href="#DjangoMigrationsListDialog.__readStderr">__readStderr</a></td>
+<td>Private slot to handle the readyReadStderr signal.</td>
+</tr><tr>
+<td><a href="#DjangoMigrationsListDialog.__readStdout">__readStdout</a></td>
+<td>Private slot to handle the readyReadStdout signal.</td>
+</tr><tr>
+<td><a href="#DjangoMigrationsListDialog.__resizeColumns">__resizeColumns</a></td>
+<td>Private method to resize the list columns.</td>
+</tr><tr>
+<td><a href="#DjangoMigrationsListDialog.__unapplyMigration">__unapplyMigration</a></td>
+<td>Private slot to unapply the selected migrations.</td>
+</tr><tr>
+<td><a href="#DjangoMigrationsListDialog.on_buttonBox_clicked">on_buttonBox_clicked</a></td>
+<td>Private slot called by a button of the button box clicked.</td>
+</tr><tr>
+<td><a href="#DjangoMigrationsListDialog.on_migrationsList_customContextMenuRequested">on_migrationsList_customContextMenuRequested</a></td>
+<td>Private slot to show the context menu.</td>
+</tr><tr>
+<td><a href="#DjangoMigrationsListDialog.on_refreshButton_clicked">on_refreshButton_clicked</a></td>
+<td>Private slot to refresh the log.</td>
+</tr><tr>
+<td><a href="#DjangoMigrationsListDialog.start">start</a></td>
+<td>Public slot used to start the process.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="DjangoMigrationsListDialog.__init__" ID="DjangoMigrationsListDialog.__init__"></a>
+<h4>DjangoMigrationsListDialog (Constructor)</h4>
+<b>DjangoMigrationsListDialog</b>(<i>mode, django, parent=None</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>mode</i> (str)</dt>
+<dd>
+mode of the dialog
+</dd><dt><i>django</i> (Project)</dt>
+<dd>
+reference to the Django project object
+</dd><dt><i>parent</i> (QWidget)</dt>
+<dd>
+reference to the parent widget
+</dd>
+</dl><a NAME="DjangoMigrationsListDialog.__applyAllMigrations" ID="DjangoMigrationsListDialog.__applyAllMigrations"></a>
+<h4>DjangoMigrationsListDialog.__applyAllMigrations</h4>
+<b>__applyAllMigrations</b>(<i></i>)
+<p>
+        Private slot to apply all migrations.
+</p><a NAME="DjangoMigrationsListDialog.__applyMigration" ID="DjangoMigrationsListDialog.__applyMigration"></a>
+<h4>DjangoMigrationsListDialog.__applyMigration</h4>
+<b>__applyMigration</b>(<i></i>)
+<p>
+        Private slot to apply the selected migrations.
+</p><a NAME="DjangoMigrationsListDialog.__createListItem" ID="DjangoMigrationsListDialog.__createListItem"></a>
+<h4>DjangoMigrationsListDialog.__createListItem</h4>
+<b>__createListItem</b>(<i>line</i>)
+<p>
+        Private method to create an item for list mode.
+</p><dl>
+<dt><i>line</i> (str)</dt>
+<dd>
+line of text
+</dd>
+</dl><a NAME="DjangoMigrationsListDialog.__createPlanItem" ID="DjangoMigrationsListDialog.__createPlanItem"></a>
+<h4>DjangoMigrationsListDialog.__createPlanItem</h4>
+<b>__createPlanItem</b>(<i>line</i>)
+<p>
+        Private method to create an item for plan mode.
+</p><dl>
+<dt><i>line</i> (str)</dt>
+<dd>
+line of text
+</dd>
+</dl><a NAME="DjangoMigrationsListDialog.__finish" ID="DjangoMigrationsListDialog.__finish"></a>
+<h4>DjangoMigrationsListDialog.__finish</h4>
+<b>__finish</b>(<i></i>)
+<p>
+        Private slot called when the process finished or the user pressed the
+        button.
+</p><a NAME="DjangoMigrationsListDialog.__makeMigrations" ID="DjangoMigrationsListDialog.__makeMigrations"></a>
+<h4>DjangoMigrationsListDialog.__makeMigrations</h4>
+<b>__makeMigrations</b>(<i>dryRun=False</i>)
+<p>
+        Private slot to make migrations for the selected apps.
+</p><dl>
+<dt><i>dryRun</i> (bool)</dt>
+<dd>
+dlag indicating a dry-run
+</dd>
+</dl><a NAME="DjangoMigrationsListDialog.__procFinished" ID="DjangoMigrationsListDialog.__procFinished"></a>
+<h4>DjangoMigrationsListDialog.__procFinished</h4>
+<b>__procFinished</b>(<i>exitCode, exitStatus</i>)
+<p>
+        Private slot connected to the finished signal.
+</p><dl>
+<dt><i>exitCode</i></dt>
+<dd>
+exit code of the process (integer)
+</dd><dt><i>exitStatus</i></dt>
+<dd>
+exit status of the process (QProcess.ExitStatus)
+</dd>
+</dl><a NAME="DjangoMigrationsListDialog.__readStderr" ID="DjangoMigrationsListDialog.__readStderr"></a>
+<h4>DjangoMigrationsListDialog.__readStderr</h4>
+<b>__readStderr</b>(<i></i>)
+<p>
+        Private slot to handle the readyReadStderr signal.
+</p><p>
+        It reads the error output of the process and inserts it into the
+        error pane.
+</p><a NAME="DjangoMigrationsListDialog.__readStdout" ID="DjangoMigrationsListDialog.__readStdout"></a>
+<h4>DjangoMigrationsListDialog.__readStdout</h4>
+<b>__readStdout</b>(<i></i>)
+<p>
+        Private slot to handle the readyReadStdout signal.
+</p><p>
+        It reads the output of the process, formats it and inserts it into
+        the contents pane.
+</p><a NAME="DjangoMigrationsListDialog.__resizeColumns" ID="DjangoMigrationsListDialog.__resizeColumns"></a>
+<h4>DjangoMigrationsListDialog.__resizeColumns</h4>
+<b>__resizeColumns</b>(<i></i>)
+<p>
+        Private method to resize the list columns.
+</p><a NAME="DjangoMigrationsListDialog.__unapplyMigration" ID="DjangoMigrationsListDialog.__unapplyMigration"></a>
+<h4>DjangoMigrationsListDialog.__unapplyMigration</h4>
+<b>__unapplyMigration</b>(<i></i>)
+<p>
+        Private slot to unapply the selected migrations.
+</p><a NAME="DjangoMigrationsListDialog.on_buttonBox_clicked" ID="DjangoMigrationsListDialog.on_buttonBox_clicked"></a>
+<h4>DjangoMigrationsListDialog.on_buttonBox_clicked</h4>
+<b>on_buttonBox_clicked</b>(<i>button</i>)
+<p>
+        Private slot called by a button of the button box clicked.
+</p><dl>
+<dt><i>button</i> (QAbstractButton)</dt>
+<dd>
+button that was clicked
+</dd>
+</dl><a NAME="DjangoMigrationsListDialog.on_migrationsList_customContextMenuRequested" ID="DjangoMigrationsListDialog.on_migrationsList_customContextMenuRequested"></a>
+<h4>DjangoMigrationsListDialog.on_migrationsList_customContextMenuRequested</h4>
+<b>on_migrationsList_customContextMenuRequested</b>(<i>pos</i>)
+<p>
+        Private slot to show the context menu.
+</p><dl>
+<dt><i>pos</i> (QPoint)</dt>
+<dd>
+position the context menu was requested at
+</dd>
+</dl><a NAME="DjangoMigrationsListDialog.on_refreshButton_clicked" ID="DjangoMigrationsListDialog.on_refreshButton_clicked"></a>
+<h4>DjangoMigrationsListDialog.on_refreshButton_clicked</h4>
+<b>on_refreshButton_clicked</b>(<i></i>)
+<p>
+        Private slot to refresh the log.
+</p><a NAME="DjangoMigrationsListDialog.start" ID="DjangoMigrationsListDialog.start"></a>
+<h4>DjangoMigrationsListDialog.start</h4>
+<b>start</b>(<i>pythonExecutable, sitePath</i>)
+<p>
+        Public slot used to start the process.
+</p><dl>
+<dt><i>pythonExecutable</i> (str)</dt>
+<dd>
+Python executable to be used
+</dd><dt><i>sitePath</i> (str)</dt>
+<dd>
+path of the site
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating a successful start of the process (boolean)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ProjectDjango/Documentation/source/Plugin_Project_Django.ProjectDjango.DjangoSquashMigrationSelectionDialog.html	Wed Dec 21 12:21:14 2016 +0100
@@ -0,0 +1,140 @@
+<!DOCTYPE html>
+<html><head>
+<title>Plugin_Project_Django.ProjectDjango.DjangoSquashMigrationSelectionDialog</title>
+<meta charset="UTF-8">
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body><a NAME="top" ID="top"></a>
+<h1>Plugin_Project_Django.ProjectDjango.DjangoSquashMigrationSelectionDialog</h1>
+<p>
+Module implementing a dialog to enter data needed to squash migrations.
+</p>
+<h3>Global Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+<table>
+<tr>
+<td><a href="#DjangoSquashMigrationSelectionDialog">DjangoSquashMigrationSelectionDialog</a></td>
+<td>Class implementing a dialog to enter data needed to squash migrations.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<hr /><hr />
+<a NAME="DjangoSquashMigrationSelectionDialog" ID="DjangoSquashMigrationSelectionDialog"></a>
+<h2>DjangoSquashMigrationSelectionDialog</h2>
+<p>
+    Class implementing a dialog to enter data needed to squash migrations.
+</p>
+<h3>Derived from</h3>
+QDialog, Ui_DjangoSquashMigrationSelectionDialog
+<h3>Class Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#DjangoSquashMigrationSelectionDialog.__init__">DjangoSquashMigrationSelectionDialog</a></td>
+<td>Constructor</td>
+</tr><tr>
+<td><a href="#DjangoSquashMigrationSelectionDialog.__updateOkButton">__updateOkButton</a></td>
+<td>Private slot to set the enabled state of the OK button.</td>
+</tr><tr>
+<td><a href="#DjangoSquashMigrationSelectionDialog.getData">getData</a></td>
+<td>Public method to retrieve the data entered by the user.</td>
+</tr><tr>
+<td><a href="#DjangoSquashMigrationSelectionDialog.on_applicationComboBox_activated">on_applicationComboBox_activated</a></td>
+<td>Private slot to update the migrations combo boxes.</td>
+</tr><tr>
+<td><a href="#DjangoSquashMigrationSelectionDialog.on_endMigrationComboBox_activated">on_endMigrationComboBox_activated</a></td>
+<td>Private slot handling the selection of a migration.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="DjangoSquashMigrationSelectionDialog.__init__" ID="DjangoSquashMigrationSelectionDialog.__init__"></a>
+<h4>DjangoSquashMigrationSelectionDialog (Constructor)</h4>
+<b>DjangoSquashMigrationSelectionDialog</b>(<i>migrations, showStart, parent=None</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>migrations</i> (dict)</dt>
+<dd>
+dictionary containing the available migrations
+</dd><dt><i>showStart</i> (bool)</dt>
+<dd>
+flag indicating to show the start migrations
+</dd><dt><i>parent</i> (QWidget)</dt>
+<dd>
+reference to the parent widget
+</dd>
+</dl><a NAME="DjangoSquashMigrationSelectionDialog.__updateOkButton" ID="DjangoSquashMigrationSelectionDialog.__updateOkButton"></a>
+<h4>DjangoSquashMigrationSelectionDialog.__updateOkButton</h4>
+<b>__updateOkButton</b>(<i></i>)
+<p>
+        Private slot to set the enabled state of the OK button.
+</p><a NAME="DjangoSquashMigrationSelectionDialog.getData" ID="DjangoSquashMigrationSelectionDialog.getData"></a>
+<h4>DjangoSquashMigrationSelectionDialog.getData</h4>
+<b>getData</b>(<i></i>)
+<p>
+        Public method to retrieve the data entered by the user.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+tuple containing the selected app, the start migration,
+            the end migration and a flag indicating no optimization is wanted
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+tuple of three str and a bool
+</dd>
+</dl><a NAME="DjangoSquashMigrationSelectionDialog.on_applicationComboBox_activated" ID="DjangoSquashMigrationSelectionDialog.on_applicationComboBox_activated"></a>
+<h4>DjangoSquashMigrationSelectionDialog.on_applicationComboBox_activated</h4>
+<b>on_applicationComboBox_activated</b>(<i>app</i>)
+<p>
+        Private slot to update the migrations combo boxes.
+</p><dl>
+<dt><i>app</i> (str)</dt>
+<dd>
+name of the selected application
+</dd>
+</dl><a NAME="DjangoSquashMigrationSelectionDialog.on_endMigrationComboBox_activated" ID="DjangoSquashMigrationSelectionDialog.on_endMigrationComboBox_activated"></a>
+<h4>DjangoSquashMigrationSelectionDialog.on_endMigrationComboBox_activated</h4>
+<b>on_endMigrationComboBox_activated</b>(<i>migration</i>)
+<p>
+        Private slot handling the selection of a migration.
+</p><dl>
+<dt><i>migration</i> (str)</dt>
+<dd>
+name of the selected migration
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- a/ProjectDjango/Documentation/source/Plugin_Project_Django.ProjectDjango.Project.html	Wed Dec 21 12:19:31 2016 +0100
+++ b/ProjectDjango/Documentation/source/Plugin_Project_Django.ProjectDjango.Project.html	Wed Dec 21 12:21:14 2016 +0100
@@ -92,12 +92,18 @@
 <td><a href="#Project.__init__">Project</a></td>
 <td>Constructor</td>
 </tr><tr>
+<td><a href="#Project.__adjustWorkingDirectory">__adjustWorkingDirectory</a></td>
+<td>Private method to adjust the working directory in the arguments list.</td>
+</tr><tr>
+<td><a href="#Project.__applyAllMigrations">__applyAllMigrations</a></td>
+<td>Private slot to apply all migrations.</td>
+</tr><tr>
+<td><a href="#Project.__applySelectedMigrations">__applySelectedMigrations</a></td>
+<td>Private slot to apply selected migrations of a selected app.</td>
+</tr><tr>
 <td><a href="#Project.__changePassword">__changePassword</a></td>
 <td>Private slot to change the password of a user.</td>
 </tr><tr>
-<td><a href="#Project.__cleanup">__cleanup</a></td>
-<td>Private slot to clean out old data from the database.</td>
-</tr><tr>
 <td><a href="#Project.__clearSessions">__clearSessions</a></td>
 <td>Private slot to clear expired sessions.</td>
 </tr><tr>
@@ -131,18 +137,21 @@
 <td><a href="#Project.__databaseSqlCustom">__databaseSqlCustom</a></td>
 <td>Private slot to print the custom table modifying SQL statements for one or more applications.</td>
 </tr><tr>
+<td><a href="#Project.__databaseSqlDropIndexes">__databaseSqlDropIndexes</a></td>
+<td>Private slot to print the DROP INDEX SQL statements for one or more applications.</td>
+</tr><tr>
 <td><a href="#Project.__databaseSqlDropTables">__databaseSqlDropTables</a></td>
 <td>Private slot to print the DROP TABLE SQL statements for one or more applications.</td>
 </tr><tr>
 <td><a href="#Project.__databaseSqlFlushDatabase">__databaseSqlFlushDatabase</a></td>
 <td>Private slot to print a list of statements to return all database tables to their initial state.</td>
 </tr><tr>
+<td><a href="#Project.__databaseSqlMigrate">__databaseSqlMigrate</a></td>
+<td>Private slot to print the SQL statements for a migration of an application.</td>
+</tr><tr>
 <td><a href="#Project.__databaseSqlResetSequences">__databaseSqlResetSequences</a></td>
 <td>Private slot to print the SQL statements for resetting sequences for one or more applications.</td>
 </tr><tr>
-<td><a href="#Project.__databaseSynchronize">__databaseSynchronize</a></td>
-<td>Private slot to synchronize the database.</td>
-</tr><tr>
 <td><a href="#Project.__diffSettings">__diffSettings</a></td>
 <td>Private slot to show the changes made to the settings.py file.</td>
 </tr><tr>
@@ -170,6 +179,9 @@
 <td><a href="#Project.__getLocale">__getLocale</a></td>
 <td>Private method to extract the locale out of a file name.</td>
 </tr><tr>
+<td><a href="#Project.__getMigrations">__getMigrations</a></td>
+<td>Private method to get the available migrations.</td>
+</tr><tr>
 <td><a href="#Project.__getPythonExecutable">__getPythonExecutable</a></td>
 <td>Private method to build the Python command.</td>
 </tr><tr>
@@ -180,37 +192,43 @@
 <td>Private method to define the authorization actions.</td>
 </tr><tr>
 <td><a href="#Project.__initAuthorizationMenu">__initAuthorizationMenu</a></td>
-<td>Private slot to initialize the authorization menu.</td>
+<td>Private method to initialize the authorization menu.</td>
 </tr><tr>
 <td><a href="#Project.__initDatabaseActions">__initDatabaseActions</a></td>
 <td>Private method to define the database related actions.</td>
 </tr><tr>
 <td><a href="#Project.__initDatabaseMenu">__initDatabaseMenu</a></td>
-<td>Private slot to initialize the database menu.</td>
+<td>Private method to initialize the database menu.</td>
 </tr><tr>
 <td><a href="#Project.__initDatabaseSqlActions">__initDatabaseSqlActions</a></td>
 <td>Private method to define the database SQL related actions.</td>
 </tr><tr>
 <td><a href="#Project.__initDatabaseSqlMenu">__initDatabaseSqlMenu</a></td>
-<td>Private slot to initialize the database SQL submenu.</td>
+<td>Private method to initialize the database SQL submenu.</td>
+</tr><tr>
+<td><a href="#Project.__initMigrationActions">__initMigrationActions</a></td>
+<td>Private method to define the migration actions.</td>
+</tr><tr>
+<td><a href="#Project.__initMigrationsMenu">__initMigrationsMenu</a></td>
+<td>Private method to initialize the Migrations submenu.</td>
 </tr><tr>
 <td><a href="#Project.__initSessionActions">__initSessionActions</a></td>
 <td>Private method to define the session actions.</td>
 </tr><tr>
 <td><a href="#Project.__initSessionMenu">__initSessionMenu</a></td>
-<td>Private slot to initialize the authorization menu.</td>
+<td>Private method to initialize the authorization menu.</td>
 </tr><tr>
 <td><a href="#Project.__initTestingActions">__initTestingActions</a></td>
 <td>Private method to define the testing actions.</td>
 </tr><tr>
 <td><a href="#Project.__initTestingMenu">__initTestingMenu</a></td>
-<td>Private slot to initialize the testing menu.</td>
+<td>Private method to initialize the testing menu.</td>
 </tr><tr>
 <td><a href="#Project.__initToolsActions">__initToolsActions</a></td>
 <td>Private method to define the tool actions.</td>
 </tr><tr>
 <td><a href="#Project.__initToolsMenu">__initToolsMenu</a></td>
-<td>Private slot to initialize the tools menu.</td>
+<td>Private method to initialize the tools menu.</td>
 </tr><tr>
 <td><a href="#Project.__isSpawningConsole">__isSpawningConsole</a></td>
 <td>Private method to check, if the given console is a spawning console.</td>
@@ -221,9 +239,15 @@
 <td><a href="#Project.__loadRecentApplications">__loadRecentApplications</a></td>
 <td>Private method to load the recently used applications list.</td>
 </tr><tr>
+<td><a href="#Project.__makeMigrations">__makeMigrations</a></td>
+<td>Private slot to generate migrations for the Django project.</td>
+</tr><tr>
 <td><a href="#Project.__normalizeList">__normalizeList</a></td>
 <td>Private method to normalize a list of file names.</td>
 </tr><tr>
+<td><a href="#Project.__performCheck">__performCheck</a></td>
+<td>Private slot to inspect the project for common problems.</td>
+</tr><tr>
 <td><a href="#Project.__projectLanguageAdded">__projectLanguageAdded</a></td>
 <td>Private slot handling the addition of a new language.</td>
 </tr><tr>
@@ -260,6 +284,12 @@
 <td><a href="#Project.__showHelpIndex">__showHelpIndex</a></td>
 <td>Private slot to show the help index page.</td>
 </tr><tr>
+<td><a href="#Project.__showMigrationsList">__showMigrationsList</a></td>
+<td>Private slot to show the available migrations and their status.</td>
+</tr><tr>
+<td><a href="#Project.__showMigrationsPlan">__showMigrationsPlan</a></td>
+<td>Private slot to show the migrations plan.</td>
+</tr><tr>
 <td><a href="#Project.__site">__site</a></td>
 <td>Private method to get the name of the current site.</td>
 </tr><tr>
@@ -272,6 +302,9 @@
 <td><a href="#Project.__sqlCommand">__sqlCommand</a></td>
 <td>Private method to perform an SQL creation function.</td>
 </tr><tr>
+<td><a href="#Project.__squashMigrations">__squashMigrations</a></td>
+<td>Private slot to squash migrations.</td>
+</tr><tr>
 <td><a href="#Project.__startGlobalApplication">__startGlobalApplication</a></td>
 <td>Private slot to start a new global Django application.</td>
 </tr><tr>
@@ -284,8 +317,11 @@
 <td><a href="#Project.__testServerProcFinished">__testServerProcFinished</a></td>
 <td>Private slot connected to the finished signal of the test server.</td>
 </tr><tr>
-<td><a href="#Project.__validate">__validate</a></td>
-<td>Private slot to validate all installed models.</td>
+<td><a href="#Project.__unapplyMigrations">__unapplyMigrations</a></td>
+<td>Private slot to un-apply all migrations of an application.</td>
+</tr><tr>
+<td><a href="#Project.applyMigrations">applyMigrations</a></td>
+<td>Public slot to apply migrations.</td>
 </tr><tr>
 <td><a href="#Project.compileCatalogs">compileCatalogs</a></td>
 <td>Public method to compile the message catalogs.</td>
@@ -294,7 +330,10 @@
 <td>Public method to update the message catalogs.</td>
 </tr><tr>
 <td><a href="#Project.getDjangoVersion">getDjangoVersion</a></td>
-<td>Public method to get the Django version.</td>
+<td>Public method to get the Django version as a tuple.</td>
+</tr><tr>
+<td><a href="#Project.getDjangoVersionString">getDjangoVersionString</a></td>
+<td>Public method to get the Django version as a string.</td>
 </tr><tr>
 <td><a href="#Project.getMenu">getMenu</a></td>
 <td>Public method to get a reference to the requested menu.</td>
@@ -312,11 +351,17 @@
 <td>Public method to define the Django actions.</td>
 </tr><tr>
 <td><a href="#Project.initMenu">initMenu</a></td>
-<td>Public slot to initialize the Django menu.</td>
+<td>Public method to initialize the Django menu.</td>
+</tr><tr>
+<td><a href="#Project.makeMigrations">makeMigrations</a></td>
+<td>Public method to generate migrations.</td>
 </tr><tr>
 <td><a href="#Project.newForm">newForm</a></td>
 <td>Public method to create a new form.</td>
 </tr><tr>
+<td><a href="#Project.newProjectCreated">newProjectCreated</a></td>
+<td>Public slot to finish up the newly generated project.</td>
+</tr><tr>
 <td><a href="#Project.openPOEditor">openPOEditor</a></td>
 <td>Public method to edit the given file in an external .po editor.</td>
 </tr><tr>
@@ -371,16 +416,34 @@
 <dd>
 parent (QObject)
 </dd>
-</dl><a NAME="Project.__changePassword" ID="Project.__changePassword"></a>
+</dl><a NAME="Project.__adjustWorkingDirectory" ID="Project.__adjustWorkingDirectory"></a>
+<h4>Project.__adjustWorkingDirectory</h4>
+<b>__adjustWorkingDirectory</b>(<i>args, wd</i>)
+<p>
+        Private method to adjust the working directory in the arguments list.
+</p><dl>
+<dt><i>args</i> (list of str)</dt>
+<dd>
+list of arguments to be modified
+</dd><dt><i>wd</i> (str)</dt>
+<dd>
+working directory
+</dd>
+</dl><a NAME="Project.__applyAllMigrations" ID="Project.__applyAllMigrations"></a>
+<h4>Project.__applyAllMigrations</h4>
+<b>__applyAllMigrations</b>(<i></i>)
+<p>
+        Private slot to apply all migrations.
+</p><a NAME="Project.__applySelectedMigrations" ID="Project.__applySelectedMigrations"></a>
+<h4>Project.__applySelectedMigrations</h4>
+<b>__applySelectedMigrations</b>(<i></i>)
+<p>
+        Private slot to apply selected migrations of a selected app.
+</p><a NAME="Project.__changePassword" ID="Project.__changePassword"></a>
 <h4>Project.__changePassword</h4>
 <b>__changePassword</b>(<i></i>)
 <p>
         Private slot to change the password of a user.
-</p><a NAME="Project.__cleanup" ID="Project.__cleanup"></a>
-<h4>Project.__cleanup</h4>
-<b>__cleanup</b>(<i></i>)
-<p>
-        Private slot to clean out old data from the database.
 </p><a NAME="Project.__clearSessions" ID="Project.__clearSessions"></a>
 <h4>Project.__clearSessions</h4>
 <b>__clearSessions</b>(<i></i>)
@@ -456,47 +519,72 @@
 <p>
         Private slot to print the CREATE TABLE, custom SQL and
         CREATE INDEX SQL statements for one or more applications.
+</p><p>
+        Note: available before Django v1.9.0
 </p><a NAME="Project.__databaseSqlCreateIndexes" ID="Project.__databaseSqlCreateIndexes"></a>
 <h4>Project.__databaseSqlCreateIndexes</h4>
 <b>__databaseSqlCreateIndexes</b>(<i></i>)
 <p>
         Private slot to print the CREATE INDEX SQL statements for one
         or more applications.
+</p><p>
+        Note: available before Django v1.9.0
 </p><a NAME="Project.__databaseSqlCreateTables" ID="Project.__databaseSqlCreateTables"></a>
 <h4>Project.__databaseSqlCreateTables</h4>
 <b>__databaseSqlCreateTables</b>(<i></i>)
 <p>
         Private slot to print the CREATE TABLE SQL statements for one
         or more applications.
+</p><p>
+        Note: available before Django v1.9.0
 </p><a NAME="Project.__databaseSqlCustom" ID="Project.__databaseSqlCustom"></a>
 <h4>Project.__databaseSqlCustom</h4>
 <b>__databaseSqlCustom</b>(<i></i>)
 <p>
         Private slot to print the custom table modifying SQL statements
         for one or more applications.
+</p><p>
+        Note: available before Django v1.9.0
+</p><a NAME="Project.__databaseSqlDropIndexes" ID="Project.__databaseSqlDropIndexes"></a>
+<h4>Project.__databaseSqlDropIndexes</h4>
+<b>__databaseSqlDropIndexes</b>(<i></i>)
+<p>
+        Private slot to print the DROP INDEX SQL statements for one or
+        more applications.
+</p><p>
+        Note: available before Django v1.9.0
 </p><a NAME="Project.__databaseSqlDropTables" ID="Project.__databaseSqlDropTables"></a>
 <h4>Project.__databaseSqlDropTables</h4>
 <b>__databaseSqlDropTables</b>(<i></i>)
 <p>
         Private slot to print the DROP TABLE SQL statements for one or
         more applications.
+</p><p>
+        Note: available before Django v1.9.0
 </p><a NAME="Project.__databaseSqlFlushDatabase" ID="Project.__databaseSqlFlushDatabase"></a>
 <h4>Project.__databaseSqlFlushDatabase</h4>
 <b>__databaseSqlFlushDatabase</b>(<i></i>)
 <p>
         Private slot to print a list of statements to return all database
         tables to their initial state.
-</p><a NAME="Project.__databaseSqlResetSequences" ID="Project.__databaseSqlResetSequences"></a>
+</p><a NAME="Project.__databaseSqlMigrate" ID="Project.__databaseSqlMigrate"></a>
+<h4>Project.__databaseSqlMigrate</h4>
+<b>__databaseSqlMigrate</b>(<i>backwards=False</i>)
+<p>
+        Private slot to print the SQL statements for a migration of an
+        application.
+</p><dl>
+<dt><i>backwards</i> (bool)</dt>
+<dd>
+flag indicating to generate the SQL code to unapply
+            a migration
+</dd>
+</dl><a NAME="Project.__databaseSqlResetSequences" ID="Project.__databaseSqlResetSequences"></a>
 <h4>Project.__databaseSqlResetSequences</h4>
 <b>__databaseSqlResetSequences</b>(<i></i>)
 <p>
         Private slot to print the SQL statements for resetting sequences for
         one or more applications.
-</p><a NAME="Project.__databaseSynchronize" ID="Project.__databaseSynchronize"></a>
-<h4>Project.__databaseSynchronize</h4>
-<b>__databaseSynchronize</b>(<i></i>)
-<p>
-        Private slot to synchronize the database.
 </p><a NAME="Project.__diffSettings" ID="Project.__diffSettings"></a>
 <h4>Project.__diffSettings</h4>
 <b>__diffSettings</b>(<i></i>)
@@ -597,6 +685,22 @@
 <dd>
 extracted locale (string) or None
 </dd>
+</dl><a NAME="Project.__getMigrations" ID="Project.__getMigrations"></a>
+<h4>Project.__getMigrations</h4>
+<b>__getMigrations</b>(<i></i>)
+<p>
+        Private method to get the available migrations.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+dictionary containing the available migrations
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+dict with app name as key (str) and list of tuples of
+            applied indication (bool) and migration name (str) as value
+</dd>
 </dl><a NAME="Project.__getPythonExecutable" ID="Project.__getPythonExecutable"></a>
 <h4>Project.__getPythonExecutable</h4>
 <b>__getPythonExecutable</b>(<i></i>)
@@ -632,11 +736,16 @@
 <h4>Project.__initAuthorizationMenu</h4>
 <b>__initAuthorizationMenu</b>(<i></i>)
 <p>
-        Private slot to initialize the authorization menu.
+        Private method to initialize the authorization menu.
 </p><dl>
 <dt>Returns:</dt>
 <dd>
-the menu generated (QMenu)
+the menu generated
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+QMenu
 </dd>
 </dl><a NAME="Project.__initDatabaseActions" ID="Project.__initDatabaseActions"></a>
 <h4>Project.__initDatabaseActions</h4>
@@ -647,11 +756,16 @@
 <h4>Project.__initDatabaseMenu</h4>
 <b>__initDatabaseMenu</b>(<i></i>)
 <p>
-        Private slot to initialize the database menu.
+        Private method to initialize the database menu.
 </p><dl>
 <dt>Returns:</dt>
 <dd>
-the menu generated (QMenu)
+the menu generated
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+QMenu
 </dd>
 </dl><a NAME="Project.__initDatabaseSqlActions" ID="Project.__initDatabaseSqlActions"></a>
 <h4>Project.__initDatabaseSqlActions</h4>
@@ -662,11 +776,36 @@
 <h4>Project.__initDatabaseSqlMenu</h4>
 <b>__initDatabaseSqlMenu</b>(<i></i>)
 <p>
-        Private slot to initialize the database SQL submenu.
+        Private method to initialize the database SQL submenu.
 </p><dl>
 <dt>Returns:</dt>
 <dd>
-the menu generated (QMenu)
+the menu generated
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+QMenu
+</dd>
+</dl><a NAME="Project.__initMigrationActions" ID="Project.__initMigrationActions"></a>
+<h4>Project.__initMigrationActions</h4>
+<b>__initMigrationActions</b>(<i></i>)
+<p>
+        Private method to define the migration actions.
+</p><a NAME="Project.__initMigrationsMenu" ID="Project.__initMigrationsMenu"></a>
+<h4>Project.__initMigrationsMenu</h4>
+<b>__initMigrationsMenu</b>(<i></i>)
+<p>
+        Private method to initialize the Migrations submenu.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+the menu generated
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+QMenu
 </dd>
 </dl><a NAME="Project.__initSessionActions" ID="Project.__initSessionActions"></a>
 <h4>Project.__initSessionActions</h4>
@@ -677,11 +816,16 @@
 <h4>Project.__initSessionMenu</h4>
 <b>__initSessionMenu</b>(<i></i>)
 <p>
-        Private slot to initialize the authorization menu.
+        Private method to initialize the authorization menu.
 </p><dl>
 <dt>Returns:</dt>
 <dd>
-the menu generated (QMenu)
+the menu generated
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+QMenu
 </dd>
 </dl><a NAME="Project.__initTestingActions" ID="Project.__initTestingActions"></a>
 <h4>Project.__initTestingActions</h4>
@@ -692,11 +836,16 @@
 <h4>Project.__initTestingMenu</h4>
 <b>__initTestingMenu</b>(<i></i>)
 <p>
-        Private slot to initialize the testing menu.
+        Private method to initialize the testing menu.
 </p><dl>
 <dt>Returns:</dt>
 <dd>
-the menu generated (QMenu)
+the menu generated
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+QMenu
 </dd>
 </dl><a NAME="Project.__initToolsActions" ID="Project.__initToolsActions"></a>
 <h4>Project.__initToolsActions</h4>
@@ -707,11 +856,16 @@
 <h4>Project.__initToolsMenu</h4>
 <b>__initToolsMenu</b>(<i></i>)
 <p>
-        Private slot to initialize the tools menu.
+        Private method to initialize the tools menu.
 </p><dl>
 <dt>Returns:</dt>
 <dd>
-the menu generated (QMenu)
+the menu generated
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+QMenu
 </dd>
 </dl><a NAME="Project.__isSpawningConsole" ID="Project.__isSpawningConsole"></a>
 <h4>Project.__isSpawningConsole</h4>
@@ -740,6 +894,11 @@
 <b>__loadRecentApplications</b>(<i></i>)
 <p>
         Private method to load the recently used applications list.
+</p><a NAME="Project.__makeMigrations" ID="Project.__makeMigrations"></a>
+<h4>Project.__makeMigrations</h4>
+<b>__makeMigrations</b>(<i></i>)
+<p>
+        Private slot to generate migrations for the Django project.
 </p><a NAME="Project.__normalizeList" ID="Project.__normalizeList"></a>
 <h4>Project.__normalizeList</h4>
 <b>__normalizeList</b>(<i>filenames</i>)
@@ -755,7 +914,12 @@
 <dd>
 normalized file names (list of strings)
 </dd>
-</dl><a NAME="Project.__projectLanguageAdded" ID="Project.__projectLanguageAdded"></a>
+</dl><a NAME="Project.__performCheck" ID="Project.__performCheck"></a>
+<h4>Project.__performCheck</h4>
+<b>__performCheck</b>(<i></i>)
+<p>
+        Private slot to inspect the project for common problems.
+</p><a NAME="Project.__projectLanguageAdded" ID="Project.__projectLanguageAdded"></a>
 <h4>Project.__projectLanguageAdded</h4>
 <b>__projectLanguageAdded</b>(<i>code</i>)
 <p>
@@ -793,10 +957,15 @@
         fixtures.
 </p><a NAME="Project.__runTestSuite" ID="Project.__runTestSuite"></a>
 <h4>Project.__runTestSuite</h4>
-<b>__runTestSuite</b>(<i></i>)
+<b>__runTestSuite</b>(<i>deprecation=False</i>)
 <p>
         Private slot to run the test suite for applications or the whole site.
-</p><a NAME="Project.__saveRecentApplications" ID="Project.__saveRecentApplications"></a>
+</p><dl>
+<dt><i>deprecation</i> (bool)</dt>
+<dd>
+flag indicating to test for deprecation warnings
+</dd>
+</dl><a NAME="Project.__saveRecentApplications" ID="Project.__saveRecentApplications"></a>
 <h4>Project.__saveRecentApplications</h4>
 <b>__saveRecentApplications</b>(<i></i>)
 <p>
@@ -826,6 +995,16 @@
 <b>__showHelpIndex</b>(<i></i>)
 <p>
         Private slot to show the help index page.
+</p><a NAME="Project.__showMigrationsList" ID="Project.__showMigrationsList"></a>
+<h4>Project.__showMigrationsList</h4>
+<b>__showMigrationsList</b>(<i></i>)
+<p>
+        Private slot to show the available migrations and their status.
+</p><a NAME="Project.__showMigrationsPlan" ID="Project.__showMigrationsPlan"></a>
+<h4>Project.__showMigrationsPlan</h4>
+<b>__showMigrationsPlan</b>(<i></i>)
+<p>
+        Private slot to show the migrations plan.
 </p><a NAME="Project.__site" ID="Project.__site"></a>
 <h4>Project.__site</h4>
 <b>__site</b>(<i></i>)
@@ -888,7 +1067,12 @@
 flag indicating to request a list of applications
             to work on (boolean)
 </dd>
-</dl><a NAME="Project.__startGlobalApplication" ID="Project.__startGlobalApplication"></a>
+</dl><a NAME="Project.__squashMigrations" ID="Project.__squashMigrations"></a>
+<h4>Project.__squashMigrations</h4>
+<b>__squashMigrations</b>(<i></i>)
+<p>
+        Private slot to squash migrations.
+</p><a NAME="Project.__startGlobalApplication" ID="Project.__startGlobalApplication"></a>
 <h4>Project.__startGlobalApplication</h4>
 <b>__startGlobalApplication</b>(<i></i>)
 <p>
@@ -908,12 +1092,25 @@
 <b>__testServerProcFinished</b>(<i></i>)
 <p>
         Private slot connected to the finished signal of the test server.
-</p><a NAME="Project.__validate" ID="Project.__validate"></a>
-<h4>Project.__validate</h4>
-<b>__validate</b>(<i></i>)
+</p><a NAME="Project.__unapplyMigrations" ID="Project.__unapplyMigrations"></a>
+<h4>Project.__unapplyMigrations</h4>
+<b>__unapplyMigrations</b>(<i></i>)
+<p>
+        Private slot to un-apply all migrations of an application.
+</p><a NAME="Project.applyMigrations" ID="Project.applyMigrations"></a>
+<h4>Project.applyMigrations</h4>
+<b>applyMigrations</b>(<i>app=None, migration=None</i>)
 <p>
-        Private slot to validate all installed models.
-</p><a NAME="Project.compileCatalogs" ID="Project.compileCatalogs"></a>
+        Public slot to apply migrations.
+</p><dl>
+<dt><i>app</i> (str)</dt>
+<dd>
+name of an application to apply migrations for
+</dd><dt><i>migration</i> (str)</dt>
+<dd>
+name of a migration to update to
+</dd>
+</dl><a NAME="Project.compileCatalogs" ID="Project.compileCatalogs"></a>
 <h4>Project.compileCatalogs</h4>
 <b>compileCatalogs</b>(<i>filenames</i>)
 <p>
@@ -937,7 +1134,22 @@
 <h4>Project.getDjangoVersion</h4>
 <b>getDjangoVersion</b>(<i></i>)
 <p>
-        Public method to get the Django version.
+        Public method to get the Django version as a tuple.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+Django version
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+tuple of int
+</dd>
+</dl><a NAME="Project.getDjangoVersionString" ID="Project.getDjangoVersionString"></a>
+<h4>Project.getDjangoVersionString</h4>
+<b>getDjangoVersionString</b>(<i></i>)
+<p>
+        Public method to get the Django version as a string.
 </p><dl>
 <dt>Returns:</dt>
 <dd>
@@ -998,11 +1210,32 @@
 <h4>Project.initMenu</h4>
 <b>initMenu</b>(<i></i>)
 <p>
-        Public slot to initialize the Django menu.
+        Public method to initialize the Django menu.
 </p><dl>
 <dt>Returns:</dt>
 <dd>
-the menu generated (QMenu)
+the menu generated
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+QMenu
+</dd>
+</dl><a NAME="Project.makeMigrations" ID="Project.makeMigrations"></a>
+<h4>Project.makeMigrations</h4>
+<b>makeMigrations</b>(<i>apps, migration=None, dryRun=False</i>)
+<p>
+        Public method to generate migrations.
+</p><dl>
+<dt><i>apps</i> (list of str)</dt>
+<dd>
+list of application names to generate migrations for
+</dd><dt><i>migration</i> (str)</dt>
+<dd>
+name of the migration to generate
+</dd><dt><i>dryRun</i> (bool)</dt>
+<dd>
+flag indicating a dry run
 </dd>
 </dl><a NAME="Project.newForm" ID="Project.newForm"></a>
 <h4>Project.newForm</h4>
@@ -1014,7 +1247,12 @@
 <dd>
 full directory path for the new form file (string)
 </dd>
-</dl><a NAME="Project.openPOEditor" ID="Project.openPOEditor"></a>
+</dl><a NAME="Project.newProjectCreated" ID="Project.newProjectCreated"></a>
+<h4>Project.newProjectCreated</h4>
+<b>newProjectCreated</b>(<i></i>)
+<p>
+        Public slot to finish up the newly generated project.
+</p><a NAME="Project.openPOEditor" ID="Project.openPOEditor"></a>
 <h4>Project.openPOEditor</h4>
 <b>openPOEditor</b>(<i>poFile</i>)
 <p>
--- a/ProjectDjango/Documentation/source/index-Plugin_Project_Django.ProjectDjango.html	Wed Dec 21 12:19:31 2016 +0100
+++ b/ProjectDjango/Documentation/source/index-Plugin_Project_Django.ProjectDjango.html	Wed Dec 21 12:21:14 2016 +0100
@@ -35,6 +35,9 @@
 <h3>Modules</h3>
 <table>
 <tr>
+<td><a href="Plugin_Project_Django.ProjectDjango.DjangoCheckOptionsDialog.html">DjangoCheckOptionsDialog</a></td>
+<td>Module implementing a dialog to enter the options for a check operation.</td>
+</tr><tr>
 <td><a href="Plugin_Project_Django.ProjectDjango.DjangoDialog.html">DjangoDialog</a></td>
 <td>Module implementing a dialog starting a process and showing its output.</td>
 </tr><tr>
@@ -44,6 +47,18 @@
 <td><a href="Plugin_Project_Django.ProjectDjango.DjangoLoaddataDataDialog.html">DjangoLoaddataDataDialog</a></td>
 <td>Module implementing a dialog to enter the data for the 'loaddata' command.</td>
 </tr><tr>
+<td><a href="Plugin_Project_Django.ProjectDjango.DjangoMakeMigrationsDialog.html">DjangoMakeMigrationsDialog</a></td>
+<td>Module implementing a dialog to enter the data needed to make migrations.</td>
+</tr><tr>
+<td><a href="Plugin_Project_Django.ProjectDjango.DjangoMigrationSelectionDialog.html">DjangoMigrationSelectionDialog</a></td>
+<td>Module implementing a dialog to select an application and migration.</td>
+</tr><tr>
+<td><a href="Plugin_Project_Django.ProjectDjango.DjangoMigrationsListDialog.html">DjangoMigrationsListDialog</a></td>
+<td>Module implementing a dialog show a list of all available migrations.</td>
+</tr><tr>
+<td><a href="Plugin_Project_Django.ProjectDjango.DjangoSquashMigrationSelectionDialog.html">DjangoSquashMigrationSelectionDialog</a></td>
+<td>Module implementing a dialog to enter data needed to squash migrations.</td>
+</tr><tr>
 <td><a href="Plugin_Project_Django.ProjectDjango.Project.html">Project</a></td>
 <td>Module implementing the Django project support.</td>
 </tr>

eric ide

mercurial