mirror of
https://github.com/ansible/awx.git
synced 2026-01-11 10:00:01 -03:30
Ability to list job templates. Related resources are not added.
This commit is contained in:
parent
48a29df4ec
commit
7d224d8cf3
@ -764,6 +764,11 @@ class JobTemplate(CommonModel):
|
||||
# --list
|
||||
# -- host <hostname>
|
||||
|
||||
def get_absolute_url(self):
|
||||
import lib.urls
|
||||
return reverse(lib.urls.views_JobTemplateDetail, args=(self.pk,))
|
||||
|
||||
|
||||
class Job(CommonModel):
|
||||
'''
|
||||
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
|
||||
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()
|
||||
|
||||
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):
|
||||
pass
|
||||
|
||||
model = JobTemplate
|
||||
serializer_class = JobTemplateSerializer
|
||||
permission_classes = (CustomRbac,)
|
||||
|
||||
|
||||
class JobTemplateStart(BaseDetail):
|
||||
pass
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user