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
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to