How do we provide some kind of admin support/tools/procedures for the sales team?

We know they'll invent new scenarios. We know they'll want to save that configuration. With Django's admin utilities, we can do a "dumpdata" that preserves the interesting parts of the the database. That much is easy.

We can do a trivial kind of database reset for the sales folks. Django gives us the SQL reset script, and the "loaddata" utility.

There are two problems, however. First, this is command-line stuff, and we know that the sales folks can't be trusted with anything that isn't a double-clickable icon. Second, we have to keep some pristine copies in a place where they can't get accidentally overwritten.

The second problem is easy to solve. We can put some JSON fixtures in the SVN repository. They're easy to refresh in case of damage.

The first problem, however, is tougher.

To GUI to Not to GUI

A simple shell script of the form DUMP_TO somename is not going to get used. It requires too much work to manage the names because it's not visual. It isn't a GUI "Save As..." dialog box that shows existing files. And it's command-line stuff, which the sales folks object to as being too low-tech.

Clearly, a big-old desktop GUI is just what the doctor ordered.

And what about restores? If we write a fat-client GUI, we can easily have two operating modes: backup to a .JSON and restore from a .JSON. The cool thing is that we can show two lists of .JSON files -- the local ones, plus the golden copies tucked away in the SVN checkout directory.

Simplify

Here's my thought for simplification: skip the restore GUI.

The sales folks want a double-clickable icon for restore. We can easily do that by writing two things when we do the Django "dumpdata".

  1. The .JSON fixture.
  2. A .BAT file that does the restore.

The list of .BAT files becomes a simple menu of double-clickable icons that will restore the database to a known condition.