[PATCH 3/4] Add support for 'django-dbbackup'

Daniel Axtens dja at axtens.net
Wed Oct 10 00:10:13 AEDT 2018


Stephen Finucane <stephen at that.guru> writes:

> On Tue, 2018-10-09 at 12:54 +1100, Daniel Axtens wrote:
>> Stephen Finucane <stephen at that.guru> writes:
>> 
>> > 'parsemail' and 'parsearchive' are slow. When messing with models and
>> > migrations, it can be very useful to backup the database in its current
>> > state and restore it if/when you mess up. Currently, we've documented
>> > how to do this via some commands run in the shell of the container, but
>> > we can do things easier via an application designed for this purpose:
>> > 'django-dbshell'.
>> 
>> You think it's better to include this dependency than to add a script to
>> tools/ that wraps mysqldump/mysqlrestore and the postgres equivalents?
>> I'm happy if you think this is the way to go, I just want to know you've
>> thought about it.
>
> Yeah, I was going to write a new management command until I decided to
> go with this. This is only installed and enabled as part of the dev
> configuration so I figure the impact is minimal enough and we benefit
> from someone else testing this for us :)
>
>> > 
>> > Signed-off-by: Stephen Finucane <stephen at that.guru>
>> > ---
>> >  .gitignore                |  3 +++
>> >  patchwork/settings/dev.py | 13 +++++++++++++
>> >  requirements-dev.txt      |  1 +
>> 
>> Does this need docs added somewhere? I hadn't heard of django-dbshell
>> before this...
>
> Hmm, possibly? I purposefully avoided noting this in the release notes
> since it doesn't really affect real-world users. That said, I did note
> when we added django-debug-toolbar (though not any subsequent updates)
> so I could be talked around. In any case, I will add a follow-on patch
> to update the docs to refer to this tool instead of manual
> backups/restores.

All I wanted was something in the docs, thanks for the follow-up.

Regards,
Daniel

>
>> >  3 files changed, 17 insertions(+)
>> > 
>> > diff --git a/.gitignore b/.gitignore
>> > index 57376bdd..a33d1029 100644
>> > --- a/.gitignore
>> > +++ b/.gitignore
>> > @@ -54,3 +54,6 @@ patchwork/settings/production.py
>> >  
>> >  # docker-compose configuration files
>> >  /.env
>> > +
>> > +# django-dbbackup files
>> 
>> Also, here you've called it django-dbbackup, in the commit message it's
>> django-dbshell. It that correct?
>
> Yeah, the commit message is wrong. Can fix if/when applying.
>
> Stephen
>
>> Apart from that, I'm very much an ACK for the idea of making backups
>> easier.
>> 
>> Regards,
>> Daniel
>> > +/.backups
>> > diff --git a/patchwork/settings/dev.py b/patchwork/settings/dev.py
>> > index 4bb5a93c..711177c9 100644
>> > --- a/patchwork/settings/dev.py
>> > +++ b/patchwork/settings/dev.py
>> > @@ -9,6 +9,11 @@ Design based on:
>> >  
>> >  from .base import *  # noqa
>> >  
>> > +try:
>> > +    import dbbackup
>> > +except ImportError:
>> > +    dbbackup = None
>> > +
>> >  #
>> >  # Core settings
>> >  # https://docs.djangoproject.com/en/1.11/ref/settings/#core-settings
>> > @@ -72,6 +77,14 @@ INTERNAL_IPS = [
>> >      '172.18.0.1'
>> >  ]
>> >  
>> > +# django-dbbackup
>> > +
>> > +if dbbackup:
>> > +    INSTALLED_APPS += [
>> > +        'dbbackup',
>> > +    ]
>> > +
>> > +    DBBACKUP_STORAGE_OPTIONS = {'location': '.backups'}
>> >  
>> >  #
>> >  # Patchwork settings
>> > diff --git a/requirements-dev.txt b/requirements-dev.txt
>> > index b0cdd0de..ed98c30e 100644
>> > --- a/requirements-dev.txt
>> > +++ b/requirements-dev.txt
>> > @@ -3,4 +3,5 @@ Django==1.11.15; python_version < '3.0'  # pyup: ignore
>> >  djangorestframework==3.8.2
>> >  django-filter==2.0.0; python_version >= '3.4'
>> >  django-filter==1.1.0; python_version < '3.0'  # pyup: ignore
>> > +django-dbbackup==3.2.0
>> >  -r requirements-test.txt
>> > -- 
>> > 2.17.1
>> > 
>> > _______________________________________________
>> > Patchwork mailing list
>> > Patchwork at lists.ozlabs.org
>> > https://lists.ozlabs.org/listinfo/patchwork


More information about the Patchwork mailing list