On Sat, 2018-09-29 at 01:24 +1000, Daniel Axtens wrote:
> vkaba...@redhat.com writes:
> 
> > From: Veronika Kabatova <vkaba...@redhat.com>
> > 
> > Duplication of the field to avoid performance issues caused some
> > unexpected results when moving patches between projects in the admin
> > interface. It's easy to change the "project" field and click save,
> > instead of double checking which field needs to be modified and kept in
> > sync with the one being changed. This lead to patch showing correct
> > project in the API and patch detail in the web UI, but the patch itself
> > was listed in the wrong project when looking at the patch listings.
> > 
> > Because of the discussions of the denormalization of the tables, trying
> > to code automatic modification of the other field if one is being
> > changed seems like too much work for very little benefit. What we can do
> > instead is mention this dependency in fields' help text. Modification of
> > the project is not an everyday task so it shouldn't put too much burden
> > on the users and this simple reminder can prevent unexpected breakage
> > and bug reports.
> > 
> 
> Acked-by: Daniel Axtens <d...@axtens.net>
> > Signed-off-by: Veronika Kabatova <vkaba...@redhat.com>
> 
> Stephen, I think this should go to stable/2.1. Thoughts?

I don't think it can. I haven't checked yet but I'm pretty sure this
requires a migration and we can't backport those.

Rather than doing this, could we not just override the 'save' function
to always save the other field?

Stephen

> Regards,
> Daniel
> 
> > ---
> >  patchwork/models.py | 12 ++++++++++--
> >  1 file changed, 10 insertions(+), 2 deletions(-)
> > 
> > diff --git a/patchwork/models.py b/patchwork/models.py
> > index a043844d..e30a9739 100644
> > --- a/patchwork/models.py
> > +++ b/patchwork/models.py
> > @@ -350,7 +350,11 @@ class FilenameMixin(object):
> >  class Submission(FilenameMixin, EmailMixin, models.Model):
> >      # parent
> >  
> > -    project = models.ForeignKey(Project, on_delete=models.CASCADE)
> > +    project = models.ForeignKey(Project, on_delete=models.CASCADE,
> > +                                help_text='If modifying this field on 
> > Patch, '
> > +                                'don\'t forget to modify the "Patch 
> > project" '
> > +                                'field appropriately as well to ensure 
> > proper '
> > +                                'functionality!')
> >  
> >      # submission metadata
> >  
> > @@ -405,7 +409,11 @@ class Patch(Submission):
> >  
> >      # duplicate project from submission in subclass so we can count the
> >      # patches in a project without needing to do a JOIN.
> > -    patch_project = models.ForeignKey(Project, on_delete=models.CASCADE)
> > +    patch_project = models.ForeignKey(Project, on_delete=models.CASCADE,
> > +                                      help_text='"Project" field needs to 
> > be '
> > +                                      'kept in sync and changed manually 
> > in '
> > +                                      'case of modifications to ensure 
> > proper '
> > +                                      'functionality!')
> >  
> >      objects = PatchManager()
> >  
> > -- 
> > 2.17.1
> > 
> > _______________________________________________
> > Patchwork mailing list
> > Patchwork@lists.ozlabs.org
> > https://lists.ozlabs.org/listinfo/patchwork
> 
> _______________________________________________
> Patchwork mailing list
> Patchwork@lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/patchwork


_______________________________________________
Patchwork mailing list
Patchwork@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/patchwork

Reply via email to