Ability to list job templates. Related resources are not added.

This commit is contained in:
Michael DeHaan 2013-04-18 20:52:54 -04:00
parent 48a29df4ec
commit 7d224d8cf3
3 changed files with 44 additions and 2 deletions

View File

@ -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

View File

@ -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()

View File

@ -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