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

Reply via email to