[PATCH v4 1/7] models: Add fields for series dependencies
Aaron Conole
aconole at redhat.com
Sat Feb 8 01:58:26 AEDT 2025
Adam Hassick <ahassick at iol.unh.edu> writes:
> * 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 <ahassick at iol.unh.edu>
> ---
Acked-by: Aaron Conole <aconole at redhat.com>
> .../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.
More information about the Patchwork
mailing list