~mounir-bsaibes/launchpad-work-items-tracker/mb-wgs-changes

« back to all changes in this revision

Viewing changes to lpworkitems/collect.py

  • Committer: James Westby
  • Date: 2011-12-06 19:51:18 UTC
  • mfrom: (285.1.1 trunk-perf-improvements)
  • Revision ID: james.westby@linaro.org-20111206195118-6a743qs4x1364gyv
Improve the performance of the collector by extracting the names of LP resources from their URL when doing so via Launchpadlib would incur going over the network

Show diffs side-by-side

added added

removed removed

Lines of Context:
323
323
            if not projects:
324
324
                return None
325
325
            if rtype == self.PROJECT_SERIES_RTYPE:
326
 
                project_name = target.project.name
 
326
                project_name = models.extract_last_path_segment_from_url(
 
327
                    target.project_link)
327
328
            else:
328
329
                project_name = target.name
329
330
            if project_name not in projects:
339
340
                return None
340
341
            if rtype in (self.DISTRIBUTION_SOURCE_PACKAGE_RTYPE,
341
342
                         self.SOURCE_PACKAGE_RTYPE):
342
 
                distribution_name = target.distribution.name
 
343
                distribution_name = models.extract_last_path_segment_from_url(
 
344
                    target.distribution_link)
343
345
            else:
344
346
                distribution_name = target.name
345
347
            if distribution_name != self.DISTRIBUTION_NAME:
346
348
                return None
347
 
            if (rtype == self.SOURCE_PACKAGE_RTYPE
348
 
                and target.distroseries.name != distro_release):
349
 
                return None
 
349
            if rtype == self.SOURCE_PACKAGE_RTYPE:
 
350
                series_name = models.extract_last_path_segment_from_url(
 
351
                    target.distroseries_link)
 
352
                if series_name != distro_release:
 
353
                    return None
350
354
            if rtype == self.DISTRIBUTION_SOURCE_PACKAGE_RTYPE:
351
355
                for subtask in task.related_tasks:
352
356
                    subtarget = self.lp.load(subtask.target.self_link)
353
357
                    sub_rtype = get_rtype(subtarget)
354
 
                    if (sub_rtype == self.SOURCE_PACKAGE_RTYPE
355
 
                        and subtarget.distribution.name == distribution_name
356
 
                        and subtarget.distroseries.name == distro_release
357
 
                        and subtarget.name == target.name):
358
 
                        return None
 
358
                    if sub_rtype == self.SOURCE_PACKAGE_RTYPE:
 
359
                        distro_name = (
 
360
                            models.extract_last_path_segment_from_url(
 
361
                                subtarget.distribution_link))
 
362
                        series_name = (
 
363
                            models.extract_last_path_segment_from_url(
 
364
                                subtarget.distroseries_link))
 
365
                        if (distro_name == distribution_name
 
366
                            and series_name == distro_release
 
367
                            and subtarget.name == target.name):
 
368
                            return None
359
369
        workitem = models.Workitem()
360
370
        workitem.description = (
361
371
            self.get_description(task.bug) + u" (%s)" % target.name)
362
 
        if task.assignee is not None:
363
 
            workitem.assignee_name = task.assignee.name
364
 
        if task.milestone is not None:
365
 
            workitem.milestone_name = task.milestone.name
 
372
        if task.assignee_link is not None:
 
373
            workitem.assignee_name = models.extract_user_name_from_url(
 
374
                task.assignee_link)
 
375
        if task.milestone_link is not None:
 
376
            workitem.milestone_name = (
 
377
                models.extract_last_path_segment_from_url(
 
378
                    task.milestone_link))
366
379
        workitem.status = bug_wi_states[task.status]
367
380
        workitem.blueprint = self.blueprint
368
381
        return workitem