[{"data":1,"prerenderedAt":10924},["ShallowReactive",2],{"navigation":3,"/advanced-and-expert-topics/custom-management-commands":1016,"/advanced-and-expert-topics/custom-management-commands-surround":10919},[4,54,89,123,165,211,253,331,389,439,462,488,514,540,578,624,650,672,702,736,774,800,850,856,862,868,874,928],{"title":5,"path":6,"stem":7,"children":8},"Introduction and Foundations","/introduction-and-foundations","01.introduction-and-foundations/01.index",[9,10,14,18,22,26,30,34,38,42,46,50],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13},"What is Django","/introduction-and-foundations/what-is-django","01.introduction-and-foundations/02.what-is-django",{"title":15,"path":16,"stem":17},"Key Concepts and Philosophy","/introduction-and-foundations/key-concepts-and-philosophy","01.introduction-and-foundations/03.key-concepts-and-philosophy",{"title":19,"path":20,"stem":21},"MVC vs MVT: Understanding Django's Architecture","/introduction-and-foundations/mvc-vs-mvt","01.introduction-and-foundations/04.mvc-vs-mvt",{"title":23,"path":24,"stem":25},"Project Structure Overview","/introduction-and-foundations/project-structure-overview","01.introduction-and-foundations/05.project-structure-overview",{"title":27,"path":28,"stem":29},"Installing Django","/introduction-and-foundations/installing-django","01.introduction-and-foundations/06.installing-django",{"title":31,"path":32,"stem":33},"Creating Your First Django Project","/introduction-and-foundations/creating-first-project","01.introduction-and-foundations/07.creating-first-project",{"title":35,"path":36,"stem":37},"Creating Your First Django App","/introduction-and-foundations/creating-first-app","01.introduction-and-foundations/08.creating-first-app",{"title":39,"path":40,"stem":41},"Your First Django \"Hello World\"","/introduction-and-foundations/hello-world","01.introduction-and-foundations/09.hello-world",{"title":43,"path":44,"stem":45},"Django Quick Start Guide","/introduction-and-foundations/quick-start-guide","01.introduction-and-foundations/10.quick-start-guide",{"title":47,"path":48,"stem":49},"How Django Handles Requests","/introduction-and-foundations/how-django-handles-requests","01.introduction-and-foundations/11.how-django-handles-requests",{"title":51,"path":52,"stem":53},"Django Settings","/introduction-and-foundations/django-settings","01.introduction-and-foundations/12.django-settings",{"title":55,"path":56,"stem":57,"children":58},"The Development Environment","/development-environment","02.development-environment/1.index",[59,61,65,69,73,77,81,85],{"title":60,"path":56,"stem":57},"Development Environment",{"title":62,"path":63,"stem":64},"Recommended Tooling for Django Development","/development-environment/recommended-tooling","02.development-environment/2.recommended-tooling",{"title":66,"path":67,"stem":68},"Virtual Environments","/development-environment/virtual-environments","02.development-environment/3.virtual-environments",{"title":70,"path":71,"stem":72},"Django Admin and Management Commands","/development-environment/admin-and-management-commands","02.development-environment/4.admin-and-management-commands",{"title":74,"path":75,"stem":76},"Django Project Settings","/development-environment/project-settings","02.development-environment/5.project-settings",{"title":78,"path":79,"stem":80},"Managing Django Environments: Local, Staging, and Production","/development-environment/environments-local-staging-production","02.development-environment/6.environments-local-staging-production",{"title":82,"path":83,"stem":84},"Running Django Development Server","/development-environment/running-development-server","02.development-environment/7.running-development-server",{"title":86,"path":87,"stem":88},"Working with Django Shell","/development-environment/working-with-shell","02.development-environment/8.working-with-shell",{"title":90,"path":91,"stem":92,"children":93},"Templates and Presentation Layer","/templates-and-presentation","03.templates-and-presentation/1.index",[94,95,99,103,107,111,115,119],{"title":90,"path":91,"stem":92},{"title":96,"path":97,"stem":98},"Introduction to Django Templates","/templates-and-presentation/introduction-to-templates","03.templates-and-presentation/2.introduction-to-templates",{"title":100,"path":101,"stem":102},"The Django Template Language","/templates-and-presentation/django-template-language","03.templates-and-presentation/3.django-template-language",{"title":104,"path":105,"stem":106},"Template Inheritance","/templates-and-presentation/template-inheritance","03.templates-and-presentation/4.template-inheritance",{"title":108,"path":109,"stem":110},"Built-in Template Tags and Filters","/templates-and-presentation/built-in-template-tags-and-filters","03.templates-and-presentation/5.built-in-template-tags-and-filters",{"title":112,"path":113,"stem":114},"Including Static Files","/templates-and-presentation/including-static-files","03.templates-and-presentation/6.including-static-files",{"title":116,"path":117,"stem":118},"Working with Media Files","/templates-and-presentation/working-with-media-files","03.templates-and-presentation/7.working-with-media-files",{"title":120,"path":121,"stem":122},"Using Alternative Template Engines","/templates-and-presentation/using-alternative-template-engines","03.templates-and-presentation/8.using-alternative-template-engines",{"title":124,"path":125,"stem":126,"children":127},"URLs and Views","/urls-and-views","04.urls-and-views/01.index",[128,129,133,137,141,145,149,153,157,161],{"title":124,"path":125,"stem":126},{"title":130,"path":131,"stem":132},"The URL Dispatcher","/urls-and-views/the-url-dispatcher","04.urls-and-views/02.the-url-dispatcher",{"title":134,"path":135,"stem":136},"Writing Function-Based Views","/urls-and-views/writing-function-based-views","04.urls-and-views/03.writing-function-based-views",{"title":138,"path":139,"stem":140},"View Decorators","/urls-and-views/view-decorators","04.urls-and-views/04.view-decorators",{"title":142,"path":143,"stem":144},"Rendering Responses","/urls-and-views/rendering-responses","04.urls-and-views/05.rendering-responses",{"title":146,"path":147,"stem":148},"Redirects","/urls-and-views/redirects","04.urls-and-views/06.redirects",{"title":150,"path":151,"stem":152},"Handling HTTP Methods","/urls-and-views/handling-http-methods","04.urls-and-views/07.handling-http-methods",{"title":154,"path":155,"stem":156},"Conditional View Processing","/urls-and-views/conditional-view-processing","04.urls-and-views/08.conditional-view-processing",{"title":158,"path":159,"stem":160},"File Uploads","/urls-and-views/file-uploads","04.urls-and-views/09.file-uploads",{"title":162,"path":163,"stem":164},"Using Django Shortcut Functions","/urls-and-views/using-django-shortcut-functions","04.urls-and-views/10.using-django-shortcut-functions",{"title":166,"path":167,"stem":168,"children":169},"Class Based Views","/class-based-views","05.class-based-views/01.index",[170,171,175,179,183,187,191,195,199,203,207],{"title":166,"path":167,"stem":168},{"title":172,"path":173,"stem":174},"Introduction to Class-Based Views","/class-based-views/introduction-to-class-based-views","05.class-based-views/02.introduction-to-class-based-views",{"title":176,"path":177,"stem":178},"Common Base Classes","/class-based-views/common-base-classes","05.class-based-views/03.common-base-classes",{"title":180,"path":181,"stem":182},"Built-in Generic Views","/class-based-views/built-in-generic-views","05.class-based-views/04.built-in-generic-views",{"title":184,"path":185,"stem":186},"Views for CRUD Operations","/class-based-views/views-for-crud-operations","05.class-based-views/05.views-for-crud-operations",{"title":188,"path":189,"stem":190},"Handling Forms with Class-Based Views","/class-based-views/handling-forms-with-class-based-views","05.class-based-views/06.handling-forms-with-class-based-views",{"title":192,"path":193,"stem":194},"Using Mixins","/class-based-views/using-mixins","05.class-based-views/07.using-mixins",{"title":196,"path":197,"stem":198},"URL Configuration with Class-Based Views","/class-based-views/url-configuration-with-class-based-views","05.class-based-views/08.url-configuration-with-class-based-views",{"title":200,"path":201,"stem":202},"Subclassing Generic Views","/class-based-views/subclassing-generic-views","05.class-based-views/09.subclassing-generic-views",{"title":204,"path":205,"stem":206},"Asynchronous Class-Based Views","/class-based-views/asynchronous-class-based-views","05.class-based-views/10.asynchronous-class-based-views",{"title":208,"path":209,"stem":210},"Pagination","/class-based-views/pagination","05.class-based-views/11.pagination",{"title":212,"path":213,"stem":214,"children":215},"Forms and User Input","/forms-and-user-input","06.forms-and-user-input/01.index",[216,217,221,225,229,233,237,241,245,249],{"title":212,"path":213,"stem":214},{"title":218,"path":219,"stem":220},"Understanding HTML Forms","/forms-and-user-input/understanding-html-forms","06.forms-and-user-input/02.understanding-html-forms",{"title":222,"path":223,"stem":224},"Django's Role in Form Handling","/forms-and-user-input/djangos-role-in-form-handling","06.forms-and-user-input/03.djangos-role-in-form-handling",{"title":226,"path":227,"stem":228},"Creating Forms with Forms API","/forms-and-user-input/creating-forms-with-forms-api","06.forms-and-user-input/04.creating-forms-with-forms-api",{"title":230,"path":231,"stem":232},"Form Validation","/forms-and-user-input/form-validation","06.forms-and-user-input/05.form-validation",{"title":234,"path":235,"stem":236},"Built-in Fields and Widgets","/forms-and-user-input/built-in-fields-and-widgets","06.forms-and-user-input/06.built-in-fields-and-widgets",{"title":238,"path":239,"stem":240},"Form Rendering in Templates","/forms-and-user-input/form-rendering-in-templates","06.forms-and-user-input/07.form-rendering-in-templates",{"title":242,"path":243,"stem":244},"Model Forms","/forms-and-user-input/model-forms","06.forms-and-user-input/08.model-forms",{"title":246,"path":247,"stem":248},"Advanced Form Techniques","/forms-and-user-input/advanced-form-techniques","06.forms-and-user-input/09.advanced-form-techniques",{"title":250,"path":251,"stem":252},"Security Considerations for Forms","/forms-and-user-input/security-considerations-for-forms","06.forms-and-user-input/10.security-considerations-for-forms",{"title":254,"path":255,"stem":256,"children":257},"Models and Databases","/models-and-databases","07.models-and-databases/01.index",[258,259,263,267,271,275,279,283,287,291,295,299,303,307,311,315,319,323,327],{"title":254,"path":255,"stem":256},{"title":260,"path":261,"stem":262},"Understanding Django Models","/models-and-databases/understanding-django-models","07.models-and-databases/02.understanding-django-models",{"title":264,"path":265,"stem":266},"Defining Fields","/models-and-databases/defining-fields","07.models-and-databases/03.defining-fields",{"title":268,"path":269,"stem":270},"Relationships and Foreign Keys","/models-and-databases/relationships-and-foreign-keys","07.models-and-databases/04.relationships-and-foreign-keys",{"title":272,"path":273,"stem":274},"Examples of Relationship Patterns","/models-and-databases/examples-of-relationship-patterns","07.models-and-databases/05.examples-of-relationship-patterns",{"title":276,"path":277,"stem":278},"Making Queries","/models-and-databases/making-queries","07.models-and-databases/06.making-queries",{"title":280,"path":281,"stem":282},"Filtering, Ordering, and Slicing","/models-and-databases/filtering-ordering-slicing","07.models-and-databases/07.filtering-ordering-slicing",{"title":284,"path":285,"stem":286},"Managers and QuerySets","/models-and-databases/managers-and-querysets","07.models-and-databases/08.managers-and-querysets",{"title":288,"path":289,"stem":290},"Aggregation","/models-and-databases/aggregation","07.models-and-databases/09.aggregation",{"title":292,"path":293,"stem":294},"Search","/models-and-databases/search","07.models-and-databases/10.search",{"title":296,"path":297,"stem":298},"Raw SQL Queries","/models-and-databases/raw-sql-queries","07.models-and-databases/11.raw-sql-queries",{"title":300,"path":301,"stem":302},"Transactions","/models-and-databases/transactions","07.models-and-databases/12.transactions",{"title":304,"path":305,"stem":306},"Multiple Databases","/models-and-databases/multiple-databases","07.models-and-databases/13.multiple-databases",{"title":308,"path":309,"stem":310},"Tablespaces","/models-and-databases/tablespaces","07.models-and-databases/14.tablespaces",{"title":312,"path":313,"stem":314},"Composite Primary Keys","/models-and-databases/composite-primary-keys","07.models-and-databases/15.composite-primary-keys",{"title":316,"path":317,"stem":318},"Database Instrumentation","/models-and-databases/database-instrumentation","07.models-and-databases/16.database-instrumentation",{"title":320,"path":321,"stem":322},"Database Optimization","/models-and-databases/database-optimization","07.models-and-databases/17.database-optimization",{"title":324,"path":325,"stem":326},"Fixtures","/models-and-databases/fixtures","07.models-and-databases/18.fixtures",{"title":328,"path":329,"stem":330},"Signals","/models-and-databases/signals","07.models-and-databases/19.signals",{"title":332,"path":333,"stem":334,"children":335},"Migrations","/migrations","08.migrations/01.index",[336,337,341,345,349,353,357,361,365,369,373,377,381,385],{"title":332,"path":333,"stem":334},{"title":338,"path":339,"stem":340},"How Migrations Work","/migrations/how-migrations-work","08.migrations/02.how-migrations-work",{"title":342,"path":343,"stem":344},"Management Commands","/migrations/management-commands","08.migrations/03.management-commands",{"title":346,"path":347,"stem":348},"Dependencies and Workflow","/migrations/dependencies-and-workflow","08.migrations/04.dependencies-and-workflow",{"title":350,"path":351,"stem":352},"Transaction Handling","/migrations/transaction-handling","08.migrations/05.transaction-handling",{"title":354,"path":355,"stem":356},"Adding Migrations to Apps","/migrations/adding-migrations-to-apps","08.migrations/06.adding-migrations-to-apps",{"title":358,"path":359,"stem":360},"Reversing Migrations","/migrations/reversing-migrations","08.migrations/07.reversing-migrations",{"title":362,"path":363,"stem":364},"Historical Models","/migrations/historical-models","08.migrations/08.historical-models",{"title":366,"path":367,"stem":368},"Considerations When Removing Fields","/migrations/considerations-when-removing-fields","08.migrations/09.considerations-when-removing-fields",{"title":370,"path":371,"stem":372},"Data Migrations","/migrations/data-migrations","08.migrations/10.data-migrations",{"title":374,"path":375,"stem":376},"Squashing Migrations","/migrations/squashing-migrations","08.migrations/11.squashing-migrations",{"title":378,"path":379,"stem":380},"Serializing Values","/migrations/serializing-values","08.migrations/12.serializing-values",{"title":382,"path":383,"stem":384},"Supporting Multiple Django Versions","/migrations/supporting-multiple-django-versions","08.migrations/13.supporting-multiple-django-versions",{"title":386,"path":387,"stem":388},"Django Serialization Framework","/migrations/django-serialization-framework","08.migrations/14.django-serialization-framework",{"title":390,"path":391,"stem":392,"children":393},"Authentication and Authorization","/authentication-and-authorization","09.authentication-and-authorization/01.index",[394,395,399,403,407,411,415,419,423,427,431,435],{"title":390,"path":391,"stem":392},{"title":396,"path":397,"stem":398},"Overview of Django's Authentication System","/authentication-and-authorization/overview-of-django-authentication-system","09.authentication-and-authorization/02.overview-of-django-authentication-system",{"title":400,"path":401,"stem":402},"Users and Groups","/authentication-and-authorization/users-and-groups","09.authentication-and-authorization/03.users-and-groups",{"title":404,"path":405,"stem":406},"Permissions","/authentication-and-authorization/permissions","09.authentication-and-authorization/04.permissions",{"title":408,"path":409,"stem":410},"Password Management","/authentication-and-authorization/password-management","09.authentication-and-authorization/05.password-management",{"title":412,"path":413,"stem":414},"Authentication Views","/authentication-and-authorization/authentication-views","09.authentication-and-authorization/06.authentication-views",{"title":416,"path":417,"stem":418},"Login and Logout","/authentication-and-authorization/login-and-logout","09.authentication-and-authorization/07.login-and-logout",{"title":420,"path":421,"stem":422},"Custom User Models","/authentication-and-authorization/custom-user-models","09.authentication-and-authorization/08.custom-user-models",{"title":424,"path":425,"stem":426},"Middleware for Authentication","/authentication-and-authorization/middleware-for-authentication","09.authentication-and-authorization/09.middleware-for-authentication",{"title":428,"path":429,"stem":430},"Authorization in Views and Templates","/authentication-and-authorization/authorization-in-views-and-templates","09.authentication-and-authorization/10.authorization-in-views-and-templates",{"title":432,"path":433,"stem":434},"Integrating Social Authentication","/authentication-and-authorization/integrating-social-authentication","09.authentication-and-authorization/11.integrating-social-authentication",{"title":436,"path":437,"stem":438},"Security Best Practices","/authentication-and-authorization/security-best-practices","09.authentication-and-authorization/12.security-best-practices",{"title":440,"path":441,"stem":442,"children":443},"Sessions, Cookies, and State","/sessions-cookies-state","10.sessions-cookies-state/01.index",[444,446,450,454,458],{"title":445,"path":441,"stem":442},"Sessions, Cookies, and State Management",{"title":447,"path":448,"stem":449},"Introduction to Sessions","/sessions-cookies-state/introduction-to-sessions","10.sessions-cookies-state/02.introduction-to-sessions",{"title":451,"path":452,"stem":453},"Working with Cookies","/sessions-cookies-state/working-with-cookies","10.sessions-cookies-state/03.working-with-cookies",{"title":455,"path":456,"stem":457},"Server-Side Session Storage Options","/sessions-cookies-state/server-side-session-storage-options","10.sessions-cookies-state/04.server-side-session-storage-options",{"title":459,"path":460,"stem":461},"Session Security","/sessions-cookies-state/session-security","10.sessions-cookies-state/05.session-security",{"title":463,"path":464,"stem":465,"children":466},"Working with Files","/working-with-files","11.working-with-files/01.index",[467,468,472,476,480,484],{"title":463,"path":464,"stem":465},{"title":469,"path":470,"stem":471},"Files in Models","/working-with-files/files-in-models","11.working-with-files/02.files-in-models",{"title":473,"path":474,"stem":475},"The File Object","/working-with-files/the-file-object","11.working-with-files/03.the-file-object",{"title":477,"path":478,"stem":479},"Storage Backends","/working-with-files/storage-backends","11.working-with-files/04.storage-backends",{"title":481,"path":482,"stem":483},"Using Cloud Storage Providers","/working-with-files/using-cloud-storage-providers","11.working-with-files/05.using-cloud-storage-providers",{"title":485,"path":486,"stem":487},"Managing Media in Production","/working-with-files/managing-media-in-production","11.working-with-files/06.managing-media-in-production",{"title":489,"path":490,"stem":491,"children":492},"Admin Site","/admin-site","12.admin-site/01.index",[493,494,498,502,506,510],{"title":489,"path":490,"stem":491},{"title":495,"path":496,"stem":497},"Enabling the Admin","/admin-site/enabling-the-admin","12.admin-site/02.enabling-the-admin",{"title":499,"path":500,"stem":501},"Registering Models","/admin-site/registering-models","12.admin-site/03.registering-models",{"title":503,"path":504,"stem":505},"Customizing Admin Display","/admin-site/customizing-admin-display","12.admin-site/04.customizing-admin-display",{"title":507,"path":508,"stem":509},"Admin Actions","/admin-site/admin-actions","12.admin-site/05.admin-actions",{"title":511,"path":512,"stem":513},"Admin Security Best Practices","/admin-site/admin-security-best-practices","12.admin-site/06.admin-security-best-practices",{"title":515,"path":516,"stem":517,"children":518},"Middleware","/middleware","13.middleware/01.index",[519,520,524,528,532,536],{"title":515,"path":516,"stem":517},{"title":521,"path":522,"stem":523},"Middleware Overview","/middleware/middleware-overview","13.middleware/02.middleware-overview",{"title":525,"path":526,"stem":527},"Built-in Middleware","/middleware/built-in-middleware","13.middleware/03.built-in-middleware",{"title":529,"path":530,"stem":531},"Creating Custom Middleware","/middleware/creating-custom-middleware","13.middleware/04.creating-custom-middleware",{"title":533,"path":534,"stem":535},"Middleware Ordering","/middleware/middleware-ordering","13.middleware/05.middleware-ordering",{"title":537,"path":538,"stem":539},"Performance and Debugging","/middleware/performance-and-debugging","13.middleware/06.performance-and-debugging",{"title":541,"path":542,"stem":543,"children":544},"Security","/security","14.security/01.index",[545,546,550,554,558,562,566,570,574],{"title":541,"path":542,"stem":543},{"title":547,"path":548,"stem":549},"Django Security Philosophy","/security/django-security-philosophy","14.security/02.django-security-philosophy",{"title":551,"path":552,"stem":553},"Cross Site Request Forgery","/security/cross-site-request-forgery","14.security/03.cross-site-request-forgery",{"title":555,"path":556,"stem":557},"Cross Site Scripting","/security/cross-site-scripting","14.security/04.cross-site-scripting",{"title":559,"path":560,"stem":561},"SQL Injection Protection","/security/sql-injection-protection","14.security/05.sql-injection-protection",{"title":563,"path":564,"stem":565},"Clickjacking Protection","/security/clickjacking-protection","14.security/06.clickjacking-protection",{"title":567,"path":568,"stem":569},"HTTPS Setup and HSTS","/security/https-setup-and-hsts","14.security/07.https-setup-and-hsts",{"title":571,"path":572,"stem":573},"Password Storage and Cryptography","/security/password-storage-and-cryptography","14.security/08.password-storage-and-cryptography",{"title":575,"path":576,"stem":577},"Secure Deployment Checklist","/security/secure-deployment-checklist","14.security/09.secure-deployment-checklist",{"title":579,"path":580,"stem":581,"children":582},"Testing","/testing","15.testing/01.index",[583,584,588,592,596,600,604,608,612,616,620],{"title":579,"path":580,"stem":581},{"title":585,"path":586,"stem":587},"Introduction to Django Testing","/testing/introduction-to-django-testing","15.testing/02.introduction-to-django-testing",{"title":589,"path":590,"stem":591},"Writing and Running Tests","/testing/writing-and-running-tests","15.testing/03.writing-and-running-tests",{"title":593,"path":594,"stem":595},"Test Tools","/testing/test-tools","15.testing/04.test-tools",{"title":597,"path":598,"stem":599},"Testing Models","/testing/testing-models","15.testing/05.testing-models",{"title":601,"path":602,"stem":603},"Testing Views","/testing/testing-views","15.testing/06.testing-views",{"title":605,"path":606,"stem":607},"Testing Forms","/testing/testing-forms","15.testing/07.testing-forms",{"title":609,"path":610,"stem":611},"Testing Templates","/testing/testing-templates","15.testing/08.testing-templates",{"title":613,"path":614,"stem":615},"Testing Authentication","/testing/testing-authentication","15.testing/09.testing-authentication",{"title":617,"path":618,"stem":619},"Advanced Testing Topics","/testing/advanced-testing-topics","15.testing/10.advanced-testing-topics",{"title":621,"path":622,"stem":623},"Performance Testing","/testing/performance-testing","15.testing/11.performance-testing",{"title":625,"path":626,"stem":627,"children":628},"Static Assets and Frontend Integration","/static-assets-and-frontend-integration","16.static-assets-and-frontend-integration/01.index",[629,630,634,638,642,646],{"title":625,"path":626,"stem":627},{"title":631,"path":632,"stem":633},"Working with Static Files","/static-assets-and-frontend-integration/working-with-static-files","16.static-assets-and-frontend-integration/02.working-with-static-files",{"title":635,"path":636,"stem":637},"Integrating CSS and JavaScript","/static-assets-and-frontend-integration/integrating-css-and-javascript","16.static-assets-and-frontend-integration/03.integrating-css-and-javascript",{"title":639,"path":640,"stem":641},"Using Build Tools like Vite or Webpack","/static-assets-and-frontend-integration/using-build-tools-like-vite-or-webpack","16.static-assets-and-frontend-integration/04.using-build-tools-like-vite-or-webpack",{"title":643,"path":644,"stem":645},"Using React or Vue with Django","/static-assets-and-frontend-integration/using-react-or-vue-with-django","16.static-assets-and-frontend-integration/05.using-react-or-vue-with-django",{"title":647,"path":648,"stem":649},"Managing CORS","/static-assets-and-frontend-integration/managing-cors","16.static-assets-and-frontend-integration/06.managing-cors",{"title":651,"path":652,"stem":653,"children":654},"Internationalization and Localization","/internationalization-and-localization","17.internationalization-and-localization/01.index",[655,656,660,664,668],{"title":651,"path":652,"stem":653},{"title":657,"path":658,"stem":659},"Enabling Translation","/internationalization-and-localization/enabling-translation","17.internationalization-and-localization/02.enabling-translation",{"title":661,"path":662,"stem":663},"Translating Text in Code and Templates","/internationalization-and-localization/translating-text-in-code-and-templates","17.internationalization-and-localization/03.translating-text-in-code-and-templates",{"title":665,"path":666,"stem":667},"Timezone Support","/internationalization-and-localization/timezone-support","17.internationalization-and-localization/04.timezone-support",{"title":669,"path":670,"stem":671},"Locale Middleware","/internationalization-and-localization/locale-middleware","17.internationalization-and-localization/05.locale-middleware",{"title":673,"path":674,"stem":675,"children":676},"Caching","/caching","18.caching/01.index",[677,678,682,686,690,694,698],{"title":673,"path":674,"stem":675},{"title":679,"path":680,"stem":681},"Introduction to Caching","/caching/introduction-to-caching","18.caching/02.introduction-to-caching",{"title":683,"path":684,"stem":685},"Cache Backends","/caching/cache-backends","18.caching/03.cache-backends",{"title":687,"path":688,"stem":689},"Per View Caching","/caching/per-view-caching","18.caching/04.per-view-caching",{"title":691,"path":692,"stem":693},"Low Level Cache API","/caching/low-level-cache-api","18.caching/05.low-level-cache-api",{"title":695,"path":696,"stem":697},"Template Fragment Caching","/caching/template-fragment-caching","18.caching/06.template-fragment-caching",{"title":699,"path":700,"stem":701},"Deployment Level Caching Patterns","/caching/deployment-level-caching-patterns","18.caching/07.deployment-level-caching-patterns",{"title":703,"path":704,"stem":705,"children":706},"Asynchronous Django","/asynchronous-django","19.asynchronous-django/01.index",[707,708,712,716,720,724,728,732],{"title":703,"path":704,"stem":705},{"title":709,"path":710,"stem":711},"Introduction to ASGI","/asynchronous-django/introduction-to-asgi","19.asynchronous-django/02.introduction-to-asgi",{"title":713,"path":714,"stem":715},"Async Views","/asynchronous-django/async-views","19.asynchronous-django/03.async-views",{"title":717,"path":718,"stem":719},"Async ORM Status","/asynchronous-django/async-orm-status","19.asynchronous-django/04.async-orm-status",{"title":721,"path":722,"stem":723},"WebSockets with Channels","/asynchronous-django/websockets-with-channels","19.asynchronous-django/05.websockets-with-channels",{"title":725,"path":726,"stem":727},"Background Tasks with Celery or RQ","/asynchronous-django/background-tasks-with-celery-or-rq","19.asynchronous-django/06.background-tasks-with-celery-or-rq",{"title":729,"path":730,"stem":731},"Asynchronous Support","/asynchronous-django/asynchronous-support","19.asynchronous-django/07.asynchronous-support",{"title":733,"path":734,"stem":735},"Django's Tasks Framework","/asynchronous-django/django-tasks-framework","19.asynchronous-django/08.django-tasks-framework",{"title":737,"path":738,"stem":739,"children":740},"Deployment","/deployment","20.deployment/01.index",[741,742,746,750,754,758,762,766,770],{"title":737,"path":738,"stem":739},{"title":743,"path":744,"stem":745},"Preparing for Production","/deployment/preparing-for-production","20.deployment/02.preparing-for-production",{"title":747,"path":748,"stem":749},"Using WSGI and ASGI Servers","/deployment/using-wsgi-and-asgi-servers","20.deployment/03.using-wsgi-and-asgi-servers",{"title":751,"path":752,"stem":753},"Deploying on Linux Servers","/deployment/deploying-on-linux-servers","20.deployment/04.deploying-on-linux-servers",{"title":755,"path":756,"stem":757},"Using Docker","/deployment/using-docker","20.deployment/05.using-docker",{"title":759,"path":760,"stem":761},"Cloud Deployment Guides","/deployment/cloud-deployment-guides","20.deployment/06.cloud-deployment-guides",{"title":763,"path":764,"stem":765},"Scaling and Load Balancing","/deployment/scaling-and-load-balancing","20.deployment/07.scaling-and-load-balancing",{"title":767,"path":768,"stem":769},"Monitoring and Logging","/deployment/monitoring-and-logging","20.deployment/08.monitoring-and-logging",{"title":771,"path":772,"stem":773},"Backup Strategies","/deployment/backup-strategies","20.deployment/09.backup-strategies",{"title":775,"path":776,"stem":777,"children":778},"Performance and Optimization","/performance-and-optimization","21.performance-and-optimization/01.index",[779,780,784,788,792,796],{"title":775,"path":776,"stem":777},{"title":781,"path":782,"stem":783},"Query Optimization","/performance-and-optimization/query-optimization","21.performance-and-optimization/02.query-optimization",{"title":785,"path":786,"stem":787},"Template Rendering Optimization","/performance-and-optimization/template-rendering-optimization","21.performance-and-optimization/03.template-rendering-optimization",{"title":789,"path":790,"stem":791},"Using Select Related and Prefetch Related","/performance-and-optimization/using-select-related-and-prefetch-related","21.performance-and-optimization/04.using-select-related-and-prefetch-related",{"title":793,"path":794,"stem":795},"Caching Strategies","/performance-and-optimization/caching-strategies","21.performance-and-optimization/05.caching-strategies",{"title":797,"path":798,"stem":799},"Profiling Django Apps","/performance-and-optimization/profiling-django-apps","21.performance-and-optimization/06.profiling-django-apps",{"title":801,"path":802,"stem":803,"children":804},"Advanced and Expert Topics","/advanced-and-expert-topics","22.advanced-and-expert-topics/01.index",[805,806,810,814,818,822,826,830,834,838,842,846],{"title":801,"path":802,"stem":803},{"title":807,"path":808,"stem":809},"System Architecture Patterns","/advanced-and-expert-topics/system-architecture-patterns","22.advanced-and-expert-topics/02.system-architecture-patterns",{"title":811,"path":812,"stem":813},"Domain Driven Design with Django","/advanced-and-expert-topics/domain-driven-design-with-django","22.advanced-and-expert-topics/03.domain-driven-design-with-django",{"title":815,"path":816,"stem":817},"Building Large Scale Django Projects","/advanced-and-expert-topics/building-large-scale-django-projects","22.advanced-and-expert-topics/04.building-large-scale-django-projects",{"title":819,"path":820,"stem":821},"Plugin Architectures for Django Apps","/advanced-and-expert-topics/plugin-architectures-for-django-apps","22.advanced-and-expert-topics/05.plugin-architectures-for-django-apps",{"title":823,"path":824,"stem":825},"Extending Django's Core","/advanced-and-expert-topics/extending-djangos-core","22.advanced-and-expert-topics/06.extending-djangos-core",{"title":827,"path":828,"stem":829},"Custom ORM Expressions","/advanced-and-expert-topics/custom-orm-expressions","22.advanced-and-expert-topics/07.custom-orm-expressions",{"title":831,"path":832,"stem":833},"Custom Management Commands","/advanced-and-expert-topics/custom-management-commands","22.advanced-and-expert-topics/08.custom-management-commands",{"title":835,"path":836,"stem":837},"Working with Signals","/advanced-and-expert-topics/working-with-signals","22.advanced-and-expert-topics/09.working-with-signals",{"title":839,"path":840,"stem":841},"Building Reusable Django Packages","/advanced-and-expert-topics/building-reusable-django-packages","22.advanced-and-expert-topics/10.building-reusable-django-packages",{"title":843,"path":844,"stem":845},"Integrating Microservices","/advanced-and-expert-topics/integrating-microservices","22.advanced-and-expert-topics/11.integrating-microservices",{"title":847,"path":848,"stem":849},"Advanced Security Hardening","/advanced-and-expert-topics/advanced-security-hardening","22.advanced-and-expert-topics/12.advanced-security-hardening",{"title":851,"path":852,"stem":853,"children":854},"Logging in Django","/logging-in-django","23.logging-in-django/01.index",[855],{"title":851,"path":852,"stem":853},{"title":857,"path":858,"stem":859,"children":860},"FAQ and Troubleshooting","/faq-and-troubleshooting","24.faq-and-troubleshooting/01.index",[861],{"title":857,"path":858,"stem":859},{"title":863,"path":864,"stem":865,"children":866},"External Packages and Ecosystem","/external-packages-and-ecosystem","25.external-packages-and-ecosystem/01.index",[867],{"title":863,"path":864,"stem":865},{"title":869,"path":870,"stem":871,"children":872},"Django Internals and Contributing","/django-internals-and-contributing","26.django-internals-and-contributing/01.index",[873],{"title":869,"path":870,"stem":871},{"title":875,"path":876,"stem":877,"children":878},"Microservices with Django","/microservices-with-django","27.microservices-with-django/01.index",[879,880,884,888,892,896,900,904,908,912,916,920,924],{"title":875,"path":876,"stem":877},{"title":881,"path":882,"stem":883},"What Is a Microservice?","/microservices-with-django/what-is-a-microservice","27.microservices-with-django/02.what-is-a-microservice",{"title":885,"path":886,"stem":887},"Introducing the Django Microservices Architecture","/microservices-with-django/django-microservices-architecture","27.microservices-with-django/03.django-microservices-architecture",{"title":889,"path":890,"stem":891},"Setting Up the Development and Runtime Environment","/microservices-with-django/development-environment","27.microservices-with-django/04.development-environment",{"title":893,"path":894,"stem":895},"Cloud-native Data Processing with MongoDB","/microservices-with-django/cloud-native-data-processing","27.microservices-with-django/05.cloud-native-data-processing",{"title":897,"path":898,"stem":899},"Creating RESTful APIs for Microservices","/microservices-with-django/restful-apis","27.microservices-with-django/06.restful-apis",{"title":901,"path":902,"stem":903},"Orchestrating Microservices with Celery and RabbitMQ","/microservices-with-django/orchestrating-celery-rabbitmq","27.microservices-with-django/07.orchestrating-celery-rabbitmq",{"title":905,"path":906,"stem":907},"Testing Microservices","/microservices-with-django/testing-microservices","27.microservices-with-django/08.testing-microservices",{"title":909,"path":910,"stem":911},"Deploying Microservices","/microservices-with-django/deploying-microservices","27.microservices-with-django/09.deploying-microservices",{"title":913,"path":914,"stem":915},"Securing Microservices","/microservices-with-django/securing-microservices","27.microservices-with-django/10.securing-microservices",{"title":917,"path":918,"stem":919},"Improving Microservices Performance with Caching","/microservices-with-django/performance-caching","27.microservices-with-django/11.performance-caching",{"title":921,"path":922,"stem":923},"Best Practices","/microservices-with-django/best-practices","27.microservices-with-django/12.best-practices",{"title":925,"path":926,"stem":927},"Transforming a Monolithic Web App into a Microservice version","/microservices-with-django/monolith-to-microservices","27.microservices-with-django/13.monolith-to-microservices",{"title":929,"path":930,"stem":931,"children":932},"Releases","/releases","releases",[933,936,940,944,948,952,956,960,964,968,972,976,980,984,988,992,996,1000,1004,1008,1012],{"title":934,"path":930,"stem":935},"Django Releases","releases/index",{"title":937,"path":938,"stem":939},"Django 5.1.10 release notes","/releases/5.1.10","releases/5.1.10",{"title":941,"path":942,"stem":943},"Django 5.1.11 release notes","/releases/5.1.11","releases/5.1.11",{"title":945,"path":946,"stem":947},"Django 5.1.12 release notes","/releases/5.1.12","releases/5.1.12",{"title":949,"path":950,"stem":951},"Django 5.1.13 release notes","/releases/5.1.13","releases/5.1.13",{"title":953,"path":954,"stem":955},"Django 5.1.14 release notes","/releases/5.1.14","releases/5.1.14",{"title":957,"path":958,"stem":959},"Django 5.1.15 release notes","/releases/5.1.15","releases/5.1.15",{"title":961,"path":962,"stem":963},"Django 5.2 release notes","/releases/5.2","releases/5.2",{"title":965,"path":966,"stem":967},"Django 5.2.1 release notes","/releases/5.2.1","releases/5.2.1",{"title":969,"path":970,"stem":971},"Django 5.2.10 release notes","/releases/5.2.10","releases/5.2.10",{"title":973,"path":974,"stem":975},"Django 5.2.2 release notes","/releases/5.2.2","releases/5.2.2",{"title":977,"path":978,"stem":979},"Django 5.2.3 release notes","/releases/5.2.3","releases/5.2.3",{"title":981,"path":982,"stem":983},"Django 5.2.4 release notes","/releases/5.2.4","releases/5.2.4",{"title":985,"path":986,"stem":987},"Django 5.2.5 release notes","/releases/5.2.5","releases/5.2.5",{"title":989,"path":990,"stem":991},"Django 5.2.6 release notes","/releases/5.2.6","releases/5.2.6",{"title":993,"path":994,"stem":995},"Django 5.2.7 release notes","/releases/5.2.7","releases/5.2.7",{"title":997,"path":998,"stem":999},"Django 5.2.8 release notes","/releases/5.2.8","releases/5.2.8",{"title":1001,"path":1002,"stem":1003},"Django 5.2.9 release notes","/releases/5.2.9","releases/5.2.9",{"title":1005,"path":1006,"stem":1007},"Django 6.0 release notes","/releases/6.0","releases/6.0",{"title":1009,"path":1010,"stem":1011},"Django 6.0.1 release notes","/releases/6.0.1","releases/6.0.1",{"title":1013,"path":1014,"stem":1015},"Django 6.1 release notes - UNDER DEVELOPMENT","/releases/6.1","releases/6.1",{"id":1017,"title":831,"body":1018,"description":1028,"extension":10914,"links":10915,"meta":10916,"navigation":1189,"path":832,"seo":10917,"stem":833,"__hash__":10918},"docs/22.advanced-and-expert-topics/08.custom-management-commands.md",{"type":1019,"value":1020,"toc":10907},"minimark",[1021,1025,1029,1034,5434,5438,5443,7906,7910,10901,10904],[1022,1023,831],"h1",{"id":1024},"custom-management-commands",[1026,1027,1028],"p",{},"Django's management command system provides a powerful way to create command-line tools for administrative tasks, data processing, and automation. This guide covers creating sophisticated management commands with advanced features like progress tracking, parallel processing, and integration with external systems.",[1030,1031,1033],"h2",{"id":1032},"advanced-command-structure","Advanced Command Structure",[1035,1036,1041],"pre",{"className":1037,"code":1038,"language":1039,"meta":1040,"style":1040},"language-python shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","# management/commands/advanced_command.py\nfrom django.core.management.base import BaseCommand, CommandError\nfrom django.db import transaction\nfrom django.utils import timezone\nimport logging\nimport time\nfrom concurrent.futures import ThreadPoolExecutor, as_completed\nfrom typing import List, Optional\n\nclass Command(BaseCommand):\n    \"\"\"Advanced management command with comprehensive features\"\"\"\n    \n    help = 'Advanced command with progress tracking and error handling'\n    \n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n        self.logger = logging.getLogger(__name__)\n        self.start_time = None\n        self.processed_count = 0\n        self.error_count = 0\n    \n    def add_arguments(self, parser):\n        \"\"\"Add command arguments with validation\"\"\"\n        parser.add_argument(\n            '--batch-size',\n            type=int,\n            default=100,\n            help='Number of items to process in each batch'\n        )\n        \n        parser.add_argument(\n            '--workers',\n            type=int,\n            default=4,\n            help='Number of worker threads'\n        )\n        \n        parser.add_argument(\n            '--dry-run',\n            action='store_true',\n            help='Show what would be done without making changes'\n        )\n        \n        parser.add_argument(\n            '--verbose',\n            action='store_true',\n            help='Enable verbose output'\n        )\n        \n        parser.add_argument(\n            '--filter',\n            type=str,\n            help='Filter criteria for processing'\n        )\n        \n        parser.add_argument(\n            '--output-file',\n            type=str,\n            help='Output file for results'\n        )\n        \n        parser.add_argument(\n            '--continue-on-error',\n            action='store_true',\n            help='Continue processing even if errors occur'\n        )\n    \n    def handle(self, *args, **options):\n        \"\"\"Main command handler with comprehensive error handling\"\"\"\n        self.start_time = timezone.now()\n        self.options = options\n        \n        try:\n            # Validate arguments\n            self.validate_arguments(options)\n            \n            # Setup logging\n            self.setup_logging(options)\n            \n            # Initialize progress tracking\n            self.setup_progress_tracking()\n            \n            # Execute main logic\n            self.execute_command(options)\n            \n            # Generate summary\n            self.print_summary()\n            \n        except CommandError:\n            raise\n        except Exception as e:\n            self.logger.error(f\"Unexpected error: {e}\", exc_info=True)\n            raise CommandError(f\"Command failed: {e}\")\n    \n    def validate_arguments(self, options):\n        \"\"\"Validate command arguments\"\"\"\n        if options['batch_size'] \u003C= 0:\n            raise CommandError(\"Batch size must be positive\")\n        \n        if options['workers'] \u003C= 0:\n            raise CommandError(\"Number of workers must be positive\")\n        \n        if options['output_file']:\n            import os\n            output_dir = os.path.dirname(options['output_file'])\n            if output_dir and not os.path.exists(output_dir):\n                raise CommandError(f\"Output directory does not exist: {output_dir}\")\n    \n    def setup_logging(self, options):\n        \"\"\"Setup logging configuration\"\"\"\n        level = logging.DEBUG if options['verbose'] else logging.INFO\n        \n        formatter = logging.Formatter(\n            '%(asctime)s - %(name)s - %(levelname)s - %(message)s'\n        )\n        \n        # Console handler\n        console_handler = logging.StreamHandler()\n        console_handler.setLevel(level)\n        console_handler.setFormatter(formatter)\n        \n        self.logger.addHandler(console_handler)\n        self.logger.setLevel(level)\n        \n        # File handler if output file specified\n        if options['output_file']:\n            log_file = options['output_file'].replace('.txt', '.log')\n            file_handler = logging.FileHandler(log_file)\n            file_handler.setLevel(logging.DEBUG)\n            file_handler.setFormatter(formatter)\n            self.logger.addHandler(file_handler)\n    \n    def setup_progress_tracking(self):\n        \"\"\"Initialize progress tracking\"\"\"\n        try:\n            from tqdm import tqdm\n            self.use_progress_bar = True\n        except ImportError:\n            self.use_progress_bar = False\n            self.stdout.write(\"Install tqdm for progress bars: pip install tqdm\")\n    \n    def execute_command(self, options):\n        \"\"\"Execute the main command logic\"\"\"\n        # Get items to process\n        items = self.get_items_to_process(options)\n        total_items = len(items)\n        \n        if total_items == 0:\n            self.stdout.write(\"No items to process\")\n            return\n        \n        self.stdout.write(f\"Processing {total_items} items...\")\n        \n        if options['dry_run']:\n            self.stdout.write(\"DRY RUN - No changes will be made\")\n        \n        # Process items in batches\n        batch_size = options['batch_size']\n        workers = options['workers']\n        \n        if workers > 1:\n            self.process_items_parallel(items, batch_size, workers, options)\n        else:\n            self.process_items_sequential(items, batch_size, options)\n    \n    def get_items_to_process(self, options) -> List:\n        \"\"\"Get items to process based on filters\"\"\"\n        from myapp.models import MyModel\n        \n        queryset = MyModel.objects.all()\n        \n        # Apply filters\n        if options['filter']:\n            # Parse filter criteria\n            filter_parts = options['filter'].split('=')\n            if len(filter_parts) == 2:\n                field, value = filter_parts\n                queryset = queryset.filter(**{field: value})\n        \n        return list(queryset.values_list('id', flat=True))\n    \n    def process_items_sequential(self, items: List, batch_size: int, options):\n        \"\"\"Process items sequentially\"\"\"\n        batches = [items[i:i + batch_size] for i in range(0, len(items), batch_size)]\n        \n        if self.use_progress_bar:\n            from tqdm import tqdm\n            progress_bar = tqdm(total=len(items), desc=\"Processing\")\n        \n        for batch in batches:\n            try:\n                self.process_batch(batch, options)\n                \n                if self.use_progress_bar:\n                    progress_bar.update(len(batch))\n                else:\n                    self.processed_count += len(batch)\n                    self.print_progress()\n                    \n            except Exception as e:\n                self.error_count += 1\n                self.logger.error(f\"Batch processing failed: {e}\")\n                \n                if not options['continue_on_error']:\n                    raise\n        \n        if self.use_progress_bar:\n            progress_bar.close()\n    \n    def process_items_parallel(self, items: List, batch_size: int, workers: int, options):\n        \"\"\"Process items in parallel using thread pool\"\"\"\n        batches = [items[i:i + batch_size] for i in range(0, len(items), batch_size)]\n        \n        if self.use_progress_bar:\n            from tqdm import tqdm\n            progress_bar = tqdm(total=len(items), desc=\"Processing\")\n        \n        with ThreadPoolExecutor(max_workers=workers) as executor:\n            # Submit all batches\n            future_to_batch = {\n                executor.submit(self.process_batch, batch, options): batch\n                for batch in batches\n            }\n            \n            # Process completed batches\n            for future in as_completed(future_to_batch):\n                batch = future_to_batch[future]\n                \n                try:\n                    future.result()\n                    \n                    if self.use_progress_bar:\n                        progress_bar.update(len(batch))\n                    else:\n                        self.processed_count += len(batch)\n                        self.print_progress()\n                        \n                except Exception as e:\n                    self.error_count += 1\n                    self.logger.error(f\"Batch processing failed: {e}\")\n                    \n                    if not options['continue_on_error']:\n                        # Cancel remaining futures\n                        for f in future_to_batch:\n                            f.cancel()\n                        raise\n        \n        if self.use_progress_bar:\n            progress_bar.close()\n    \n    @transaction.atomic\n    def process_batch(self, batch_ids: List[int], options):\n        \"\"\"Process a batch of items\"\"\"\n        from myapp.models import MyModel\n        \n        items = MyModel.objects.filter(id__in=batch_ids)\n        \n        for item in items:\n            try:\n                self.process_item(item, options)\n            except Exception as e:\n                self.logger.error(f\"Failed to process item {item.id}: {e}\")\n                raise\n    \n    def process_item(self, item, options):\n        \"\"\"Process a single item\"\"\"\n        if options['dry_run']:\n            self.logger.info(f\"Would process item {item.id}\")\n            return\n        \n        # Actual processing logic here\n        item.processed = True\n        item.processed_at = timezone.now()\n        item.save()\n        \n        self.logger.debug(f\"Processed item {item.id}\")\n    \n    def print_progress(self):\n        \"\"\"Print progress information\"\"\"\n        elapsed = timezone.now() - self.start_time\n        rate = self.processed_count / elapsed.total_seconds() if elapsed.total_seconds() > 0 else 0\n        \n        self.stdout.write(\n            f\"Processed: {self.processed_count}, \"\n            f\"Errors: {self.error_count}, \"\n            f\"Rate: {rate:.2f} items/sec\"\n        )\n    \n    def print_summary(self):\n        \"\"\"Print command execution summary\"\"\"\n        elapsed = timezone.now() - self.start_time\n        \n        self.stdout.write(\n            self.style.SUCCESS(\n                f\"\\nCommand completed successfully!\\n\"\n                f\"Processed: {self.processed_count} items\\n\"\n                f\"Errors: {self.error_count}\\n\"\n                f\"Duration: {elapsed}\\n\"\n                f\"Average rate: {self.processed_count / elapsed.total_seconds():.2f} items/sec\"\n            )\n        )\n","python","",[1042,1043,1044,1053,1093,1110,1127,1135,1143,1166,1184,1191,1212,1226,1232,1253,1258,1293,1323,1354,1370,1386,1400,1405,1425,1436,1450,1465,1480,1493,1508,1514,1520,1531,1543,1554,1566,1580,1585,1590,1601,1613,1630,1644,1649,1654,1665,1677,1692,1706,1711,1716,1727,1739,1751,1765,1770,1775,1786,1798,1809,1823,1828,1833,1844,1856,1871,1885,1890,1895,1922,1932,1954,1968,1973,1982,1988,2005,2011,2017,2033,2038,2044,2056,2061,2067,2083,2088,2094,2106,2111,2122,2128,2144,2191,2216,2221,2240,2250,2279,2297,2302,2326,2344,2349,2368,2377,2413,2446,2471,2476,2494,2504,2546,2551,2568,2594,2599,2604,2610,2627,2645,2662,2667,2688,2707,2712,2718,2735,2779,2801,2822,2837,2857,2862,2876,2886,2893,2907,2922,2932,2946,2972,2977,2995,3005,3011,3033,3051,3056,3071,3095,3101,3106,3138,3143,3161,3185,3190,3196,3217,3237,3242,3258,3288,3296,3320,3325,3351,3361,3380,3385,3408,3413,3419,3437,3443,3476,3498,3514,3548,3553,3593,3598,3634,3644,3707,3712,3725,3736,3777,3782,3798,3806,3828,3834,3848,3869,3877,3898,3910,3916,3930,3944,3974,3979,3999,4005,4010,4023,4036,4041,4083,4093,4144,4149,4162,4173,4208,4213,4239,4245,4256,4290,4303,4309,4314,4320,4341,4359,4364,4372,4385,4390,4404,4424,4432,4452,4463,4469,4483,4496,4525,4530,4549,4555,4570,4583,4589,4594,4607,4618,4623,4637,4669,4679,4694,4699,4728,4733,4747,4754,4775,4788,4831,4837,4842,4865,4875,4892,4927,4932,4937,4943,4958,4978,4990,4995,5030,5035,5049,5059,5086,5132,5137,5152,5174,5194,5215,5220,5225,5239,5249,5272,5277,5292,5309,5328,5351,5372,5391,5423,5429],"code",{"__ignoreMap":1040},[1045,1046,1049],"span",{"class":1047,"line":1048},"line",1,[1045,1050,1052],{"class":1051},"s9Tkl","# management/commands/advanced_command.py\n",[1045,1054,1056,1060,1064,1068,1071,1073,1076,1078,1081,1084,1087,1090],{"class":1047,"line":1055},2,[1045,1057,1059],{"class":1058},"siDh9","from",[1045,1061,1063],{"class":1062},"sftqT"," django",[1045,1065,1067],{"class":1066},"soVBu",".",[1045,1069,1070],{"class":1062},"core",[1045,1072,1067],{"class":1066},[1045,1074,1075],{"class":1062},"management",[1045,1077,1067],{"class":1066},[1045,1079,1080],{"class":1062},"base ",[1045,1082,1083],{"class":1058},"import",[1045,1085,1086],{"class":1062}," BaseCommand",[1045,1088,1089],{"class":1066},",",[1045,1091,1092],{"class":1062}," CommandError\n",[1045,1094,1096,1098,1100,1102,1105,1107],{"class":1047,"line":1095},3,[1045,1097,1059],{"class":1058},[1045,1099,1063],{"class":1062},[1045,1101,1067],{"class":1066},[1045,1103,1104],{"class":1062},"db ",[1045,1106,1083],{"class":1058},[1045,1108,1109],{"class":1062}," transaction\n",[1045,1111,1113,1115,1117,1119,1122,1124],{"class":1047,"line":1112},4,[1045,1114,1059],{"class":1058},[1045,1116,1063],{"class":1062},[1045,1118,1067],{"class":1066},[1045,1120,1121],{"class":1062},"utils ",[1045,1123,1083],{"class":1058},[1045,1125,1126],{"class":1062}," timezone\n",[1045,1128,1130,1132],{"class":1047,"line":1129},5,[1045,1131,1083],{"class":1058},[1045,1133,1134],{"class":1062}," logging\n",[1045,1136,1138,1140],{"class":1047,"line":1137},6,[1045,1139,1083],{"class":1058},[1045,1141,1142],{"class":1062}," time\n",[1045,1144,1146,1148,1151,1153,1156,1158,1161,1163],{"class":1047,"line":1145},7,[1045,1147,1059],{"class":1058},[1045,1149,1150],{"class":1062}," concurrent",[1045,1152,1067],{"class":1066},[1045,1154,1155],{"class":1062},"futures ",[1045,1157,1083],{"class":1058},[1045,1159,1160],{"class":1062}," ThreadPoolExecutor",[1045,1162,1089],{"class":1066},[1045,1164,1165],{"class":1062}," as_completed\n",[1045,1167,1169,1171,1174,1176,1179,1181],{"class":1047,"line":1168},8,[1045,1170,1059],{"class":1058},[1045,1172,1173],{"class":1062}," typing ",[1045,1175,1083],{"class":1058},[1045,1177,1178],{"class":1062}," List",[1045,1180,1089],{"class":1066},[1045,1182,1183],{"class":1062}," Optional\n",[1045,1185,1187],{"class":1047,"line":1186},9,[1045,1188,1190],{"emptyLinePlaceholder":1189},true,"\n",[1045,1192,1194,1198,1202,1205,1209],{"class":1047,"line":1193},10,[1045,1195,1197],{"class":1196},"s5Kfy","class",[1045,1199,1201],{"class":1200},"sD-vU"," Command",[1045,1203,1204],{"class":1066},"(",[1045,1206,1208],{"class":1207},"sYn-s","BaseCommand",[1045,1210,1211],{"class":1066},"):\n",[1045,1213,1215,1219,1223],{"class":1047,"line":1214},11,[1045,1216,1218],{"class":1217},"sm7ve","    \"\"\"",[1045,1220,1222],{"class":1221},"sVyVU","Advanced management command with comprehensive features",[1045,1224,1225],{"class":1217},"\"\"\"\n",[1045,1227,1229],{"class":1047,"line":1228},12,[1045,1230,1231],{"class":1062},"    \n",[1045,1233,1235,1239,1242,1246,1250],{"class":1047,"line":1234},13,[1045,1236,1238],{"class":1237},"sJdAF","    help",[1045,1240,1241],{"class":1066}," =",[1045,1243,1245],{"class":1244},"sbYkP"," '",[1045,1247,1249],{"class":1248},"sTbE_","Advanced command with progress tracking and error handling",[1045,1251,1252],{"class":1244},"'\n",[1045,1254,1256],{"class":1047,"line":1255},14,[1045,1257,1231],{"class":1062},[1045,1259,1261,1264,1267,1269,1273,1275,1279,1283,1285,1288,1291],{"class":1047,"line":1260},15,[1045,1262,1263],{"class":1196},"    def",[1045,1265,1266],{"class":1237}," __init__",[1045,1268,1204],{"class":1066},[1045,1270,1272],{"class":1271},"sRjD_","self",[1045,1274,1089],{"class":1066},[1045,1276,1278],{"class":1277},"sVsLi"," *",[1045,1280,1282],{"class":1281},"sCyAa","args",[1045,1284,1089],{"class":1066},[1045,1286,1287],{"class":1277}," **",[1045,1289,1290],{"class":1281},"kwargs",[1045,1292,1211],{"class":1066},[1045,1294,1296,1300,1303,1306,1308,1311,1314,1316,1318,1320],{"class":1047,"line":1295},16,[1045,1297,1299],{"class":1298},"sa2tF","        super",[1045,1301,1302],{"class":1066},"().",[1045,1304,1305],{"class":1237},"__init__",[1045,1307,1204],{"class":1066},[1045,1309,1310],{"class":1277},"*",[1045,1312,1282],{"class":1313},"siWMO",[1045,1315,1089],{"class":1066},[1045,1317,1287],{"class":1277},[1045,1319,1290],{"class":1313},[1045,1321,1322],{"class":1066},")\n",[1045,1324,1326,1330,1332,1336,1338,1341,1343,1346,1348,1352],{"class":1047,"line":1325},17,[1045,1327,1329],{"class":1328},"se3Ec","        self",[1045,1331,1067],{"class":1066},[1045,1333,1335],{"class":1334},"sBPpx","logger",[1045,1337,1241],{"class":1066},[1045,1339,1340],{"class":1062}," logging",[1045,1342,1067],{"class":1066},[1045,1344,1345],{"class":1313},"getLogger",[1045,1347,1204],{"class":1066},[1045,1349,1351],{"class":1350},"s131V","__name__",[1045,1353,1322],{"class":1066},[1045,1355,1357,1359,1361,1364,1366],{"class":1047,"line":1356},18,[1045,1358,1329],{"class":1328},[1045,1360,1067],{"class":1066},[1045,1362,1363],{"class":1334},"start_time",[1045,1365,1241],{"class":1066},[1045,1367,1369],{"class":1368},"s8XtY"," None\n",[1045,1371,1373,1375,1377,1380,1382],{"class":1047,"line":1372},19,[1045,1374,1329],{"class":1328},[1045,1376,1067],{"class":1066},[1045,1378,1379],{"class":1334},"processed_count",[1045,1381,1241],{"class":1066},[1045,1383,1385],{"class":1384},"s7CZa"," 0\n",[1045,1387,1389,1391,1393,1396,1398],{"class":1047,"line":1388},20,[1045,1390,1329],{"class":1328},[1045,1392,1067],{"class":1066},[1045,1394,1395],{"class":1334},"error_count",[1045,1397,1241],{"class":1066},[1045,1399,1385],{"class":1384},[1045,1401,1403],{"class":1047,"line":1402},21,[1045,1404,1231],{"class":1062},[1045,1406,1408,1410,1414,1416,1418,1420,1423],{"class":1047,"line":1407},22,[1045,1409,1263],{"class":1196},[1045,1411,1413],{"class":1412},"sljsM"," add_arguments",[1045,1415,1204],{"class":1066},[1045,1417,1272],{"class":1271},[1045,1419,1089],{"class":1066},[1045,1421,1422],{"class":1281}," parser",[1045,1424,1211],{"class":1066},[1045,1426,1428,1431,1434],{"class":1047,"line":1427},23,[1045,1429,1430],{"class":1217},"        \"\"\"",[1045,1432,1433],{"class":1221},"Add command arguments with validation",[1045,1435,1225],{"class":1217},[1045,1437,1439,1442,1444,1447],{"class":1047,"line":1438},24,[1045,1440,1441],{"class":1062},"        parser",[1045,1443,1067],{"class":1066},[1045,1445,1446],{"class":1313},"add_argument",[1045,1448,1449],{"class":1066},"(\n",[1045,1451,1453,1456,1459,1462],{"class":1047,"line":1452},25,[1045,1454,1455],{"class":1244},"            '",[1045,1457,1458],{"class":1248},"--batch-size",[1045,1460,1461],{"class":1244},"'",[1045,1463,1464],{"class":1066},",\n",[1045,1466,1468,1472,1475,1478],{"class":1047,"line":1467},26,[1045,1469,1471],{"class":1470},"sqOPj","            type",[1045,1473,1474],{"class":1066},"=",[1045,1476,1477],{"class":1298},"int",[1045,1479,1464],{"class":1066},[1045,1481,1483,1486,1488,1491],{"class":1047,"line":1482},27,[1045,1484,1485],{"class":1470},"            default",[1045,1487,1474],{"class":1066},[1045,1489,1490],{"class":1384},"100",[1045,1492,1464],{"class":1066},[1045,1494,1496,1499,1501,1503,1506],{"class":1047,"line":1495},28,[1045,1497,1498],{"class":1470},"            help",[1045,1500,1474],{"class":1066},[1045,1502,1461],{"class":1244},[1045,1504,1505],{"class":1248},"Number of items to process in each batch",[1045,1507,1252],{"class":1244},[1045,1509,1511],{"class":1047,"line":1510},29,[1045,1512,1513],{"class":1066},"        )\n",[1045,1515,1517],{"class":1047,"line":1516},30,[1045,1518,1519],{"class":1062},"        \n",[1045,1521,1523,1525,1527,1529],{"class":1047,"line":1522},31,[1045,1524,1441],{"class":1062},[1045,1526,1067],{"class":1066},[1045,1528,1446],{"class":1313},[1045,1530,1449],{"class":1066},[1045,1532,1534,1536,1539,1541],{"class":1047,"line":1533},32,[1045,1535,1455],{"class":1244},[1045,1537,1538],{"class":1248},"--workers",[1045,1540,1461],{"class":1244},[1045,1542,1464],{"class":1066},[1045,1544,1546,1548,1550,1552],{"class":1047,"line":1545},33,[1045,1547,1471],{"class":1470},[1045,1549,1474],{"class":1066},[1045,1551,1477],{"class":1298},[1045,1553,1464],{"class":1066},[1045,1555,1557,1559,1561,1564],{"class":1047,"line":1556},34,[1045,1558,1485],{"class":1470},[1045,1560,1474],{"class":1066},[1045,1562,1563],{"class":1384},"4",[1045,1565,1464],{"class":1066},[1045,1567,1569,1571,1573,1575,1578],{"class":1047,"line":1568},35,[1045,1570,1498],{"class":1470},[1045,1572,1474],{"class":1066},[1045,1574,1461],{"class":1244},[1045,1576,1577],{"class":1248},"Number of worker threads",[1045,1579,1252],{"class":1244},[1045,1581,1583],{"class":1047,"line":1582},36,[1045,1584,1513],{"class":1066},[1045,1586,1588],{"class":1047,"line":1587},37,[1045,1589,1519],{"class":1062},[1045,1591,1593,1595,1597,1599],{"class":1047,"line":1592},38,[1045,1594,1441],{"class":1062},[1045,1596,1067],{"class":1066},[1045,1598,1446],{"class":1313},[1045,1600,1449],{"class":1066},[1045,1602,1604,1606,1609,1611],{"class":1047,"line":1603},39,[1045,1605,1455],{"class":1244},[1045,1607,1608],{"class":1248},"--dry-run",[1045,1610,1461],{"class":1244},[1045,1612,1464],{"class":1066},[1045,1614,1616,1619,1621,1623,1626,1628],{"class":1047,"line":1615},40,[1045,1617,1618],{"class":1470},"            action",[1045,1620,1474],{"class":1066},[1045,1622,1461],{"class":1244},[1045,1624,1625],{"class":1248},"store_true",[1045,1627,1461],{"class":1244},[1045,1629,1464],{"class":1066},[1045,1631,1633,1635,1637,1639,1642],{"class":1047,"line":1632},41,[1045,1634,1498],{"class":1470},[1045,1636,1474],{"class":1066},[1045,1638,1461],{"class":1244},[1045,1640,1641],{"class":1248},"Show what would be done without making changes",[1045,1643,1252],{"class":1244},[1045,1645,1647],{"class":1047,"line":1646},42,[1045,1648,1513],{"class":1066},[1045,1650,1652],{"class":1047,"line":1651},43,[1045,1653,1519],{"class":1062},[1045,1655,1657,1659,1661,1663],{"class":1047,"line":1656},44,[1045,1658,1441],{"class":1062},[1045,1660,1067],{"class":1066},[1045,1662,1446],{"class":1313},[1045,1664,1449],{"class":1066},[1045,1666,1668,1670,1673,1675],{"class":1047,"line":1667},45,[1045,1669,1455],{"class":1244},[1045,1671,1672],{"class":1248},"--verbose",[1045,1674,1461],{"class":1244},[1045,1676,1464],{"class":1066},[1045,1678,1680,1682,1684,1686,1688,1690],{"class":1047,"line":1679},46,[1045,1681,1618],{"class":1470},[1045,1683,1474],{"class":1066},[1045,1685,1461],{"class":1244},[1045,1687,1625],{"class":1248},[1045,1689,1461],{"class":1244},[1045,1691,1464],{"class":1066},[1045,1693,1695,1697,1699,1701,1704],{"class":1047,"line":1694},47,[1045,1696,1498],{"class":1470},[1045,1698,1474],{"class":1066},[1045,1700,1461],{"class":1244},[1045,1702,1703],{"class":1248},"Enable verbose output",[1045,1705,1252],{"class":1244},[1045,1707,1709],{"class":1047,"line":1708},48,[1045,1710,1513],{"class":1066},[1045,1712,1714],{"class":1047,"line":1713},49,[1045,1715,1519],{"class":1062},[1045,1717,1719,1721,1723,1725],{"class":1047,"line":1718},50,[1045,1720,1441],{"class":1062},[1045,1722,1067],{"class":1066},[1045,1724,1446],{"class":1313},[1045,1726,1449],{"class":1066},[1045,1728,1730,1732,1735,1737],{"class":1047,"line":1729},51,[1045,1731,1455],{"class":1244},[1045,1733,1734],{"class":1248},"--filter",[1045,1736,1461],{"class":1244},[1045,1738,1464],{"class":1066},[1045,1740,1742,1744,1746,1749],{"class":1047,"line":1741},52,[1045,1743,1471],{"class":1470},[1045,1745,1474],{"class":1066},[1045,1747,1748],{"class":1298},"str",[1045,1750,1464],{"class":1066},[1045,1752,1754,1756,1758,1760,1763],{"class":1047,"line":1753},53,[1045,1755,1498],{"class":1470},[1045,1757,1474],{"class":1066},[1045,1759,1461],{"class":1244},[1045,1761,1762],{"class":1248},"Filter criteria for processing",[1045,1764,1252],{"class":1244},[1045,1766,1768],{"class":1047,"line":1767},54,[1045,1769,1513],{"class":1066},[1045,1771,1773],{"class":1047,"line":1772},55,[1045,1774,1519],{"class":1062},[1045,1776,1778,1780,1782,1784],{"class":1047,"line":1777},56,[1045,1779,1441],{"class":1062},[1045,1781,1067],{"class":1066},[1045,1783,1446],{"class":1313},[1045,1785,1449],{"class":1066},[1045,1787,1789,1791,1794,1796],{"class":1047,"line":1788},57,[1045,1790,1455],{"class":1244},[1045,1792,1793],{"class":1248},"--output-file",[1045,1795,1461],{"class":1244},[1045,1797,1464],{"class":1066},[1045,1799,1801,1803,1805,1807],{"class":1047,"line":1800},58,[1045,1802,1471],{"class":1470},[1045,1804,1474],{"class":1066},[1045,1806,1748],{"class":1298},[1045,1808,1464],{"class":1066},[1045,1810,1812,1814,1816,1818,1821],{"class":1047,"line":1811},59,[1045,1813,1498],{"class":1470},[1045,1815,1474],{"class":1066},[1045,1817,1461],{"class":1244},[1045,1819,1820],{"class":1248},"Output file for results",[1045,1822,1252],{"class":1244},[1045,1824,1826],{"class":1047,"line":1825},60,[1045,1827,1513],{"class":1066},[1045,1829,1831],{"class":1047,"line":1830},61,[1045,1832,1519],{"class":1062},[1045,1834,1836,1838,1840,1842],{"class":1047,"line":1835},62,[1045,1837,1441],{"class":1062},[1045,1839,1067],{"class":1066},[1045,1841,1446],{"class":1313},[1045,1843,1449],{"class":1066},[1045,1845,1847,1849,1852,1854],{"class":1047,"line":1846},63,[1045,1848,1455],{"class":1244},[1045,1850,1851],{"class":1248},"--continue-on-error",[1045,1853,1461],{"class":1244},[1045,1855,1464],{"class":1066},[1045,1857,1859,1861,1863,1865,1867,1869],{"class":1047,"line":1858},64,[1045,1860,1618],{"class":1470},[1045,1862,1474],{"class":1066},[1045,1864,1461],{"class":1244},[1045,1866,1625],{"class":1248},[1045,1868,1461],{"class":1244},[1045,1870,1464],{"class":1066},[1045,1872,1874,1876,1878,1880,1883],{"class":1047,"line":1873},65,[1045,1875,1498],{"class":1470},[1045,1877,1474],{"class":1066},[1045,1879,1461],{"class":1244},[1045,1881,1882],{"class":1248},"Continue processing even if errors occur",[1045,1884,1252],{"class":1244},[1045,1886,1888],{"class":1047,"line":1887},66,[1045,1889,1513],{"class":1066},[1045,1891,1893],{"class":1047,"line":1892},67,[1045,1894,1231],{"class":1062},[1045,1896,1898,1900,1903,1905,1907,1909,1911,1913,1915,1917,1920],{"class":1047,"line":1897},68,[1045,1899,1263],{"class":1196},[1045,1901,1902],{"class":1412}," handle",[1045,1904,1204],{"class":1066},[1045,1906,1272],{"class":1271},[1045,1908,1089],{"class":1066},[1045,1910,1278],{"class":1277},[1045,1912,1282],{"class":1281},[1045,1914,1089],{"class":1066},[1045,1916,1287],{"class":1277},[1045,1918,1919],{"class":1281},"options",[1045,1921,1211],{"class":1066},[1045,1923,1925,1927,1930],{"class":1047,"line":1924},69,[1045,1926,1430],{"class":1217},[1045,1928,1929],{"class":1221},"Main command handler with comprehensive error handling",[1045,1931,1225],{"class":1217},[1045,1933,1935,1937,1939,1941,1943,1946,1948,1951],{"class":1047,"line":1934},70,[1045,1936,1329],{"class":1328},[1045,1938,1067],{"class":1066},[1045,1940,1363],{"class":1334},[1045,1942,1241],{"class":1066},[1045,1944,1945],{"class":1062}," timezone",[1045,1947,1067],{"class":1066},[1045,1949,1950],{"class":1313},"now",[1045,1952,1953],{"class":1066},"()\n",[1045,1955,1957,1959,1961,1963,1965],{"class":1047,"line":1956},71,[1045,1958,1329],{"class":1328},[1045,1960,1067],{"class":1066},[1045,1962,1919],{"class":1334},[1045,1964,1241],{"class":1066},[1045,1966,1967],{"class":1062}," options\n",[1045,1969,1971],{"class":1047,"line":1970},72,[1045,1972,1519],{"class":1062},[1045,1974,1976,1979],{"class":1047,"line":1975},73,[1045,1977,1978],{"class":1058},"        try",[1045,1980,1981],{"class":1066},":\n",[1045,1983,1985],{"class":1047,"line":1984},74,[1045,1986,1987],{"class":1051},"            # Validate arguments\n",[1045,1989,1991,1994,1996,1999,2001,2003],{"class":1047,"line":1990},75,[1045,1992,1993],{"class":1328},"            self",[1045,1995,1067],{"class":1066},[1045,1997,1998],{"class":1313},"validate_arguments",[1045,2000,1204],{"class":1066},[1045,2002,1919],{"class":1313},[1045,2004,1322],{"class":1066},[1045,2006,2008],{"class":1047,"line":2007},76,[1045,2009,2010],{"class":1062},"            \n",[1045,2012,2014],{"class":1047,"line":2013},77,[1045,2015,2016],{"class":1051},"            # Setup logging\n",[1045,2018,2020,2022,2024,2027,2029,2031],{"class":1047,"line":2019},78,[1045,2021,1993],{"class":1328},[1045,2023,1067],{"class":1066},[1045,2025,2026],{"class":1313},"setup_logging",[1045,2028,1204],{"class":1066},[1045,2030,1919],{"class":1313},[1045,2032,1322],{"class":1066},[1045,2034,2036],{"class":1047,"line":2035},79,[1045,2037,2010],{"class":1062},[1045,2039,2041],{"class":1047,"line":2040},80,[1045,2042,2043],{"class":1051},"            # Initialize progress tracking\n",[1045,2045,2047,2049,2051,2054],{"class":1047,"line":2046},81,[1045,2048,1993],{"class":1328},[1045,2050,1067],{"class":1066},[1045,2052,2053],{"class":1313},"setup_progress_tracking",[1045,2055,1953],{"class":1066},[1045,2057,2059],{"class":1047,"line":2058},82,[1045,2060,2010],{"class":1062},[1045,2062,2064],{"class":1047,"line":2063},83,[1045,2065,2066],{"class":1051},"            # Execute main logic\n",[1045,2068,2070,2072,2074,2077,2079,2081],{"class":1047,"line":2069},84,[1045,2071,1993],{"class":1328},[1045,2073,1067],{"class":1066},[1045,2075,2076],{"class":1313},"execute_command",[1045,2078,1204],{"class":1066},[1045,2080,1919],{"class":1313},[1045,2082,1322],{"class":1066},[1045,2084,2086],{"class":1047,"line":2085},85,[1045,2087,2010],{"class":1062},[1045,2089,2091],{"class":1047,"line":2090},86,[1045,2092,2093],{"class":1051},"            # Generate summary\n",[1045,2095,2097,2099,2101,2104],{"class":1047,"line":2096},87,[1045,2098,1993],{"class":1328},[1045,2100,1067],{"class":1066},[1045,2102,2103],{"class":1313},"print_summary",[1045,2105,1953],{"class":1066},[1045,2107,2109],{"class":1047,"line":2108},88,[1045,2110,2010],{"class":1062},[1045,2112,2114,2117,2120],{"class":1047,"line":2113},89,[1045,2115,2116],{"class":1058},"        except",[1045,2118,2119],{"class":1062}," CommandError",[1045,2121,1981],{"class":1066},[1045,2123,2125],{"class":1047,"line":2124},90,[1045,2126,2127],{"class":1058},"            raise\n",[1045,2129,2131,2133,2136,2139,2142],{"class":1047,"line":2130},91,[1045,2132,2116],{"class":1058},[1045,2134,2135],{"class":1298}," Exception",[1045,2137,2138],{"class":1058}," as",[1045,2140,2141],{"class":1062}," e",[1045,2143,1981],{"class":1066},[1045,2145,2147,2149,2151,2153,2155,2158,2160,2163,2166,2170,2173,2176,2179,2181,2184,2186,2189],{"class":1047,"line":2146},92,[1045,2148,1993],{"class":1328},[1045,2150,1067],{"class":1066},[1045,2152,1335],{"class":1334},[1045,2154,1067],{"class":1066},[1045,2156,2157],{"class":1313},"error",[1045,2159,1204],{"class":1066},[1045,2161,2162],{"class":1196},"f",[1045,2164,2165],{"class":1248},"\"Unexpected error: ",[1045,2167,2169],{"class":2168},"s3h35","{",[1045,2171,2172],{"class":1313},"e",[1045,2174,2175],{"class":2168},"}",[1045,2177,2178],{"class":1248},"\"",[1045,2180,1089],{"class":1066},[1045,2182,2183],{"class":1470}," exc_info",[1045,2185,1474],{"class":1066},[1045,2187,2188],{"class":1368},"True",[1045,2190,1322],{"class":1066},[1045,2192,2194,2197,2199,2201,2203,2206,2208,2210,2212,2214],{"class":1047,"line":2193},93,[1045,2195,2196],{"class":1058},"            raise",[1045,2198,2119],{"class":1313},[1045,2200,1204],{"class":1066},[1045,2202,2162],{"class":1196},[1045,2204,2205],{"class":1248},"\"Command failed: ",[1045,2207,2169],{"class":2168},[1045,2209,2172],{"class":1313},[1045,2211,2175],{"class":2168},[1045,2213,2178],{"class":1248},[1045,2215,1322],{"class":1066},[1045,2217,2219],{"class":1047,"line":2218},94,[1045,2220,1231],{"class":1062},[1045,2222,2224,2226,2229,2231,2233,2235,2238],{"class":1047,"line":2223},95,[1045,2225,1263],{"class":1196},[1045,2227,2228],{"class":1412}," validate_arguments",[1045,2230,1204],{"class":1066},[1045,2232,1272],{"class":1271},[1045,2234,1089],{"class":1066},[1045,2236,2237],{"class":1281}," options",[1045,2239,1211],{"class":1066},[1045,2241,2243,2245,2248],{"class":1047,"line":2242},96,[1045,2244,1430],{"class":1217},[1045,2246,2247],{"class":1221},"Validate command arguments",[1045,2249,1225],{"class":1217},[1045,2251,2253,2256,2258,2261,2263,2266,2268,2271,2274,2277],{"class":1047,"line":2252},97,[1045,2254,2255],{"class":1058},"        if",[1045,2257,2237],{"class":1062},[1045,2259,2260],{"class":1066},"[",[1045,2262,1461],{"class":1244},[1045,2264,2265],{"class":1248},"batch_size",[1045,2267,1461],{"class":1244},[1045,2269,2270],{"class":1066},"]",[1045,2272,2273],{"class":1277}," \u003C=",[1045,2275,2276],{"class":1384}," 0",[1045,2278,1981],{"class":1066},[1045,2280,2282,2284,2286,2288,2290,2293,2295],{"class":1047,"line":2281},98,[1045,2283,2196],{"class":1058},[1045,2285,2119],{"class":1313},[1045,2287,1204],{"class":1066},[1045,2289,2178],{"class":1244},[1045,2291,2292],{"class":1248},"Batch size must be positive",[1045,2294,2178],{"class":1244},[1045,2296,1322],{"class":1066},[1045,2298,2300],{"class":1047,"line":2299},99,[1045,2301,1519],{"class":1062},[1045,2303,2305,2307,2309,2311,2313,2316,2318,2320,2322,2324],{"class":1047,"line":2304},100,[1045,2306,2255],{"class":1058},[1045,2308,2237],{"class":1062},[1045,2310,2260],{"class":1066},[1045,2312,1461],{"class":1244},[1045,2314,2315],{"class":1248},"workers",[1045,2317,1461],{"class":1244},[1045,2319,2270],{"class":1066},[1045,2321,2273],{"class":1277},[1045,2323,2276],{"class":1384},[1045,2325,1981],{"class":1066},[1045,2327,2329,2331,2333,2335,2337,2340,2342],{"class":1047,"line":2328},101,[1045,2330,2196],{"class":1058},[1045,2332,2119],{"class":1313},[1045,2334,1204],{"class":1066},[1045,2336,2178],{"class":1244},[1045,2338,2339],{"class":1248},"Number of workers must be positive",[1045,2341,2178],{"class":1244},[1045,2343,1322],{"class":1066},[1045,2345,2347],{"class":1047,"line":2346},102,[1045,2348,1519],{"class":1062},[1045,2350,2352,2354,2356,2358,2360,2363,2365],{"class":1047,"line":2351},103,[1045,2353,2255],{"class":1058},[1045,2355,2237],{"class":1062},[1045,2357,2260],{"class":1066},[1045,2359,1461],{"class":1244},[1045,2361,2362],{"class":1248},"output_file",[1045,2364,1461],{"class":1244},[1045,2366,2367],{"class":1066},"]:\n",[1045,2369,2371,2374],{"class":1047,"line":2370},104,[1045,2372,2373],{"class":1058},"            import",[1045,2375,2376],{"class":1062}," os\n",[1045,2378,2380,2383,2385,2388,2390,2393,2395,2398,2400,2402,2404,2406,2408,2410],{"class":1047,"line":2379},105,[1045,2381,2382],{"class":1062},"            output_dir ",[1045,2384,1474],{"class":1066},[1045,2386,2387],{"class":1062}," os",[1045,2389,1067],{"class":1066},[1045,2391,2392],{"class":1334},"path",[1045,2394,1067],{"class":1066},[1045,2396,2397],{"class":1313},"dirname",[1045,2399,1204],{"class":1066},[1045,2401,1919],{"class":1313},[1045,2403,2260],{"class":1066},[1045,2405,1461],{"class":1244},[1045,2407,2362],{"class":1248},[1045,2409,1461],{"class":1244},[1045,2411,2412],{"class":1066},"])\n",[1045,2414,2416,2419,2422,2425,2428,2430,2432,2434,2436,2439,2441,2444],{"class":1047,"line":2415},106,[1045,2417,2418],{"class":1058},"            if",[1045,2420,2421],{"class":1062}," output_dir ",[1045,2423,2424],{"class":1277},"and",[1045,2426,2427],{"class":1277}," not",[1045,2429,2387],{"class":1062},[1045,2431,1067],{"class":1066},[1045,2433,2392],{"class":1334},[1045,2435,1067],{"class":1066},[1045,2437,2438],{"class":1313},"exists",[1045,2440,1204],{"class":1066},[1045,2442,2443],{"class":1313},"output_dir",[1045,2445,1211],{"class":1066},[1045,2447,2449,2452,2454,2456,2458,2461,2463,2465,2467,2469],{"class":1047,"line":2448},107,[1045,2450,2451],{"class":1058},"                raise",[1045,2453,2119],{"class":1313},[1045,2455,1204],{"class":1066},[1045,2457,2162],{"class":1196},[1045,2459,2460],{"class":1248},"\"Output directory does not exist: ",[1045,2462,2169],{"class":2168},[1045,2464,2443],{"class":1313},[1045,2466,2175],{"class":2168},[1045,2468,2178],{"class":1248},[1045,2470,1322],{"class":1066},[1045,2472,2474],{"class":1047,"line":2473},108,[1045,2475,1231],{"class":1062},[1045,2477,2479,2481,2484,2486,2488,2490,2492],{"class":1047,"line":2478},109,[1045,2480,1263],{"class":1196},[1045,2482,2483],{"class":1412}," setup_logging",[1045,2485,1204],{"class":1066},[1045,2487,1272],{"class":1271},[1045,2489,1089],{"class":1066},[1045,2491,2237],{"class":1281},[1045,2493,1211],{"class":1066},[1045,2495,2497,2499,2502],{"class":1047,"line":2496},110,[1045,2498,1430],{"class":1217},[1045,2500,2501],{"class":1221},"Setup logging configuration",[1045,2503,1225],{"class":1217},[1045,2505,2507,2510,2512,2514,2516,2520,2523,2525,2527,2529,2532,2534,2536,2539,2541,2543],{"class":1047,"line":2506},111,[1045,2508,2509],{"class":1062},"        level ",[1045,2511,1474],{"class":1066},[1045,2513,1340],{"class":1062},[1045,2515,1067],{"class":1066},[1045,2517,2519],{"class":2518},"sFGJz","DEBUG",[1045,2521,2522],{"class":1058}," if",[1045,2524,2237],{"class":1062},[1045,2526,2260],{"class":1066},[1045,2528,1461],{"class":1244},[1045,2530,2531],{"class":1248},"verbose",[1045,2533,1461],{"class":1244},[1045,2535,2270],{"class":1066},[1045,2537,2538],{"class":1058}," else",[1045,2540,1340],{"class":1062},[1045,2542,1067],{"class":1066},[1045,2544,2545],{"class":2518},"INFO\n",[1045,2547,2549],{"class":1047,"line":2548},112,[1045,2550,1519],{"class":1062},[1045,2552,2554,2557,2559,2561,2563,2566],{"class":1047,"line":2553},113,[1045,2555,2556],{"class":1062},"        formatter ",[1045,2558,1474],{"class":1066},[1045,2560,1340],{"class":1062},[1045,2562,1067],{"class":1066},[1045,2564,2565],{"class":1313},"Formatter",[1045,2567,1449],{"class":1066},[1045,2569,2571,2573,2576,2579,2582,2584,2587,2589,2592],{"class":1047,"line":2570},114,[1045,2572,1455],{"class":1244},[1045,2574,2575],{"class":2168},"%(asctime)s",[1045,2577,2578],{"class":1248}," - ",[1045,2580,2581],{"class":2168},"%(name)s",[1045,2583,2578],{"class":1248},[1045,2585,2586],{"class":2168},"%(levelname)s",[1045,2588,2578],{"class":1248},[1045,2590,2591],{"class":2168},"%(message)s",[1045,2593,1252],{"class":1244},[1045,2595,2597],{"class":1047,"line":2596},115,[1045,2598,1513],{"class":1066},[1045,2600,2602],{"class":1047,"line":2601},116,[1045,2603,1519],{"class":1062},[1045,2605,2607],{"class":1047,"line":2606},117,[1045,2608,2609],{"class":1051},"        # Console handler\n",[1045,2611,2613,2616,2618,2620,2622,2625],{"class":1047,"line":2612},118,[1045,2614,2615],{"class":1062},"        console_handler ",[1045,2617,1474],{"class":1066},[1045,2619,1340],{"class":1062},[1045,2621,1067],{"class":1066},[1045,2623,2624],{"class":1313},"StreamHandler",[1045,2626,1953],{"class":1066},[1045,2628,2630,2633,2635,2638,2640,2643],{"class":1047,"line":2629},119,[1045,2631,2632],{"class":1062},"        console_handler",[1045,2634,1067],{"class":1066},[1045,2636,2637],{"class":1313},"setLevel",[1045,2639,1204],{"class":1066},[1045,2641,2642],{"class":1313},"level",[1045,2644,1322],{"class":1066},[1045,2646,2648,2650,2652,2655,2657,2660],{"class":1047,"line":2647},120,[1045,2649,2632],{"class":1062},[1045,2651,1067],{"class":1066},[1045,2653,2654],{"class":1313},"setFormatter",[1045,2656,1204],{"class":1066},[1045,2658,2659],{"class":1313},"formatter",[1045,2661,1322],{"class":1066},[1045,2663,2665],{"class":1047,"line":2664},121,[1045,2666,1519],{"class":1062},[1045,2668,2670,2672,2674,2676,2678,2681,2683,2686],{"class":1047,"line":2669},122,[1045,2671,1329],{"class":1328},[1045,2673,1067],{"class":1066},[1045,2675,1335],{"class":1334},[1045,2677,1067],{"class":1066},[1045,2679,2680],{"class":1313},"addHandler",[1045,2682,1204],{"class":1066},[1045,2684,2685],{"class":1313},"console_handler",[1045,2687,1322],{"class":1066},[1045,2689,2691,2693,2695,2697,2699,2701,2703,2705],{"class":1047,"line":2690},123,[1045,2692,1329],{"class":1328},[1045,2694,1067],{"class":1066},[1045,2696,1335],{"class":1334},[1045,2698,1067],{"class":1066},[1045,2700,2637],{"class":1313},[1045,2702,1204],{"class":1066},[1045,2704,2642],{"class":1313},[1045,2706,1322],{"class":1066},[1045,2708,2710],{"class":1047,"line":2709},124,[1045,2711,1519],{"class":1062},[1045,2713,2715],{"class":1047,"line":2714},125,[1045,2716,2717],{"class":1051},"        # File handler if output file specified\n",[1045,2719,2721,2723,2725,2727,2729,2731,2733],{"class":1047,"line":2720},126,[1045,2722,2255],{"class":1058},[1045,2724,2237],{"class":1062},[1045,2726,2260],{"class":1066},[1045,2728,1461],{"class":1244},[1045,2730,2362],{"class":1248},[1045,2732,1461],{"class":1244},[1045,2734,2367],{"class":1066},[1045,2736,2738,2741,2743,2745,2747,2749,2751,2753,2756,2759,2761,2763,2766,2768,2770,2772,2775,2777],{"class":1047,"line":2737},127,[1045,2739,2740],{"class":1062},"            log_file ",[1045,2742,1474],{"class":1066},[1045,2744,2237],{"class":1062},[1045,2746,2260],{"class":1066},[1045,2748,1461],{"class":1244},[1045,2750,2362],{"class":1248},[1045,2752,1461],{"class":1244},[1045,2754,2755],{"class":1066},"].",[1045,2757,2758],{"class":1313},"replace",[1045,2760,1204],{"class":1066},[1045,2762,1461],{"class":1244},[1045,2764,2765],{"class":1248},".txt",[1045,2767,1461],{"class":1244},[1045,2769,1089],{"class":1066},[1045,2771,1245],{"class":1244},[1045,2773,2774],{"class":1248},".log",[1045,2776,1461],{"class":1244},[1045,2778,1322],{"class":1066},[1045,2780,2782,2785,2787,2789,2791,2794,2796,2799],{"class":1047,"line":2781},128,[1045,2783,2784],{"class":1062},"            file_handler ",[1045,2786,1474],{"class":1066},[1045,2788,1340],{"class":1062},[1045,2790,1067],{"class":1066},[1045,2792,2793],{"class":1313},"FileHandler",[1045,2795,1204],{"class":1066},[1045,2797,2798],{"class":1313},"log_file",[1045,2800,1322],{"class":1066},[1045,2802,2804,2807,2809,2811,2813,2816,2818,2820],{"class":1047,"line":2803},129,[1045,2805,2806],{"class":1062},"            file_handler",[1045,2808,1067],{"class":1066},[1045,2810,2637],{"class":1313},[1045,2812,1204],{"class":1066},[1045,2814,2815],{"class":1313},"logging",[1045,2817,1067],{"class":1066},[1045,2819,2519],{"class":2518},[1045,2821,1322],{"class":1066},[1045,2823,2825,2827,2829,2831,2833,2835],{"class":1047,"line":2824},130,[1045,2826,2806],{"class":1062},[1045,2828,1067],{"class":1066},[1045,2830,2654],{"class":1313},[1045,2832,1204],{"class":1066},[1045,2834,2659],{"class":1313},[1045,2836,1322],{"class":1066},[1045,2838,2840,2842,2844,2846,2848,2850,2852,2855],{"class":1047,"line":2839},131,[1045,2841,1993],{"class":1328},[1045,2843,1067],{"class":1066},[1045,2845,1335],{"class":1334},[1045,2847,1067],{"class":1066},[1045,2849,2680],{"class":1313},[1045,2851,1204],{"class":1066},[1045,2853,2854],{"class":1313},"file_handler",[1045,2856,1322],{"class":1066},[1045,2858,2860],{"class":1047,"line":2859},132,[1045,2861,1231],{"class":1062},[1045,2863,2865,2867,2870,2872,2874],{"class":1047,"line":2864},133,[1045,2866,1263],{"class":1196},[1045,2868,2869],{"class":1412}," setup_progress_tracking",[1045,2871,1204],{"class":1066},[1045,2873,1272],{"class":1271},[1045,2875,1211],{"class":1066},[1045,2877,2879,2881,2884],{"class":1047,"line":2878},134,[1045,2880,1430],{"class":1217},[1045,2882,2883],{"class":1221},"Initialize progress tracking",[1045,2885,1225],{"class":1217},[1045,2887,2889,2891],{"class":1047,"line":2888},135,[1045,2890,1978],{"class":1058},[1045,2892,1981],{"class":1066},[1045,2894,2896,2899,2902,2904],{"class":1047,"line":2895},136,[1045,2897,2898],{"class":1058},"            from",[1045,2900,2901],{"class":1062}," tqdm ",[1045,2903,1083],{"class":1058},[1045,2905,2906],{"class":1062}," tqdm\n",[1045,2908,2910,2912,2914,2917,2919],{"class":1047,"line":2909},137,[1045,2911,1993],{"class":1328},[1045,2913,1067],{"class":1066},[1045,2915,2916],{"class":1334},"use_progress_bar",[1045,2918,1241],{"class":1066},[1045,2920,2921],{"class":1368}," True\n",[1045,2923,2925,2927,2930],{"class":1047,"line":2924},138,[1045,2926,2116],{"class":1058},[1045,2928,2929],{"class":1298}," ImportError",[1045,2931,1981],{"class":1066},[1045,2933,2935,2937,2939,2941,2943],{"class":1047,"line":2934},139,[1045,2936,1993],{"class":1328},[1045,2938,1067],{"class":1066},[1045,2940,2916],{"class":1334},[1045,2942,1241],{"class":1066},[1045,2944,2945],{"class":1368}," False\n",[1045,2947,2949,2951,2953,2956,2958,2961,2963,2965,2968,2970],{"class":1047,"line":2948},140,[1045,2950,1993],{"class":1328},[1045,2952,1067],{"class":1066},[1045,2954,2955],{"class":1334},"stdout",[1045,2957,1067],{"class":1066},[1045,2959,2960],{"class":1313},"write",[1045,2962,1204],{"class":1066},[1045,2964,2178],{"class":1244},[1045,2966,2967],{"class":1248},"Install tqdm for progress bars: pip install tqdm",[1045,2969,2178],{"class":1244},[1045,2971,1322],{"class":1066},[1045,2973,2975],{"class":1047,"line":2974},141,[1045,2976,1231],{"class":1062},[1045,2978,2980,2982,2985,2987,2989,2991,2993],{"class":1047,"line":2979},142,[1045,2981,1263],{"class":1196},[1045,2983,2984],{"class":1412}," execute_command",[1045,2986,1204],{"class":1066},[1045,2988,1272],{"class":1271},[1045,2990,1089],{"class":1066},[1045,2992,2237],{"class":1281},[1045,2994,1211],{"class":1066},[1045,2996,2998,3000,3003],{"class":1047,"line":2997},143,[1045,2999,1430],{"class":1217},[1045,3001,3002],{"class":1221},"Execute the main command logic",[1045,3004,1225],{"class":1217},[1045,3006,3008],{"class":1047,"line":3007},144,[1045,3009,3010],{"class":1051},"        # Get items to process\n",[1045,3012,3014,3017,3019,3022,3024,3027,3029,3031],{"class":1047,"line":3013},145,[1045,3015,3016],{"class":1062},"        items ",[1045,3018,1474],{"class":1066},[1045,3020,3021],{"class":1328}," self",[1045,3023,1067],{"class":1066},[1045,3025,3026],{"class":1313},"get_items_to_process",[1045,3028,1204],{"class":1066},[1045,3030,1919],{"class":1313},[1045,3032,1322],{"class":1066},[1045,3034,3036,3039,3041,3044,3046,3049],{"class":1047,"line":3035},146,[1045,3037,3038],{"class":1062},"        total_items ",[1045,3040,1474],{"class":1066},[1045,3042,3043],{"class":1237}," len",[1045,3045,1204],{"class":1066},[1045,3047,3048],{"class":1313},"items",[1045,3050,1322],{"class":1066},[1045,3052,3054],{"class":1047,"line":3053},147,[1045,3055,1519],{"class":1062},[1045,3057,3059,3061,3064,3067,3069],{"class":1047,"line":3058},148,[1045,3060,2255],{"class":1058},[1045,3062,3063],{"class":1062}," total_items ",[1045,3065,3066],{"class":1277},"==",[1045,3068,2276],{"class":1384},[1045,3070,1981],{"class":1066},[1045,3072,3074,3076,3078,3080,3082,3084,3086,3088,3091,3093],{"class":1047,"line":3073},149,[1045,3075,1993],{"class":1328},[1045,3077,1067],{"class":1066},[1045,3079,2955],{"class":1334},[1045,3081,1067],{"class":1066},[1045,3083,2960],{"class":1313},[1045,3085,1204],{"class":1066},[1045,3087,2178],{"class":1244},[1045,3089,3090],{"class":1248},"No items to process",[1045,3092,2178],{"class":1244},[1045,3094,1322],{"class":1066},[1045,3096,3098],{"class":1047,"line":3097},150,[1045,3099,3100],{"class":1058},"            return\n",[1045,3102,3104],{"class":1047,"line":3103},151,[1045,3105,1519],{"class":1062},[1045,3107,3109,3111,3113,3115,3117,3119,3121,3123,3126,3128,3131,3133,3136],{"class":1047,"line":3108},152,[1045,3110,1329],{"class":1328},[1045,3112,1067],{"class":1066},[1045,3114,2955],{"class":1334},[1045,3116,1067],{"class":1066},[1045,3118,2960],{"class":1313},[1045,3120,1204],{"class":1066},[1045,3122,2162],{"class":1196},[1045,3124,3125],{"class":1248},"\"Processing ",[1045,3127,2169],{"class":2168},[1045,3129,3130],{"class":1313},"total_items",[1045,3132,2175],{"class":2168},[1045,3134,3135],{"class":1248}," items...\"",[1045,3137,1322],{"class":1066},[1045,3139,3141],{"class":1047,"line":3140},153,[1045,3142,1519],{"class":1062},[1045,3144,3146,3148,3150,3152,3154,3157,3159],{"class":1047,"line":3145},154,[1045,3147,2255],{"class":1058},[1045,3149,2237],{"class":1062},[1045,3151,2260],{"class":1066},[1045,3153,1461],{"class":1244},[1045,3155,3156],{"class":1248},"dry_run",[1045,3158,1461],{"class":1244},[1045,3160,2367],{"class":1066},[1045,3162,3164,3166,3168,3170,3172,3174,3176,3178,3181,3183],{"class":1047,"line":3163},155,[1045,3165,1993],{"class":1328},[1045,3167,1067],{"class":1066},[1045,3169,2955],{"class":1334},[1045,3171,1067],{"class":1066},[1045,3173,2960],{"class":1313},[1045,3175,1204],{"class":1066},[1045,3177,2178],{"class":1244},[1045,3179,3180],{"class":1248},"DRY RUN - No changes will be made",[1045,3182,2178],{"class":1244},[1045,3184,1322],{"class":1066},[1045,3186,3188],{"class":1047,"line":3187},156,[1045,3189,1519],{"class":1062},[1045,3191,3193],{"class":1047,"line":3192},157,[1045,3194,3195],{"class":1051},"        # Process items in batches\n",[1045,3197,3199,3202,3204,3206,3208,3210,3212,3214],{"class":1047,"line":3198},158,[1045,3200,3201],{"class":1062},"        batch_size ",[1045,3203,1474],{"class":1066},[1045,3205,2237],{"class":1062},[1045,3207,2260],{"class":1066},[1045,3209,1461],{"class":1244},[1045,3211,2265],{"class":1248},[1045,3213,1461],{"class":1244},[1045,3215,3216],{"class":1066},"]\n",[1045,3218,3220,3223,3225,3227,3229,3231,3233,3235],{"class":1047,"line":3219},159,[1045,3221,3222],{"class":1062},"        workers ",[1045,3224,1474],{"class":1066},[1045,3226,2237],{"class":1062},[1045,3228,2260],{"class":1066},[1045,3230,1461],{"class":1244},[1045,3232,2315],{"class":1248},[1045,3234,1461],{"class":1244},[1045,3236,3216],{"class":1066},[1045,3238,3240],{"class":1047,"line":3239},160,[1045,3241,1519],{"class":1062},[1045,3243,3245,3247,3250,3253,3256],{"class":1047,"line":3244},161,[1045,3246,2255],{"class":1058},[1045,3248,3249],{"class":1062}," workers ",[1045,3251,3252],{"class":1277},">",[1045,3254,3255],{"class":1384}," 1",[1045,3257,1981],{"class":1066},[1045,3259,3261,3263,3265,3268,3270,3272,3274,3277,3279,3282,3284,3286],{"class":1047,"line":3260},162,[1045,3262,1993],{"class":1328},[1045,3264,1067],{"class":1066},[1045,3266,3267],{"class":1313},"process_items_parallel",[1045,3269,1204],{"class":1066},[1045,3271,3048],{"class":1313},[1045,3273,1089],{"class":1066},[1045,3275,3276],{"class":1313}," batch_size",[1045,3278,1089],{"class":1066},[1045,3280,3281],{"class":1313}," workers",[1045,3283,1089],{"class":1066},[1045,3285,2237],{"class":1313},[1045,3287,1322],{"class":1066},[1045,3289,3291,3294],{"class":1047,"line":3290},163,[1045,3292,3293],{"class":1058},"        else",[1045,3295,1981],{"class":1066},[1045,3297,3299,3301,3303,3306,3308,3310,3312,3314,3316,3318],{"class":1047,"line":3298},164,[1045,3300,1993],{"class":1328},[1045,3302,1067],{"class":1066},[1045,3304,3305],{"class":1313},"process_items_sequential",[1045,3307,1204],{"class":1066},[1045,3309,3048],{"class":1313},[1045,3311,1089],{"class":1066},[1045,3313,3276],{"class":1313},[1045,3315,1089],{"class":1066},[1045,3317,2237],{"class":1313},[1045,3319,1322],{"class":1066},[1045,3321,3323],{"class":1047,"line":3322},165,[1045,3324,1231],{"class":1062},[1045,3326,3328,3330,3333,3335,3337,3339,3341,3344,3347,3349],{"class":1047,"line":3327},166,[1045,3329,1263],{"class":1196},[1045,3331,3332],{"class":1412}," get_items_to_process",[1045,3334,1204],{"class":1066},[1045,3336,1272],{"class":1271},[1045,3338,1089],{"class":1066},[1045,3340,2237],{"class":1281},[1045,3342,3343],{"class":1066},")",[1045,3345,3346],{"class":1066}," ->",[1045,3348,1178],{"class":1062},[1045,3350,1981],{"class":1066},[1045,3352,3354,3356,3359],{"class":1047,"line":3353},167,[1045,3355,1430],{"class":1217},[1045,3357,3358],{"class":1221},"Get items to process based on filters",[1045,3360,1225],{"class":1217},[1045,3362,3364,3367,3370,3372,3375,3377],{"class":1047,"line":3363},168,[1045,3365,3366],{"class":1058},"        from",[1045,3368,3369],{"class":1062}," myapp",[1045,3371,1067],{"class":1066},[1045,3373,3374],{"class":1062},"models ",[1045,3376,1083],{"class":1058},[1045,3378,3379],{"class":1062}," MyModel\n",[1045,3381,3383],{"class":1047,"line":3382},169,[1045,3384,1519],{"class":1062},[1045,3386,3388,3391,3393,3396,3398,3401,3403,3406],{"class":1047,"line":3387},170,[1045,3389,3390],{"class":1062},"        queryset ",[1045,3392,1474],{"class":1066},[1045,3394,3395],{"class":1062}," MyModel",[1045,3397,1067],{"class":1066},[1045,3399,3400],{"class":1334},"objects",[1045,3402,1067],{"class":1066},[1045,3404,3405],{"class":1313},"all",[1045,3407,1953],{"class":1066},[1045,3409,3411],{"class":1047,"line":3410},171,[1045,3412,1519],{"class":1062},[1045,3414,3416],{"class":1047,"line":3415},172,[1045,3417,3418],{"class":1051},"        # Apply filters\n",[1045,3420,3422,3424,3426,3428,3430,3433,3435],{"class":1047,"line":3421},173,[1045,3423,2255],{"class":1058},[1045,3425,2237],{"class":1062},[1045,3427,2260],{"class":1066},[1045,3429,1461],{"class":1244},[1045,3431,3432],{"class":1248},"filter",[1045,3434,1461],{"class":1244},[1045,3436,2367],{"class":1066},[1045,3438,3440],{"class":1047,"line":3439},174,[1045,3441,3442],{"class":1051},"            # Parse filter criteria\n",[1045,3444,3446,3449,3451,3453,3455,3457,3459,3461,3463,3466,3468,3470,3472,3474],{"class":1047,"line":3445},175,[1045,3447,3448],{"class":1062},"            filter_parts ",[1045,3450,1474],{"class":1066},[1045,3452,2237],{"class":1062},[1045,3454,2260],{"class":1066},[1045,3456,1461],{"class":1244},[1045,3458,3432],{"class":1248},[1045,3460,1461],{"class":1244},[1045,3462,2755],{"class":1066},[1045,3464,3465],{"class":1313},"split",[1045,3467,1204],{"class":1066},[1045,3469,1461],{"class":1244},[1045,3471,1474],{"class":1248},[1045,3473,1461],{"class":1244},[1045,3475,1322],{"class":1066},[1045,3477,3479,3481,3483,3485,3488,3490,3493,3496],{"class":1047,"line":3478},176,[1045,3480,2418],{"class":1058},[1045,3482,3043],{"class":1237},[1045,3484,1204],{"class":1066},[1045,3486,3487],{"class":1313},"filter_parts",[1045,3489,3343],{"class":1066},[1045,3491,3492],{"class":1277}," ==",[1045,3494,3495],{"class":1384}," 2",[1045,3497,1981],{"class":1066},[1045,3499,3501,3504,3506,3509,3511],{"class":1047,"line":3500},177,[1045,3502,3503],{"class":1062},"                field",[1045,3505,1089],{"class":1066},[1045,3507,3508],{"class":1062}," value ",[1045,3510,1474],{"class":1066},[1045,3512,3513],{"class":1062}," filter_parts\n",[1045,3515,3517,3520,3522,3525,3527,3529,3531,3534,3536,3539,3542,3545],{"class":1047,"line":3516},178,[1045,3518,3519],{"class":1062},"                queryset ",[1045,3521,1474],{"class":1066},[1045,3523,3524],{"class":1062}," queryset",[1045,3526,1067],{"class":1066},[1045,3528,3432],{"class":1313},[1045,3530,1204],{"class":1066},[1045,3532,3533],{"class":1277},"**",[1045,3535,2169],{"class":1066},[1045,3537,3538],{"class":1313},"field",[1045,3540,3541],{"class":1066},":",[1045,3543,3544],{"class":1313}," value",[1045,3546,3547],{"class":1066},"})\n",[1045,3549,3551],{"class":1047,"line":3550},179,[1045,3552,1519],{"class":1062},[1045,3554,3556,3559,3562,3564,3567,3569,3572,3574,3576,3579,3581,3583,3586,3588,3590],{"class":1047,"line":3555},180,[1045,3557,3558],{"class":1058},"        return",[1045,3560,3561],{"class":1298}," list",[1045,3563,1204],{"class":1066},[1045,3565,3566],{"class":1313},"queryset",[1045,3568,1067],{"class":1066},[1045,3570,3571],{"class":1313},"values_list",[1045,3573,1204],{"class":1066},[1045,3575,1461],{"class":1244},[1045,3577,3578],{"class":1248},"id",[1045,3580,1461],{"class":1244},[1045,3582,1089],{"class":1066},[1045,3584,3585],{"class":1470}," flat",[1045,3587,1474],{"class":1066},[1045,3589,2188],{"class":1368},[1045,3591,3592],{"class":1066},"))\n",[1045,3594,3596],{"class":1047,"line":3595},181,[1045,3597,1231],{"class":1062},[1045,3599,3601,3603,3606,3608,3610,3612,3615,3617,3619,3621,3623,3625,3628,3630,3632],{"class":1047,"line":3600},182,[1045,3602,1263],{"class":1196},[1045,3604,3605],{"class":1412}," process_items_sequential",[1045,3607,1204],{"class":1066},[1045,3609,1272],{"class":1271},[1045,3611,1089],{"class":1066},[1045,3613,3614],{"class":1281}," items",[1045,3616,3541],{"class":1066},[1045,3618,1178],{"class":1062},[1045,3620,1089],{"class":1066},[1045,3622,3276],{"class":1281},[1045,3624,3541],{"class":1066},[1045,3626,3627],{"class":1298}," int",[1045,3629,1089],{"class":1066},[1045,3631,2237],{"class":1281},[1045,3633,1211],{"class":1066},[1045,3635,3637,3639,3642],{"class":1047,"line":3636},183,[1045,3638,1430],{"class":1217},[1045,3640,3641],{"class":1221},"Process items sequentially",[1045,3643,1225],{"class":1217},[1045,3645,3647,3650,3652,3655,3657,3659,3662,3664,3667,3670,3672,3674,3677,3680,3683,3686,3688,3691,3693,3695,3697,3699,3702,3704],{"class":1047,"line":3646},184,[1045,3648,3649],{"class":1062},"        batches ",[1045,3651,1474],{"class":1066},[1045,3653,3654],{"class":1066}," [",[1045,3656,3048],{"class":1062},[1045,3658,2260],{"class":1066},[1045,3660,3661],{"class":1062},"i",[1045,3663,3541],{"class":1066},[1045,3665,3666],{"class":1062},"i ",[1045,3668,3669],{"class":1277},"+",[1045,3671,3276],{"class":1062},[1045,3673,2270],{"class":1066},[1045,3675,3676],{"class":1058}," for",[1045,3678,3679],{"class":1062}," i ",[1045,3681,3682],{"class":1058},"in",[1045,3684,3685],{"class":1237}," range",[1045,3687,1204],{"class":1066},[1045,3689,3690],{"class":1384},"0",[1045,3692,1089],{"class":1066},[1045,3694,3043],{"class":1237},[1045,3696,1204],{"class":1066},[1045,3698,3048],{"class":1313},[1045,3700,3701],{"class":1066},"),",[1045,3703,3276],{"class":1313},[1045,3705,3706],{"class":1066},")]\n",[1045,3708,3710],{"class":1047,"line":3709},185,[1045,3711,1519],{"class":1062},[1045,3713,3715,3717,3719,3721,3723],{"class":1047,"line":3714},186,[1045,3716,2255],{"class":1058},[1045,3718,3021],{"class":1328},[1045,3720,1067],{"class":1066},[1045,3722,2916],{"class":1334},[1045,3724,1981],{"class":1066},[1045,3726,3728,3730,3732,3734],{"class":1047,"line":3727},187,[1045,3729,2898],{"class":1058},[1045,3731,2901],{"class":1062},[1045,3733,1083],{"class":1058},[1045,3735,2906],{"class":1062},[1045,3737,3739,3742,3744,3747,3749,3752,3754,3757,3759,3761,3763,3766,3768,3770,3773,3775],{"class":1047,"line":3738},188,[1045,3740,3741],{"class":1062},"            progress_bar ",[1045,3743,1474],{"class":1066},[1045,3745,3746],{"class":1313}," tqdm",[1045,3748,1204],{"class":1066},[1045,3750,3751],{"class":1470},"total",[1045,3753,1474],{"class":1066},[1045,3755,3756],{"class":1237},"len",[1045,3758,1204],{"class":1066},[1045,3760,3048],{"class":1313},[1045,3762,3701],{"class":1066},[1045,3764,3765],{"class":1470}," desc",[1045,3767,1474],{"class":1066},[1045,3769,2178],{"class":1244},[1045,3771,3772],{"class":1248},"Processing",[1045,3774,2178],{"class":1244},[1045,3776,1322],{"class":1066},[1045,3778,3780],{"class":1047,"line":3779},189,[1045,3781,1519],{"class":1062},[1045,3783,3785,3788,3791,3793,3796],{"class":1047,"line":3784},190,[1045,3786,3787],{"class":1058},"        for",[1045,3789,3790],{"class":1062}," batch ",[1045,3792,3682],{"class":1058},[1045,3794,3795],{"class":1062}," batches",[1045,3797,1981],{"class":1066},[1045,3799,3801,3804],{"class":1047,"line":3800},191,[1045,3802,3803],{"class":1058},"            try",[1045,3805,1981],{"class":1066},[1045,3807,3809,3812,3814,3817,3819,3822,3824,3826],{"class":1047,"line":3808},192,[1045,3810,3811],{"class":1328},"                self",[1045,3813,1067],{"class":1066},[1045,3815,3816],{"class":1313},"process_batch",[1045,3818,1204],{"class":1066},[1045,3820,3821],{"class":1313},"batch",[1045,3823,1089],{"class":1066},[1045,3825,2237],{"class":1313},[1045,3827,1322],{"class":1066},[1045,3829,3831],{"class":1047,"line":3830},193,[1045,3832,3833],{"class":1062},"                \n",[1045,3835,3837,3840,3842,3844,3846],{"class":1047,"line":3836},194,[1045,3838,3839],{"class":1058},"                if",[1045,3841,3021],{"class":1328},[1045,3843,1067],{"class":1066},[1045,3845,2916],{"class":1334},[1045,3847,1981],{"class":1066},[1045,3849,3851,3854,3856,3859,3861,3863,3865,3867],{"class":1047,"line":3850},195,[1045,3852,3853],{"class":1062},"                    progress_bar",[1045,3855,1067],{"class":1066},[1045,3857,3858],{"class":1313},"update",[1045,3860,1204],{"class":1066},[1045,3862,3756],{"class":1237},[1045,3864,1204],{"class":1066},[1045,3866,3821],{"class":1313},[1045,3868,3592],{"class":1066},[1045,3870,3872,3875],{"class":1047,"line":3871},196,[1045,3873,3874],{"class":1058},"                else",[1045,3876,1981],{"class":1066},[1045,3878,3880,3883,3885,3887,3890,3892,3894,3896],{"class":1047,"line":3879},197,[1045,3881,3882],{"class":1328},"                    self",[1045,3884,1067],{"class":1066},[1045,3886,1379],{"class":1334},[1045,3888,3889],{"class":1066}," +=",[1045,3891,3043],{"class":1237},[1045,3893,1204],{"class":1066},[1045,3895,3821],{"class":1313},[1045,3897,1322],{"class":1066},[1045,3899,3901,3903,3905,3908],{"class":1047,"line":3900},198,[1045,3902,3882],{"class":1328},[1045,3904,1067],{"class":1066},[1045,3906,3907],{"class":1313},"print_progress",[1045,3909,1953],{"class":1066},[1045,3911,3913],{"class":1047,"line":3912},199,[1045,3914,3915],{"class":1062},"                    \n",[1045,3917,3919,3922,3924,3926,3928],{"class":1047,"line":3918},200,[1045,3920,3921],{"class":1058},"            except",[1045,3923,2135],{"class":1298},[1045,3925,2138],{"class":1058},[1045,3927,2141],{"class":1062},[1045,3929,1981],{"class":1066},[1045,3931,3933,3935,3937,3939,3941],{"class":1047,"line":3932},201,[1045,3934,3811],{"class":1328},[1045,3936,1067],{"class":1066},[1045,3938,1395],{"class":1334},[1045,3940,3889],{"class":1066},[1045,3942,3943],{"class":1384}," 1\n",[1045,3945,3947,3949,3951,3953,3955,3957,3959,3961,3964,3966,3968,3970,3972],{"class":1047,"line":3946},202,[1045,3948,3811],{"class":1328},[1045,3950,1067],{"class":1066},[1045,3952,1335],{"class":1334},[1045,3954,1067],{"class":1066},[1045,3956,2157],{"class":1313},[1045,3958,1204],{"class":1066},[1045,3960,2162],{"class":1196},[1045,3962,3963],{"class":1248},"\"Batch processing failed: ",[1045,3965,2169],{"class":2168},[1045,3967,2172],{"class":1313},[1045,3969,2175],{"class":2168},[1045,3971,2178],{"class":1248},[1045,3973,1322],{"class":1066},[1045,3975,3977],{"class":1047,"line":3976},203,[1045,3978,3833],{"class":1062},[1045,3980,3982,3984,3986,3988,3990,3992,3995,3997],{"class":1047,"line":3981},204,[1045,3983,3839],{"class":1058},[1045,3985,2427],{"class":1277},[1045,3987,2237],{"class":1062},[1045,3989,2260],{"class":1066},[1045,3991,1461],{"class":1244},[1045,3993,3994],{"class":1248},"continue_on_error",[1045,3996,1461],{"class":1244},[1045,3998,2367],{"class":1066},[1045,4000,4002],{"class":1047,"line":4001},205,[1045,4003,4004],{"class":1058},"                    raise\n",[1045,4006,4008],{"class":1047,"line":4007},206,[1045,4009,1519],{"class":1062},[1045,4011,4013,4015,4017,4019,4021],{"class":1047,"line":4012},207,[1045,4014,2255],{"class":1058},[1045,4016,3021],{"class":1328},[1045,4018,1067],{"class":1066},[1045,4020,2916],{"class":1334},[1045,4022,1981],{"class":1066},[1045,4024,4026,4029,4031,4034],{"class":1047,"line":4025},208,[1045,4027,4028],{"class":1062},"            progress_bar",[1045,4030,1067],{"class":1066},[1045,4032,4033],{"class":1313},"close",[1045,4035,1953],{"class":1066},[1045,4037,4039],{"class":1047,"line":4038},209,[1045,4040,1231],{"class":1062},[1045,4042,4044,4046,4049,4051,4053,4055,4057,4059,4061,4063,4065,4067,4069,4071,4073,4075,4077,4079,4081],{"class":1047,"line":4043},210,[1045,4045,1263],{"class":1196},[1045,4047,4048],{"class":1412}," process_items_parallel",[1045,4050,1204],{"class":1066},[1045,4052,1272],{"class":1271},[1045,4054,1089],{"class":1066},[1045,4056,3614],{"class":1281},[1045,4058,3541],{"class":1066},[1045,4060,1178],{"class":1062},[1045,4062,1089],{"class":1066},[1045,4064,3276],{"class":1281},[1045,4066,3541],{"class":1066},[1045,4068,3627],{"class":1298},[1045,4070,1089],{"class":1066},[1045,4072,3281],{"class":1281},[1045,4074,3541],{"class":1066},[1045,4076,3627],{"class":1298},[1045,4078,1089],{"class":1066},[1045,4080,2237],{"class":1281},[1045,4082,1211],{"class":1066},[1045,4084,4086,4088,4091],{"class":1047,"line":4085},211,[1045,4087,1430],{"class":1217},[1045,4089,4090],{"class":1221},"Process items in parallel using thread pool",[1045,4092,1225],{"class":1217},[1045,4094,4096,4098,4100,4102,4104,4106,4108,4110,4112,4114,4116,4118,4120,4122,4124,4126,4128,4130,4132,4134,4136,4138,4140,4142],{"class":1047,"line":4095},212,[1045,4097,3649],{"class":1062},[1045,4099,1474],{"class":1066},[1045,4101,3654],{"class":1066},[1045,4103,3048],{"class":1062},[1045,4105,2260],{"class":1066},[1045,4107,3661],{"class":1062},[1045,4109,3541],{"class":1066},[1045,4111,3666],{"class":1062},[1045,4113,3669],{"class":1277},[1045,4115,3276],{"class":1062},[1045,4117,2270],{"class":1066},[1045,4119,3676],{"class":1058},[1045,4121,3679],{"class":1062},[1045,4123,3682],{"class":1058},[1045,4125,3685],{"class":1237},[1045,4127,1204],{"class":1066},[1045,4129,3690],{"class":1384},[1045,4131,1089],{"class":1066},[1045,4133,3043],{"class":1237},[1045,4135,1204],{"class":1066},[1045,4137,3048],{"class":1313},[1045,4139,3701],{"class":1066},[1045,4141,3276],{"class":1313},[1045,4143,3706],{"class":1066},[1045,4145,4147],{"class":1047,"line":4146},213,[1045,4148,1519],{"class":1062},[1045,4150,4152,4154,4156,4158,4160],{"class":1047,"line":4151},214,[1045,4153,2255],{"class":1058},[1045,4155,3021],{"class":1328},[1045,4157,1067],{"class":1066},[1045,4159,2916],{"class":1334},[1045,4161,1981],{"class":1066},[1045,4163,4165,4167,4169,4171],{"class":1047,"line":4164},215,[1045,4166,2898],{"class":1058},[1045,4168,2901],{"class":1062},[1045,4170,1083],{"class":1058},[1045,4172,2906],{"class":1062},[1045,4174,4176,4178,4180,4182,4184,4186,4188,4190,4192,4194,4196,4198,4200,4202,4204,4206],{"class":1047,"line":4175},216,[1045,4177,3741],{"class":1062},[1045,4179,1474],{"class":1066},[1045,4181,3746],{"class":1313},[1045,4183,1204],{"class":1066},[1045,4185,3751],{"class":1470},[1045,4187,1474],{"class":1066},[1045,4189,3756],{"class":1237},[1045,4191,1204],{"class":1066},[1045,4193,3048],{"class":1313},[1045,4195,3701],{"class":1066},[1045,4197,3765],{"class":1470},[1045,4199,1474],{"class":1066},[1045,4201,2178],{"class":1244},[1045,4203,3772],{"class":1248},[1045,4205,2178],{"class":1244},[1045,4207,1322],{"class":1066},[1045,4209,4211],{"class":1047,"line":4210},217,[1045,4212,1519],{"class":1062},[1045,4214,4216,4219,4221,4223,4226,4228,4230,4232,4234,4237],{"class":1047,"line":4215},218,[1045,4217,4218],{"class":1058},"        with",[1045,4220,1160],{"class":1313},[1045,4222,1204],{"class":1066},[1045,4224,4225],{"class":1470},"max_workers",[1045,4227,1474],{"class":1066},[1045,4229,2315],{"class":1313},[1045,4231,3343],{"class":1066},[1045,4233,2138],{"class":1058},[1045,4235,4236],{"class":1062}," executor",[1045,4238,1981],{"class":1066},[1045,4240,4242],{"class":1047,"line":4241},219,[1045,4243,4244],{"class":1051},"            # Submit all batches\n",[1045,4246,4248,4251,4253],{"class":1047,"line":4247},220,[1045,4249,4250],{"class":1062},"            future_to_batch ",[1045,4252,1474],{"class":1066},[1045,4254,4255],{"class":1066}," {\n",[1045,4257,4259,4262,4264,4267,4269,4271,4273,4275,4277,4280,4282,4284,4287],{"class":1047,"line":4258},221,[1045,4260,4261],{"class":1062},"                executor",[1045,4263,1067],{"class":1066},[1045,4265,4266],{"class":1313},"submit",[1045,4268,1204],{"class":1066},[1045,4270,1272],{"class":1328},[1045,4272,1067],{"class":1066},[1045,4274,3816],{"class":1334},[1045,4276,1089],{"class":1066},[1045,4278,4279],{"class":1313}," batch",[1045,4281,1089],{"class":1066},[1045,4283,2237],{"class":1313},[1045,4285,4286],{"class":1066},"):",[1045,4288,4289],{"class":1062}," batch\n",[1045,4291,4293,4296,4298,4300],{"class":1047,"line":4292},222,[1045,4294,4295],{"class":1058},"                for",[1045,4297,3790],{"class":1062},[1045,4299,3682],{"class":1058},[1045,4301,4302],{"class":1062}," batches\n",[1045,4304,4306],{"class":1047,"line":4305},223,[1045,4307,4308],{"class":1066},"            }\n",[1045,4310,4312],{"class":1047,"line":4311},224,[1045,4313,2010],{"class":1062},[1045,4315,4317],{"class":1047,"line":4316},225,[1045,4318,4319],{"class":1051},"            # Process completed batches\n",[1045,4321,4323,4326,4329,4331,4334,4336,4339],{"class":1047,"line":4322},226,[1045,4324,4325],{"class":1058},"            for",[1045,4327,4328],{"class":1062}," future ",[1045,4330,3682],{"class":1058},[1045,4332,4333],{"class":1313}," as_completed",[1045,4335,1204],{"class":1066},[1045,4337,4338],{"class":1313},"future_to_batch",[1045,4340,1211],{"class":1066},[1045,4342,4344,4347,4349,4352,4354,4357],{"class":1047,"line":4343},227,[1045,4345,4346],{"class":1062},"                batch ",[1045,4348,1474],{"class":1066},[1045,4350,4351],{"class":1062}," future_to_batch",[1045,4353,2260],{"class":1066},[1045,4355,4356],{"class":1062},"future",[1045,4358,3216],{"class":1066},[1045,4360,4362],{"class":1047,"line":4361},228,[1045,4363,3833],{"class":1062},[1045,4365,4367,4370],{"class":1047,"line":4366},229,[1045,4368,4369],{"class":1058},"                try",[1045,4371,1981],{"class":1066},[1045,4373,4375,4378,4380,4383],{"class":1047,"line":4374},230,[1045,4376,4377],{"class":1062},"                    future",[1045,4379,1067],{"class":1066},[1045,4381,4382],{"class":1313},"result",[1045,4384,1953],{"class":1066},[1045,4386,4388],{"class":1047,"line":4387},231,[1045,4389,3915],{"class":1062},[1045,4391,4393,4396,4398,4400,4402],{"class":1047,"line":4392},232,[1045,4394,4395],{"class":1058},"                    if",[1045,4397,3021],{"class":1328},[1045,4399,1067],{"class":1066},[1045,4401,2916],{"class":1334},[1045,4403,1981],{"class":1066},[1045,4405,4407,4410,4412,4414,4416,4418,4420,4422],{"class":1047,"line":4406},233,[1045,4408,4409],{"class":1062},"                        progress_bar",[1045,4411,1067],{"class":1066},[1045,4413,3858],{"class":1313},[1045,4415,1204],{"class":1066},[1045,4417,3756],{"class":1237},[1045,4419,1204],{"class":1066},[1045,4421,3821],{"class":1313},[1045,4423,3592],{"class":1066},[1045,4425,4427,4430],{"class":1047,"line":4426},234,[1045,4428,4429],{"class":1058},"                    else",[1045,4431,1981],{"class":1066},[1045,4433,4435,4438,4440,4442,4444,4446,4448,4450],{"class":1047,"line":4434},235,[1045,4436,4437],{"class":1328},"                        self",[1045,4439,1067],{"class":1066},[1045,4441,1379],{"class":1334},[1045,4443,3889],{"class":1066},[1045,4445,3043],{"class":1237},[1045,4447,1204],{"class":1066},[1045,4449,3821],{"class":1313},[1045,4451,1322],{"class":1066},[1045,4453,4455,4457,4459,4461],{"class":1047,"line":4454},236,[1045,4456,4437],{"class":1328},[1045,4458,1067],{"class":1066},[1045,4460,3907],{"class":1313},[1045,4462,1953],{"class":1066},[1045,4464,4466],{"class":1047,"line":4465},237,[1045,4467,4468],{"class":1062},"                        \n",[1045,4470,4472,4475,4477,4479,4481],{"class":1047,"line":4471},238,[1045,4473,4474],{"class":1058},"                except",[1045,4476,2135],{"class":1298},[1045,4478,2138],{"class":1058},[1045,4480,2141],{"class":1062},[1045,4482,1981],{"class":1066},[1045,4484,4486,4488,4490,4492,4494],{"class":1047,"line":4485},239,[1045,4487,3882],{"class":1328},[1045,4489,1067],{"class":1066},[1045,4491,1395],{"class":1334},[1045,4493,3889],{"class":1066},[1045,4495,3943],{"class":1384},[1045,4497,4499,4501,4503,4505,4507,4509,4511,4513,4515,4517,4519,4521,4523],{"class":1047,"line":4498},240,[1045,4500,3882],{"class":1328},[1045,4502,1067],{"class":1066},[1045,4504,1335],{"class":1334},[1045,4506,1067],{"class":1066},[1045,4508,2157],{"class":1313},[1045,4510,1204],{"class":1066},[1045,4512,2162],{"class":1196},[1045,4514,3963],{"class":1248},[1045,4516,2169],{"class":2168},[1045,4518,2172],{"class":1313},[1045,4520,2175],{"class":2168},[1045,4522,2178],{"class":1248},[1045,4524,1322],{"class":1066},[1045,4526,4528],{"class":1047,"line":4527},241,[1045,4529,3915],{"class":1062},[1045,4531,4533,4535,4537,4539,4541,4543,4545,4547],{"class":1047,"line":4532},242,[1045,4534,4395],{"class":1058},[1045,4536,2427],{"class":1277},[1045,4538,2237],{"class":1062},[1045,4540,2260],{"class":1066},[1045,4542,1461],{"class":1244},[1045,4544,3994],{"class":1248},[1045,4546,1461],{"class":1244},[1045,4548,2367],{"class":1066},[1045,4550,4552],{"class":1047,"line":4551},243,[1045,4553,4554],{"class":1051},"                        # Cancel remaining futures\n",[1045,4556,4558,4561,4564,4566,4568],{"class":1047,"line":4557},244,[1045,4559,4560],{"class":1058},"                        for",[1045,4562,4563],{"class":1062}," f ",[1045,4565,3682],{"class":1058},[1045,4567,4351],{"class":1062},[1045,4569,1981],{"class":1066},[1045,4571,4573,4576,4578,4581],{"class":1047,"line":4572},245,[1045,4574,4575],{"class":1062},"                            f",[1045,4577,1067],{"class":1066},[1045,4579,4580],{"class":1313},"cancel",[1045,4582,1953],{"class":1066},[1045,4584,4586],{"class":1047,"line":4585},246,[1045,4587,4588],{"class":1058},"                        raise\n",[1045,4590,4592],{"class":1047,"line":4591},247,[1045,4593,1519],{"class":1062},[1045,4595,4597,4599,4601,4603,4605],{"class":1047,"line":4596},248,[1045,4598,2255],{"class":1058},[1045,4600,3021],{"class":1328},[1045,4602,1067],{"class":1066},[1045,4604,2916],{"class":1334},[1045,4606,1981],{"class":1066},[1045,4608,4610,4612,4614,4616],{"class":1047,"line":4609},249,[1045,4611,4028],{"class":1062},[1045,4613,1067],{"class":1066},[1045,4615,4033],{"class":1313},[1045,4617,1953],{"class":1066},[1045,4619,4621],{"class":1047,"line":4620},250,[1045,4622,1231],{"class":1062},[1045,4624,4626,4629,4632,4634],{"class":1047,"line":4625},251,[1045,4627,4628],{"class":1066},"    @",[1045,4630,4631],{"class":1412},"transaction",[1045,4633,1067],{"class":1066},[1045,4635,4636],{"class":1412},"atomic\n",[1045,4638,4640,4642,4645,4647,4649,4651,4654,4656,4658,4660,4662,4665,4667],{"class":1047,"line":4639},252,[1045,4641,1263],{"class":1196},[1045,4643,4644],{"class":1412}," process_batch",[1045,4646,1204],{"class":1066},[1045,4648,1272],{"class":1271},[1045,4650,1089],{"class":1066},[1045,4652,4653],{"class":1281}," batch_ids",[1045,4655,3541],{"class":1066},[1045,4657,1178],{"class":1062},[1045,4659,2260],{"class":1066},[1045,4661,1477],{"class":1298},[1045,4663,4664],{"class":1066},"],",[1045,4666,2237],{"class":1281},[1045,4668,1211],{"class":1066},[1045,4670,4672,4674,4677],{"class":1047,"line":4671},253,[1045,4673,1430],{"class":1217},[1045,4675,4676],{"class":1221},"Process a batch of items",[1045,4678,1225],{"class":1217},[1045,4680,4682,4684,4686,4688,4690,4692],{"class":1047,"line":4681},254,[1045,4683,3366],{"class":1058},[1045,4685,3369],{"class":1062},[1045,4687,1067],{"class":1066},[1045,4689,3374],{"class":1062},[1045,4691,1083],{"class":1058},[1045,4693,3379],{"class":1062},[1045,4695,4697],{"class":1047,"line":4696},255,[1045,4698,1519],{"class":1062},[1045,4700,4702,4704,4706,4708,4710,4712,4714,4716,4718,4721,4723,4726],{"class":1047,"line":4701},256,[1045,4703,3016],{"class":1062},[1045,4705,1474],{"class":1066},[1045,4707,3395],{"class":1062},[1045,4709,1067],{"class":1066},[1045,4711,3400],{"class":1334},[1045,4713,1067],{"class":1066},[1045,4715,3432],{"class":1313},[1045,4717,1204],{"class":1066},[1045,4719,4720],{"class":1470},"id__in",[1045,4722,1474],{"class":1066},[1045,4724,4725],{"class":1313},"batch_ids",[1045,4727,1322],{"class":1066},[1045,4729,4731],{"class":1047,"line":4730},257,[1045,4732,1519],{"class":1062},[1045,4734,4736,4738,4741,4743,4745],{"class":1047,"line":4735},258,[1045,4737,3787],{"class":1058},[1045,4739,4740],{"class":1062}," item ",[1045,4742,3682],{"class":1058},[1045,4744,3614],{"class":1062},[1045,4746,1981],{"class":1066},[1045,4748,4750,4752],{"class":1047,"line":4749},259,[1045,4751,3803],{"class":1058},[1045,4753,1981],{"class":1066},[1045,4755,4757,4759,4761,4764,4766,4769,4771,4773],{"class":1047,"line":4756},260,[1045,4758,3811],{"class":1328},[1045,4760,1067],{"class":1066},[1045,4762,4763],{"class":1313},"process_item",[1045,4765,1204],{"class":1066},[1045,4767,4768],{"class":1313},"item",[1045,4770,1089],{"class":1066},[1045,4772,2237],{"class":1313},[1045,4774,1322],{"class":1066},[1045,4776,4778,4780,4782,4784,4786],{"class":1047,"line":4777},261,[1045,4779,3921],{"class":1058},[1045,4781,2135],{"class":1298},[1045,4783,2138],{"class":1058},[1045,4785,2141],{"class":1062},[1045,4787,1981],{"class":1066},[1045,4789,4791,4793,4795,4797,4799,4801,4803,4805,4808,4810,4812,4814,4816,4818,4821,4823,4825,4827,4829],{"class":1047,"line":4790},262,[1045,4792,3811],{"class":1328},[1045,4794,1067],{"class":1066},[1045,4796,1335],{"class":1334},[1045,4798,1067],{"class":1066},[1045,4800,2157],{"class":1313},[1045,4802,1204],{"class":1066},[1045,4804,2162],{"class":1196},[1045,4806,4807],{"class":1248},"\"Failed to process item ",[1045,4809,2169],{"class":2168},[1045,4811,4768],{"class":1313},[1045,4813,1067],{"class":1066},[1045,4815,3578],{"class":1334},[1045,4817,2175],{"class":2168},[1045,4819,4820],{"class":1248},": ",[1045,4822,2169],{"class":2168},[1045,4824,2172],{"class":1313},[1045,4826,2175],{"class":2168},[1045,4828,2178],{"class":1248},[1045,4830,1322],{"class":1066},[1045,4832,4834],{"class":1047,"line":4833},263,[1045,4835,4836],{"class":1058},"                raise\n",[1045,4838,4840],{"class":1047,"line":4839},264,[1045,4841,1231],{"class":1062},[1045,4843,4845,4847,4850,4852,4854,4856,4859,4861,4863],{"class":1047,"line":4844},265,[1045,4846,1263],{"class":1196},[1045,4848,4849],{"class":1412}," process_item",[1045,4851,1204],{"class":1066},[1045,4853,1272],{"class":1271},[1045,4855,1089],{"class":1066},[1045,4857,4858],{"class":1281}," item",[1045,4860,1089],{"class":1066},[1045,4862,2237],{"class":1281},[1045,4864,1211],{"class":1066},[1045,4866,4868,4870,4873],{"class":1047,"line":4867},266,[1045,4869,1430],{"class":1217},[1045,4871,4872],{"class":1221},"Process a single item",[1045,4874,1225],{"class":1217},[1045,4876,4878,4880,4882,4884,4886,4888,4890],{"class":1047,"line":4877},267,[1045,4879,2255],{"class":1058},[1045,4881,2237],{"class":1062},[1045,4883,2260],{"class":1066},[1045,4885,1461],{"class":1244},[1045,4887,3156],{"class":1248},[1045,4889,1461],{"class":1244},[1045,4891,2367],{"class":1066},[1045,4893,4895,4897,4899,4901,4903,4906,4908,4910,4913,4915,4917,4919,4921,4923,4925],{"class":1047,"line":4894},268,[1045,4896,1993],{"class":1328},[1045,4898,1067],{"class":1066},[1045,4900,1335],{"class":1334},[1045,4902,1067],{"class":1066},[1045,4904,4905],{"class":1313},"info",[1045,4907,1204],{"class":1066},[1045,4909,2162],{"class":1196},[1045,4911,4912],{"class":1248},"\"Would process item ",[1045,4914,2169],{"class":2168},[1045,4916,4768],{"class":1313},[1045,4918,1067],{"class":1066},[1045,4920,3578],{"class":1334},[1045,4922,2175],{"class":2168},[1045,4924,2178],{"class":1248},[1045,4926,1322],{"class":1066},[1045,4928,4930],{"class":1047,"line":4929},269,[1045,4931,3100],{"class":1058},[1045,4933,4935],{"class":1047,"line":4934},270,[1045,4936,1519],{"class":1062},[1045,4938,4940],{"class":1047,"line":4939},271,[1045,4941,4942],{"class":1051},"        # Actual processing logic here\n",[1045,4944,4946,4949,4951,4954,4956],{"class":1047,"line":4945},272,[1045,4947,4948],{"class":1062},"        item",[1045,4950,1067],{"class":1066},[1045,4952,4953],{"class":1334},"processed",[1045,4955,1241],{"class":1066},[1045,4957,2921],{"class":1368},[1045,4959,4961,4963,4965,4968,4970,4972,4974,4976],{"class":1047,"line":4960},273,[1045,4962,4948],{"class":1062},[1045,4964,1067],{"class":1066},[1045,4966,4967],{"class":1334},"processed_at",[1045,4969,1241],{"class":1066},[1045,4971,1945],{"class":1062},[1045,4973,1067],{"class":1066},[1045,4975,1950],{"class":1313},[1045,4977,1953],{"class":1066},[1045,4979,4981,4983,4985,4988],{"class":1047,"line":4980},274,[1045,4982,4948],{"class":1062},[1045,4984,1067],{"class":1066},[1045,4986,4987],{"class":1313},"save",[1045,4989,1953],{"class":1066},[1045,4991,4993],{"class":1047,"line":4992},275,[1045,4994,1519],{"class":1062},[1045,4996,4998,5000,5002,5004,5006,5009,5011,5013,5016,5018,5020,5022,5024,5026,5028],{"class":1047,"line":4997},276,[1045,4999,1329],{"class":1328},[1045,5001,1067],{"class":1066},[1045,5003,1335],{"class":1334},[1045,5005,1067],{"class":1066},[1045,5007,5008],{"class":1313},"debug",[1045,5010,1204],{"class":1066},[1045,5012,2162],{"class":1196},[1045,5014,5015],{"class":1248},"\"Processed item ",[1045,5017,2169],{"class":2168},[1045,5019,4768],{"class":1313},[1045,5021,1067],{"class":1066},[1045,5023,3578],{"class":1334},[1045,5025,2175],{"class":2168},[1045,5027,2178],{"class":1248},[1045,5029,1322],{"class":1066},[1045,5031,5033],{"class":1047,"line":5032},277,[1045,5034,1231],{"class":1062},[1045,5036,5038,5040,5043,5045,5047],{"class":1047,"line":5037},278,[1045,5039,1263],{"class":1196},[1045,5041,5042],{"class":1412}," print_progress",[1045,5044,1204],{"class":1066},[1045,5046,1272],{"class":1271},[1045,5048,1211],{"class":1066},[1045,5050,5052,5054,5057],{"class":1047,"line":5051},279,[1045,5053,1430],{"class":1217},[1045,5055,5056],{"class":1221},"Print progress information",[1045,5058,1225],{"class":1217},[1045,5060,5062,5065,5067,5069,5071,5073,5076,5079,5081,5083],{"class":1047,"line":5061},280,[1045,5063,5064],{"class":1062},"        elapsed ",[1045,5066,1474],{"class":1066},[1045,5068,1945],{"class":1062},[1045,5070,1067],{"class":1066},[1045,5072,1950],{"class":1313},[1045,5074,5075],{"class":1066},"()",[1045,5077,5078],{"class":1277}," -",[1045,5080,3021],{"class":1328},[1045,5082,1067],{"class":1066},[1045,5084,5085],{"class":1334},"start_time\n",[1045,5087,5089,5092,5094,5096,5098,5100,5103,5106,5108,5111,5113,5115,5117,5119,5121,5123,5126,5128,5130],{"class":1047,"line":5088},281,[1045,5090,5091],{"class":1062},"        rate ",[1045,5093,1474],{"class":1066},[1045,5095,3021],{"class":1328},[1045,5097,1067],{"class":1066},[1045,5099,1379],{"class":1334},[1045,5101,5102],{"class":1277}," /",[1045,5104,5105],{"class":1062}," elapsed",[1045,5107,1067],{"class":1066},[1045,5109,5110],{"class":1313},"total_seconds",[1045,5112,5075],{"class":1066},[1045,5114,2522],{"class":1058},[1045,5116,5105],{"class":1062},[1045,5118,1067],{"class":1066},[1045,5120,5110],{"class":1313},[1045,5122,5075],{"class":1066},[1045,5124,5125],{"class":1277}," >",[1045,5127,2276],{"class":1384},[1045,5129,2538],{"class":1058},[1045,5131,1385],{"class":1384},[1045,5133,5135],{"class":1047,"line":5134},282,[1045,5136,1519],{"class":1062},[1045,5138,5140,5142,5144,5146,5148,5150],{"class":1047,"line":5139},283,[1045,5141,1329],{"class":1328},[1045,5143,1067],{"class":1066},[1045,5145,2955],{"class":1334},[1045,5147,1067],{"class":1066},[1045,5149,2960],{"class":1313},[1045,5151,1449],{"class":1066},[1045,5153,5155,5158,5161,5163,5165,5167,5169,5171],{"class":1047,"line":5154},284,[1045,5156,5157],{"class":1196},"            f",[1045,5159,5160],{"class":1248},"\"Processed: ",[1045,5162,2169],{"class":2168},[1045,5164,1272],{"class":1328},[1045,5166,1067],{"class":1066},[1045,5168,1379],{"class":1334},[1045,5170,2175],{"class":2168},[1045,5172,5173],{"class":1248},", \"\n",[1045,5175,5177,5179,5182,5184,5186,5188,5190,5192],{"class":1047,"line":5176},285,[1045,5178,5157],{"class":1196},[1045,5180,5181],{"class":1248},"\"Errors: ",[1045,5183,2169],{"class":2168},[1045,5185,1272],{"class":1328},[1045,5187,1067],{"class":1066},[1045,5189,1395],{"class":1334},[1045,5191,2175],{"class":2168},[1045,5193,5173],{"class":1248},[1045,5195,5197,5199,5202,5204,5207,5210,5212],{"class":1047,"line":5196},286,[1045,5198,5157],{"class":1196},[1045,5200,5201],{"class":1248},"\"Rate: ",[1045,5203,2169],{"class":2168},[1045,5205,5206],{"class":1313},"rate",[1045,5208,5209],{"class":1196},":.2f",[1045,5211,2175],{"class":2168},[1045,5213,5214],{"class":1248}," items/sec\"\n",[1045,5216,5218],{"class":1047,"line":5217},287,[1045,5219,1513],{"class":1066},[1045,5221,5223],{"class":1047,"line":5222},288,[1045,5224,1231],{"class":1062},[1045,5226,5228,5230,5233,5235,5237],{"class":1047,"line":5227},289,[1045,5229,1263],{"class":1196},[1045,5231,5232],{"class":1412}," print_summary",[1045,5234,1204],{"class":1066},[1045,5236,1272],{"class":1271},[1045,5238,1211],{"class":1066},[1045,5240,5242,5244,5247],{"class":1047,"line":5241},290,[1045,5243,1430],{"class":1217},[1045,5245,5246],{"class":1221},"Print command execution summary",[1045,5248,1225],{"class":1217},[1045,5250,5252,5254,5256,5258,5260,5262,5264,5266,5268,5270],{"class":1047,"line":5251},291,[1045,5253,5064],{"class":1062},[1045,5255,1474],{"class":1066},[1045,5257,1945],{"class":1062},[1045,5259,1067],{"class":1066},[1045,5261,1950],{"class":1313},[1045,5263,5075],{"class":1066},[1045,5265,5078],{"class":1277},[1045,5267,3021],{"class":1328},[1045,5269,1067],{"class":1066},[1045,5271,5085],{"class":1334},[1045,5273,5275],{"class":1047,"line":5274},292,[1045,5276,1519],{"class":1062},[1045,5278,5280,5282,5284,5286,5288,5290],{"class":1047,"line":5279},293,[1045,5281,1329],{"class":1328},[1045,5283,1067],{"class":1066},[1045,5285,2955],{"class":1334},[1045,5287,1067],{"class":1066},[1045,5289,2960],{"class":1313},[1045,5291,1449],{"class":1066},[1045,5293,5295,5297,5299,5302,5304,5307],{"class":1047,"line":5294},294,[1045,5296,1993],{"class":1328},[1045,5298,1067],{"class":1066},[1045,5300,5301],{"class":1334},"style",[1045,5303,1067],{"class":1066},[1045,5305,5306],{"class":1313},"SUCCESS",[1045,5308,1449],{"class":1066},[1045,5310,5312,5315,5317,5320,5323,5325],{"class":1047,"line":5311},295,[1045,5313,5314],{"class":1196},"                f",[1045,5316,2178],{"class":1248},[1045,5318,5319],{"class":1328},"\\n",[1045,5321,5322],{"class":1248},"Command completed successfully!",[1045,5324,5319],{"class":1328},[1045,5326,5327],{"class":1248},"\"\n",[1045,5329,5331,5333,5335,5337,5339,5341,5343,5345,5347,5349],{"class":1047,"line":5330},296,[1045,5332,5314],{"class":1196},[1045,5334,5160],{"class":1248},[1045,5336,2169],{"class":2168},[1045,5338,1272],{"class":1328},[1045,5340,1067],{"class":1066},[1045,5342,1379],{"class":1334},[1045,5344,2175],{"class":2168},[1045,5346,3614],{"class":1248},[1045,5348,5319],{"class":1328},[1045,5350,5327],{"class":1248},[1045,5352,5354,5356,5358,5360,5362,5364,5366,5368,5370],{"class":1047,"line":5353},297,[1045,5355,5314],{"class":1196},[1045,5357,5181],{"class":1248},[1045,5359,2169],{"class":2168},[1045,5361,1272],{"class":1328},[1045,5363,1067],{"class":1066},[1045,5365,1395],{"class":1334},[1045,5367,2175],{"class":2168},[1045,5369,5319],{"class":1328},[1045,5371,5327],{"class":1248},[1045,5373,5375,5377,5380,5382,5385,5387,5389],{"class":1047,"line":5374},298,[1045,5376,5314],{"class":1196},[1045,5378,5379],{"class":1248},"\"Duration: ",[1045,5381,2169],{"class":2168},[1045,5383,5384],{"class":1313},"elapsed",[1045,5386,2175],{"class":2168},[1045,5388,5319],{"class":1328},[1045,5390,5327],{"class":1248},[1045,5392,5394,5396,5399,5401,5403,5405,5407,5409,5411,5413,5415,5417,5419,5421],{"class":1047,"line":5393},299,[1045,5395,5314],{"class":1196},[1045,5397,5398],{"class":1248},"\"Average rate: ",[1045,5400,2169],{"class":2168},[1045,5402,1272],{"class":1328},[1045,5404,1067],{"class":1066},[1045,5406,1379],{"class":1334},[1045,5408,5102],{"class":1277},[1045,5410,5105],{"class":1313},[1045,5412,1067],{"class":1066},[1045,5414,5110],{"class":1313},[1045,5416,5075],{"class":1066},[1045,5418,5209],{"class":1196},[1045,5420,2175],{"class":2168},[1045,5422,5214],{"class":1248},[1045,5424,5426],{"class":1047,"line":5425},300,[1045,5427,5428],{"class":1066},"            )\n",[1045,5430,5432],{"class":1047,"line":5431},301,[1045,5433,1513],{"class":1066},[1030,5435,5437],{"id":5436},"specialized-command-types","Specialized Command Types",[5439,5440,5442],"h3",{"id":5441},"data-migration-command","Data Migration Command",[1035,5444,5446],{"className":1037,"code":5445,"language":1039,"meta":1040,"style":1040},"# management/commands/migrate_data.py\nclass Command(BaseCommand):\n    \"\"\"Command for complex data migrations\"\"\"\n    \n    help = 'Migrate data between models or external systems'\n    \n    def add_arguments(self, parser):\n        parser.add_argument('--source', required=True, help='Source model or file')\n        parser.add_argument('--target', required=True, help='Target model')\n        parser.add_argument('--mapping', help='Field mapping configuration file')\n        parser.add_argument('--validate', action='store_true', help='Validate data before migration')\n        parser.add_argument('--rollback', action='store_true', help='Rollback previous migration')\n    \n    def handle(self, *args, **options):\n        if options['rollback']:\n            self.rollback_migration(options)\n        else:\n            self.execute_migration(options)\n    \n    def execute_migration(self, options):\n        \"\"\"Execute data migration\"\"\"\n        # Load mapping configuration\n        mapping = self.load_mapping(options['mapping'])\n        \n        # Get source data\n        source_data = self.get_source_data(options['source'])\n        \n        # Validate if requested\n        if options['validate']:\n            self.validate_data(source_data, mapping)\n        \n        # Create migration record\n        migration_record = self.create_migration_record(options)\n        \n        try:\n            # Migrate data\n            migrated_count = self.migrate_data(source_data, mapping, options['target'])\n            \n            # Update migration record\n            migration_record.status = 'completed'\n            migration_record.migrated_count = migrated_count\n            migration_record.save()\n            \n            self.stdout.write(f\"Successfully migrated {migrated_count} records\")\n            \n        except Exception as e:\n            migration_record.status = 'failed'\n            migration_record.error_message = str(e)\n            migration_record.save()\n            raise\n    \n    def load_mapping(self, mapping_file):\n        \"\"\"Load field mapping configuration\"\"\"\n        if not mapping_file:\n            return {}\n        \n        import json\n        with open(mapping_file, 'r') as f:\n            return json.load(f)\n    \n    def get_source_data(self, source):\n        \"\"\"Get data from source\"\"\"\n        if source.endswith('.csv'):\n            return self.read_csv_data(source)\n        elif source.endswith('.json'):\n            return self.read_json_data(source)\n        else:\n            # Assume it's a model name\n            return self.read_model_data(source)\n    \n    def migrate_data(self, source_data, mapping, target_model):\n        \"\"\"Migrate data to target model\"\"\"\n        from django.apps import apps\n        \n        target_class = apps.get_model(target_model)\n        migrated_count = 0\n        \n        for record in source_data:\n            # Apply field mapping\n            mapped_data = self.apply_mapping(record, mapping)\n            \n            # Create target record\n            target_class.objects.create(**mapped_data)\n            migrated_count += 1\n        \n        return migrated_count\n\n# management/commands/export_data.py\nclass Command(BaseCommand):\n    \"\"\"Export data to various formats\"\"\"\n    \n    help = 'Export model data to CSV, JSON, or XML'\n    \n    def add_arguments(self, parser):\n        parser.add_argument('model', help='Model to export (app.Model)')\n        parser.add_argument('--format', choices=['csv', 'json', 'xml'], default='csv')\n        parser.add_argument('--output', required=True, help='Output file path')\n        parser.add_argument('--fields', help='Comma-separated list of fields to export')\n        parser.add_argument('--filter', help='Filter expression')\n        parser.add_argument('--compress', action='store_true', help='Compress output file')\n    \n    def handle(self, *args, **options):\n        # Get model class\n        from django.apps import apps\n        model_class = apps.get_model(options['model'])\n        \n        # Build queryset\n        queryset = model_class.objects.all()\n        \n        if options['filter']:\n            # Parse and apply filter\n            queryset = self.apply_filter(queryset, options['filter'])\n        \n        # Select fields\n        if options['fields']:\n            fields = options['fields'].split(',')\n            queryset = queryset.values(*fields)\n        \n        # Export data\n        if options['format'] == 'csv':\n            self.export_csv(queryset, options['output'], options['compress'])\n        elif options['format'] == 'json':\n            self.export_json(queryset, options['output'], options['compress'])\n        elif options['format'] == 'xml':\n            self.export_xml(queryset, options['output'], options['compress'])\n        \n        self.stdout.write(f\"Exported {queryset.count()} records to {options['output']}\")\n    \n    def export_csv(self, queryset, output_file, compress):\n        \"\"\"Export to CSV format\"\"\"\n        import csv\n        import gzip\n        \n        open_func = gzip.open if compress else open\n        mode = 'wt' if compress else 'w'\n        \n        with open_func(output_file, mode, newline='') as csvfile:\n            if queryset.exists():\n                fieldnames = queryset.first().keys()\n                writer = csv.DictWriter(csvfile, fieldnames=fieldnames)\n                writer.writeheader()\n                \n                for row in queryset:\n                    writer.writerow(row)\n    \n    def export_json(self, queryset, output_file, compress):\n        \"\"\"Export to JSON format\"\"\"\n        import json\n        import gzip\n        \n        data = list(queryset)\n        \n        if compress:\n            with gzip.open(output_file, 'wt') as f:\n                json.dump(data, f, indent=2, default=str)\n        else:\n            with open(output_file, 'w') as f:\n                json.dump(data, f, indent=2, default=str)\n",[1042,5447,5448,5453,5465,5474,5478,5491,5495,5511,5553,5593,5625,5670,5714,5718,5742,5759,5774,5780,5795,5799,5816,5825,5830,5859,5863,5868,5897,5901,5906,5923,5944,5948,5953,5973,5977,5983,5988,6025,6029,6034,6053,6067,6077,6081,6111,6115,6127,6144,6164,6174,6178,6182,6200,6209,6219,6227,6231,6239,6269,6287,6291,6309,6318,6340,6357,6379,6396,6402,6407,6424,6428,6455,6464,6480,6484,6506,6515,6519,6532,6537,6562,6566,6571,6594,6603,6607,6613,6617,6622,6634,6643,6647,6660,6664,6680,6712,6777,6817,6849,6880,6924,6928,6952,6957,6971,6998,7002,7007,7026,7030,7046,7051,7083,7087,7092,7109,7140,7161,7165,7170,7197,7238,7264,7303,7329,7368,7372,7427,7431,7458,7467,7474,7481,7485,7511,7538,7542,7577,7590,7611,7643,7655,7659,7672,7689,7693,7718,7727,7733,7739,7743,7758,7762,7770,7801,7840,7846,7872],{"__ignoreMap":1040},[1045,5449,5450],{"class":1047,"line":1048},[1045,5451,5452],{"class":1051},"# management/commands/migrate_data.py\n",[1045,5454,5455,5457,5459,5461,5463],{"class":1047,"line":1055},[1045,5456,1197],{"class":1196},[1045,5458,1201],{"class":1200},[1045,5460,1204],{"class":1066},[1045,5462,1208],{"class":1207},[1045,5464,1211],{"class":1066},[1045,5466,5467,5469,5472],{"class":1047,"line":1095},[1045,5468,1218],{"class":1217},[1045,5470,5471],{"class":1221},"Command for complex data migrations",[1045,5473,1225],{"class":1217},[1045,5475,5476],{"class":1047,"line":1112},[1045,5477,1231],{"class":1062},[1045,5479,5480,5482,5484,5486,5489],{"class":1047,"line":1129},[1045,5481,1238],{"class":1237},[1045,5483,1241],{"class":1066},[1045,5485,1245],{"class":1244},[1045,5487,5488],{"class":1248},"Migrate data between models or external systems",[1045,5490,1252],{"class":1244},[1045,5492,5493],{"class":1047,"line":1137},[1045,5494,1231],{"class":1062},[1045,5496,5497,5499,5501,5503,5505,5507,5509],{"class":1047,"line":1145},[1045,5498,1263],{"class":1196},[1045,5500,1413],{"class":1412},[1045,5502,1204],{"class":1066},[1045,5504,1272],{"class":1271},[1045,5506,1089],{"class":1066},[1045,5508,1422],{"class":1281},[1045,5510,1211],{"class":1066},[1045,5512,5513,5515,5517,5519,5521,5523,5526,5528,5530,5533,5535,5537,5539,5542,5544,5546,5549,5551],{"class":1047,"line":1168},[1045,5514,1441],{"class":1062},[1045,5516,1067],{"class":1066},[1045,5518,1446],{"class":1313},[1045,5520,1204],{"class":1066},[1045,5522,1461],{"class":1244},[1045,5524,5525],{"class":1248},"--source",[1045,5527,1461],{"class":1244},[1045,5529,1089],{"class":1066},[1045,5531,5532],{"class":1470}," required",[1045,5534,1474],{"class":1066},[1045,5536,2188],{"class":1368},[1045,5538,1089],{"class":1066},[1045,5540,5541],{"class":1470}," help",[1045,5543,1474],{"class":1066},[1045,5545,1461],{"class":1244},[1045,5547,5548],{"class":1248},"Source model or file",[1045,5550,1461],{"class":1244},[1045,5552,1322],{"class":1066},[1045,5554,5555,5557,5559,5561,5563,5565,5568,5570,5572,5574,5576,5578,5580,5582,5584,5586,5589,5591],{"class":1047,"line":1186},[1045,5556,1441],{"class":1062},[1045,5558,1067],{"class":1066},[1045,5560,1446],{"class":1313},[1045,5562,1204],{"class":1066},[1045,5564,1461],{"class":1244},[1045,5566,5567],{"class":1248},"--target",[1045,5569,1461],{"class":1244},[1045,5571,1089],{"class":1066},[1045,5573,5532],{"class":1470},[1045,5575,1474],{"class":1066},[1045,5577,2188],{"class":1368},[1045,5579,1089],{"class":1066},[1045,5581,5541],{"class":1470},[1045,5583,1474],{"class":1066},[1045,5585,1461],{"class":1244},[1045,5587,5588],{"class":1248},"Target model",[1045,5590,1461],{"class":1244},[1045,5592,1322],{"class":1066},[1045,5594,5595,5597,5599,5601,5603,5605,5608,5610,5612,5614,5616,5618,5621,5623],{"class":1047,"line":1193},[1045,5596,1441],{"class":1062},[1045,5598,1067],{"class":1066},[1045,5600,1446],{"class":1313},[1045,5602,1204],{"class":1066},[1045,5604,1461],{"class":1244},[1045,5606,5607],{"class":1248},"--mapping",[1045,5609,1461],{"class":1244},[1045,5611,1089],{"class":1066},[1045,5613,5541],{"class":1470},[1045,5615,1474],{"class":1066},[1045,5617,1461],{"class":1244},[1045,5619,5620],{"class":1248},"Field mapping configuration file",[1045,5622,1461],{"class":1244},[1045,5624,1322],{"class":1066},[1045,5626,5627,5629,5631,5633,5635,5637,5640,5642,5644,5647,5649,5651,5653,5655,5657,5659,5661,5663,5666,5668],{"class":1047,"line":1214},[1045,5628,1441],{"class":1062},[1045,5630,1067],{"class":1066},[1045,5632,1446],{"class":1313},[1045,5634,1204],{"class":1066},[1045,5636,1461],{"class":1244},[1045,5638,5639],{"class":1248},"--validate",[1045,5641,1461],{"class":1244},[1045,5643,1089],{"class":1066},[1045,5645,5646],{"class":1470}," action",[1045,5648,1474],{"class":1066},[1045,5650,1461],{"class":1244},[1045,5652,1625],{"class":1248},[1045,5654,1461],{"class":1244},[1045,5656,1089],{"class":1066},[1045,5658,5541],{"class":1470},[1045,5660,1474],{"class":1066},[1045,5662,1461],{"class":1244},[1045,5664,5665],{"class":1248},"Validate data before migration",[1045,5667,1461],{"class":1244},[1045,5669,1322],{"class":1066},[1045,5671,5672,5674,5676,5678,5680,5682,5685,5687,5689,5691,5693,5695,5697,5699,5701,5703,5705,5707,5710,5712],{"class":1047,"line":1228},[1045,5673,1441],{"class":1062},[1045,5675,1067],{"class":1066},[1045,5677,1446],{"class":1313},[1045,5679,1204],{"class":1066},[1045,5681,1461],{"class":1244},[1045,5683,5684],{"class":1248},"--rollback",[1045,5686,1461],{"class":1244},[1045,5688,1089],{"class":1066},[1045,5690,5646],{"class":1470},[1045,5692,1474],{"class":1066},[1045,5694,1461],{"class":1244},[1045,5696,1625],{"class":1248},[1045,5698,1461],{"class":1244},[1045,5700,1089],{"class":1066},[1045,5702,5541],{"class":1470},[1045,5704,1474],{"class":1066},[1045,5706,1461],{"class":1244},[1045,5708,5709],{"class":1248},"Rollback previous migration",[1045,5711,1461],{"class":1244},[1045,5713,1322],{"class":1066},[1045,5715,5716],{"class":1047,"line":1234},[1045,5717,1231],{"class":1062},[1045,5719,5720,5722,5724,5726,5728,5730,5732,5734,5736,5738,5740],{"class":1047,"line":1255},[1045,5721,1263],{"class":1196},[1045,5723,1902],{"class":1412},[1045,5725,1204],{"class":1066},[1045,5727,1272],{"class":1271},[1045,5729,1089],{"class":1066},[1045,5731,1278],{"class":1277},[1045,5733,1282],{"class":1281},[1045,5735,1089],{"class":1066},[1045,5737,1287],{"class":1277},[1045,5739,1919],{"class":1281},[1045,5741,1211],{"class":1066},[1045,5743,5744,5746,5748,5750,5752,5755,5757],{"class":1047,"line":1260},[1045,5745,2255],{"class":1058},[1045,5747,2237],{"class":1062},[1045,5749,2260],{"class":1066},[1045,5751,1461],{"class":1244},[1045,5753,5754],{"class":1248},"rollback",[1045,5756,1461],{"class":1244},[1045,5758,2367],{"class":1066},[1045,5760,5761,5763,5765,5768,5770,5772],{"class":1047,"line":1295},[1045,5762,1993],{"class":1328},[1045,5764,1067],{"class":1066},[1045,5766,5767],{"class":1313},"rollback_migration",[1045,5769,1204],{"class":1066},[1045,5771,1919],{"class":1313},[1045,5773,1322],{"class":1066},[1045,5775,5776,5778],{"class":1047,"line":1325},[1045,5777,3293],{"class":1058},[1045,5779,1981],{"class":1066},[1045,5781,5782,5784,5786,5789,5791,5793],{"class":1047,"line":1356},[1045,5783,1993],{"class":1328},[1045,5785,1067],{"class":1066},[1045,5787,5788],{"class":1313},"execute_migration",[1045,5790,1204],{"class":1066},[1045,5792,1919],{"class":1313},[1045,5794,1322],{"class":1066},[1045,5796,5797],{"class":1047,"line":1372},[1045,5798,1231],{"class":1062},[1045,5800,5801,5803,5806,5808,5810,5812,5814],{"class":1047,"line":1388},[1045,5802,1263],{"class":1196},[1045,5804,5805],{"class":1412}," execute_migration",[1045,5807,1204],{"class":1066},[1045,5809,1272],{"class":1271},[1045,5811,1089],{"class":1066},[1045,5813,2237],{"class":1281},[1045,5815,1211],{"class":1066},[1045,5817,5818,5820,5823],{"class":1047,"line":1402},[1045,5819,1430],{"class":1217},[1045,5821,5822],{"class":1221},"Execute data migration",[1045,5824,1225],{"class":1217},[1045,5826,5827],{"class":1047,"line":1407},[1045,5828,5829],{"class":1051},"        # Load mapping configuration\n",[1045,5831,5832,5835,5837,5839,5841,5844,5846,5848,5850,5852,5855,5857],{"class":1047,"line":1427},[1045,5833,5834],{"class":1062},"        mapping ",[1045,5836,1474],{"class":1066},[1045,5838,3021],{"class":1328},[1045,5840,1067],{"class":1066},[1045,5842,5843],{"class":1313},"load_mapping",[1045,5845,1204],{"class":1066},[1045,5847,1919],{"class":1313},[1045,5849,2260],{"class":1066},[1045,5851,1461],{"class":1244},[1045,5853,5854],{"class":1248},"mapping",[1045,5856,1461],{"class":1244},[1045,5858,2412],{"class":1066},[1045,5860,5861],{"class":1047,"line":1438},[1045,5862,1519],{"class":1062},[1045,5864,5865],{"class":1047,"line":1452},[1045,5866,5867],{"class":1051},"        # Get source data\n",[1045,5869,5870,5873,5875,5877,5879,5882,5884,5886,5888,5890,5893,5895],{"class":1047,"line":1467},[1045,5871,5872],{"class":1062},"        source_data ",[1045,5874,1474],{"class":1066},[1045,5876,3021],{"class":1328},[1045,5878,1067],{"class":1066},[1045,5880,5881],{"class":1313},"get_source_data",[1045,5883,1204],{"class":1066},[1045,5885,1919],{"class":1313},[1045,5887,2260],{"class":1066},[1045,5889,1461],{"class":1244},[1045,5891,5892],{"class":1248},"source",[1045,5894,1461],{"class":1244},[1045,5896,2412],{"class":1066},[1045,5898,5899],{"class":1047,"line":1482},[1045,5900,1519],{"class":1062},[1045,5902,5903],{"class":1047,"line":1495},[1045,5904,5905],{"class":1051},"        # Validate if requested\n",[1045,5907,5908,5910,5912,5914,5916,5919,5921],{"class":1047,"line":1510},[1045,5909,2255],{"class":1058},[1045,5911,2237],{"class":1062},[1045,5913,2260],{"class":1066},[1045,5915,1461],{"class":1244},[1045,5917,5918],{"class":1248},"validate",[1045,5920,1461],{"class":1244},[1045,5922,2367],{"class":1066},[1045,5924,5925,5927,5929,5932,5934,5937,5939,5942],{"class":1047,"line":1516},[1045,5926,1993],{"class":1328},[1045,5928,1067],{"class":1066},[1045,5930,5931],{"class":1313},"validate_data",[1045,5933,1204],{"class":1066},[1045,5935,5936],{"class":1313},"source_data",[1045,5938,1089],{"class":1066},[1045,5940,5941],{"class":1313}," mapping",[1045,5943,1322],{"class":1066},[1045,5945,5946],{"class":1047,"line":1522},[1045,5947,1519],{"class":1062},[1045,5949,5950],{"class":1047,"line":1533},[1045,5951,5952],{"class":1051},"        # Create migration record\n",[1045,5954,5955,5958,5960,5962,5964,5967,5969,5971],{"class":1047,"line":1545},[1045,5956,5957],{"class":1062},"        migration_record ",[1045,5959,1474],{"class":1066},[1045,5961,3021],{"class":1328},[1045,5963,1067],{"class":1066},[1045,5965,5966],{"class":1313},"create_migration_record",[1045,5968,1204],{"class":1066},[1045,5970,1919],{"class":1313},[1045,5972,1322],{"class":1066},[1045,5974,5975],{"class":1047,"line":1556},[1045,5976,1519],{"class":1062},[1045,5978,5979,5981],{"class":1047,"line":1568},[1045,5980,1978],{"class":1058},[1045,5982,1981],{"class":1066},[1045,5984,5985],{"class":1047,"line":1582},[1045,5986,5987],{"class":1051},"            # Migrate data\n",[1045,5989,5990,5993,5995,5997,5999,6002,6004,6006,6008,6010,6012,6014,6016,6018,6021,6023],{"class":1047,"line":1587},[1045,5991,5992],{"class":1062},"            migrated_count ",[1045,5994,1474],{"class":1066},[1045,5996,3021],{"class":1328},[1045,5998,1067],{"class":1066},[1045,6000,6001],{"class":1313},"migrate_data",[1045,6003,1204],{"class":1066},[1045,6005,5936],{"class":1313},[1045,6007,1089],{"class":1066},[1045,6009,5941],{"class":1313},[1045,6011,1089],{"class":1066},[1045,6013,2237],{"class":1313},[1045,6015,2260],{"class":1066},[1045,6017,1461],{"class":1244},[1045,6019,6020],{"class":1248},"target",[1045,6022,1461],{"class":1244},[1045,6024,2412],{"class":1066},[1045,6026,6027],{"class":1047,"line":1592},[1045,6028,2010],{"class":1062},[1045,6030,6031],{"class":1047,"line":1603},[1045,6032,6033],{"class":1051},"            # Update migration record\n",[1045,6035,6036,6039,6041,6044,6046,6048,6051],{"class":1047,"line":1615},[1045,6037,6038],{"class":1062},"            migration_record",[1045,6040,1067],{"class":1066},[1045,6042,6043],{"class":1334},"status",[1045,6045,1241],{"class":1066},[1045,6047,1245],{"class":1244},[1045,6049,6050],{"class":1248},"completed",[1045,6052,1252],{"class":1244},[1045,6054,6055,6057,6059,6062,6064],{"class":1047,"line":1632},[1045,6056,6038],{"class":1062},[1045,6058,1067],{"class":1066},[1045,6060,6061],{"class":1334},"migrated_count",[1045,6063,1241],{"class":1066},[1045,6065,6066],{"class":1062}," migrated_count\n",[1045,6068,6069,6071,6073,6075],{"class":1047,"line":1646},[1045,6070,6038],{"class":1062},[1045,6072,1067],{"class":1066},[1045,6074,4987],{"class":1313},[1045,6076,1953],{"class":1066},[1045,6078,6079],{"class":1047,"line":1651},[1045,6080,2010],{"class":1062},[1045,6082,6083,6085,6087,6089,6091,6093,6095,6097,6100,6102,6104,6106,6109],{"class":1047,"line":1656},[1045,6084,1993],{"class":1328},[1045,6086,1067],{"class":1066},[1045,6088,2955],{"class":1334},[1045,6090,1067],{"class":1066},[1045,6092,2960],{"class":1313},[1045,6094,1204],{"class":1066},[1045,6096,2162],{"class":1196},[1045,6098,6099],{"class":1248},"\"Successfully migrated ",[1045,6101,2169],{"class":2168},[1045,6103,6061],{"class":1313},[1045,6105,2175],{"class":2168},[1045,6107,6108],{"class":1248}," records\"",[1045,6110,1322],{"class":1066},[1045,6112,6113],{"class":1047,"line":1667},[1045,6114,2010],{"class":1062},[1045,6116,6117,6119,6121,6123,6125],{"class":1047,"line":1679},[1045,6118,2116],{"class":1058},[1045,6120,2135],{"class":1298},[1045,6122,2138],{"class":1058},[1045,6124,2141],{"class":1062},[1045,6126,1981],{"class":1066},[1045,6128,6129,6131,6133,6135,6137,6139,6142],{"class":1047,"line":1694},[1045,6130,6038],{"class":1062},[1045,6132,1067],{"class":1066},[1045,6134,6043],{"class":1334},[1045,6136,1241],{"class":1066},[1045,6138,1245],{"class":1244},[1045,6140,6141],{"class":1248},"failed",[1045,6143,1252],{"class":1244},[1045,6145,6146,6148,6150,6153,6155,6158,6160,6162],{"class":1047,"line":1708},[1045,6147,6038],{"class":1062},[1045,6149,1067],{"class":1066},[1045,6151,6152],{"class":1334},"error_message",[1045,6154,1241],{"class":1066},[1045,6156,6157],{"class":1298}," str",[1045,6159,1204],{"class":1066},[1045,6161,2172],{"class":1313},[1045,6163,1322],{"class":1066},[1045,6165,6166,6168,6170,6172],{"class":1047,"line":1713},[1045,6167,6038],{"class":1062},[1045,6169,1067],{"class":1066},[1045,6171,4987],{"class":1313},[1045,6173,1953],{"class":1066},[1045,6175,6176],{"class":1047,"line":1718},[1045,6177,2127],{"class":1058},[1045,6179,6180],{"class":1047,"line":1729},[1045,6181,1231],{"class":1062},[1045,6183,6184,6186,6189,6191,6193,6195,6198],{"class":1047,"line":1741},[1045,6185,1263],{"class":1196},[1045,6187,6188],{"class":1412}," load_mapping",[1045,6190,1204],{"class":1066},[1045,6192,1272],{"class":1271},[1045,6194,1089],{"class":1066},[1045,6196,6197],{"class":1281}," mapping_file",[1045,6199,1211],{"class":1066},[1045,6201,6202,6204,6207],{"class":1047,"line":1753},[1045,6203,1430],{"class":1217},[1045,6205,6206],{"class":1221},"Load field mapping configuration",[1045,6208,1225],{"class":1217},[1045,6210,6211,6213,6215,6217],{"class":1047,"line":1767},[1045,6212,2255],{"class":1058},[1045,6214,2427],{"class":1277},[1045,6216,6197],{"class":1062},[1045,6218,1981],{"class":1066},[1045,6220,6221,6224],{"class":1047,"line":1772},[1045,6222,6223],{"class":1058},"            return",[1045,6225,6226],{"class":1066}," {}\n",[1045,6228,6229],{"class":1047,"line":1777},[1045,6230,1519],{"class":1062},[1045,6232,6233,6236],{"class":1047,"line":1788},[1045,6234,6235],{"class":1058},"        import",[1045,6237,6238],{"class":1062}," json\n",[1045,6240,6241,6243,6246,6248,6251,6253,6255,6258,6260,6262,6264,6267],{"class":1047,"line":1800},[1045,6242,4218],{"class":1058},[1045,6244,6245],{"class":1237}," open",[1045,6247,1204],{"class":1066},[1045,6249,6250],{"class":1313},"mapping_file",[1045,6252,1089],{"class":1066},[1045,6254,1245],{"class":1244},[1045,6256,6257],{"class":1248},"r",[1045,6259,1461],{"class":1244},[1045,6261,3343],{"class":1066},[1045,6263,2138],{"class":1058},[1045,6265,6266],{"class":1062}," f",[1045,6268,1981],{"class":1066},[1045,6270,6271,6273,6276,6278,6281,6283,6285],{"class":1047,"line":1811},[1045,6272,6223],{"class":1058},[1045,6274,6275],{"class":1062}," json",[1045,6277,1067],{"class":1066},[1045,6279,6280],{"class":1313},"load",[1045,6282,1204],{"class":1066},[1045,6284,2162],{"class":1313},[1045,6286,1322],{"class":1066},[1045,6288,6289],{"class":1047,"line":1825},[1045,6290,1231],{"class":1062},[1045,6292,6293,6295,6298,6300,6302,6304,6307],{"class":1047,"line":1830},[1045,6294,1263],{"class":1196},[1045,6296,6297],{"class":1412}," get_source_data",[1045,6299,1204],{"class":1066},[1045,6301,1272],{"class":1271},[1045,6303,1089],{"class":1066},[1045,6305,6306],{"class":1281}," source",[1045,6308,1211],{"class":1066},[1045,6310,6311,6313,6316],{"class":1047,"line":1835},[1045,6312,1430],{"class":1217},[1045,6314,6315],{"class":1221},"Get data from source",[1045,6317,1225],{"class":1217},[1045,6319,6320,6322,6324,6326,6329,6331,6333,6336,6338],{"class":1047,"line":1846},[1045,6321,2255],{"class":1058},[1045,6323,6306],{"class":1062},[1045,6325,1067],{"class":1066},[1045,6327,6328],{"class":1313},"endswith",[1045,6330,1204],{"class":1066},[1045,6332,1461],{"class":1244},[1045,6334,6335],{"class":1248},".csv",[1045,6337,1461],{"class":1244},[1045,6339,1211],{"class":1066},[1045,6341,6342,6344,6346,6348,6351,6353,6355],{"class":1047,"line":1858},[1045,6343,6223],{"class":1058},[1045,6345,3021],{"class":1328},[1045,6347,1067],{"class":1066},[1045,6349,6350],{"class":1313},"read_csv_data",[1045,6352,1204],{"class":1066},[1045,6354,5892],{"class":1313},[1045,6356,1322],{"class":1066},[1045,6358,6359,6362,6364,6366,6368,6370,6372,6375,6377],{"class":1047,"line":1873},[1045,6360,6361],{"class":1058},"        elif",[1045,6363,6306],{"class":1062},[1045,6365,1067],{"class":1066},[1045,6367,6328],{"class":1313},[1045,6369,1204],{"class":1066},[1045,6371,1461],{"class":1244},[1045,6373,6374],{"class":1248},".json",[1045,6376,1461],{"class":1244},[1045,6378,1211],{"class":1066},[1045,6380,6381,6383,6385,6387,6390,6392,6394],{"class":1047,"line":1887},[1045,6382,6223],{"class":1058},[1045,6384,3021],{"class":1328},[1045,6386,1067],{"class":1066},[1045,6388,6389],{"class":1313},"read_json_data",[1045,6391,1204],{"class":1066},[1045,6393,5892],{"class":1313},[1045,6395,1322],{"class":1066},[1045,6397,6398,6400],{"class":1047,"line":1892},[1045,6399,3293],{"class":1058},[1045,6401,1981],{"class":1066},[1045,6403,6404],{"class":1047,"line":1897},[1045,6405,6406],{"class":1051},"            # Assume it's a model name\n",[1045,6408,6409,6411,6413,6415,6418,6420,6422],{"class":1047,"line":1924},[1045,6410,6223],{"class":1058},[1045,6412,3021],{"class":1328},[1045,6414,1067],{"class":1066},[1045,6416,6417],{"class":1313},"read_model_data",[1045,6419,1204],{"class":1066},[1045,6421,5892],{"class":1313},[1045,6423,1322],{"class":1066},[1045,6425,6426],{"class":1047,"line":1934},[1045,6427,1231],{"class":1062},[1045,6429,6430,6432,6435,6437,6439,6441,6444,6446,6448,6450,6453],{"class":1047,"line":1956},[1045,6431,1263],{"class":1196},[1045,6433,6434],{"class":1412}," migrate_data",[1045,6436,1204],{"class":1066},[1045,6438,1272],{"class":1271},[1045,6440,1089],{"class":1066},[1045,6442,6443],{"class":1281}," source_data",[1045,6445,1089],{"class":1066},[1045,6447,5941],{"class":1281},[1045,6449,1089],{"class":1066},[1045,6451,6452],{"class":1281}," target_model",[1045,6454,1211],{"class":1066},[1045,6456,6457,6459,6462],{"class":1047,"line":1970},[1045,6458,1430],{"class":1217},[1045,6460,6461],{"class":1221},"Migrate data to target model",[1045,6463,1225],{"class":1217},[1045,6465,6466,6468,6470,6472,6475,6477],{"class":1047,"line":1975},[1045,6467,3366],{"class":1058},[1045,6469,1063],{"class":1062},[1045,6471,1067],{"class":1066},[1045,6473,6474],{"class":1062},"apps ",[1045,6476,1083],{"class":1058},[1045,6478,6479],{"class":1062}," apps\n",[1045,6481,6482],{"class":1047,"line":1984},[1045,6483,1519],{"class":1062},[1045,6485,6486,6489,6491,6494,6496,6499,6501,6504],{"class":1047,"line":1990},[1045,6487,6488],{"class":1062},"        target_class ",[1045,6490,1474],{"class":1066},[1045,6492,6493],{"class":1062}," apps",[1045,6495,1067],{"class":1066},[1045,6497,6498],{"class":1313},"get_model",[1045,6500,1204],{"class":1066},[1045,6502,6503],{"class":1313},"target_model",[1045,6505,1322],{"class":1066},[1045,6507,6508,6511,6513],{"class":1047,"line":2007},[1045,6509,6510],{"class":1062},"        migrated_count ",[1045,6512,1474],{"class":1066},[1045,6514,1385],{"class":1384},[1045,6516,6517],{"class":1047,"line":2013},[1045,6518,1519],{"class":1062},[1045,6520,6521,6523,6526,6528,6530],{"class":1047,"line":2019},[1045,6522,3787],{"class":1058},[1045,6524,6525],{"class":1062}," record ",[1045,6527,3682],{"class":1058},[1045,6529,6443],{"class":1062},[1045,6531,1981],{"class":1066},[1045,6533,6534],{"class":1047,"line":2035},[1045,6535,6536],{"class":1051},"            # Apply field mapping\n",[1045,6538,6539,6542,6544,6546,6548,6551,6553,6556,6558,6560],{"class":1047,"line":2040},[1045,6540,6541],{"class":1062},"            mapped_data ",[1045,6543,1474],{"class":1066},[1045,6545,3021],{"class":1328},[1045,6547,1067],{"class":1066},[1045,6549,6550],{"class":1313},"apply_mapping",[1045,6552,1204],{"class":1066},[1045,6554,6555],{"class":1313},"record",[1045,6557,1089],{"class":1066},[1045,6559,5941],{"class":1313},[1045,6561,1322],{"class":1066},[1045,6563,6564],{"class":1047,"line":2046},[1045,6565,2010],{"class":1062},[1045,6567,6568],{"class":1047,"line":2058},[1045,6569,6570],{"class":1051},"            # Create target record\n",[1045,6572,6573,6576,6578,6580,6582,6585,6587,6589,6592],{"class":1047,"line":2063},[1045,6574,6575],{"class":1062},"            target_class",[1045,6577,1067],{"class":1066},[1045,6579,3400],{"class":1334},[1045,6581,1067],{"class":1066},[1045,6583,6584],{"class":1313},"create",[1045,6586,1204],{"class":1066},[1045,6588,3533],{"class":1277},[1045,6590,6591],{"class":1313},"mapped_data",[1045,6593,1322],{"class":1066},[1045,6595,6596,6598,6601],{"class":1047,"line":2069},[1045,6597,5992],{"class":1062},[1045,6599,6600],{"class":1066},"+=",[1045,6602,3943],{"class":1384},[1045,6604,6605],{"class":1047,"line":2085},[1045,6606,1519],{"class":1062},[1045,6608,6609,6611],{"class":1047,"line":2090},[1045,6610,3558],{"class":1058},[1045,6612,6066],{"class":1062},[1045,6614,6615],{"class":1047,"line":2096},[1045,6616,1190],{"emptyLinePlaceholder":1189},[1045,6618,6619],{"class":1047,"line":2108},[1045,6620,6621],{"class":1051},"# management/commands/export_data.py\n",[1045,6623,6624,6626,6628,6630,6632],{"class":1047,"line":2113},[1045,6625,1197],{"class":1196},[1045,6627,1201],{"class":1200},[1045,6629,1204],{"class":1066},[1045,6631,1208],{"class":1207},[1045,6633,1211],{"class":1066},[1045,6635,6636,6638,6641],{"class":1047,"line":2124},[1045,6637,1218],{"class":1217},[1045,6639,6640],{"class":1221},"Export data to various formats",[1045,6642,1225],{"class":1217},[1045,6644,6645],{"class":1047,"line":2130},[1045,6646,1231],{"class":1062},[1045,6648,6649,6651,6653,6655,6658],{"class":1047,"line":2146},[1045,6650,1238],{"class":1237},[1045,6652,1241],{"class":1066},[1045,6654,1245],{"class":1244},[1045,6656,6657],{"class":1248},"Export model data to CSV, JSON, or XML",[1045,6659,1252],{"class":1244},[1045,6661,6662],{"class":1047,"line":2193},[1045,6663,1231],{"class":1062},[1045,6665,6666,6668,6670,6672,6674,6676,6678],{"class":1047,"line":2218},[1045,6667,1263],{"class":1196},[1045,6669,1413],{"class":1412},[1045,6671,1204],{"class":1066},[1045,6673,1272],{"class":1271},[1045,6675,1089],{"class":1066},[1045,6677,1422],{"class":1281},[1045,6679,1211],{"class":1066},[1045,6681,6682,6684,6686,6688,6690,6692,6695,6697,6699,6701,6703,6705,6708,6710],{"class":1047,"line":2223},[1045,6683,1441],{"class":1062},[1045,6685,1067],{"class":1066},[1045,6687,1446],{"class":1313},[1045,6689,1204],{"class":1066},[1045,6691,1461],{"class":1244},[1045,6693,6694],{"class":1248},"model",[1045,6696,1461],{"class":1244},[1045,6698,1089],{"class":1066},[1045,6700,5541],{"class":1470},[1045,6702,1474],{"class":1066},[1045,6704,1461],{"class":1244},[1045,6706,6707],{"class":1248},"Model to export (app.Model)",[1045,6709,1461],{"class":1244},[1045,6711,1322],{"class":1066},[1045,6713,6714,6716,6718,6720,6722,6724,6727,6729,6731,6734,6737,6739,6742,6744,6746,6748,6751,6753,6755,6757,6760,6762,6764,6767,6769,6771,6773,6775],{"class":1047,"line":2242},[1045,6715,1441],{"class":1062},[1045,6717,1067],{"class":1066},[1045,6719,1446],{"class":1313},[1045,6721,1204],{"class":1066},[1045,6723,1461],{"class":1244},[1045,6725,6726],{"class":1248},"--format",[1045,6728,1461],{"class":1244},[1045,6730,1089],{"class":1066},[1045,6732,6733],{"class":1470}," choices",[1045,6735,6736],{"class":1066},"=[",[1045,6738,1461],{"class":1244},[1045,6740,6741],{"class":1248},"csv",[1045,6743,1461],{"class":1244},[1045,6745,1089],{"class":1066},[1045,6747,1245],{"class":1244},[1045,6749,6750],{"class":1248},"json",[1045,6752,1461],{"class":1244},[1045,6754,1089],{"class":1066},[1045,6756,1245],{"class":1244},[1045,6758,6759],{"class":1248},"xml",[1045,6761,1461],{"class":1244},[1045,6763,4664],{"class":1066},[1045,6765,6766],{"class":1470}," default",[1045,6768,1474],{"class":1066},[1045,6770,1461],{"class":1244},[1045,6772,6741],{"class":1248},[1045,6774,1461],{"class":1244},[1045,6776,1322],{"class":1066},[1045,6778,6779,6781,6783,6785,6787,6789,6792,6794,6796,6798,6800,6802,6804,6806,6808,6810,6813,6815],{"class":1047,"line":2252},[1045,6780,1441],{"class":1062},[1045,6782,1067],{"class":1066},[1045,6784,1446],{"class":1313},[1045,6786,1204],{"class":1066},[1045,6788,1461],{"class":1244},[1045,6790,6791],{"class":1248},"--output",[1045,6793,1461],{"class":1244},[1045,6795,1089],{"class":1066},[1045,6797,5532],{"class":1470},[1045,6799,1474],{"class":1066},[1045,6801,2188],{"class":1368},[1045,6803,1089],{"class":1066},[1045,6805,5541],{"class":1470},[1045,6807,1474],{"class":1066},[1045,6809,1461],{"class":1244},[1045,6811,6812],{"class":1248},"Output file path",[1045,6814,1461],{"class":1244},[1045,6816,1322],{"class":1066},[1045,6818,6819,6821,6823,6825,6827,6829,6832,6834,6836,6838,6840,6842,6845,6847],{"class":1047,"line":2281},[1045,6820,1441],{"class":1062},[1045,6822,1067],{"class":1066},[1045,6824,1446],{"class":1313},[1045,6826,1204],{"class":1066},[1045,6828,1461],{"class":1244},[1045,6830,6831],{"class":1248},"--fields",[1045,6833,1461],{"class":1244},[1045,6835,1089],{"class":1066},[1045,6837,5541],{"class":1470},[1045,6839,1474],{"class":1066},[1045,6841,1461],{"class":1244},[1045,6843,6844],{"class":1248},"Comma-separated list of fields to export",[1045,6846,1461],{"class":1244},[1045,6848,1322],{"class":1066},[1045,6850,6851,6853,6855,6857,6859,6861,6863,6865,6867,6869,6871,6873,6876,6878],{"class":1047,"line":2299},[1045,6852,1441],{"class":1062},[1045,6854,1067],{"class":1066},[1045,6856,1446],{"class":1313},[1045,6858,1204],{"class":1066},[1045,6860,1461],{"class":1244},[1045,6862,1734],{"class":1248},[1045,6864,1461],{"class":1244},[1045,6866,1089],{"class":1066},[1045,6868,5541],{"class":1470},[1045,6870,1474],{"class":1066},[1045,6872,1461],{"class":1244},[1045,6874,6875],{"class":1248},"Filter expression",[1045,6877,1461],{"class":1244},[1045,6879,1322],{"class":1066},[1045,6881,6882,6884,6886,6888,6890,6892,6895,6897,6899,6901,6903,6905,6907,6909,6911,6913,6915,6917,6920,6922],{"class":1047,"line":2304},[1045,6883,1441],{"class":1062},[1045,6885,1067],{"class":1066},[1045,6887,1446],{"class":1313},[1045,6889,1204],{"class":1066},[1045,6891,1461],{"class":1244},[1045,6893,6894],{"class":1248},"--compress",[1045,6896,1461],{"class":1244},[1045,6898,1089],{"class":1066},[1045,6900,5646],{"class":1470},[1045,6902,1474],{"class":1066},[1045,6904,1461],{"class":1244},[1045,6906,1625],{"class":1248},[1045,6908,1461],{"class":1244},[1045,6910,1089],{"class":1066},[1045,6912,5541],{"class":1470},[1045,6914,1474],{"class":1066},[1045,6916,1461],{"class":1244},[1045,6918,6919],{"class":1248},"Compress output file",[1045,6921,1461],{"class":1244},[1045,6923,1322],{"class":1066},[1045,6925,6926],{"class":1047,"line":2328},[1045,6927,1231],{"class":1062},[1045,6929,6930,6932,6934,6936,6938,6940,6942,6944,6946,6948,6950],{"class":1047,"line":2346},[1045,6931,1263],{"class":1196},[1045,6933,1902],{"class":1412},[1045,6935,1204],{"class":1066},[1045,6937,1272],{"class":1271},[1045,6939,1089],{"class":1066},[1045,6941,1278],{"class":1277},[1045,6943,1282],{"class":1281},[1045,6945,1089],{"class":1066},[1045,6947,1287],{"class":1277},[1045,6949,1919],{"class":1281},[1045,6951,1211],{"class":1066},[1045,6953,6954],{"class":1047,"line":2351},[1045,6955,6956],{"class":1051},"        # Get model class\n",[1045,6958,6959,6961,6963,6965,6967,6969],{"class":1047,"line":2370},[1045,6960,3366],{"class":1058},[1045,6962,1063],{"class":1062},[1045,6964,1067],{"class":1066},[1045,6966,6474],{"class":1062},[1045,6968,1083],{"class":1058},[1045,6970,6479],{"class":1062},[1045,6972,6973,6976,6978,6980,6982,6984,6986,6988,6990,6992,6994,6996],{"class":1047,"line":2379},[1045,6974,6975],{"class":1062},"        model_class ",[1045,6977,1474],{"class":1066},[1045,6979,6493],{"class":1062},[1045,6981,1067],{"class":1066},[1045,6983,6498],{"class":1313},[1045,6985,1204],{"class":1066},[1045,6987,1919],{"class":1313},[1045,6989,2260],{"class":1066},[1045,6991,1461],{"class":1244},[1045,6993,6694],{"class":1248},[1045,6995,1461],{"class":1244},[1045,6997,2412],{"class":1066},[1045,6999,7000],{"class":1047,"line":2415},[1045,7001,1519],{"class":1062},[1045,7003,7004],{"class":1047,"line":2448},[1045,7005,7006],{"class":1051},"        # Build queryset\n",[1045,7008,7009,7011,7013,7016,7018,7020,7022,7024],{"class":1047,"line":2473},[1045,7010,3390],{"class":1062},[1045,7012,1474],{"class":1066},[1045,7014,7015],{"class":1062}," model_class",[1045,7017,1067],{"class":1066},[1045,7019,3400],{"class":1334},[1045,7021,1067],{"class":1066},[1045,7023,3405],{"class":1313},[1045,7025,1953],{"class":1066},[1045,7027,7028],{"class":1047,"line":2478},[1045,7029,1519],{"class":1062},[1045,7031,7032,7034,7036,7038,7040,7042,7044],{"class":1047,"line":2496},[1045,7033,2255],{"class":1058},[1045,7035,2237],{"class":1062},[1045,7037,2260],{"class":1066},[1045,7039,1461],{"class":1244},[1045,7041,3432],{"class":1248},[1045,7043,1461],{"class":1244},[1045,7045,2367],{"class":1066},[1045,7047,7048],{"class":1047,"line":2506},[1045,7049,7050],{"class":1051},"            # Parse and apply filter\n",[1045,7052,7053,7056,7058,7060,7062,7065,7067,7069,7071,7073,7075,7077,7079,7081],{"class":1047,"line":2548},[1045,7054,7055],{"class":1062},"            queryset ",[1045,7057,1474],{"class":1066},[1045,7059,3021],{"class":1328},[1045,7061,1067],{"class":1066},[1045,7063,7064],{"class":1313},"apply_filter",[1045,7066,1204],{"class":1066},[1045,7068,3566],{"class":1313},[1045,7070,1089],{"class":1066},[1045,7072,2237],{"class":1313},[1045,7074,2260],{"class":1066},[1045,7076,1461],{"class":1244},[1045,7078,3432],{"class":1248},[1045,7080,1461],{"class":1244},[1045,7082,2412],{"class":1066},[1045,7084,7085],{"class":1047,"line":2553},[1045,7086,1519],{"class":1062},[1045,7088,7089],{"class":1047,"line":2570},[1045,7090,7091],{"class":1051},"        # Select fields\n",[1045,7093,7094,7096,7098,7100,7102,7105,7107],{"class":1047,"line":2596},[1045,7095,2255],{"class":1058},[1045,7097,2237],{"class":1062},[1045,7099,2260],{"class":1066},[1045,7101,1461],{"class":1244},[1045,7103,7104],{"class":1248},"fields",[1045,7106,1461],{"class":1244},[1045,7108,2367],{"class":1066},[1045,7110,7111,7114,7116,7118,7120,7122,7124,7126,7128,7130,7132,7134,7136,7138],{"class":1047,"line":2601},[1045,7112,7113],{"class":1062},"            fields ",[1045,7115,1474],{"class":1066},[1045,7117,2237],{"class":1062},[1045,7119,2260],{"class":1066},[1045,7121,1461],{"class":1244},[1045,7123,7104],{"class":1248},[1045,7125,1461],{"class":1244},[1045,7127,2755],{"class":1066},[1045,7129,3465],{"class":1313},[1045,7131,1204],{"class":1066},[1045,7133,1461],{"class":1244},[1045,7135,1089],{"class":1248},[1045,7137,1461],{"class":1244},[1045,7139,1322],{"class":1066},[1045,7141,7142,7144,7146,7148,7150,7153,7155,7157,7159],{"class":1047,"line":2606},[1045,7143,7055],{"class":1062},[1045,7145,1474],{"class":1066},[1045,7147,3524],{"class":1062},[1045,7149,1067],{"class":1066},[1045,7151,7152],{"class":1313},"values",[1045,7154,1204],{"class":1066},[1045,7156,1310],{"class":1277},[1045,7158,7104],{"class":1313},[1045,7160,1322],{"class":1066},[1045,7162,7163],{"class":1047,"line":2612},[1045,7164,1519],{"class":1062},[1045,7166,7167],{"class":1047,"line":2629},[1045,7168,7169],{"class":1051},"        # Export data\n",[1045,7171,7172,7174,7176,7178,7180,7183,7185,7187,7189,7191,7193,7195],{"class":1047,"line":2647},[1045,7173,2255],{"class":1058},[1045,7175,2237],{"class":1062},[1045,7177,2260],{"class":1066},[1045,7179,1461],{"class":1244},[1045,7181,7182],{"class":1248},"format",[1045,7184,1461],{"class":1244},[1045,7186,2270],{"class":1066},[1045,7188,3492],{"class":1277},[1045,7190,1245],{"class":1244},[1045,7192,6741],{"class":1248},[1045,7194,1461],{"class":1244},[1045,7196,1981],{"class":1066},[1045,7198,7199,7201,7203,7206,7208,7210,7212,7214,7216,7218,7221,7223,7225,7227,7229,7231,7234,7236],{"class":1047,"line":2664},[1045,7200,1993],{"class":1328},[1045,7202,1067],{"class":1066},[1045,7204,7205],{"class":1313},"export_csv",[1045,7207,1204],{"class":1066},[1045,7209,3566],{"class":1313},[1045,7211,1089],{"class":1066},[1045,7213,2237],{"class":1313},[1045,7215,2260],{"class":1066},[1045,7217,1461],{"class":1244},[1045,7219,7220],{"class":1248},"output",[1045,7222,1461],{"class":1244},[1045,7224,4664],{"class":1066},[1045,7226,2237],{"class":1313},[1045,7228,2260],{"class":1066},[1045,7230,1461],{"class":1244},[1045,7232,7233],{"class":1248},"compress",[1045,7235,1461],{"class":1244},[1045,7237,2412],{"class":1066},[1045,7239,7240,7242,7244,7246,7248,7250,7252,7254,7256,7258,7260,7262],{"class":1047,"line":2669},[1045,7241,6361],{"class":1058},[1045,7243,2237],{"class":1062},[1045,7245,2260],{"class":1066},[1045,7247,1461],{"class":1244},[1045,7249,7182],{"class":1248},[1045,7251,1461],{"class":1244},[1045,7253,2270],{"class":1066},[1045,7255,3492],{"class":1277},[1045,7257,1245],{"class":1244},[1045,7259,6750],{"class":1248},[1045,7261,1461],{"class":1244},[1045,7263,1981],{"class":1066},[1045,7265,7266,7268,7270,7273,7275,7277,7279,7281,7283,7285,7287,7289,7291,7293,7295,7297,7299,7301],{"class":1047,"line":2690},[1045,7267,1993],{"class":1328},[1045,7269,1067],{"class":1066},[1045,7271,7272],{"class":1313},"export_json",[1045,7274,1204],{"class":1066},[1045,7276,3566],{"class":1313},[1045,7278,1089],{"class":1066},[1045,7280,2237],{"class":1313},[1045,7282,2260],{"class":1066},[1045,7284,1461],{"class":1244},[1045,7286,7220],{"class":1248},[1045,7288,1461],{"class":1244},[1045,7290,4664],{"class":1066},[1045,7292,2237],{"class":1313},[1045,7294,2260],{"class":1066},[1045,7296,1461],{"class":1244},[1045,7298,7233],{"class":1248},[1045,7300,1461],{"class":1244},[1045,7302,2412],{"class":1066},[1045,7304,7305,7307,7309,7311,7313,7315,7317,7319,7321,7323,7325,7327],{"class":1047,"line":2709},[1045,7306,6361],{"class":1058},[1045,7308,2237],{"class":1062},[1045,7310,2260],{"class":1066},[1045,7312,1461],{"class":1244},[1045,7314,7182],{"class":1248},[1045,7316,1461],{"class":1244},[1045,7318,2270],{"class":1066},[1045,7320,3492],{"class":1277},[1045,7322,1245],{"class":1244},[1045,7324,6759],{"class":1248},[1045,7326,1461],{"class":1244},[1045,7328,1981],{"class":1066},[1045,7330,7331,7333,7335,7338,7340,7342,7344,7346,7348,7350,7352,7354,7356,7358,7360,7362,7364,7366],{"class":1047,"line":2714},[1045,7332,1993],{"class":1328},[1045,7334,1067],{"class":1066},[1045,7336,7337],{"class":1313},"export_xml",[1045,7339,1204],{"class":1066},[1045,7341,3566],{"class":1313},[1045,7343,1089],{"class":1066},[1045,7345,2237],{"class":1313},[1045,7347,2260],{"class":1066},[1045,7349,1461],{"class":1244},[1045,7351,7220],{"class":1248},[1045,7353,1461],{"class":1244},[1045,7355,4664],{"class":1066},[1045,7357,2237],{"class":1313},[1045,7359,2260],{"class":1066},[1045,7361,1461],{"class":1244},[1045,7363,7233],{"class":1248},[1045,7365,1461],{"class":1244},[1045,7367,2412],{"class":1066},[1045,7369,7370],{"class":1047,"line":2720},[1045,7371,1519],{"class":1062},[1045,7373,7374,7376,7378,7380,7382,7384,7386,7388,7391,7393,7395,7397,7400,7402,7404,7407,7409,7411,7413,7415,7417,7419,7421,7423,7425],{"class":1047,"line":2737},[1045,7375,1329],{"class":1328},[1045,7377,1067],{"class":1066},[1045,7379,2955],{"class":1334},[1045,7381,1067],{"class":1066},[1045,7383,2960],{"class":1313},[1045,7385,1204],{"class":1066},[1045,7387,2162],{"class":1196},[1045,7389,7390],{"class":1248},"\"Exported ",[1045,7392,2169],{"class":2168},[1045,7394,3566],{"class":1313},[1045,7396,1067],{"class":1066},[1045,7398,7399],{"class":1313},"count",[1045,7401,5075],{"class":1066},[1045,7403,2175],{"class":2168},[1045,7405,7406],{"class":1248}," records to ",[1045,7408,2169],{"class":2168},[1045,7410,1919],{"class":1313},[1045,7412,2260],{"class":1066},[1045,7414,1461],{"class":1244},[1045,7416,7220],{"class":1248},[1045,7418,1461],{"class":1244},[1045,7420,2270],{"class":1066},[1045,7422,2175],{"class":2168},[1045,7424,2178],{"class":1248},[1045,7426,1322],{"class":1066},[1045,7428,7429],{"class":1047,"line":2781},[1045,7430,1231],{"class":1062},[1045,7432,7433,7435,7438,7440,7442,7444,7446,7448,7451,7453,7456],{"class":1047,"line":2803},[1045,7434,1263],{"class":1196},[1045,7436,7437],{"class":1412}," export_csv",[1045,7439,1204],{"class":1066},[1045,7441,1272],{"class":1271},[1045,7443,1089],{"class":1066},[1045,7445,3524],{"class":1281},[1045,7447,1089],{"class":1066},[1045,7449,7450],{"class":1281}," output_file",[1045,7452,1089],{"class":1066},[1045,7454,7455],{"class":1281}," compress",[1045,7457,1211],{"class":1066},[1045,7459,7460,7462,7465],{"class":1047,"line":2824},[1045,7461,1430],{"class":1217},[1045,7463,7464],{"class":1221},"Export to CSV format",[1045,7466,1225],{"class":1217},[1045,7468,7469,7471],{"class":1047,"line":2839},[1045,7470,6235],{"class":1058},[1045,7472,7473],{"class":1062}," csv\n",[1045,7475,7476,7478],{"class":1047,"line":2859},[1045,7477,6235],{"class":1058},[1045,7479,7480],{"class":1062}," gzip\n",[1045,7482,7483],{"class":1047,"line":2864},[1045,7484,1519],{"class":1062},[1045,7486,7487,7490,7492,7495,7497,7500,7502,7505,7508],{"class":1047,"line":2878},[1045,7488,7489],{"class":1062},"        open_func ",[1045,7491,1474],{"class":1066},[1045,7493,7494],{"class":1062}," gzip",[1045,7496,1067],{"class":1066},[1045,7498,7499],{"class":1334},"open",[1045,7501,2522],{"class":1058},[1045,7503,7504],{"class":1062}," compress ",[1045,7506,7507],{"class":1058},"else",[1045,7509,7510],{"class":1237}," open\n",[1045,7512,7513,7516,7518,7520,7523,7525,7527,7529,7531,7533,7536],{"class":1047,"line":2888},[1045,7514,7515],{"class":1062},"        mode ",[1045,7517,1474],{"class":1066},[1045,7519,1245],{"class":1244},[1045,7521,7522],{"class":1248},"wt",[1045,7524,1461],{"class":1244},[1045,7526,2522],{"class":1058},[1045,7528,7504],{"class":1062},[1045,7530,7507],{"class":1058},[1045,7532,1245],{"class":1244},[1045,7534,7535],{"class":1248},"w",[1045,7537,1252],{"class":1244},[1045,7539,7540],{"class":1047,"line":2895},[1045,7541,1519],{"class":1062},[1045,7543,7544,7546,7549,7551,7553,7555,7558,7560,7563,7565,7568,7570,7572,7575],{"class":1047,"line":2909},[1045,7545,4218],{"class":1058},[1045,7547,7548],{"class":1313}," open_func",[1045,7550,1204],{"class":1066},[1045,7552,2362],{"class":1313},[1045,7554,1089],{"class":1066},[1045,7556,7557],{"class":1313}," mode",[1045,7559,1089],{"class":1066},[1045,7561,7562],{"class":1470}," newline",[1045,7564,1474],{"class":1066},[1045,7566,7567],{"class":1244},"''",[1045,7569,3343],{"class":1066},[1045,7571,2138],{"class":1058},[1045,7573,7574],{"class":1062}," csvfile",[1045,7576,1981],{"class":1066},[1045,7578,7579,7581,7583,7585,7587],{"class":1047,"line":2924},[1045,7580,2418],{"class":1058},[1045,7582,3524],{"class":1062},[1045,7584,1067],{"class":1066},[1045,7586,2438],{"class":1313},[1045,7588,7589],{"class":1066},"():\n",[1045,7591,7592,7595,7597,7599,7601,7604,7606,7609],{"class":1047,"line":2934},[1045,7593,7594],{"class":1062},"                fieldnames ",[1045,7596,1474],{"class":1066},[1045,7598,3524],{"class":1062},[1045,7600,1067],{"class":1066},[1045,7602,7603],{"class":1313},"first",[1045,7605,1302],{"class":1066},[1045,7607,7608],{"class":1313},"keys",[1045,7610,1953],{"class":1066},[1045,7612,7613,7616,7618,7621,7623,7626,7628,7631,7633,7636,7638,7641],{"class":1047,"line":2948},[1045,7614,7615],{"class":1062},"                writer ",[1045,7617,1474],{"class":1066},[1045,7619,7620],{"class":1062}," csv",[1045,7622,1067],{"class":1066},[1045,7624,7625],{"class":1313},"DictWriter",[1045,7627,1204],{"class":1066},[1045,7629,7630],{"class":1313},"csvfile",[1045,7632,1089],{"class":1066},[1045,7634,7635],{"class":1470}," fieldnames",[1045,7637,1474],{"class":1066},[1045,7639,7640],{"class":1313},"fieldnames",[1045,7642,1322],{"class":1066},[1045,7644,7645,7648,7650,7653],{"class":1047,"line":2974},[1045,7646,7647],{"class":1062},"                writer",[1045,7649,1067],{"class":1066},[1045,7651,7652],{"class":1313},"writeheader",[1045,7654,1953],{"class":1066},[1045,7656,7657],{"class":1047,"line":2979},[1045,7658,3833],{"class":1062},[1045,7660,7661,7663,7666,7668,7670],{"class":1047,"line":2997},[1045,7662,4295],{"class":1058},[1045,7664,7665],{"class":1062}," row ",[1045,7667,3682],{"class":1058},[1045,7669,3524],{"class":1062},[1045,7671,1981],{"class":1066},[1045,7673,7674,7677,7679,7682,7684,7687],{"class":1047,"line":3007},[1045,7675,7676],{"class":1062},"                    writer",[1045,7678,1067],{"class":1066},[1045,7680,7681],{"class":1313},"writerow",[1045,7683,1204],{"class":1066},[1045,7685,7686],{"class":1313},"row",[1045,7688,1322],{"class":1066},[1045,7690,7691],{"class":1047,"line":3013},[1045,7692,1231],{"class":1062},[1045,7694,7695,7697,7700,7702,7704,7706,7708,7710,7712,7714,7716],{"class":1047,"line":3035},[1045,7696,1263],{"class":1196},[1045,7698,7699],{"class":1412}," export_json",[1045,7701,1204],{"class":1066},[1045,7703,1272],{"class":1271},[1045,7705,1089],{"class":1066},[1045,7707,3524],{"class":1281},[1045,7709,1089],{"class":1066},[1045,7711,7450],{"class":1281},[1045,7713,1089],{"class":1066},[1045,7715,7455],{"class":1281},[1045,7717,1211],{"class":1066},[1045,7719,7720,7722,7725],{"class":1047,"line":3053},[1045,7721,1430],{"class":1217},[1045,7723,7724],{"class":1221},"Export to JSON format",[1045,7726,1225],{"class":1217},[1045,7728,7729,7731],{"class":1047,"line":3058},[1045,7730,6235],{"class":1058},[1045,7732,6238],{"class":1062},[1045,7734,7735,7737],{"class":1047,"line":3073},[1045,7736,6235],{"class":1058},[1045,7738,7480],{"class":1062},[1045,7740,7741],{"class":1047,"line":3097},[1045,7742,1519],{"class":1062},[1045,7744,7745,7748,7750,7752,7754,7756],{"class":1047,"line":3103},[1045,7746,7747],{"class":1062},"        data ",[1045,7749,1474],{"class":1066},[1045,7751,3561],{"class":1298},[1045,7753,1204],{"class":1066},[1045,7755,3566],{"class":1313},[1045,7757,1322],{"class":1066},[1045,7759,7760],{"class":1047,"line":3108},[1045,7761,1519],{"class":1062},[1045,7763,7764,7766,7768],{"class":1047,"line":3140},[1045,7765,2255],{"class":1058},[1045,7767,7455],{"class":1062},[1045,7769,1981],{"class":1066},[1045,7771,7772,7775,7777,7779,7781,7783,7785,7787,7789,7791,7793,7795,7797,7799],{"class":1047,"line":3145},[1045,7773,7774],{"class":1058},"            with",[1045,7776,7494],{"class":1062},[1045,7778,1067],{"class":1066},[1045,7780,7499],{"class":1313},[1045,7782,1204],{"class":1066},[1045,7784,2362],{"class":1313},[1045,7786,1089],{"class":1066},[1045,7788,1245],{"class":1244},[1045,7790,7522],{"class":1248},[1045,7792,1461],{"class":1244},[1045,7794,3343],{"class":1066},[1045,7796,2138],{"class":1058},[1045,7798,6266],{"class":1062},[1045,7800,1981],{"class":1066},[1045,7802,7803,7806,7808,7811,7813,7816,7818,7820,7822,7825,7827,7830,7832,7834,7836,7838],{"class":1047,"line":3163},[1045,7804,7805],{"class":1062},"                json",[1045,7807,1067],{"class":1066},[1045,7809,7810],{"class":1313},"dump",[1045,7812,1204],{"class":1066},[1045,7814,7815],{"class":1313},"data",[1045,7817,1089],{"class":1066},[1045,7819,6266],{"class":1313},[1045,7821,1089],{"class":1066},[1045,7823,7824],{"class":1470}," indent",[1045,7826,1474],{"class":1066},[1045,7828,7829],{"class":1384},"2",[1045,7831,1089],{"class":1066},[1045,7833,6766],{"class":1470},[1045,7835,1474],{"class":1066},[1045,7837,1748],{"class":1298},[1045,7839,1322],{"class":1066},[1045,7841,7842,7844],{"class":1047,"line":3187},[1045,7843,3293],{"class":1058},[1045,7845,1981],{"class":1066},[1045,7847,7848,7850,7852,7854,7856,7858,7860,7862,7864,7866,7868,7870],{"class":1047,"line":3192},[1045,7849,7774],{"class":1058},[1045,7851,6245],{"class":1237},[1045,7853,1204],{"class":1066},[1045,7855,2362],{"class":1313},[1045,7857,1089],{"class":1066},[1045,7859,1245],{"class":1244},[1045,7861,7535],{"class":1248},[1045,7863,1461],{"class":1244},[1045,7865,3343],{"class":1066},[1045,7867,2138],{"class":1058},[1045,7869,6266],{"class":1062},[1045,7871,1981],{"class":1066},[1045,7873,7874,7876,7878,7880,7882,7884,7886,7888,7890,7892,7894,7896,7898,7900,7902,7904],{"class":1047,"line":3198},[1045,7875,7805],{"class":1062},[1045,7877,1067],{"class":1066},[1045,7879,7810],{"class":1313},[1045,7881,1204],{"class":1066},[1045,7883,7815],{"class":1313},[1045,7885,1089],{"class":1066},[1045,7887,6266],{"class":1313},[1045,7889,1089],{"class":1066},[1045,7891,7824],{"class":1470},[1045,7893,1474],{"class":1066},[1045,7895,7829],{"class":1384},[1045,7897,1089],{"class":1066},[1045,7899,6766],{"class":1470},[1045,7901,1474],{"class":1066},[1045,7903,1748],{"class":1298},[1045,7905,1322],{"class":1066},[1030,7907,7909],{"id":7908},"interactive-commands","Interactive Commands",[1035,7911,7913],{"className":1037,"code":7912,"language":1039,"meta":1040,"style":1040},"# management/commands/interactive_setup.py\nclass Command(BaseCommand):\n    \"\"\"Interactive setup command\"\"\"\n    \n    help = 'Interactive application setup'\n    \n    def handle(self, *args, **options):\n        self.stdout.write(\"Welcome to the interactive setup!\")\n        \n        # Database setup\n        if self.confirm(\"Set up database?\"):\n            self.setup_database()\n        \n        # Create superuser\n        if self.confirm(\"Create superuser?\"):\n            self.create_superuser()\n        \n        # Load sample data\n        if self.confirm(\"Load sample data?\"):\n            self.load_sample_data()\n        \n        # Configure settings\n        if self.confirm(\"Configure application settings?\"):\n            self.configure_settings()\n        \n        self.stdout.write(self.style.SUCCESS(\"Setup completed!\"))\n    \n    def confirm(self, question):\n        \"\"\"Ask for user confirmation\"\"\"\n        while True:\n            response = input(f\"{question} (y/n): \").lower().strip()\n            if response in ['y', 'yes']:\n                return True\n            elif response in ['n', 'no']:\n                return False\n            else:\n                self.stdout.write(\"Please enter 'y' or 'n'\")\n    \n    def get_input(self, prompt, default=None, validator=None):\n        \"\"\"Get user input with validation\"\"\"\n        while True:\n            if default:\n                response = input(f\"{prompt} [{default}]: \").strip()\n                if not response:\n                    response = default\n            else:\n                response = input(f\"{prompt}: \").strip()\n            \n            if validator:\n                try:\n                    validator(response)\n                    return response\n                except ValueError as e:\n                    self.stdout.write(f\"Invalid input: {e}\")\n            else:\n                return response\n    \n    def setup_database(self):\n        \"\"\"Interactive database setup\"\"\"\n        self.stdout.write(\"Setting up database...\")\n        \n        # Run migrations\n        from django.core.management import call_command\n        call_command('migrate', verbosity=0)\n        \n        self.stdout.write(\"Database setup completed\")\n    \n    def create_superuser(self):\n        \"\"\"Interactive superuser creation\"\"\"\n        from django.contrib.auth.models import User\n        \n        username = self.get_input(\"Username\", default=\"admin\")\n        email = self.get_input(\"Email\")\n        \n        if User.objects.filter(username=username).exists():\n            self.stdout.write(f\"User {username} already exists\")\n            return\n        \n        password = self.get_input(\"Password\")\n        \n        User.objects.create_superuser(username, email, password)\n        self.stdout.write(f\"Superuser {username} created\")\n    \n    def configure_settings(self):\n        \"\"\"Interactive settings configuration\"\"\"\n        settings_file = 'local_settings.py'\n        \n        self.stdout.write(f\"Configuring {settings_file}...\")\n        \n        # Collect settings\n        debug = self.confirm(\"Enable debug mode?\")\n        secret_key = self.get_input(\"Secret key\", default=\"generate-random-key\")\n        \n        # Write settings file\n        with open(settings_file, 'w') as f:\n            f.write(f\"DEBUG = {debug}\\n\")\n            f.write(f\"SECRET_KEY = '{secret_key}'\\n\")\n        \n        self.stdout.write(f\"Settings written to {settings_file}\")\n\n# management/commands/health_check.py\nclass Command(BaseCommand):\n    \"\"\"System health check command\"\"\"\n    \n    help = 'Perform comprehensive system health check'\n    \n    def add_arguments(self, parser):\n        parser.add_argument('--format', choices=['text', 'json'], default='text')\n        parser.add_argument('--output', help='Output file')\n    \n    def handle(self, *args, **options):\n        checks = [\n            ('Database', self.check_database),\n            ('Cache', self.check_cache),\n            ('Storage', self.check_storage),\n            ('External Services', self.check_external_services),\n            ('Permissions', self.check_permissions),\n        ]\n        \n        results = {}\n        \n        for check_name, check_func in checks:\n            self.stdout.write(f\"Checking {check_name}...\")\n            try:\n                result = check_func()\n                results[check_name] = result\n                status = \"OK\" if result['status'] else \"FAIL\"\n                self.stdout.write(f\"  {status}: {result['message']}\")\n            except Exception as e:\n                results[check_name] = {'status': False, 'message': str(e)}\n                self.stdout.write(f\"  ERROR: {e}\")\n        \n        # Output results\n        if options['format'] == 'json':\n            self.output_json(results, options['output'])\n        else:\n            self.output_text(results, options['output'])\n    \n    def check_database(self):\n        \"\"\"Check database connectivity\"\"\"\n        from django.db import connection\n        \n        try:\n            with connection.cursor() as cursor:\n                cursor.execute(\"SELECT 1\")\n                return {'status': True, 'message': 'Database connection OK'}\n        except Exception as e:\n            return {'status': False, 'message': f'Database error: {e}'}\n    \n    def check_cache(self):\n        \"\"\"Check cache functionality\"\"\"\n        from django.core.cache import cache\n        \n        try:\n            test_key = 'health_check_test'\n            test_value = 'test_value'\n            \n            cache.set(test_key, test_value, 60)\n            retrieved_value = cache.get(test_key)\n            \n            if retrieved_value == test_value:\n                cache.delete(test_key)\n                return {'status': True, 'message': 'Cache working correctly'}\n            else:\n                return {'status': False, 'message': 'Cache value mismatch'}\n        except Exception as e:\n            return {'status': False, 'message': f'Cache error: {e}'}\n    \n    def check_storage(self):\n        \"\"\"Check file storage\"\"\"\n        from django.core.files.storage import default_storage\n        import tempfile\n        \n        try:\n            # Test file write/read\n            test_content = b'health check test'\n            test_file = tempfile.NamedTemporaryFile(delete=False)\n            test_file.write(test_content)\n            test_file.close()\n            \n            # Save to storage\n            saved_name = default_storage.save('health_check_test.txt', open(test_file.name, 'rb'))\n            \n            # Read from storage\n            with default_storage.open(saved_name, 'rb') as f:\n                read_content = f.read()\n            \n            # Cleanup\n            default_storage.delete(saved_name)\n            \n            if read_content == test_content:\n                return {'status': True, 'message': 'Storage working correctly'}\n            else:\n                return {'status': False, 'message': 'Storage content mismatch'}\n        except Exception as e:\n            return {'status': False, 'message': f'Storage error: {e}'}\n",[1042,7914,7915,7920,7932,7941,7945,7958,7962,7986,8009,8013,8018,8040,8051,8055,8060,8081,8092,8096,8101,8122,8133,8137,8142,8163,8174,8178,8213,8217,8235,8244,8254,8293,8322,8329,8358,8364,8371,8394,8398,8434,8443,8451,8459,8499,8510,8520,8526,8555,8559,8567,8573,8585,8593,8606,8635,8641,8647,8651,8664,8673,8696,8700,8705,8725,8750,8754,8777,8781,8794,8803,8828,8832,8870,8894,8898,8928,8958,8962,8966,8990,8994,9023,9053,9057,9070,9079,9093,9097,9128,9132,9137,9161,9198,9202,9207,9233,9260,9290,9294,9323,9327,9332,9344,9353,9357,9370,9374,9390,9441,9472,9476,9500,9510,9534,9556,9578,9600,9621,9626,9630,9639,9643,9662,9692,9698,9710,9726,9765,9813,9825,9870,9899,9903,9908,9934,9962,9968,9995,9999,10012,10021,10036,10040,10046,10067,10088,10124,10136,10177,10181,10194,10203,10223,10227,10233,10247,10261,10265,10292,10313,10317,10330,10346,10381,10387,10422,10434,10475,10479,10492,10501,10526,10533,10537,10543,10548,10565,10591,10607,10617,10621,10626,10674,10678,10683,10714,10730,10734,10739,10754,10758,10772,10807,10813,10848,10860],{"__ignoreMap":1040},[1045,7916,7917],{"class":1047,"line":1048},[1045,7918,7919],{"class":1051},"# management/commands/interactive_setup.py\n",[1045,7921,7922,7924,7926,7928,7930],{"class":1047,"line":1055},[1045,7923,1197],{"class":1196},[1045,7925,1201],{"class":1200},[1045,7927,1204],{"class":1066},[1045,7929,1208],{"class":1207},[1045,7931,1211],{"class":1066},[1045,7933,7934,7936,7939],{"class":1047,"line":1095},[1045,7935,1218],{"class":1217},[1045,7937,7938],{"class":1221},"Interactive setup command",[1045,7940,1225],{"class":1217},[1045,7942,7943],{"class":1047,"line":1112},[1045,7944,1231],{"class":1062},[1045,7946,7947,7949,7951,7953,7956],{"class":1047,"line":1129},[1045,7948,1238],{"class":1237},[1045,7950,1241],{"class":1066},[1045,7952,1245],{"class":1244},[1045,7954,7955],{"class":1248},"Interactive application setup",[1045,7957,1252],{"class":1244},[1045,7959,7960],{"class":1047,"line":1137},[1045,7961,1231],{"class":1062},[1045,7963,7964,7966,7968,7970,7972,7974,7976,7978,7980,7982,7984],{"class":1047,"line":1145},[1045,7965,1263],{"class":1196},[1045,7967,1902],{"class":1412},[1045,7969,1204],{"class":1066},[1045,7971,1272],{"class":1271},[1045,7973,1089],{"class":1066},[1045,7975,1278],{"class":1277},[1045,7977,1282],{"class":1281},[1045,7979,1089],{"class":1066},[1045,7981,1287],{"class":1277},[1045,7983,1919],{"class":1281},[1045,7985,1211],{"class":1066},[1045,7987,7988,7990,7992,7994,7996,7998,8000,8002,8005,8007],{"class":1047,"line":1168},[1045,7989,1329],{"class":1328},[1045,7991,1067],{"class":1066},[1045,7993,2955],{"class":1334},[1045,7995,1067],{"class":1066},[1045,7997,2960],{"class":1313},[1045,7999,1204],{"class":1066},[1045,8001,2178],{"class":1244},[1045,8003,8004],{"class":1248},"Welcome to the interactive setup!",[1045,8006,2178],{"class":1244},[1045,8008,1322],{"class":1066},[1045,8010,8011],{"class":1047,"line":1186},[1045,8012,1519],{"class":1062},[1045,8014,8015],{"class":1047,"line":1193},[1045,8016,8017],{"class":1051},"        # Database setup\n",[1045,8019,8020,8022,8024,8026,8029,8031,8033,8036,8038],{"class":1047,"line":1214},[1045,8021,2255],{"class":1058},[1045,8023,3021],{"class":1328},[1045,8025,1067],{"class":1066},[1045,8027,8028],{"class":1313},"confirm",[1045,8030,1204],{"class":1066},[1045,8032,2178],{"class":1244},[1045,8034,8035],{"class":1248},"Set up database?",[1045,8037,2178],{"class":1244},[1045,8039,1211],{"class":1066},[1045,8041,8042,8044,8046,8049],{"class":1047,"line":1228},[1045,8043,1993],{"class":1328},[1045,8045,1067],{"class":1066},[1045,8047,8048],{"class":1313},"setup_database",[1045,8050,1953],{"class":1066},[1045,8052,8053],{"class":1047,"line":1234},[1045,8054,1519],{"class":1062},[1045,8056,8057],{"class":1047,"line":1255},[1045,8058,8059],{"class":1051},"        # Create superuser\n",[1045,8061,8062,8064,8066,8068,8070,8072,8074,8077,8079],{"class":1047,"line":1260},[1045,8063,2255],{"class":1058},[1045,8065,3021],{"class":1328},[1045,8067,1067],{"class":1066},[1045,8069,8028],{"class":1313},[1045,8071,1204],{"class":1066},[1045,8073,2178],{"class":1244},[1045,8075,8076],{"class":1248},"Create superuser?",[1045,8078,2178],{"class":1244},[1045,8080,1211],{"class":1066},[1045,8082,8083,8085,8087,8090],{"class":1047,"line":1295},[1045,8084,1993],{"class":1328},[1045,8086,1067],{"class":1066},[1045,8088,8089],{"class":1313},"create_superuser",[1045,8091,1953],{"class":1066},[1045,8093,8094],{"class":1047,"line":1325},[1045,8095,1519],{"class":1062},[1045,8097,8098],{"class":1047,"line":1356},[1045,8099,8100],{"class":1051},"        # Load sample data\n",[1045,8102,8103,8105,8107,8109,8111,8113,8115,8118,8120],{"class":1047,"line":1372},[1045,8104,2255],{"class":1058},[1045,8106,3021],{"class":1328},[1045,8108,1067],{"class":1066},[1045,8110,8028],{"class":1313},[1045,8112,1204],{"class":1066},[1045,8114,2178],{"class":1244},[1045,8116,8117],{"class":1248},"Load sample data?",[1045,8119,2178],{"class":1244},[1045,8121,1211],{"class":1066},[1045,8123,8124,8126,8128,8131],{"class":1047,"line":1388},[1045,8125,1993],{"class":1328},[1045,8127,1067],{"class":1066},[1045,8129,8130],{"class":1313},"load_sample_data",[1045,8132,1953],{"class":1066},[1045,8134,8135],{"class":1047,"line":1402},[1045,8136,1519],{"class":1062},[1045,8138,8139],{"class":1047,"line":1407},[1045,8140,8141],{"class":1051},"        # Configure settings\n",[1045,8143,8144,8146,8148,8150,8152,8154,8156,8159,8161],{"class":1047,"line":1427},[1045,8145,2255],{"class":1058},[1045,8147,3021],{"class":1328},[1045,8149,1067],{"class":1066},[1045,8151,8028],{"class":1313},[1045,8153,1204],{"class":1066},[1045,8155,2178],{"class":1244},[1045,8157,8158],{"class":1248},"Configure application settings?",[1045,8160,2178],{"class":1244},[1045,8162,1211],{"class":1066},[1045,8164,8165,8167,8169,8172],{"class":1047,"line":1438},[1045,8166,1993],{"class":1328},[1045,8168,1067],{"class":1066},[1045,8170,8171],{"class":1313},"configure_settings",[1045,8173,1953],{"class":1066},[1045,8175,8176],{"class":1047,"line":1452},[1045,8177,1519],{"class":1062},[1045,8179,8180,8182,8184,8186,8188,8190,8192,8194,8196,8198,8200,8202,8204,8206,8209,8211],{"class":1047,"line":1467},[1045,8181,1329],{"class":1328},[1045,8183,1067],{"class":1066},[1045,8185,2955],{"class":1334},[1045,8187,1067],{"class":1066},[1045,8189,2960],{"class":1313},[1045,8191,1204],{"class":1066},[1045,8193,1272],{"class":1328},[1045,8195,1067],{"class":1066},[1045,8197,5301],{"class":1334},[1045,8199,1067],{"class":1066},[1045,8201,5306],{"class":1313},[1045,8203,1204],{"class":1066},[1045,8205,2178],{"class":1244},[1045,8207,8208],{"class":1248},"Setup completed!",[1045,8210,2178],{"class":1244},[1045,8212,3592],{"class":1066},[1045,8214,8215],{"class":1047,"line":1482},[1045,8216,1231],{"class":1062},[1045,8218,8219,8221,8224,8226,8228,8230,8233],{"class":1047,"line":1495},[1045,8220,1263],{"class":1196},[1045,8222,8223],{"class":1412}," confirm",[1045,8225,1204],{"class":1066},[1045,8227,1272],{"class":1271},[1045,8229,1089],{"class":1066},[1045,8231,8232],{"class":1281}," question",[1045,8234,1211],{"class":1066},[1045,8236,8237,8239,8242],{"class":1047,"line":1510},[1045,8238,1430],{"class":1217},[1045,8240,8241],{"class":1221},"Ask for user confirmation",[1045,8243,1225],{"class":1217},[1045,8245,8246,8249,8252],{"class":1047,"line":1516},[1045,8247,8248],{"class":1058},"        while",[1045,8250,8251],{"class":1368}," True",[1045,8253,1981],{"class":1066},[1045,8255,8256,8259,8261,8264,8266,8268,8270,8272,8275,8277,8280,8283,8286,8288,8291],{"class":1047,"line":1522},[1045,8257,8258],{"class":1062},"            response ",[1045,8260,1474],{"class":1066},[1045,8262,8263],{"class":1237}," input",[1045,8265,1204],{"class":1066},[1045,8267,2162],{"class":1196},[1045,8269,2178],{"class":1248},[1045,8271,2169],{"class":2168},[1045,8273,8274],{"class":1313},"question",[1045,8276,2175],{"class":2168},[1045,8278,8279],{"class":1248}," (y/n): \"",[1045,8281,8282],{"class":1066},").",[1045,8284,8285],{"class":1313},"lower",[1045,8287,1302],{"class":1066},[1045,8289,8290],{"class":1313},"strip",[1045,8292,1953],{"class":1066},[1045,8294,8295,8297,8300,8302,8304,8306,8309,8311,8313,8315,8318,8320],{"class":1047,"line":1533},[1045,8296,2418],{"class":1058},[1045,8298,8299],{"class":1062}," response ",[1045,8301,3682],{"class":1277},[1045,8303,3654],{"class":1066},[1045,8305,1461],{"class":1244},[1045,8307,8308],{"class":1248},"y",[1045,8310,1461],{"class":1244},[1045,8312,1089],{"class":1066},[1045,8314,1245],{"class":1244},[1045,8316,8317],{"class":1248},"yes",[1045,8319,1461],{"class":1244},[1045,8321,2367],{"class":1066},[1045,8323,8324,8327],{"class":1047,"line":1545},[1045,8325,8326],{"class":1058},"                return",[1045,8328,2921],{"class":1368},[1045,8330,8331,8334,8336,8338,8340,8342,8345,8347,8349,8351,8354,8356],{"class":1047,"line":1556},[1045,8332,8333],{"class":1058},"            elif",[1045,8335,8299],{"class":1062},[1045,8337,3682],{"class":1277},[1045,8339,3654],{"class":1066},[1045,8341,1461],{"class":1244},[1045,8343,8344],{"class":1248},"n",[1045,8346,1461],{"class":1244},[1045,8348,1089],{"class":1066},[1045,8350,1245],{"class":1244},[1045,8352,8353],{"class":1248},"no",[1045,8355,1461],{"class":1244},[1045,8357,2367],{"class":1066},[1045,8359,8360,8362],{"class":1047,"line":1568},[1045,8361,8326],{"class":1058},[1045,8363,2945],{"class":1368},[1045,8365,8366,8369],{"class":1047,"line":1582},[1045,8367,8368],{"class":1058},"            else",[1045,8370,1981],{"class":1066},[1045,8372,8373,8375,8377,8379,8381,8383,8385,8387,8390,8392],{"class":1047,"line":1587},[1045,8374,3811],{"class":1328},[1045,8376,1067],{"class":1066},[1045,8378,2955],{"class":1334},[1045,8380,1067],{"class":1066},[1045,8382,2960],{"class":1313},[1045,8384,1204],{"class":1066},[1045,8386,2178],{"class":1244},[1045,8388,8389],{"class":1248},"Please enter 'y' or 'n'",[1045,8391,2178],{"class":1244},[1045,8393,1322],{"class":1066},[1045,8395,8396],{"class":1047,"line":1592},[1045,8397,1231],{"class":1062},[1045,8399,8400,8402,8405,8407,8409,8411,8414,8416,8418,8420,8423,8425,8428,8430,8432],{"class":1047,"line":1603},[1045,8401,1263],{"class":1196},[1045,8403,8404],{"class":1412}," get_input",[1045,8406,1204],{"class":1066},[1045,8408,1272],{"class":1271},[1045,8410,1089],{"class":1066},[1045,8412,8413],{"class":1281}," prompt",[1045,8415,1089],{"class":1066},[1045,8417,6766],{"class":1281},[1045,8419,1474],{"class":1277},[1045,8421,8422],{"class":1368},"None",[1045,8424,1089],{"class":1066},[1045,8426,8427],{"class":1281}," validator",[1045,8429,1474],{"class":1277},[1045,8431,8422],{"class":1368},[1045,8433,1211],{"class":1066},[1045,8435,8436,8438,8441],{"class":1047,"line":1615},[1045,8437,1430],{"class":1217},[1045,8439,8440],{"class":1221},"Get user input with validation",[1045,8442,1225],{"class":1217},[1045,8444,8445,8447,8449],{"class":1047,"line":1632},[1045,8446,8248],{"class":1058},[1045,8448,8251],{"class":1368},[1045,8450,1981],{"class":1066},[1045,8452,8453,8455,8457],{"class":1047,"line":1646},[1045,8454,2418],{"class":1058},[1045,8456,6766],{"class":1062},[1045,8458,1981],{"class":1066},[1045,8460,8461,8464,8466,8468,8470,8472,8474,8476,8479,8481,8483,8485,8488,8490,8493,8495,8497],{"class":1047,"line":1651},[1045,8462,8463],{"class":1062},"                response ",[1045,8465,1474],{"class":1066},[1045,8467,8263],{"class":1237},[1045,8469,1204],{"class":1066},[1045,8471,2162],{"class":1196},[1045,8473,2178],{"class":1248},[1045,8475,2169],{"class":2168},[1045,8477,8478],{"class":1313},"prompt",[1045,8480,2175],{"class":2168},[1045,8482,3654],{"class":1248},[1045,8484,2169],{"class":2168},[1045,8486,8487],{"class":1313},"default",[1045,8489,2175],{"class":2168},[1045,8491,8492],{"class":1248},"]: \"",[1045,8494,8282],{"class":1066},[1045,8496,8290],{"class":1313},[1045,8498,1953],{"class":1066},[1045,8500,8501,8503,8505,8508],{"class":1047,"line":1656},[1045,8502,3839],{"class":1058},[1045,8504,2427],{"class":1277},[1045,8506,8507],{"class":1062}," response",[1045,8509,1981],{"class":1066},[1045,8511,8512,8515,8517],{"class":1047,"line":1667},[1045,8513,8514],{"class":1062},"                    response ",[1045,8516,1474],{"class":1066},[1045,8518,8519],{"class":1062}," default\n",[1045,8521,8522,8524],{"class":1047,"line":1679},[1045,8523,8368],{"class":1058},[1045,8525,1981],{"class":1066},[1045,8527,8528,8530,8532,8534,8536,8538,8540,8542,8544,8546,8549,8551,8553],{"class":1047,"line":1694},[1045,8529,8463],{"class":1062},[1045,8531,1474],{"class":1066},[1045,8533,8263],{"class":1237},[1045,8535,1204],{"class":1066},[1045,8537,2162],{"class":1196},[1045,8539,2178],{"class":1248},[1045,8541,2169],{"class":2168},[1045,8543,8478],{"class":1313},[1045,8545,2175],{"class":2168},[1045,8547,8548],{"class":1248},": \"",[1045,8550,8282],{"class":1066},[1045,8552,8290],{"class":1313},[1045,8554,1953],{"class":1066},[1045,8556,8557],{"class":1047,"line":1708},[1045,8558,2010],{"class":1062},[1045,8560,8561,8563,8565],{"class":1047,"line":1713},[1045,8562,2418],{"class":1058},[1045,8564,8427],{"class":1062},[1045,8566,1981],{"class":1066},[1045,8568,8569,8571],{"class":1047,"line":1718},[1045,8570,4369],{"class":1058},[1045,8572,1981],{"class":1066},[1045,8574,8575,8578,8580,8583],{"class":1047,"line":1729},[1045,8576,8577],{"class":1313},"                    validator",[1045,8579,1204],{"class":1066},[1045,8581,8582],{"class":1313},"response",[1045,8584,1322],{"class":1066},[1045,8586,8587,8590],{"class":1047,"line":1741},[1045,8588,8589],{"class":1058},"                    return",[1045,8591,8592],{"class":1062}," response\n",[1045,8594,8595,8597,8600,8602,8604],{"class":1047,"line":1753},[1045,8596,4474],{"class":1058},[1045,8598,8599],{"class":1298}," ValueError",[1045,8601,2138],{"class":1058},[1045,8603,2141],{"class":1062},[1045,8605,1981],{"class":1066},[1045,8607,8608,8610,8612,8614,8616,8618,8620,8622,8625,8627,8629,8631,8633],{"class":1047,"line":1767},[1045,8609,3882],{"class":1328},[1045,8611,1067],{"class":1066},[1045,8613,2955],{"class":1334},[1045,8615,1067],{"class":1066},[1045,8617,2960],{"class":1313},[1045,8619,1204],{"class":1066},[1045,8621,2162],{"class":1196},[1045,8623,8624],{"class":1248},"\"Invalid input: ",[1045,8626,2169],{"class":2168},[1045,8628,2172],{"class":1313},[1045,8630,2175],{"class":2168},[1045,8632,2178],{"class":1248},[1045,8634,1322],{"class":1066},[1045,8636,8637,8639],{"class":1047,"line":1772},[1045,8638,8368],{"class":1058},[1045,8640,1981],{"class":1066},[1045,8642,8643,8645],{"class":1047,"line":1777},[1045,8644,8326],{"class":1058},[1045,8646,8592],{"class":1062},[1045,8648,8649],{"class":1047,"line":1788},[1045,8650,1231],{"class":1062},[1045,8652,8653,8655,8658,8660,8662],{"class":1047,"line":1800},[1045,8654,1263],{"class":1196},[1045,8656,8657],{"class":1412}," setup_database",[1045,8659,1204],{"class":1066},[1045,8661,1272],{"class":1271},[1045,8663,1211],{"class":1066},[1045,8665,8666,8668,8671],{"class":1047,"line":1811},[1045,8667,1430],{"class":1217},[1045,8669,8670],{"class":1221},"Interactive database setup",[1045,8672,1225],{"class":1217},[1045,8674,8675,8677,8679,8681,8683,8685,8687,8689,8692,8694],{"class":1047,"line":1825},[1045,8676,1329],{"class":1328},[1045,8678,1067],{"class":1066},[1045,8680,2955],{"class":1334},[1045,8682,1067],{"class":1066},[1045,8684,2960],{"class":1313},[1045,8686,1204],{"class":1066},[1045,8688,2178],{"class":1244},[1045,8690,8691],{"class":1248},"Setting up database...",[1045,8693,2178],{"class":1244},[1045,8695,1322],{"class":1066},[1045,8697,8698],{"class":1047,"line":1830},[1045,8699,1519],{"class":1062},[1045,8701,8702],{"class":1047,"line":1835},[1045,8703,8704],{"class":1051},"        # Run migrations\n",[1045,8706,8707,8709,8711,8713,8715,8717,8720,8722],{"class":1047,"line":1846},[1045,8708,3366],{"class":1058},[1045,8710,1063],{"class":1062},[1045,8712,1067],{"class":1066},[1045,8714,1070],{"class":1062},[1045,8716,1067],{"class":1066},[1045,8718,8719],{"class":1062},"management ",[1045,8721,1083],{"class":1058},[1045,8723,8724],{"class":1062}," call_command\n",[1045,8726,8727,8730,8732,8734,8737,8739,8741,8744,8746,8748],{"class":1047,"line":1858},[1045,8728,8729],{"class":1313},"        call_command",[1045,8731,1204],{"class":1066},[1045,8733,1461],{"class":1244},[1045,8735,8736],{"class":1248},"migrate",[1045,8738,1461],{"class":1244},[1045,8740,1089],{"class":1066},[1045,8742,8743],{"class":1470}," verbosity",[1045,8745,1474],{"class":1066},[1045,8747,3690],{"class":1384},[1045,8749,1322],{"class":1066},[1045,8751,8752],{"class":1047,"line":1873},[1045,8753,1519],{"class":1062},[1045,8755,8756,8758,8760,8762,8764,8766,8768,8770,8773,8775],{"class":1047,"line":1887},[1045,8757,1329],{"class":1328},[1045,8759,1067],{"class":1066},[1045,8761,2955],{"class":1334},[1045,8763,1067],{"class":1066},[1045,8765,2960],{"class":1313},[1045,8767,1204],{"class":1066},[1045,8769,2178],{"class":1244},[1045,8771,8772],{"class":1248},"Database setup completed",[1045,8774,2178],{"class":1244},[1045,8776,1322],{"class":1066},[1045,8778,8779],{"class":1047,"line":1892},[1045,8780,1231],{"class":1062},[1045,8782,8783,8785,8788,8790,8792],{"class":1047,"line":1897},[1045,8784,1263],{"class":1196},[1045,8786,8787],{"class":1412}," create_superuser",[1045,8789,1204],{"class":1066},[1045,8791,1272],{"class":1271},[1045,8793,1211],{"class":1066},[1045,8795,8796,8798,8801],{"class":1047,"line":1924},[1045,8797,1430],{"class":1217},[1045,8799,8800],{"class":1221},"Interactive superuser creation",[1045,8802,1225],{"class":1217},[1045,8804,8805,8807,8809,8811,8814,8816,8819,8821,8823,8825],{"class":1047,"line":1934},[1045,8806,3366],{"class":1058},[1045,8808,1063],{"class":1062},[1045,8810,1067],{"class":1066},[1045,8812,8813],{"class":1062},"contrib",[1045,8815,1067],{"class":1066},[1045,8817,8818],{"class":1062},"auth",[1045,8820,1067],{"class":1066},[1045,8822,3374],{"class":1062},[1045,8824,1083],{"class":1058},[1045,8826,8827],{"class":1062}," User\n",[1045,8829,8830],{"class":1047,"line":1956},[1045,8831,1519],{"class":1062},[1045,8833,8834,8837,8839,8841,8843,8846,8848,8850,8853,8855,8857,8859,8861,8863,8866,8868],{"class":1047,"line":1970},[1045,8835,8836],{"class":1062},"        username ",[1045,8838,1474],{"class":1066},[1045,8840,3021],{"class":1328},[1045,8842,1067],{"class":1066},[1045,8844,8845],{"class":1313},"get_input",[1045,8847,1204],{"class":1066},[1045,8849,2178],{"class":1244},[1045,8851,8852],{"class":1248},"Username",[1045,8854,2178],{"class":1244},[1045,8856,1089],{"class":1066},[1045,8858,6766],{"class":1470},[1045,8860,1474],{"class":1066},[1045,8862,2178],{"class":1244},[1045,8864,8865],{"class":1248},"admin",[1045,8867,2178],{"class":1244},[1045,8869,1322],{"class":1066},[1045,8871,8872,8875,8877,8879,8881,8883,8885,8887,8890,8892],{"class":1047,"line":1975},[1045,8873,8874],{"class":1062},"        email ",[1045,8876,1474],{"class":1066},[1045,8878,3021],{"class":1328},[1045,8880,1067],{"class":1066},[1045,8882,8845],{"class":1313},[1045,8884,1204],{"class":1066},[1045,8886,2178],{"class":1244},[1045,8888,8889],{"class":1248},"Email",[1045,8891,2178],{"class":1244},[1045,8893,1322],{"class":1066},[1045,8895,8896],{"class":1047,"line":1984},[1045,8897,1519],{"class":1062},[1045,8899,8900,8902,8905,8907,8909,8911,8913,8915,8918,8920,8922,8924,8926],{"class":1047,"line":1990},[1045,8901,2255],{"class":1058},[1045,8903,8904],{"class":1062}," User",[1045,8906,1067],{"class":1066},[1045,8908,3400],{"class":1334},[1045,8910,1067],{"class":1066},[1045,8912,3432],{"class":1313},[1045,8914,1204],{"class":1066},[1045,8916,8917],{"class":1470},"username",[1045,8919,1474],{"class":1066},[1045,8921,8917],{"class":1313},[1045,8923,8282],{"class":1066},[1045,8925,2438],{"class":1313},[1045,8927,7589],{"class":1066},[1045,8929,8930,8932,8934,8936,8938,8940,8942,8944,8947,8949,8951,8953,8956],{"class":1047,"line":2007},[1045,8931,1993],{"class":1328},[1045,8933,1067],{"class":1066},[1045,8935,2955],{"class":1334},[1045,8937,1067],{"class":1066},[1045,8939,2960],{"class":1313},[1045,8941,1204],{"class":1066},[1045,8943,2162],{"class":1196},[1045,8945,8946],{"class":1248},"\"User ",[1045,8948,2169],{"class":2168},[1045,8950,8917],{"class":1313},[1045,8952,2175],{"class":2168},[1045,8954,8955],{"class":1248}," already exists\"",[1045,8957,1322],{"class":1066},[1045,8959,8960],{"class":1047,"line":2013},[1045,8961,3100],{"class":1058},[1045,8963,8964],{"class":1047,"line":2019},[1045,8965,1519],{"class":1062},[1045,8967,8968,8971,8973,8975,8977,8979,8981,8983,8986,8988],{"class":1047,"line":2035},[1045,8969,8970],{"class":1062},"        password ",[1045,8972,1474],{"class":1066},[1045,8974,3021],{"class":1328},[1045,8976,1067],{"class":1066},[1045,8978,8845],{"class":1313},[1045,8980,1204],{"class":1066},[1045,8982,2178],{"class":1244},[1045,8984,8985],{"class":1248},"Password",[1045,8987,2178],{"class":1244},[1045,8989,1322],{"class":1066},[1045,8991,8992],{"class":1047,"line":2040},[1045,8993,1519],{"class":1062},[1045,8995,8996,8999,9001,9003,9005,9007,9009,9011,9013,9016,9018,9021],{"class":1047,"line":2046},[1045,8997,8998],{"class":1062},"        User",[1045,9000,1067],{"class":1066},[1045,9002,3400],{"class":1334},[1045,9004,1067],{"class":1066},[1045,9006,8089],{"class":1313},[1045,9008,1204],{"class":1066},[1045,9010,8917],{"class":1313},[1045,9012,1089],{"class":1066},[1045,9014,9015],{"class":1313}," email",[1045,9017,1089],{"class":1066},[1045,9019,9020],{"class":1313}," password",[1045,9022,1322],{"class":1066},[1045,9024,9025,9027,9029,9031,9033,9035,9037,9039,9042,9044,9046,9048,9051],{"class":1047,"line":2058},[1045,9026,1329],{"class":1328},[1045,9028,1067],{"class":1066},[1045,9030,2955],{"class":1334},[1045,9032,1067],{"class":1066},[1045,9034,2960],{"class":1313},[1045,9036,1204],{"class":1066},[1045,9038,2162],{"class":1196},[1045,9040,9041],{"class":1248},"\"Superuser ",[1045,9043,2169],{"class":2168},[1045,9045,8917],{"class":1313},[1045,9047,2175],{"class":2168},[1045,9049,9050],{"class":1248}," created\"",[1045,9052,1322],{"class":1066},[1045,9054,9055],{"class":1047,"line":2063},[1045,9056,1231],{"class":1062},[1045,9058,9059,9061,9064,9066,9068],{"class":1047,"line":2069},[1045,9060,1263],{"class":1196},[1045,9062,9063],{"class":1412}," configure_settings",[1045,9065,1204],{"class":1066},[1045,9067,1272],{"class":1271},[1045,9069,1211],{"class":1066},[1045,9071,9072,9074,9077],{"class":1047,"line":2085},[1045,9073,1430],{"class":1217},[1045,9075,9076],{"class":1221},"Interactive settings configuration",[1045,9078,1225],{"class":1217},[1045,9080,9081,9084,9086,9088,9091],{"class":1047,"line":2090},[1045,9082,9083],{"class":1062},"        settings_file ",[1045,9085,1474],{"class":1066},[1045,9087,1245],{"class":1244},[1045,9089,9090],{"class":1248},"local_settings.py",[1045,9092,1252],{"class":1244},[1045,9094,9095],{"class":1047,"line":2096},[1045,9096,1519],{"class":1062},[1045,9098,9099,9101,9103,9105,9107,9109,9111,9113,9116,9118,9121,9123,9126],{"class":1047,"line":2108},[1045,9100,1329],{"class":1328},[1045,9102,1067],{"class":1066},[1045,9104,2955],{"class":1334},[1045,9106,1067],{"class":1066},[1045,9108,2960],{"class":1313},[1045,9110,1204],{"class":1066},[1045,9112,2162],{"class":1196},[1045,9114,9115],{"class":1248},"\"Configuring ",[1045,9117,2169],{"class":2168},[1045,9119,9120],{"class":1313},"settings_file",[1045,9122,2175],{"class":2168},[1045,9124,9125],{"class":1248},"...\"",[1045,9127,1322],{"class":1066},[1045,9129,9130],{"class":1047,"line":2113},[1045,9131,1519],{"class":1062},[1045,9133,9134],{"class":1047,"line":2124},[1045,9135,9136],{"class":1051},"        # Collect settings\n",[1045,9138,9139,9142,9144,9146,9148,9150,9152,9154,9157,9159],{"class":1047,"line":2130},[1045,9140,9141],{"class":1062},"        debug ",[1045,9143,1474],{"class":1066},[1045,9145,3021],{"class":1328},[1045,9147,1067],{"class":1066},[1045,9149,8028],{"class":1313},[1045,9151,1204],{"class":1066},[1045,9153,2178],{"class":1244},[1045,9155,9156],{"class":1248},"Enable debug mode?",[1045,9158,2178],{"class":1244},[1045,9160,1322],{"class":1066},[1045,9162,9163,9166,9168,9170,9172,9174,9176,9178,9181,9183,9185,9187,9189,9191,9194,9196],{"class":1047,"line":2146},[1045,9164,9165],{"class":1062},"        secret_key ",[1045,9167,1474],{"class":1066},[1045,9169,3021],{"class":1328},[1045,9171,1067],{"class":1066},[1045,9173,8845],{"class":1313},[1045,9175,1204],{"class":1066},[1045,9177,2178],{"class":1244},[1045,9179,9180],{"class":1248},"Secret key",[1045,9182,2178],{"class":1244},[1045,9184,1089],{"class":1066},[1045,9186,6766],{"class":1470},[1045,9188,1474],{"class":1066},[1045,9190,2178],{"class":1244},[1045,9192,9193],{"class":1248},"generate-random-key",[1045,9195,2178],{"class":1244},[1045,9197,1322],{"class":1066},[1045,9199,9200],{"class":1047,"line":2193},[1045,9201,1519],{"class":1062},[1045,9203,9204],{"class":1047,"line":2218},[1045,9205,9206],{"class":1051},"        # Write settings file\n",[1045,9208,9209,9211,9213,9215,9217,9219,9221,9223,9225,9227,9229,9231],{"class":1047,"line":2223},[1045,9210,4218],{"class":1058},[1045,9212,6245],{"class":1237},[1045,9214,1204],{"class":1066},[1045,9216,9120],{"class":1313},[1045,9218,1089],{"class":1066},[1045,9220,1245],{"class":1244},[1045,9222,7535],{"class":1248},[1045,9224,1461],{"class":1244},[1045,9226,3343],{"class":1066},[1045,9228,2138],{"class":1058},[1045,9230,6266],{"class":1062},[1045,9232,1981],{"class":1066},[1045,9234,9235,9237,9239,9241,9243,9245,9248,9250,9252,9254,9256,9258],{"class":1047,"line":2242},[1045,9236,5157],{"class":1062},[1045,9238,1067],{"class":1066},[1045,9240,2960],{"class":1313},[1045,9242,1204],{"class":1066},[1045,9244,2162],{"class":1196},[1045,9246,9247],{"class":1248},"\"DEBUG = ",[1045,9249,2169],{"class":2168},[1045,9251,5008],{"class":1313},[1045,9253,2175],{"class":2168},[1045,9255,5319],{"class":1328},[1045,9257,2178],{"class":1248},[1045,9259,1322],{"class":1066},[1045,9261,9262,9264,9266,9268,9270,9272,9275,9277,9280,9282,9284,9286,9288],{"class":1047,"line":2252},[1045,9263,5157],{"class":1062},[1045,9265,1067],{"class":1066},[1045,9267,2960],{"class":1313},[1045,9269,1204],{"class":1066},[1045,9271,2162],{"class":1196},[1045,9273,9274],{"class":1248},"\"SECRET_KEY = '",[1045,9276,2169],{"class":2168},[1045,9278,9279],{"class":1313},"secret_key",[1045,9281,2175],{"class":2168},[1045,9283,1461],{"class":1248},[1045,9285,5319],{"class":1328},[1045,9287,2178],{"class":1248},[1045,9289,1322],{"class":1066},[1045,9291,9292],{"class":1047,"line":2281},[1045,9293,1519],{"class":1062},[1045,9295,9296,9298,9300,9302,9304,9306,9308,9310,9313,9315,9317,9319,9321],{"class":1047,"line":2299},[1045,9297,1329],{"class":1328},[1045,9299,1067],{"class":1066},[1045,9301,2955],{"class":1334},[1045,9303,1067],{"class":1066},[1045,9305,2960],{"class":1313},[1045,9307,1204],{"class":1066},[1045,9309,2162],{"class":1196},[1045,9311,9312],{"class":1248},"\"Settings written to ",[1045,9314,2169],{"class":2168},[1045,9316,9120],{"class":1313},[1045,9318,2175],{"class":2168},[1045,9320,2178],{"class":1248},[1045,9322,1322],{"class":1066},[1045,9324,9325],{"class":1047,"line":2304},[1045,9326,1190],{"emptyLinePlaceholder":1189},[1045,9328,9329],{"class":1047,"line":2328},[1045,9330,9331],{"class":1051},"# management/commands/health_check.py\n",[1045,9333,9334,9336,9338,9340,9342],{"class":1047,"line":2346},[1045,9335,1197],{"class":1196},[1045,9337,1201],{"class":1200},[1045,9339,1204],{"class":1066},[1045,9341,1208],{"class":1207},[1045,9343,1211],{"class":1066},[1045,9345,9346,9348,9351],{"class":1047,"line":2351},[1045,9347,1218],{"class":1217},[1045,9349,9350],{"class":1221},"System health check command",[1045,9352,1225],{"class":1217},[1045,9354,9355],{"class":1047,"line":2370},[1045,9356,1231],{"class":1062},[1045,9358,9359,9361,9363,9365,9368],{"class":1047,"line":2379},[1045,9360,1238],{"class":1237},[1045,9362,1241],{"class":1066},[1045,9364,1245],{"class":1244},[1045,9366,9367],{"class":1248},"Perform comprehensive system health check",[1045,9369,1252],{"class":1244},[1045,9371,9372],{"class":1047,"line":2415},[1045,9373,1231],{"class":1062},[1045,9375,9376,9378,9380,9382,9384,9386,9388],{"class":1047,"line":2448},[1045,9377,1263],{"class":1196},[1045,9379,1413],{"class":1412},[1045,9381,1204],{"class":1066},[1045,9383,1272],{"class":1271},[1045,9385,1089],{"class":1066},[1045,9387,1422],{"class":1281},[1045,9389,1211],{"class":1066},[1045,9391,9392,9394,9396,9398,9400,9402,9404,9406,9408,9410,9412,9414,9417,9419,9421,9423,9425,9427,9429,9431,9433,9435,9437,9439],{"class":1047,"line":2473},[1045,9393,1441],{"class":1062},[1045,9395,1067],{"class":1066},[1045,9397,1446],{"class":1313},[1045,9399,1204],{"class":1066},[1045,9401,1461],{"class":1244},[1045,9403,6726],{"class":1248},[1045,9405,1461],{"class":1244},[1045,9407,1089],{"class":1066},[1045,9409,6733],{"class":1470},[1045,9411,6736],{"class":1066},[1045,9413,1461],{"class":1244},[1045,9415,9416],{"class":1248},"text",[1045,9418,1461],{"class":1244},[1045,9420,1089],{"class":1066},[1045,9422,1245],{"class":1244},[1045,9424,6750],{"class":1248},[1045,9426,1461],{"class":1244},[1045,9428,4664],{"class":1066},[1045,9430,6766],{"class":1470},[1045,9432,1474],{"class":1066},[1045,9434,1461],{"class":1244},[1045,9436,9416],{"class":1248},[1045,9438,1461],{"class":1244},[1045,9440,1322],{"class":1066},[1045,9442,9443,9445,9447,9449,9451,9453,9455,9457,9459,9461,9463,9465,9468,9470],{"class":1047,"line":2478},[1045,9444,1441],{"class":1062},[1045,9446,1067],{"class":1066},[1045,9448,1446],{"class":1313},[1045,9450,1204],{"class":1066},[1045,9452,1461],{"class":1244},[1045,9454,6791],{"class":1248},[1045,9456,1461],{"class":1244},[1045,9458,1089],{"class":1066},[1045,9460,5541],{"class":1470},[1045,9462,1474],{"class":1066},[1045,9464,1461],{"class":1244},[1045,9466,9467],{"class":1248},"Output file",[1045,9469,1461],{"class":1244},[1045,9471,1322],{"class":1066},[1045,9473,9474],{"class":1047,"line":2496},[1045,9475,1231],{"class":1062},[1045,9477,9478,9480,9482,9484,9486,9488,9490,9492,9494,9496,9498],{"class":1047,"line":2506},[1045,9479,1263],{"class":1196},[1045,9481,1902],{"class":1412},[1045,9483,1204],{"class":1066},[1045,9485,1272],{"class":1271},[1045,9487,1089],{"class":1066},[1045,9489,1278],{"class":1277},[1045,9491,1282],{"class":1281},[1045,9493,1089],{"class":1066},[1045,9495,1287],{"class":1277},[1045,9497,1919],{"class":1281},[1045,9499,1211],{"class":1066},[1045,9501,9502,9505,9507],{"class":1047,"line":2548},[1045,9503,9504],{"class":1062},"        checks ",[1045,9506,1474],{"class":1066},[1045,9508,9509],{"class":1066}," [\n",[1045,9511,9512,9515,9517,9520,9522,9524,9526,9528,9531],{"class":1047,"line":2553},[1045,9513,9514],{"class":1066},"            (",[1045,9516,1461],{"class":1244},[1045,9518,9519],{"class":1248},"Database",[1045,9521,1461],{"class":1244},[1045,9523,1089],{"class":1066},[1045,9525,3021],{"class":1328},[1045,9527,1067],{"class":1066},[1045,9529,9530],{"class":1334},"check_database",[1045,9532,9533],{"class":1066},"),\n",[1045,9535,9536,9538,9540,9543,9545,9547,9549,9551,9554],{"class":1047,"line":2570},[1045,9537,9514],{"class":1066},[1045,9539,1461],{"class":1244},[1045,9541,9542],{"class":1248},"Cache",[1045,9544,1461],{"class":1244},[1045,9546,1089],{"class":1066},[1045,9548,3021],{"class":1328},[1045,9550,1067],{"class":1066},[1045,9552,9553],{"class":1334},"check_cache",[1045,9555,9533],{"class":1066},[1045,9557,9558,9560,9562,9565,9567,9569,9571,9573,9576],{"class":1047,"line":2596},[1045,9559,9514],{"class":1066},[1045,9561,1461],{"class":1244},[1045,9563,9564],{"class":1248},"Storage",[1045,9566,1461],{"class":1244},[1045,9568,1089],{"class":1066},[1045,9570,3021],{"class":1328},[1045,9572,1067],{"class":1066},[1045,9574,9575],{"class":1334},"check_storage",[1045,9577,9533],{"class":1066},[1045,9579,9580,9582,9584,9587,9589,9591,9593,9595,9598],{"class":1047,"line":2601},[1045,9581,9514],{"class":1066},[1045,9583,1461],{"class":1244},[1045,9585,9586],{"class":1248},"External Services",[1045,9588,1461],{"class":1244},[1045,9590,1089],{"class":1066},[1045,9592,3021],{"class":1328},[1045,9594,1067],{"class":1066},[1045,9596,9597],{"class":1334},"check_external_services",[1045,9599,9533],{"class":1066},[1045,9601,9602,9604,9606,9608,9610,9612,9614,9616,9619],{"class":1047,"line":2606},[1045,9603,9514],{"class":1066},[1045,9605,1461],{"class":1244},[1045,9607,404],{"class":1248},[1045,9609,1461],{"class":1244},[1045,9611,1089],{"class":1066},[1045,9613,3021],{"class":1328},[1045,9615,1067],{"class":1066},[1045,9617,9618],{"class":1334},"check_permissions",[1045,9620,9533],{"class":1066},[1045,9622,9623],{"class":1047,"line":2612},[1045,9624,9625],{"class":1066},"        ]\n",[1045,9627,9628],{"class":1047,"line":2629},[1045,9629,1519],{"class":1062},[1045,9631,9632,9635,9637],{"class":1047,"line":2647},[1045,9633,9634],{"class":1062},"        results ",[1045,9636,1474],{"class":1066},[1045,9638,6226],{"class":1066},[1045,9640,9641],{"class":1047,"line":2664},[1045,9642,1519],{"class":1062},[1045,9644,9645,9647,9650,9652,9655,9657,9660],{"class":1047,"line":2669},[1045,9646,3787],{"class":1058},[1045,9648,9649],{"class":1062}," check_name",[1045,9651,1089],{"class":1066},[1045,9653,9654],{"class":1062}," check_func ",[1045,9656,3682],{"class":1058},[1045,9658,9659],{"class":1062}," checks",[1045,9661,1981],{"class":1066},[1045,9663,9664,9666,9668,9670,9672,9674,9676,9678,9681,9683,9686,9688,9690],{"class":1047,"line":2690},[1045,9665,1993],{"class":1328},[1045,9667,1067],{"class":1066},[1045,9669,2955],{"class":1334},[1045,9671,1067],{"class":1066},[1045,9673,2960],{"class":1313},[1045,9675,1204],{"class":1066},[1045,9677,2162],{"class":1196},[1045,9679,9680],{"class":1248},"\"Checking ",[1045,9682,2169],{"class":2168},[1045,9684,9685],{"class":1313},"check_name",[1045,9687,2175],{"class":2168},[1045,9689,9125],{"class":1248},[1045,9691,1322],{"class":1066},[1045,9693,9694,9696],{"class":1047,"line":2709},[1045,9695,3803],{"class":1058},[1045,9697,1981],{"class":1066},[1045,9699,9700,9703,9705,9708],{"class":1047,"line":2714},[1045,9701,9702],{"class":1062},"                result ",[1045,9704,1474],{"class":1066},[1045,9706,9707],{"class":1313}," check_func",[1045,9709,1953],{"class":1066},[1045,9711,9712,9715,9717,9719,9721,9723],{"class":1047,"line":2720},[1045,9713,9714],{"class":1062},"                results",[1045,9716,2260],{"class":1066},[1045,9718,9685],{"class":1062},[1045,9720,2270],{"class":1066},[1045,9722,1241],{"class":1066},[1045,9724,9725],{"class":1062}," result\n",[1045,9727,9728,9731,9733,9736,9739,9741,9743,9746,9748,9750,9752,9754,9756,9758,9760,9763],{"class":1047,"line":2737},[1045,9729,9730],{"class":1062},"                status ",[1045,9732,1474],{"class":1066},[1045,9734,9735],{"class":1244}," \"",[1045,9737,9738],{"class":1248},"OK",[1045,9740,2178],{"class":1244},[1045,9742,2522],{"class":1058},[1045,9744,9745],{"class":1062}," result",[1045,9747,2260],{"class":1066},[1045,9749,1461],{"class":1244},[1045,9751,6043],{"class":1248},[1045,9753,1461],{"class":1244},[1045,9755,2270],{"class":1066},[1045,9757,2538],{"class":1058},[1045,9759,9735],{"class":1244},[1045,9761,9762],{"class":1248},"FAIL",[1045,9764,5327],{"class":1244},[1045,9766,9767,9769,9771,9773,9775,9777,9779,9781,9784,9786,9788,9790,9792,9794,9796,9798,9800,9803,9805,9807,9809,9811],{"class":1047,"line":2781},[1045,9768,3811],{"class":1328},[1045,9770,1067],{"class":1066},[1045,9772,2955],{"class":1334},[1045,9774,1067],{"class":1066},[1045,9776,2960],{"class":1313},[1045,9778,1204],{"class":1066},[1045,9780,2162],{"class":1196},[1045,9782,9783],{"class":1248},"\"  ",[1045,9785,2169],{"class":2168},[1045,9787,6043],{"class":1313},[1045,9789,2175],{"class":2168},[1045,9791,4820],{"class":1248},[1045,9793,2169],{"class":2168},[1045,9795,4382],{"class":1313},[1045,9797,2260],{"class":1066},[1045,9799,1461],{"class":1244},[1045,9801,9802],{"class":1248},"message",[1045,9804,1461],{"class":1244},[1045,9806,2270],{"class":1066},[1045,9808,2175],{"class":2168},[1045,9810,2178],{"class":1248},[1045,9812,1322],{"class":1066},[1045,9814,9815,9817,9819,9821,9823],{"class":1047,"line":2803},[1045,9816,3921],{"class":1058},[1045,9818,2135],{"class":1298},[1045,9820,2138],{"class":1058},[1045,9822,2141],{"class":1062},[1045,9824,1981],{"class":1066},[1045,9826,9827,9829,9831,9833,9835,9837,9840,9842,9844,9846,9848,9851,9853,9855,9857,9859,9861,9863,9865,9867],{"class":1047,"line":2824},[1045,9828,9714],{"class":1062},[1045,9830,2260],{"class":1066},[1045,9832,9685],{"class":1062},[1045,9834,2270],{"class":1066},[1045,9836,1241],{"class":1066},[1045,9838,9839],{"class":1066}," {",[1045,9841,1461],{"class":1244},[1045,9843,6043],{"class":1248},[1045,9845,1461],{"class":1244},[1045,9847,3541],{"class":1066},[1045,9849,9850],{"class":1368}," False",[1045,9852,1089],{"class":1066},[1045,9854,1245],{"class":1244},[1045,9856,9802],{"class":1248},[1045,9858,1461],{"class":1244},[1045,9860,3541],{"class":1066},[1045,9862,6157],{"class":1298},[1045,9864,1204],{"class":1066},[1045,9866,2172],{"class":1313},[1045,9868,9869],{"class":1066},")}\n",[1045,9871,9872,9874,9876,9878,9880,9882,9884,9886,9889,9891,9893,9895,9897],{"class":1047,"line":2839},[1045,9873,3811],{"class":1328},[1045,9875,1067],{"class":1066},[1045,9877,2955],{"class":1334},[1045,9879,1067],{"class":1066},[1045,9881,2960],{"class":1313},[1045,9883,1204],{"class":1066},[1045,9885,2162],{"class":1196},[1045,9887,9888],{"class":1248},"\"  ERROR: ",[1045,9890,2169],{"class":2168},[1045,9892,2172],{"class":1313},[1045,9894,2175],{"class":2168},[1045,9896,2178],{"class":1248},[1045,9898,1322],{"class":1066},[1045,9900,9901],{"class":1047,"line":2859},[1045,9902,1519],{"class":1062},[1045,9904,9905],{"class":1047,"line":2864},[1045,9906,9907],{"class":1051},"        # Output results\n",[1045,9909,9910,9912,9914,9916,9918,9920,9922,9924,9926,9928,9930,9932],{"class":1047,"line":2878},[1045,9911,2255],{"class":1058},[1045,9913,2237],{"class":1062},[1045,9915,2260],{"class":1066},[1045,9917,1461],{"class":1244},[1045,9919,7182],{"class":1248},[1045,9921,1461],{"class":1244},[1045,9923,2270],{"class":1066},[1045,9925,3492],{"class":1277},[1045,9927,1245],{"class":1244},[1045,9929,6750],{"class":1248},[1045,9931,1461],{"class":1244},[1045,9933,1981],{"class":1066},[1045,9935,9936,9938,9940,9943,9945,9948,9950,9952,9954,9956,9958,9960],{"class":1047,"line":2888},[1045,9937,1993],{"class":1328},[1045,9939,1067],{"class":1066},[1045,9941,9942],{"class":1313},"output_json",[1045,9944,1204],{"class":1066},[1045,9946,9947],{"class":1313},"results",[1045,9949,1089],{"class":1066},[1045,9951,2237],{"class":1313},[1045,9953,2260],{"class":1066},[1045,9955,1461],{"class":1244},[1045,9957,7220],{"class":1248},[1045,9959,1461],{"class":1244},[1045,9961,2412],{"class":1066},[1045,9963,9964,9966],{"class":1047,"line":2895},[1045,9965,3293],{"class":1058},[1045,9967,1981],{"class":1066},[1045,9969,9970,9972,9974,9977,9979,9981,9983,9985,9987,9989,9991,9993],{"class":1047,"line":2909},[1045,9971,1993],{"class":1328},[1045,9973,1067],{"class":1066},[1045,9975,9976],{"class":1313},"output_text",[1045,9978,1204],{"class":1066},[1045,9980,9947],{"class":1313},[1045,9982,1089],{"class":1066},[1045,9984,2237],{"class":1313},[1045,9986,2260],{"class":1066},[1045,9988,1461],{"class":1244},[1045,9990,7220],{"class":1248},[1045,9992,1461],{"class":1244},[1045,9994,2412],{"class":1066},[1045,9996,9997],{"class":1047,"line":2924},[1045,9998,1231],{"class":1062},[1045,10000,10001,10003,10006,10008,10010],{"class":1047,"line":2934},[1045,10002,1263],{"class":1196},[1045,10004,10005],{"class":1412}," check_database",[1045,10007,1204],{"class":1066},[1045,10009,1272],{"class":1271},[1045,10011,1211],{"class":1066},[1045,10013,10014,10016,10019],{"class":1047,"line":2948},[1045,10015,1430],{"class":1217},[1045,10017,10018],{"class":1221},"Check database connectivity",[1045,10020,1225],{"class":1217},[1045,10022,10023,10025,10027,10029,10031,10033],{"class":1047,"line":2974},[1045,10024,3366],{"class":1058},[1045,10026,1063],{"class":1062},[1045,10028,1067],{"class":1066},[1045,10030,1104],{"class":1062},[1045,10032,1083],{"class":1058},[1045,10034,10035],{"class":1062}," connection\n",[1045,10037,10038],{"class":1047,"line":2979},[1045,10039,1519],{"class":1062},[1045,10041,10042,10044],{"class":1047,"line":2997},[1045,10043,1978],{"class":1058},[1045,10045,1981],{"class":1066},[1045,10047,10048,10050,10053,10055,10058,10060,10062,10065],{"class":1047,"line":3007},[1045,10049,7774],{"class":1058},[1045,10051,10052],{"class":1062}," connection",[1045,10054,1067],{"class":1066},[1045,10056,10057],{"class":1313},"cursor",[1045,10059,5075],{"class":1066},[1045,10061,2138],{"class":1058},[1045,10063,10064],{"class":1062}," cursor",[1045,10066,1981],{"class":1066},[1045,10068,10069,10072,10074,10077,10079,10081,10084,10086],{"class":1047,"line":3013},[1045,10070,10071],{"class":1062},"                cursor",[1045,10073,1067],{"class":1066},[1045,10075,10076],{"class":1313},"execute",[1045,10078,1204],{"class":1066},[1045,10080,2178],{"class":1244},[1045,10082,10083],{"class":1248},"SELECT 1",[1045,10085,2178],{"class":1244},[1045,10087,1322],{"class":1066},[1045,10089,10090,10092,10094,10096,10098,10100,10102,10104,10106,10108,10110,10112,10114,10116,10119,10121],{"class":1047,"line":3035},[1045,10091,8326],{"class":1058},[1045,10093,9839],{"class":1066},[1045,10095,1461],{"class":1244},[1045,10097,6043],{"class":1248},[1045,10099,1461],{"class":1244},[1045,10101,3541],{"class":1066},[1045,10103,8251],{"class":1368},[1045,10105,1089],{"class":1066},[1045,10107,1245],{"class":1244},[1045,10109,9802],{"class":1248},[1045,10111,1461],{"class":1244},[1045,10113,3541],{"class":1066},[1045,10115,1245],{"class":1244},[1045,10117,10118],{"class":1248},"Database connection OK",[1045,10120,1461],{"class":1244},[1045,10122,10123],{"class":1066},"}\n",[1045,10125,10126,10128,10130,10132,10134],{"class":1047,"line":3053},[1045,10127,2116],{"class":1058},[1045,10129,2135],{"class":1298},[1045,10131,2138],{"class":1058},[1045,10133,2141],{"class":1062},[1045,10135,1981],{"class":1066},[1045,10137,10138,10140,10142,10144,10146,10148,10150,10152,10154,10156,10158,10160,10162,10164,10167,10169,10171,10173,10175],{"class":1047,"line":3058},[1045,10139,6223],{"class":1058},[1045,10141,9839],{"class":1066},[1045,10143,1461],{"class":1244},[1045,10145,6043],{"class":1248},[1045,10147,1461],{"class":1244},[1045,10149,3541],{"class":1066},[1045,10151,9850],{"class":1368},[1045,10153,1089],{"class":1066},[1045,10155,1245],{"class":1244},[1045,10157,9802],{"class":1248},[1045,10159,1461],{"class":1244},[1045,10161,3541],{"class":1066},[1045,10163,6266],{"class":1196},[1045,10165,10166],{"class":1248},"'Database error: ",[1045,10168,2169],{"class":2168},[1045,10170,2172],{"class":1062},[1045,10172,2175],{"class":2168},[1045,10174,1461],{"class":1248},[1045,10176,10123],{"class":1066},[1045,10178,10179],{"class":1047,"line":3073},[1045,10180,1231],{"class":1062},[1045,10182,10183,10185,10188,10190,10192],{"class":1047,"line":3097},[1045,10184,1263],{"class":1196},[1045,10186,10187],{"class":1412}," check_cache",[1045,10189,1204],{"class":1066},[1045,10191,1272],{"class":1271},[1045,10193,1211],{"class":1066},[1045,10195,10196,10198,10201],{"class":1047,"line":3103},[1045,10197,1430],{"class":1217},[1045,10199,10200],{"class":1221},"Check cache functionality",[1045,10202,1225],{"class":1217},[1045,10204,10205,10207,10209,10211,10213,10215,10218,10220],{"class":1047,"line":3108},[1045,10206,3366],{"class":1058},[1045,10208,1063],{"class":1062},[1045,10210,1067],{"class":1066},[1045,10212,1070],{"class":1062},[1045,10214,1067],{"class":1066},[1045,10216,10217],{"class":1062},"cache ",[1045,10219,1083],{"class":1058},[1045,10221,10222],{"class":1062}," cache\n",[1045,10224,10225],{"class":1047,"line":3140},[1045,10226,1519],{"class":1062},[1045,10228,10229,10231],{"class":1047,"line":3145},[1045,10230,1978],{"class":1058},[1045,10232,1981],{"class":1066},[1045,10234,10235,10238,10240,10242,10245],{"class":1047,"line":3163},[1045,10236,10237],{"class":1062},"            test_key ",[1045,10239,1474],{"class":1066},[1045,10241,1245],{"class":1244},[1045,10243,10244],{"class":1248},"health_check_test",[1045,10246,1252],{"class":1244},[1045,10248,10249,10252,10254,10256,10259],{"class":1047,"line":3187},[1045,10250,10251],{"class":1062},"            test_value ",[1045,10253,1474],{"class":1066},[1045,10255,1245],{"class":1244},[1045,10257,10258],{"class":1248},"test_value",[1045,10260,1252],{"class":1244},[1045,10262,10263],{"class":1047,"line":3192},[1045,10264,2010],{"class":1062},[1045,10266,10267,10270,10272,10275,10277,10280,10282,10285,10287,10290],{"class":1047,"line":3198},[1045,10268,10269],{"class":1062},"            cache",[1045,10271,1067],{"class":1066},[1045,10273,10274],{"class":1313},"set",[1045,10276,1204],{"class":1066},[1045,10278,10279],{"class":1313},"test_key",[1045,10281,1089],{"class":1066},[1045,10283,10284],{"class":1313}," test_value",[1045,10286,1089],{"class":1066},[1045,10288,10289],{"class":1384}," 60",[1045,10291,1322],{"class":1066},[1045,10293,10294,10297,10299,10302,10304,10307,10309,10311],{"class":1047,"line":3219},[1045,10295,10296],{"class":1062},"            retrieved_value ",[1045,10298,1474],{"class":1066},[1045,10300,10301],{"class":1062}," cache",[1045,10303,1067],{"class":1066},[1045,10305,10306],{"class":1313},"get",[1045,10308,1204],{"class":1066},[1045,10310,10279],{"class":1313},[1045,10312,1322],{"class":1066},[1045,10314,10315],{"class":1047,"line":3239},[1045,10316,2010],{"class":1062},[1045,10318,10319,10321,10324,10326,10328],{"class":1047,"line":3244},[1045,10320,2418],{"class":1058},[1045,10322,10323],{"class":1062}," retrieved_value ",[1045,10325,3066],{"class":1277},[1045,10327,10284],{"class":1062},[1045,10329,1981],{"class":1066},[1045,10331,10332,10335,10337,10340,10342,10344],{"class":1047,"line":3260},[1045,10333,10334],{"class":1062},"                cache",[1045,10336,1067],{"class":1066},[1045,10338,10339],{"class":1313},"delete",[1045,10341,1204],{"class":1066},[1045,10343,10279],{"class":1313},[1045,10345,1322],{"class":1066},[1045,10347,10348,10350,10352,10354,10356,10358,10360,10362,10364,10366,10368,10370,10372,10374,10377,10379],{"class":1047,"line":3290},[1045,10349,8326],{"class":1058},[1045,10351,9839],{"class":1066},[1045,10353,1461],{"class":1244},[1045,10355,6043],{"class":1248},[1045,10357,1461],{"class":1244},[1045,10359,3541],{"class":1066},[1045,10361,8251],{"class":1368},[1045,10363,1089],{"class":1066},[1045,10365,1245],{"class":1244},[1045,10367,9802],{"class":1248},[1045,10369,1461],{"class":1244},[1045,10371,3541],{"class":1066},[1045,10373,1245],{"class":1244},[1045,10375,10376],{"class":1248},"Cache working correctly",[1045,10378,1461],{"class":1244},[1045,10380,10123],{"class":1066},[1045,10382,10383,10385],{"class":1047,"line":3298},[1045,10384,8368],{"class":1058},[1045,10386,1981],{"class":1066},[1045,10388,10389,10391,10393,10395,10397,10399,10401,10403,10405,10407,10409,10411,10413,10415,10418,10420],{"class":1047,"line":3322},[1045,10390,8326],{"class":1058},[1045,10392,9839],{"class":1066},[1045,10394,1461],{"class":1244},[1045,10396,6043],{"class":1248},[1045,10398,1461],{"class":1244},[1045,10400,3541],{"class":1066},[1045,10402,9850],{"class":1368},[1045,10404,1089],{"class":1066},[1045,10406,1245],{"class":1244},[1045,10408,9802],{"class":1248},[1045,10410,1461],{"class":1244},[1045,10412,3541],{"class":1066},[1045,10414,1245],{"class":1244},[1045,10416,10417],{"class":1248},"Cache value mismatch",[1045,10419,1461],{"class":1244},[1045,10421,10123],{"class":1066},[1045,10423,10424,10426,10428,10430,10432],{"class":1047,"line":3327},[1045,10425,2116],{"class":1058},[1045,10427,2135],{"class":1298},[1045,10429,2138],{"class":1058},[1045,10431,2141],{"class":1062},[1045,10433,1981],{"class":1066},[1045,10435,10436,10438,10440,10442,10444,10446,10448,10450,10452,10454,10456,10458,10460,10462,10465,10467,10469,10471,10473],{"class":1047,"line":3353},[1045,10437,6223],{"class":1058},[1045,10439,9839],{"class":1066},[1045,10441,1461],{"class":1244},[1045,10443,6043],{"class":1248},[1045,10445,1461],{"class":1244},[1045,10447,3541],{"class":1066},[1045,10449,9850],{"class":1368},[1045,10451,1089],{"class":1066},[1045,10453,1245],{"class":1244},[1045,10455,9802],{"class":1248},[1045,10457,1461],{"class":1244},[1045,10459,3541],{"class":1066},[1045,10461,6266],{"class":1196},[1045,10463,10464],{"class":1248},"'Cache error: ",[1045,10466,2169],{"class":2168},[1045,10468,2172],{"class":1062},[1045,10470,2175],{"class":2168},[1045,10472,1461],{"class":1248},[1045,10474,10123],{"class":1066},[1045,10476,10477],{"class":1047,"line":3363},[1045,10478,1231],{"class":1062},[1045,10480,10481,10483,10486,10488,10490],{"class":1047,"line":3382},[1045,10482,1263],{"class":1196},[1045,10484,10485],{"class":1412}," check_storage",[1045,10487,1204],{"class":1066},[1045,10489,1272],{"class":1271},[1045,10491,1211],{"class":1066},[1045,10493,10494,10496,10499],{"class":1047,"line":3387},[1045,10495,1430],{"class":1217},[1045,10497,10498],{"class":1221},"Check file storage",[1045,10500,1225],{"class":1217},[1045,10502,10503,10505,10507,10509,10511,10513,10516,10518,10521,10523],{"class":1047,"line":3410},[1045,10504,3366],{"class":1058},[1045,10506,1063],{"class":1062},[1045,10508,1067],{"class":1066},[1045,10510,1070],{"class":1062},[1045,10512,1067],{"class":1066},[1045,10514,10515],{"class":1062},"files",[1045,10517,1067],{"class":1066},[1045,10519,10520],{"class":1062},"storage ",[1045,10522,1083],{"class":1058},[1045,10524,10525],{"class":1062}," default_storage\n",[1045,10527,10528,10530],{"class":1047,"line":3415},[1045,10529,6235],{"class":1058},[1045,10531,10532],{"class":1062}," tempfile\n",[1045,10534,10535],{"class":1047,"line":3421},[1045,10536,1519],{"class":1062},[1045,10538,10539,10541],{"class":1047,"line":3439},[1045,10540,1978],{"class":1058},[1045,10542,1981],{"class":1066},[1045,10544,10545],{"class":1047,"line":3445},[1045,10546,10547],{"class":1051},"            # Test file write/read\n",[1045,10549,10550,10553,10555,10558,10560,10563],{"class":1047,"line":3478},[1045,10551,10552],{"class":1062},"            test_content ",[1045,10554,1474],{"class":1066},[1045,10556,10557],{"class":1196}," b",[1045,10559,1461],{"class":1244},[1045,10561,10562],{"class":1248},"health check test",[1045,10564,1252],{"class":1244},[1045,10566,10567,10570,10572,10575,10577,10580,10582,10584,10586,10589],{"class":1047,"line":3500},[1045,10568,10569],{"class":1062},"            test_file ",[1045,10571,1474],{"class":1066},[1045,10573,10574],{"class":1062}," tempfile",[1045,10576,1067],{"class":1066},[1045,10578,10579],{"class":1313},"NamedTemporaryFile",[1045,10581,1204],{"class":1066},[1045,10583,10339],{"class":1470},[1045,10585,1474],{"class":1066},[1045,10587,10588],{"class":1368},"False",[1045,10590,1322],{"class":1066},[1045,10592,10593,10596,10598,10600,10602,10605],{"class":1047,"line":3516},[1045,10594,10595],{"class":1062},"            test_file",[1045,10597,1067],{"class":1066},[1045,10599,2960],{"class":1313},[1045,10601,1204],{"class":1066},[1045,10603,10604],{"class":1313},"test_content",[1045,10606,1322],{"class":1066},[1045,10608,10609,10611,10613,10615],{"class":1047,"line":3550},[1045,10610,10595],{"class":1062},[1045,10612,1067],{"class":1066},[1045,10614,4033],{"class":1313},[1045,10616,1953],{"class":1066},[1045,10618,10619],{"class":1047,"line":3555},[1045,10620,2010],{"class":1062},[1045,10622,10623],{"class":1047,"line":3595},[1045,10624,10625],{"class":1051},"            # Save to storage\n",[1045,10627,10628,10631,10633,10636,10638,10640,10642,10644,10647,10649,10651,10653,10655,10658,10660,10663,10665,10667,10670,10672],{"class":1047,"line":3600},[1045,10629,10630],{"class":1062},"            saved_name ",[1045,10632,1474],{"class":1066},[1045,10634,10635],{"class":1062}," default_storage",[1045,10637,1067],{"class":1066},[1045,10639,4987],{"class":1313},[1045,10641,1204],{"class":1066},[1045,10643,1461],{"class":1244},[1045,10645,10646],{"class":1248},"health_check_test.txt",[1045,10648,1461],{"class":1244},[1045,10650,1089],{"class":1066},[1045,10652,6245],{"class":1237},[1045,10654,1204],{"class":1066},[1045,10656,10657],{"class":1313},"test_file",[1045,10659,1067],{"class":1066},[1045,10661,10662],{"class":1334},"name",[1045,10664,1089],{"class":1066},[1045,10666,1245],{"class":1244},[1045,10668,10669],{"class":1248},"rb",[1045,10671,1461],{"class":1244},[1045,10673,3592],{"class":1066},[1045,10675,10676],{"class":1047,"line":3636},[1045,10677,2010],{"class":1062},[1045,10679,10680],{"class":1047,"line":3646},[1045,10681,10682],{"class":1051},"            # Read from storage\n",[1045,10684,10685,10687,10689,10691,10693,10695,10698,10700,10702,10704,10706,10708,10710,10712],{"class":1047,"line":3709},[1045,10686,7774],{"class":1058},[1045,10688,10635],{"class":1062},[1045,10690,1067],{"class":1066},[1045,10692,7499],{"class":1313},[1045,10694,1204],{"class":1066},[1045,10696,10697],{"class":1313},"saved_name",[1045,10699,1089],{"class":1066},[1045,10701,1245],{"class":1244},[1045,10703,10669],{"class":1248},[1045,10705,1461],{"class":1244},[1045,10707,3343],{"class":1066},[1045,10709,2138],{"class":1058},[1045,10711,6266],{"class":1062},[1045,10713,1981],{"class":1066},[1045,10715,10716,10719,10721,10723,10725,10728],{"class":1047,"line":3714},[1045,10717,10718],{"class":1062},"                read_content ",[1045,10720,1474],{"class":1066},[1045,10722,6266],{"class":1062},[1045,10724,1067],{"class":1066},[1045,10726,10727],{"class":1313},"read",[1045,10729,1953],{"class":1066},[1045,10731,10732],{"class":1047,"line":3727},[1045,10733,2010],{"class":1062},[1045,10735,10736],{"class":1047,"line":3738},[1045,10737,10738],{"class":1051},"            # Cleanup\n",[1045,10740,10741,10744,10746,10748,10750,10752],{"class":1047,"line":3779},[1045,10742,10743],{"class":1062},"            default_storage",[1045,10745,1067],{"class":1066},[1045,10747,10339],{"class":1313},[1045,10749,1204],{"class":1066},[1045,10751,10697],{"class":1313},[1045,10753,1322],{"class":1066},[1045,10755,10756],{"class":1047,"line":3784},[1045,10757,2010],{"class":1062},[1045,10759,10760,10762,10765,10767,10770],{"class":1047,"line":3800},[1045,10761,2418],{"class":1058},[1045,10763,10764],{"class":1062}," read_content ",[1045,10766,3066],{"class":1277},[1045,10768,10769],{"class":1062}," test_content",[1045,10771,1981],{"class":1066},[1045,10773,10774,10776,10778,10780,10782,10784,10786,10788,10790,10792,10794,10796,10798,10800,10803,10805],{"class":1047,"line":3808},[1045,10775,8326],{"class":1058},[1045,10777,9839],{"class":1066},[1045,10779,1461],{"class":1244},[1045,10781,6043],{"class":1248},[1045,10783,1461],{"class":1244},[1045,10785,3541],{"class":1066},[1045,10787,8251],{"class":1368},[1045,10789,1089],{"class":1066},[1045,10791,1245],{"class":1244},[1045,10793,9802],{"class":1248},[1045,10795,1461],{"class":1244},[1045,10797,3541],{"class":1066},[1045,10799,1245],{"class":1244},[1045,10801,10802],{"class":1248},"Storage working correctly",[1045,10804,1461],{"class":1244},[1045,10806,10123],{"class":1066},[1045,10808,10809,10811],{"class":1047,"line":3830},[1045,10810,8368],{"class":1058},[1045,10812,1981],{"class":1066},[1045,10814,10815,10817,10819,10821,10823,10825,10827,10829,10831,10833,10835,10837,10839,10841,10844,10846],{"class":1047,"line":3836},[1045,10816,8326],{"class":1058},[1045,10818,9839],{"class":1066},[1045,10820,1461],{"class":1244},[1045,10822,6043],{"class":1248},[1045,10824,1461],{"class":1244},[1045,10826,3541],{"class":1066},[1045,10828,9850],{"class":1368},[1045,10830,1089],{"class":1066},[1045,10832,1245],{"class":1244},[1045,10834,9802],{"class":1248},[1045,10836,1461],{"class":1244},[1045,10838,3541],{"class":1066},[1045,10840,1245],{"class":1244},[1045,10842,10843],{"class":1248},"Storage content mismatch",[1045,10845,1461],{"class":1244},[1045,10847,10123],{"class":1066},[1045,10849,10850,10852,10854,10856,10858],{"class":1047,"line":3850},[1045,10851,2116],{"class":1058},[1045,10853,2135],{"class":1298},[1045,10855,2138],{"class":1058},[1045,10857,2141],{"class":1062},[1045,10859,1981],{"class":1066},[1045,10861,10862,10864,10866,10868,10870,10872,10874,10876,10878,10880,10882,10884,10886,10888,10891,10893,10895,10897,10899],{"class":1047,"line":3871},[1045,10863,6223],{"class":1058},[1045,10865,9839],{"class":1066},[1045,10867,1461],{"class":1244},[1045,10869,6043],{"class":1248},[1045,10871,1461],{"class":1244},[1045,10873,3541],{"class":1066},[1045,10875,9850],{"class":1368},[1045,10877,1089],{"class":1066},[1045,10879,1245],{"class":1244},[1045,10881,9802],{"class":1248},[1045,10883,1461],{"class":1244},[1045,10885,3541],{"class":1066},[1045,10887,6266],{"class":1196},[1045,10889,10890],{"class":1248},"'Storage error: ",[1045,10892,2169],{"class":2168},[1045,10894,2172],{"class":1062},[1045,10896,2175],{"class":2168},[1045,10898,1461],{"class":1248},[1045,10900,10123],{"class":1066},[1026,10902,10903],{},"Custom management commands provide powerful automation capabilities for Django applications. They enable complex data processing, system maintenance, and administrative tasks while integrating seamlessly with Django's ecosystem and providing robust error handling and progress tracking.",[5301,10905,10906],{},"html pre.shiki code .s9Tkl, html code.shiki .s9Tkl{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#A0ADA0;--shiki-default-font-style:inherit;--shiki-dark:#758575DD;--shiki-dark-font-style:inherit}html pre.shiki code .siDh9, html code.shiki .siDh9{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#1E754F;--shiki-default-font-style:inherit;--shiki-dark:#4D9375;--shiki-dark-font-style:inherit}html pre.shiki code .sftqT, html code.shiki .sftqT{--shiki-light:#90A4AE;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}html pre.shiki code .soVBu, html code.shiki .soVBu{--shiki-light:#39ADB5;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .s5Kfy, html code.shiki .s5Kfy{--shiki-light:#9C3EDA;--shiki-default:#AB5959;--shiki-dark:#CB7676}html pre.shiki code .sD-vU, html code.shiki .sD-vU{--shiki-light:#E2931D;--shiki-default:#2E8F82;--shiki-dark:#5DA994}html pre.shiki code .sYn-s, html code.shiki .sYn-s{--shiki-light:#E2931D;--shiki-default:#59873A;--shiki-dark:#80A665}html pre.shiki code .sm7ve, html code.shiki .sm7ve{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#B5695977;--shiki-default-font-style:inherit;--shiki-dark:#C98A7D77;--shiki-dark-font-style:inherit}html pre.shiki code .sVyVU, html code.shiki .sVyVU{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#B56959;--shiki-default-font-style:inherit;--shiki-dark:#C98A7D;--shiki-dark-font-style:inherit}html pre.shiki code .sJdAF, html code.shiki .sJdAF{--shiki-light:#6182B8;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .sbYkP, html code.shiki .sbYkP{--shiki-light:#39ADB5;--shiki-default:#B5695977;--shiki-dark:#C98A7D77}html pre.shiki code .sTbE_, html code.shiki .sTbE_{--shiki-light:#91B859;--shiki-default:#B56959;--shiki-dark:#C98A7D}html pre.shiki code .sRjD_, html code.shiki .sRjD_{--shiki-light:#E53935;--shiki-light-font-style:italic;--shiki-default:#393A34;--shiki-default-font-style:inherit;--shiki-dark:#DBD7CAEE;--shiki-dark-font-style:inherit}html pre.shiki code .sVsLi, html code.shiki .sVsLi{--shiki-light:#39ADB5;--shiki-default:#AB5959;--shiki-dark:#CB7676}html pre.shiki code .sCyAa, html code.shiki .sCyAa{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#393A34;--shiki-default-font-style:inherit;--shiki-dark:#DBD7CAEE;--shiki-dark-font-style:inherit}html pre.shiki code .sa2tF, html code.shiki .sa2tF{--shiki-light:#E2931D;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .siWMO, html code.shiki .siWMO{--shiki-light:#6182B8;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}html pre.shiki code .se3Ec, html code.shiki .se3Ec{--shiki-light:#90A4AE;--shiki-default:#A65E2B;--shiki-dark:#C99076}html pre.shiki code .sBPpx, html code.shiki .sBPpx{--shiki-light:#E53935;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}html pre.shiki code .s131V, html code.shiki .s131V{--shiki-light:#90A4AE;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .s8XtY, html code.shiki .s8XtY{--shiki-light:#39ADB5;--shiki-default:#1E754F;--shiki-dark:#4D9375}html pre.shiki code .s7CZa, html code.shiki .s7CZa{--shiki-light:#F76D47;--shiki-default:#2F798A;--shiki-dark:#4C9A91}html pre.shiki code .sljsM, html code.shiki .sljsM{--shiki-light:#6182B8;--shiki-default:#59873A;--shiki-dark:#80A665}html pre.shiki code .sqOPj, html code.shiki .sqOPj{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#B07D48;--shiki-default-font-style:inherit;--shiki-dark:#BD976A;--shiki-dark-font-style:inherit}html pre.shiki code .s3h35, html code.shiki .s3h35{--shiki-light:#F76D47;--shiki-default:#A65E2B;--shiki-dark:#C99076}html pre.shiki code .sFGJz, html code.shiki .sFGJz{--shiki-light:#E53935;--shiki-default:#A65E2B;--shiki-dark:#C99076}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":1040,"searchDepth":1048,"depth":1055,"links":10908},[10909,10910,10913],{"id":1032,"depth":1055,"text":1033},{"id":5436,"depth":1055,"text":5437,"children":10911},[10912],{"id":5441,"depth":1095,"text":5442},{"id":7908,"depth":1055,"text":7909},"md",null,{},{"title":831,"description":1028},"lLP-n7HzG16NNzLV6MgBCyrkWnCSiybsz6Sb97hQz_k",[10920,10922],{"title":827,"path":828,"stem":829,"description":10921,"children":-1},"Django's ORM provides powerful expression APIs that allow you to create custom database expressions, functions, and operations. This enables sophisticated database queries while maintaining the benefits of Django's ORM abstraction.",{"title":835,"path":836,"stem":837,"description":10923,"children":-1},"Django signals provide a decoupled way to allow certain senders to notify a set of receivers when actions occur. This comprehensive guide covers advanced signal patterns, performance considerations, and best practices for building event-driven Django applications.",1772474959249]