* Add a ManyToMany field to represent a dependency relationship between patch series and a helper method to add dependencies. * Add the parse_dependency field to the Project model.
Signed-off-by: Adam Hassick <ahass...@iol.unh.edu> --- .../migrations/0048_series_dependencies.py | 32 +++++++++++++++++++ patchwork/models.py | 30 +++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 patchwork/migrations/0048_series_dependencies.py diff --git a/patchwork/migrations/0048_series_dependencies.py b/patchwork/migrations/0048_series_dependencies.py new file mode 100644 index 0000000..56493e8 --- /dev/null +++ b/patchwork/migrations/0048_series_dependencies.py @@ -0,0 +1,32 @@ +# Generated by Django 5.0.6 on 2024-06-07 02:58 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ('patchwork', '0047_add_database_indexes'), + ] + + operations = [ + migrations.AddField( + model_name='series', + name='dependencies', + field=models.ManyToManyField( + blank=True, + help_text='Optional dependencies on this patch.', + related_name='dependents', + related_query_name='dependent', + to='patchwork.series', + ), + ), + migrations.AddField( + model_name='project', + name='parse_dependencies', + field=models.BooleanField( + default=False, + help_text='Enable parsing dependencies on patches and cover ' + 'letters.', + ), + ), + ] diff --git a/patchwork/models.py b/patchwork/models.py index a05db7f..fd11bb8 100644 --- a/patchwork/models.py +++ b/patchwork/models.py @@ -100,6 +100,10 @@ class Project(models.Model): # configuration options send_notifications = models.BooleanField(default=False) + parse_dependencies = models.BooleanField( + default=False, + help_text='Enable parsing dependencies on patches and cover letters.', + ) use_tags = models.BooleanField(default=True) def is_editable(self, user): @@ -840,6 +844,16 @@ class Series(FilenameMixin, models.Model): Cover, related_name='series', null=True, on_delete=models.CASCADE ) + # dependencies + dependencies = models.ManyToManyField( + 'self', + symmetrical=False, + blank=True, + help_text='Optional dependencies on this patch.', + related_name='dependents', + related_query_name='dependent', + ) + # metadata name = models.CharField( max_length=255, @@ -880,6 +894,22 @@ class Series(FilenameMixin, models.Model): def received_all(self): return self.total <= self.received_total + def add_dependencies(self, dependencies): + """Add dependencies to this series. + + Helper method to add any found dependencies to this series. + The method will filter out self and any series not from the + same project. + """ + self.dependencies.add( + *( + dep + for dep in dependencies + if dep.id != self.id and dep.project == self.project + ) + ) + self.save() + def add_cover_letter(self, cover): """Add a cover letter to the series. -- 2.48.1 _______________________________________________ Patchwork mailing list Patchwork@lists.ozlabs.org https://lists.ozlabs.org/listinfo/patchwork