Пример #1
0
    def sync_versions(self, request, **kwargs):
        """
        Sync the version data in the repo (on the build server) with what we have in the database.

        Returns the identifiers for the versions that have been deleted.
        """
        project = get_object_or_404(
            Project.objects.api(self.request.user), pk=kwargs['pk'])

        # If the currently highest non-prerelease version is active, then make
        # the new latest version active as well.
        old_highest_version = determine_stable_version(project.versions.all())
        if old_highest_version is not None:
            activate_new_stable = old_highest_version.active
        else:
            activate_new_stable = False

        try:
            # Update All Versions
            data = request.DATA
            added_versions = set()
            if 'tags' in data:
                ret_set = api_utils.sync_versions(
                    project=project, versions=data['tags'], type='tag')
                added_versions.update(ret_set)
            if 'branches' in data:
                ret_set = api_utils.sync_versions(
                    project=project, versions=data['branches'], type='branch')
                added_versions.update(ret_set)
            deleted_versions = api_utils.delete_versions(project, data)
        except Exception, e:
            log.exception("Sync Versions Error: %s" % e.message)
            return Response({'error': e.message}, status=status.HTTP_400_BAD_REQUEST)
Пример #2
0
 def update_stable_version(self):
     """
     Returns the version that was promoited to be the new stable version.
     It will return ``None`` if no update was mode or if there is no
     version on the project that can be considered stable.
     """
     versions = self.versions.all()
     new_stable = determine_stable_version(versions)
     if new_stable:
         current_stable = self.get_stable_version()
         if current_stable:
             identifier_updated = new_stable.identifier != current_stable.identifier
             if identifier_updated and current_stable.machine:
                 log.info(
                     "Update stable version: {project}:{version}".format(
                         project=self.slug, version=new_stable.identifier
                     )
                 )
                 current_stable.identifier = new_stable.identifier
                 current_stable.save()
                 return new_stable
         else:
             log.info(
                 "Creating new stable version: {project}:{version}".format(
                     project=self.slug, version=new_stable.identifier
                 )
             )
             current_stable = self.versions.create_stable(type=new_stable.type, identifier=new_stable.identifier)
             return new_stable
Пример #3
0
 def update_stable_version(self):
     """
     Returns the version that was promoited to be the new stable version.
     It will return ``None`` if no update was mode or if there is no
     version on the project that can be considered stable.
     """
     versions = self.versions.all()
     new_stable = determine_stable_version(versions)
     if new_stable:
         current_stable = self.get_stable_version()
         if current_stable:
             identifier_updated = (new_stable.identifier !=
                                   current_stable.identifier)
             if identifier_updated and current_stable.machine:
                 log.info(
                     "Update stable version: {project}:{version}".format(
                         project=self.slug, version=new_stable.identifier))
                 current_stable.identifier = new_stable.identifier
                 current_stable.save()
                 return new_stable
         else:
             log.info(
                 "Creating new stable version: {project}:{version}".format(
                     project=self.slug, version=new_stable.identifier))
             current_stable = self.versions.create_stable(
                 type=new_stable.type, identifier=new_stable.identifier)
             return new_stable