mirror of
https://github.com/ansible/awx.git
synced 2026-03-07 19:51:08 -03:30
Ability to list job templates. Related resources are not added.
This commit is contained in:
@@ -764,6 +764,11 @@ class JobTemplate(CommonModel):
|
|||||||
# --list
|
# --list
|
||||||
# -- host <hostname>
|
# -- host <hostname>
|
||||||
|
|
||||||
|
def get_absolute_url(self):
|
||||||
|
import lib.urls
|
||||||
|
return reverse(lib.urls.views_JobTemplateDetail, args=(self.pk,))
|
||||||
|
|
||||||
|
|
||||||
class Job(CommonModel):
|
class Job(CommonModel):
|
||||||
'''
|
'''
|
||||||
A job applies a project (with playbook) to an inventory source with a given
|
A job applies a project (with playbook) to an inventory source with a given
|
||||||
|
|||||||
@@ -211,5 +211,19 @@ class VariableDataSerializer(BaseSerializer):
|
|||||||
# FIXME: related resources, maybe just the audit trail
|
# FIXME: related resources, maybe just the audit trail
|
||||||
return dict()
|
return dict()
|
||||||
|
|
||||||
|
class JobTemplateSerializer(BaseSerializer):
|
||||||
|
|
||||||
|
# add the URL and related resources
|
||||||
|
url = serializers.CharField(source='get_absolute_url', read_only=True)
|
||||||
|
related = serializers.SerializerMethodField('get_related')
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = JobTemplate
|
||||||
|
fields = ('url', 'id', 'related', 'name', 'description', 'job_type', 'credential', 'project', 'inventory', 'created_by', 'creation_date')
|
||||||
|
|
||||||
|
def get_related(self, obj):
|
||||||
|
# FIXME: related resources, credential, project, inventory, etc
|
||||||
|
return dict()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -736,10 +736,33 @@ class VariableDetail(BaseDetail):
|
|||||||
raise PermissionDenied()
|
raise PermissionDenied()
|
||||||
|
|
||||||
class JobTemplatesList(BaseList):
|
class JobTemplatesList(BaseList):
|
||||||
pass
|
|
||||||
|
model = JobTemplate
|
||||||
|
serializer_class = JobTemplateSerializer
|
||||||
|
permission_classes = (CustomRbac,)
|
||||||
|
filter_fields = ('name',)
|
||||||
|
|
||||||
|
def _get_queryset(self):
|
||||||
|
'''
|
||||||
|
I can see job templates when I am a superuser, or I am an admin of the project's orgs, or if I'm in a team on the project.
|
||||||
|
This does not mean I would be able to launch a job from the template or edit the JobTemplate.
|
||||||
|
'''
|
||||||
|
base = JobTemplate.objects
|
||||||
|
if self.request.user.is_superuser:
|
||||||
|
return base.all()
|
||||||
|
return base.filter(
|
||||||
|
project__organizations__admins__in = [ self.request.user ]
|
||||||
|
).distinct() | base.filter(
|
||||||
|
project__teams__users__in = [ self.request.user ]
|
||||||
|
).distinct()
|
||||||
|
|
||||||
|
|
||||||
class JobTemplateDetail(BaseDetail):
|
class JobTemplateDetail(BaseDetail):
|
||||||
pass
|
|
||||||
|
model = JobTemplate
|
||||||
|
serializer_class = JobTemplateSerializer
|
||||||
|
permission_classes = (CustomRbac,)
|
||||||
|
|
||||||
|
|
||||||
class JobTemplateStart(BaseDetail):
|
class JobTemplateStart(BaseDetail):
|
||||||
pass
|
pass
|
||||||
|
|||||||
Reference in New Issue
Block a user