Skip to content

Commit 74b69cb

Browse files
committed
Add support for new Plugin objects in projects
Signed-off-by: David Wallace <david.wallace@tu-darmstadt.de>
1 parent c70292e commit 74b69cb

4 files changed

Lines changed: 23 additions & 7 deletions

File tree

rdmo/projects/models/integration.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from django.urls import reverse
33
from django.utils.translation import gettext_lazy as _
44

5-
from rdmo.core.plugins import get_plugin
5+
from rdmo.config.models import Plugin
66

77
from ..managers import IntegrationManager
88

@@ -34,7 +34,13 @@ def get_absolute_url(self):
3434

3535
@property
3636
def provider(self):
37-
return get_plugin('PROJECT_ISSUE_PROVIDERS', self.provider_key)
37+
plugins = (
38+
Plugin.objects
39+
.for_context(plugin_type="issue_provider", project=self.project)
40+
.filter(uri_path__contains=self.provider_key)
41+
)
42+
provider = plugins.first().initialize_class() if plugins else None
43+
return provider
3844

3945
def get_option_value(self, key):
4046
try:

rdmo/projects/utils.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
from django.urls import reverse
1111
from django.utils.timezone import now
1212

13-
from rdmo.config.plugin_resolver import list_and_filter_plugins
1413
from rdmo.core.mail import send_mail
1514
from rdmo.core.utils import remove_double_newlines
1615

@@ -280,6 +279,8 @@ def set_context_querystring_with_filter_and_page(context: dict) -> dict:
280279

281280

282281
def get_upload_accept(project=None):
282+
from rdmo.config.plugin_resolver import list_and_filter_plugins
283+
283284
accept = defaultdict(set)
284285
plugins = list_and_filter_plugins(plugin_type="project_import", project=project)
285286
for plugin in plugins:

rdmo/projects/views/integration.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
from django.views.decorators.csrf import csrf_exempt
77
from django.views.generic import CreateView, DeleteView, UpdateView, View
88

9-
from rdmo.core.plugins import get_plugin
109
from rdmo.core.views import ObjectPermissionMixin, RedirectViewMixin
1110

11+
from ...config.models import Plugin
1212
from ..forms import IntegrationForm
1313
from ..models import Integration, Project
1414

@@ -35,7 +35,12 @@ def get_form_kwargs(self):
3535
return kwargs
3636

3737
def get_context_data(self, **kwargs):
38-
kwargs['provider'] = get_plugin('PROJECT_ISSUE_PROVIDERS', self.provider_key)
38+
plugins = (
39+
Plugin.objects
40+
.for_context(plugin_type="issue_provider", project=self.project, user=self.request.user)
41+
.filter(uri_path__contains=self.provider_key)
42+
)
43+
kwargs['provider'] = plugins.first().initialize_class() if plugins else None
3944
return super().get_context_data(**kwargs)
4045

4146
def get_success_url(self):

rdmo/projects/views/project.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@
1313
from django.views.generic import DeleteView, DetailView, TemplateView
1414
from django.views.generic.edit import FormMixin
1515

16-
from rdmo.core.plugins import get_plugin, get_plugins
16+
from rdmo.config.models import Plugin
17+
from rdmo.core.plugins import get_plugin
1718
from rdmo.core.views import CSRFViewMixin, ObjectPermissionMixin, RedirectViewMixin, StoreIdViewMixin
1819
from rdmo.questions.models import Catalog
1920
from rdmo.tasks.models import Task
@@ -93,7 +94,10 @@ def get_context_data(self, **kwargs):
9394
context['ancestors_import'] = ancestors_import
9495
context['memberships'] = memberships.order_by('user__last_name', '-project__level')
9596
context['integrations'] = integrations.order_by('provider_key', '-project__level')
96-
context['providers'] = get_plugins('PROJECT_ISSUE_PROVIDERS')
97+
if settings.PLUGINS:
98+
plugins = Plugin.objects.for_context(plugin_type='issue_provider', project=project, user=self.request.user)
99+
providers = {i.url_name: i.initialize_class() for i in plugins}
100+
context['providers'] = providers
97101
context['issues'] = [
98102
issue for issue in project.issues.order_by('-status', 'task__order', 'task__uri') if issue.resolve(values)
99103
]

0 commit comments

Comments
 (0)