Exemplo n.º 1
0
    def fetch_channel(self, package_name, channel_name, with_releases=True):
        """
        Returns an AppChannel.
        """
        repo = _application(package_name)

        try:
            channel = appr_model.channel.get_channel(repo, channel_name,
                                                     self.models_ref)
        except (self.models_ref.Channel.DoesNotExist,
                self.models_ref.Tag.DoesNotExist):
            raise_channel_not_found(package_name, channel_name)

        if with_releases:
            releases = appr_model.channel.get_channel_releases(
                repo, channel, self.models_ref)
            chanview = ChannelReleasesView(
                current=channel.linked_tag.name,
                name=channel.name,
                releases=[channel.linked_tag.name] +
                [c.name for c in releases],
            )
        else:
            chanview = ChannelView(current=channel.linked_tag.name,
                                   name=channel.name)

        return chanview
Exemplo n.º 2
0
    def delete_channel(self, package_name, channel_name):
        """Delete an AppChannel
        Note:
          It doesn't delete the AppReleases
        """
        if self.is_readonly:
            raise ReadOnlyException("Currently in read-only mode")

        repo = _application(package_name)
        try:
            appr_model.channel.delete_channel(repo, channel_name, self.models_ref)
        except (self.models_ref.Channel.DoesNotExist, self.models_ref.Tag.DoesNotExist):
            raise_channel_not_found(package_name, channel_name)
Exemplo n.º 3
0
    def channel_releases(self, channel):
        if not self.ischannel_exists(channel):
            raise_channel_not_found(self.package, channel)

        releases = [
            release
            for release, x in self.releases_data['releases'].iteritems()
            if channel in x['channels']
        ]
        ordered_releases = [
            str(x)
            for x in sorted(cnr.semver.versions(releases, False), reverse=True)
        ]
        return ordered_releases
Exemplo n.º 4
0
 def delete_channel(self, channel):
     """ Delete the channel from all releases """
     if not self.ischannel_exists(channel):
         raise_channel_not_found(channel)
     try:
         self.get_lock(self.releases_key)
         data = self.releases_data
         for release in self.channel_releases(channel):
             self._releases = self._delete_channel_release(channel, release)
         if channel in data['channels']:
             data['channels'].pop(channel)
         self._write_data(self.releases_key, data)
     finally:
         self.release_lock(self.releases_key)
Exemplo n.º 5
0
 def remove_release(self, release):
     if not self.exists():
         raise_channel_not_found(self.package, self.name)
     return self._remove_release(release)
Exemplo n.º 6
0
 def _check_channel_release(self, channel, release):
     if not self.ischannel_exists(channel):
         raise_channel_not_found(channel)
     if release not in self.releases_data['releases']:
         raise_package_not_found(self.package, release)
Exemplo n.º 7
0
 def channel(self, channel):
     try:
         return self.releases_data['channels'][channel]
     except KeyError:
         raise_channel_not_found(channel)