= Removing the magic: the cheat sheet = ''Work in progress.'' This document assumes a basic familiarity with [wiki:RemovingTheMagic Removing the magic] changes. It is designed to be used as a simple cheat sheet during a conversion process providing links to relevant parts [wiki:RemovingTheMagic Removing the magic] document. It is organized by functional areas: databases, settings, models, views, templates, and template tags. This document doesn't cover new functionality. == Pre-conversion == ''Optional (saves time):'' if your project doesn't have {{{manage.py}}} file in the project's directory, copy it from {{{django/conf/project_template/}}}. == Databases == Database changes are covered extensively in [wiki:RemovingTheMagic#Databasechangesyoullneedtomake Database changes you'll need to make]. Just execute appropriate SQL scripts. ''Optional (saves space):'' {{{package}}} column of {{{auth_permission}}} table is not used anymore. You can drop it by executing following SQL statement (works for MySQL): {{{ ALTER TABLE `auth_permission` DROP COLUMN `package`; }}} __Eugene's note__: after conversion I found that my permissions are screwed up. I regenerated them this way: * Delete a content of following tables (you can do it now): * {{{auth_group_permissions}}} * {{{auth_permissions}}} * {{{auth_user_user_permissions}}} * {{{django_content_type}}} * '''After you finished with code changes''', run {{{django-admin.py syncdb}}} or {{{manage.py syncdb}}}. '''Don't do it now!''' It repopulates the content of said tables properly, but an administrator has to reassign group and user permissions again in Admin. Obviously it can be a problem, if you have hundreds of users with arcane permissions. == Models == 1. If your applications still live in {{{yourproject/apps/}}} directory, you can move them up one level: move {{{yourproject/apps/yourapp/}}} to {{{yourproject/yourapp}}}. 1. [wiki:RemovingTheMagic#Modellocationchanged Relocate models] by moving content of files in your {{{yourapp/models/}}} directory to {{{yourapp/models.py}}} file. 1. If your models use {{{datetime}}} or {{{db}}} modules without exporting them directly, [wiki:RemovingTheMagic#Modelmethodsnolongerautomaticallyhaveaccesstodatetimeanddbmodules add import statements]. 1. [wiki:RemovingTheMagic#ModelclassandFieldclassesrenamed/relocated Relocate Model and Field classes]: use {{{django.db.models}}} instead of {{{django.core.meta}}}. 1. [wiki:RemovingTheMagic#MovedadminoptionstoclassAdmin Convert the META.admin member] to new inner {{{class Admin}}} of the model. Don't forget to remove all pesky commas at the end of lines. 1. [wiki:RemovingTheMagic#Changestomodelsyntax Remove from META] following parameters: {{{admin}}} (see the previous step), {{{module_name}}}, {{{exceptions}}}, {{{module_constants}}}, and {{{where_constraints}}}. If now your {{{class META}}} is empty, delete it. Otherwise rename it to {{{class Meta}}}. 1. [wiki:RemovingTheMagic#a__repr__modelmethodisreplacedby__str__ Replace __repr__ with __str__]. 1. If you use {{{_pre_save()}}}, {{{_post_save()}}}, {{{_pre_delete()}}}, and/or {{{_post_delete()}}} hooks, [wiki:RemovingTheMagic#Addedamorepowerfulwayofoverridingmodelmethodsremovedhardcoded_pre_save_post_saveetc. replace them] by overriding {{{save()}}} and {{{delete()}}} methods. == Views == == Templates == == Template tags == == Settings == == Post-conversion == If you decided to regenerate permissions, now is the good time to execute {{{django-admin.py syncdb}}} or {{{manage.py syncdb}}}. Remember that an administrator should reassign permissions to all users using Admin.