Home | History | Annotate | Download | only in webkitpy

Lines Matching full:self

69     def __init__(self, attachment_dictionary, bug):
70 self._attachment_dictionary = attachment_dictionary
71 self._bug = bug
72 self._reviewer = None
73 self._committer = None
75 def _bugzilla(self):
76 return self._bug._bugzilla
78 def id(self):
79 return int(self._attachment_dictionary.get("id"))
81 def attacher_is_committer(self):
82 return self._bugzilla.committers.committer_by_email(
85 def attacher_email(self):
86 return self._attachment_dictionary.get("attacher_email")
88 def bug(self):
89 return self._bug
91 def bug_id(self):
92 return int(self._attachment_dictionary.get("bug_id"))
94 def is_patch(self):
95 return not not self._attachment_dictionary.get("is_patch")
97 def is_obsolete(self):
98 return not not self._attachment_dictionary.get("is_obsolete")
100 def name(self):
101 return self._attachment_dictionary.get("name")
103 def review(self):
104 return self._attachment_dictionary.get("review")
106 def commit_queue(self):
107 return self._attachment_dictionary.get("commit-queue")
109 def url(self):
111 # self._bugzilla().attachment_url_for_id(self.id()). scm_unittest.py
113 return self._attachment_dictionary.get("url")
115 def _validate_flag_value(self, flag):
116 email = self._attachment_dictionary.get("%s_email" % flag)
119 committer = getattr(self._bugzilla().committers,
124 self._attachment_dictionary['id'],
125 self._attachment_dictionary['bug_id'], flag, email))
127 def reviewer(self):
128 if not self._reviewer:
129 self._reviewer = self._validate_flag_value("reviewer")
130 return self._reviewer
132 def committer(self):
133 if not self._committer:
134 self._committer = self._validate_flag_value("committer")
135 return self._committer
143 def __init__(self, bug_dictionary, bugzilla):
144 self.bug_dictionary = bug_dictionary
145 self._bugzilla = bugzilla
147 def id(self):
148 return self.bug_dictionary["id"]
150 def assigned_to_email(self):
151 return self.bug_dictionary["assigned_to_email"]
154 def attachments(self, include_obsolete=False):
155 attachments = self.bug_dictionary["attachments"]
159 return [Attachment(attachment, self) for attachment in attachments]
161 def patches(self, include_obsolete=False):
162 return [patch for patch in self.attachments(include_obsolete)
165 def unreviewed_patches(self):
166 return [patch for patch in self.patches() if patch.review() == "?"]
168 def reviewed_patches(self, include_invalid=False):
169 patches = [patch for patch in self.patches() if patch.review() == "+"]
176 def commit_queued_patches(self, include_invalid=False):
177 patches = [patch for patch in self.patches()
189 def __init__(self, bugzilla):
190 self._bugzilla = bugzilla
193 # self._bugzilla.
195 def _load_query(self, query):
196 self._bugzilla.authenticate()
198 full_url = "%s%s" % (self._bugzilla.bug_server_url, query)
199 return self._bugzilla.browser.open(full_url)
201 def _fetch_bug(self, bug_id):
202 return self._bugzilla.fetch_bug(bug_id)
204 def _fetch_bug_ids_advanced_query(self, query):
205 soup = BeautifulSoup(self._load_query(query))
211 def _parse_attachment_ids_request_query(self, page):
218 def _fetch_attachment_ids_request_query(self, query):
219 return self._parse_attachment_ids_request_query(self._load_query(query))
222 def fetch_bug_ids_from_pending_commit_list(self):
224 return self._fetch_bug_ids_advanced_query(needs_commit_query_url)
226 def fetch_patches_from_pending_commit_list(self):
227 return sum([self._fetch_bug(bug_id).reviewed_patches()
228 for bug_id in self.fetch_bug_ids_from_pending_commit_list()], [])
230 def fetch_bug_ids_from_commit_queue(self):
232 return self._fetch_bug_ids_advanced_query(commit_queue_url)
234 def fetch_patches_from_commit_queue(self):
237 return sum([self._fetch_bug(bug_id).commit_queued_patches()
238 for bug_id in self.fetch_bug_ids_from_commit_queue()], [])
240 def _fetch_bug_ids_from_review_queue(self):
242 return self._fetch_bug_ids_advanced_query(review_queue_url)
244 def fetch_patches_from_review_queue(self, limit=None):
246 return sum([self._fetch_bug(bug_id).unreviewed_patches()
247 for bug_id in self._fetch_bug_ids_from_review_queue()[:limit]], [])
253 def fetch_attachment_ids_from_review_queue(self):
255 return self._fetch_attachment_ids_request_query(review_queue_url)
260 def __init__(self, bugzilla):
261 self._bugzilla = bugzilla
264 def _view_source_url(self, local_path):
267 def _flag_permission_rejection_message(self, setter_email, flag_name):
279 self._view_source_url(committer_list))
291 def _validate_setter_email(self, patch, result_key, rejection_function):
298 self._flag_permission_rejection_message(setter_email,
303 def patches_after_rejecting_invalid_commiters_and_reviewers(self, patches):
306 if (self._validate_setter_email(
307 patch, "reviewer", self.reject_patch_from_review_queue)
308 and self._validate_setter_email(
309 patch, "committer", self.reject_patch_from_commit_queue)):
313 def reject_patch_from_commit_queue(self,
317 self._bugzilla.set_flag_on_attachment(attachment_id,
323 def reject_patch_from_review_queue(self,
327 self._bugzilla.set_flag_on_attachment(attachment_id,
336 def __init__(self, dryrun=False, committers=CommitterList()):
337 self.dryrun = dryrun
338 self.authenticated = False
339 self.queries = BugzillaQueries(self)
340 self.committers = committers
344 self.browser = Browser()
347 self.browser.set_handle_robots(False)
355 def bug_url_for_bug_id(self, bug_id, xml=False):
357 return "%sshow_bug.cgi?id=%s%s" % (self.bug_server_url,
361 def short_bug_url_for_bug_id(self, bug_id):
364 def attachment_url_for_id(self, attachment_id, action="view"):
368 return "%sattachment.cgi?id=%s%s" % (self.bug_server_url,
372 def _parse_attachment_flag(self,
383 def _parse_attachment_element(self, element, bug_id):
390 attachment['url'] = self.attachment_url_for_id(attachment['id'])
394 self._parse_attachment_flag(
396 self._parse_attachment_flag(
400 def _parse_bug_page(self, page):
409 bug["attachments"] = [self._parse_attachment_element(element, bug["id"]) for element in soup.findAll('attachment')]
415 def _fetch_bug_page(self, bug_id):
416 bug_url = self.bug_url_for_bug_id(bug_id, xml=True)
418 return self.browser.open(bug_url)
420 def fetch_bug_dictionary(self, bug_id):
421 return self._parse_bug_page(self._fetch_bug_page(bug_id))
425 def fetch_bug(self, bug_id):
426 return Bug(self.fetch_bug_dictionary(bug_id), self)
428 def _parse_bug_id_from_attachment_page(self, page):
438 def bug_id_for_attachment_id(self, attachment_id):
439 self.authenticate()
441 attachment_url = self.attachment_url_for_id(attachment_id, 'edit')
443 page = self.browser.open(attachment_url)
444 return self._parse_bug_id_from_attachment_page(page)
449 def fetch_attachment(self, attachment_id):
453 bug_id = self.bug_id_for_attachment_id(attachment_id)
456 attachments = self.fetch_bug(bug_id).attachments(include_obsolete=True)
462 def authenticate(self):
463 if self.authenticated:
466 if self.dryrun:
468 self.authenticated = True
472 while not self.authenticated:
475 self.bug_server_host, git_prefix="bugzilla").read_credentials()
478 self.browser.open(self.bug_server_url +
480 self.browser.select_form(name="login")
481 self.browser['Bugzilla_login'] = username
482 self.browser['Bugzilla_password'] = password
483 response = self.browser.submit()
496 self.authenticated = True
498 def _fill_attachment_form(self,
505 self.browser['description'] = description
506 self.browser['ispatch'] = ("1",)
507 self.browser['flag_type-1'] = ('?',) if mark_for_review else ('X',)
510 self.browser['flag_type-3'] = ('+',)
512 self.browser['flag_type-3'] = ('?',)
514 self.browser['flag_type-3'] = ('X',)
520 self.browser.add_file(patch_file_object,
525 def add_patch_to_bug(self,
533 self.authenticate()
536 self.bug_server_url,
539 if self.dryrun:
543 self.browser.open("%sattachment.cgi?action=enter&bugid=%s" % (
544 self.bug_server_url, bug_id))
545 self.browser.select_form(name="entryform")
546 self._fill_attachment_form(description,
554 self.browser['comment'] = comment_text
555 self.browser.submit()
557 def prompt_for_component(self, components):
566 def _check_create_bug_response(self, response_html):
585 def create_bug(self,
594 self.authenticate()
597 if self.dryrun:
601 self.browser.open(self.bug_server_url + "enter_bug.cgi?product=WebKit")
602 self.browser.select_form(name="Create")
603 component_items = self.browser.find_control('component').items
608 component = self.prompt_for_component(component_names)
609 self.browser['component'] = [component]
611 self.browser['cc'] = cc
612 self.browser['short_desc'] = bug_title
613 self.browser['comment'] = bug_description
616 self._fill_attachment_form(
622 response = self.browser.submit()
624 bug_id = self._check_create_bug_response(response.read())
626 log("%sshow_bug.cgi?id=%s" % (self.bug_server_url, bug_id))
629 def _find_select_element_for_flag(self, flag_name):
632 return self.browser.find_control(type='select', nr=0)
634 return self.browser.find_control(type='select', nr=1)
637 def clear_attachment_flags(self,
640 self.authenticate()
647 if self.dryrun:
650 self.browser.open(self.attachment_url_for_id(attachment_id, 'edit'))
651 self.browser.select_form(nr=1)
652 self.browser.set_value(comment_text, name='comment', nr=0)
653 self._find_select_element_for_flag('review').value = ("X",)
654 self._find_select_element_for_flag('commit-queue').value = ("X",)
655 self.browser.submit()
657 def set_flag_on_attachment(self,
666 self.authenticate()
672 if self.dryrun:
675 self.browser.open(self.attachment_url_for_id(attachment_id, 'edit'))
676 self.browser.select_form(nr=1)
677 self.browser.set_value(comment_text, name='comment', nr=0)
678 self._find_select_element_for_flag(flag_name).value = (flag_value,)
679 self.browser.submit()
684 def obsolete_attachment(self, attachment_id, comment_text=None):
685 self.authenticate()
688 if self.dryrun:
692 self.browser.open(self.attachment_url_for_id(attachment_id, 'edit'))
693 self.browser.select_form(nr=1)
694 self.browser.find_control('isobsolete').items[0].selected = True
696 self._find_select_element_for_flag('review').value = ("X",)
697 self._find_select_element_for_flag('commit-queue').value = ("X",)
702 self.browser.set_value(comment_text, name='comment', nr=0)
703 self.browser.submit()
705 def add_cc_to_bug(self, bug_id, email_address_list):
706 self.authenticate()
710 if self.dryrun:
713 self.browser.open(self.bug_url_for_bug_id(bug_id))
714 self.browser.select_form(name="changeform")
715 self.browser["newcc"] = ", ".join(email_address_list)
716 self.browser.submit()
718 def post_comment_to_bug(self, bug_id, comment_text, cc=None):
719 self.authenticate()
722 if self.dryrun:
726 self.browser.open(self.bug_url_for_bug_id(bug_id))
727 self.browser.select_form(name="changeform")
728 self.browser["comment"] = comment_text
730 self.browser["newcc"] = ", ".join(cc)
731 self.browser.submit()
733 def close_bug_as_fixed(self, bug_id, comment_text=None):
734 self.authenticate()
737 if self.dryrun:
741 self.browser.open(self.bug_url_for_bug_id(bug_id))
742 self.browser.select_form(name="changeform")
745 self.browser['comment'] = comment_text
746 self.browser['bug_status'] = ['RESOLVED']
747 self.browser['resolution'] = ['FIXED']
748 self.browser.submit()
750 def reassign_bug(self, bug_id, assignee, comment_text=None):
751 self.authenticate()
754 if self.dryrun:
758 self.browser.open(self.bug_url_for_bug_id(bug_id))
759 self.browser.select_form(name="changeform")
762 self.browser["comment"] = comment_text
763 self.browser["assigned_to"] = assignee
764 self.browser.submit()
766 def reopen_bug(self, bug_id, comment_text):
767 self.authenticate()
773 if self.dryrun:
776 self.browser.open(self.bug_url_for_bug_id(bug_id))
777 self.browser.select_form(name="changeform")
778 bug_status = self.browser.find_control("bug_status", type="select")
789 self.browser['comment'] = comment_text
790 self.browser.submit()