On Oct 15, 7:17 pm, coderb <[EMAIL PROTECTED]> wrote: > hi tim, thanks for the quick response. > > I will convert your bash commands to my (whisper) "windows" > equivalents to manually rename all instances. I have tools like > windows grep etc.. > Doing batch renames, search replaces etc .. should be fine, although > I'll be confirming before each change until I understand the process. > > as you mention it would depend on how I reference things and many > approaches are different, but maybe in a future release of django > we'll see something like: > cd projectdirectory > > manage.py renameapp oldname newname > > not that I'm complaining, I love django and thanks again for the > detailed response, a great help. > > On Oct 16, 12:40 am, Tim Chase <[EMAIL PROTECTED]> wrote: > > > > I've done some coding on the project and within myapp > > > > but now I want to rename myapp to a more appropriate name. > > > > of course I cant simply rename the generated application directory > > > name, I would also need to change all references to the myapp. > > > > So, then question is, do I need to do this all manually, or is there a > > > django function or easier way for me to easily rename an application > > > properly? > > > Short answer: not readily. > > > One detail you omit is what platform you're running on. Your > > *nix-like systems have some tools to make this a bit easier for > > you. It also depends on how interdependent your project and apps > > are on each other, as well as how you reference things > > > After backing up my project (well, checking into my revision > > control system, mercurial in the current case), I'd just do > > > bash$ cd /path/to/wherever > > bash$ find . -name '*.py' -exec sed -i.bak \ > > -e '/import/s/myapp/mynewapp/' \ > > -e 's/myapp\./mynewapp\./g' \ > > {} \; > > bash$ sed -i.bak 's/myapp/mynewapp/g' settings.py > > bash$ cd .. > > bash$ mv myapp mynewapp > > > which should catch most of the cases as well as create *.bak > > files for you to compare and/or restore if something went wrong. > > The "find+sed" should catch the following cases: > > > import myapp > > from myapp import foo, bar, baz > > myapp.Foo.whatever = myapp.SOME_VALUE > > > and the last sed call cleans up some of the additional instances > > of "myapp" in your settings.py file (a glorified search&replace). > > > This assumes you'll be rebuilding your database, as your tables > > are currently named things like "myapp_mymodel". Other caveats > > include direct app-model/table references in .extra() calls and > > places where you use the app-name in strings with no following > > period (like in the settings.py, thus the extra hand-treatment). > > > Additionally, if you follow the sage advice of James, and your > > "project" just consists of a settings.py and a base urls.py, > > you'll want to execute the above find+sed statement in your app > > directory, and the single sed statement in the project directory. > > > Those are at least a few of the gotchas that occur to me, but it > > should ease the process of renaming. > > > -tim
Also a nice IDE or proper text editor that refactors or has a find/ replace in multiple files/projects would make this easier. I have done this using TextMate in Mac, I know TextPad or Eclipse (with PyDev) would probably help with this. Of course the biggest thing is backing up, either through svn, git, etc, or just copying the directory. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---