~ubuntu-branches/ubuntu/trusty/python-jenkinsapi/trusty-proposed

« back to all changes in this revision

Viewing changes to jenkinsapi/view.py

  • Committer: Package Import Robot
  • Author(s): Al Stone
  • Date: 2012-07-24 16:40:44 UTC
  • Revision ID: package-import@ubuntu.com-20120724164044-da634emdsqj867jv
Tags: upstream-0.1.11
ImportĀ upstreamĀ versionĀ 0.1.11

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
from jenkinsapi.jenkinsbase import JenkinsBase
 
2
from jenkinsapi.job import Job
 
3
import urllib
 
4
 
 
5
class View(JenkinsBase):
 
6
 
 
7
    def __init__(self, url, name, jenkins_obj):
 
8
        self.name = name
 
9
        self.jenkins_obj = jenkins_obj
 
10
        JenkinsBase.__init__(self, url)
 
11
 
 
12
    def __str__(self):
 
13
        return self.name
 
14
 
 
15
    def __getitem__(self, str_job_id ):
 
16
        assert isinstance( str_job_id, str )
 
17
        api_url = self.python_api_url( self.get_job_url( str_job_id ) )
 
18
        return Job( api_url, str_job_id, self.jenkins_obj )
 
19
 
 
20
    def keys(self):
 
21
        return self.get_job_dict().keys()
 
22
 
 
23
    def iteritems(self):
 
24
        for name, url in self.get_job_dict().iteritems():
 
25
            api_url = self.python_api_url( url )
 
26
            yield name, Job( api_url, name, self.jenkins_obj )
 
27
 
 
28
    def values(self):
 
29
        return [ a[1] for a in self.iteritems() ]
 
30
 
 
31
    def items(self):
 
32
        return [ a for a in self.iteritems() ]
 
33
 
 
34
    def _get_jobs( self ):
 
35
        if not self._data.has_key( "jobs" ):
 
36
            pass
 
37
        else:
 
38
            for viewdict in self._data["jobs"]:
 
39
                yield viewdict["name"], viewdict["url"]
 
40
 
 
41
    def get_job_dict(self):
 
42
        return dict( self._get_jobs() )
 
43
 
 
44
    def __len__(self):
 
45
        return len( self.get_job_dict().keys() )
 
46
 
 
47
    def get_job_url( self, str_job_name ):
 
48
        try:
 
49
            job_dict = self.get_job_dict()
 
50
            return job_dict[ str_job_name ]
 
51
        except KeyError:
 
52
            #noinspection PyUnboundLocalVariable
 
53
            all_views = ", ".join( job_dict.keys() )
 
54
            raise KeyError("Job %s is not known - available: %s" % ( str_job_name, all_views ) )
 
55
 
 
56
    def get_jenkins_obj(self):
 
57
        return self.jenkins_obj
 
58
 
 
59
    def add_job(self, str_job_name):
 
60
        if str_job_name in self.get_job_dict():
 
61
            return "Job %s has in View %s" %(str_job_name, self.name)
 
62
        elif not self.get_jenkins_obj().has_job(str_job_name):
 
63
            return "Job %s is not known - available: %s" % ( str_job_name, ", ".join(self.get_jenkins_obj().get_jobs_list()))
 
64
        else:
 
65
            data = {
 
66
                "description":"",
 
67
                "statusFilter":"",
 
68
                "useincluderegex":"on",
 
69
                "includeRegex":"",
 
70
                "columns": [{"stapler-class": "hudson.views.StatusColumn", "kind": "hudson.views.StatusColumn"}, 
 
71
                            {"stapler-class": "hudson.views.WeatherColumn", "kind": "hudson.views.WeatherColumn"}, 
 
72
                            {"stapler-class": "hudson.views.JobColumn", "kind": "hudson.views.JobColumn"}, 
 
73
                            {"stapler-class": "hudson.views.LastSuccessColumn", "kind": "hudson.views.LastSuccessColumn"}, 
 
74
                            {"stapler-class": "hudson.views.LastFailureColumn", "kind": "hudson.views.LastFailureColumn"}, 
 
75
                            {"stapler-class": "hudson.views.LastDurationColumn", "kind": "hudson.views.LastDurationColumn"}, 
 
76
                            {"stapler-class": "hudson.views.BuildButtonColumn", "kind": "hudson.views.BuildButtonColumn"}],
 
77
                "Submit":"OK",
 
78
                }
 
79
            data["name"] = self.name
 
80
            for job in self.get_job_dict().keys():
 
81
                data[job]='on'
 
82
            data[str_job_name] = "on"
 
83
            data['json'] = data.copy()
 
84
            self.post_data('%sconfigSubmit' % self.baseurl, urllib.urlencode(data))
 
85
            return "Job %s is add in View %s successful" % (str_job_name, self.baseurl)
 
86
 
 
87
    def id(self):
 
88
        """
 
89
        Calculate an ID for this object.
 
90
        """
 
91
        return "%s.%s" % ( self.className, self.name )
 
 
b'\\ No newline at end of file'