@property
def url(self):
+ if self.owner:
+ return "/users/%s/repos/%s/%s" % (self.owner.name, self.distro.slug, self.slug)
+
+ return "/distros/%s/repos/%s" % (self.distro.slug, self.slug)
+
+ @property
+ def download_url(self):
return "/".join((
self.settings.get("baseurl", "https://pakfire.ipfire.org"),
"repositories",
return list(repos)
- def get_repo(self, slug):
+ def get_repo(self, distro, slug):
return self.backend.repos._get_repository("""
SELECT
*
deleted IS FALSE
AND
owner_id = %s
+ AND
+ distro_id = %s
AND
slug = %s""",
self.id,
+ distro,
slug,
)
<li>
<a href="/users/{{ repo.owner.name }}">{{ repo.owner }}</a>
</li>
+ <li>
+ {{ _("Distributions") }}
+ </li>
+ <li>
+ {{ repo.distro }}
+ </li>
{% else %}
<li>
<a href="/distros">{{ _("Distributions") }}</a>
{{ _("Repositories") }}
</li>
<li>
- <a href="{% if repo.owner %}/users/{{ repo.owner.name }}{% else %}/distros/{{ repo.distro.slug }}{% end %}/repos/{{ repo.slug }}">
+ <a href="{{ repo.url }}">
{{ repo }}
</a>
</li>
<button class="success button expanded" type="submit">{{ _("Save") }}</button>
- <a class="small danger button expanded" href="{% if repo.owner %}/users/{{ repo.owner.name }}{% else %}/distros/{{ repo.distro.slug }}{% end %}/repos/{{ repo.slug }}/delete">
+ <a class="small danger button expanded" href="{{ repo.url }}/delete">
{{ _("Delete") }}
</a>
</form>
{% for repo in repos %}
- {# Make URL #}
- {% if repo.owner %}
- {% set url = "/users/%s/repos/%s" % (repo.owner.name, repo.slug) %}
- {% else %}
- {% set url = "/distros/%s/repos/%s" % (repo.distro.slug, repo.slug) %}
- {% end %}
-
<div class="callout">
<h5>
- <a href="{{ url }}">{{ repo }}</a>
+ <a href="{{ repo.url }}">{{ repo }}</a>
{% if repo.summary %}
<small>{{ repo.summary }}</small>
<li>
<a href="/users/{{ repo.owner.name }}">{{ repo.owner }}</a>
</li>
+ <li>
+ {{ _("Distributions") }}
+ </li>
+ <li>
+ {{ distro }}
+ </li>
{% else %}
<li>
<a href="/distros">{{ _("Distributions") }}</a>
</div>
{% end %}
- <a class="secondary expanded button" href="{% if repo.owner %}/users/{{ repo.owner.name }}{% else %}/distros/{{ distro.slug }}{% end %}/repos/{{ repo.slug }}.repo">
+ <a class="secondary expanded button" href="{{ repo.url }}.repo">
{{ _("Download Configuration") }}
</a>
- <a class="warning expanded button" href="{% if repo.owner %}/users/{{ repo.owner.name }}{% else %}/distros/{{ distro.slug }}{% end %}/repos/{{ repo.slug }}/edit">
+ <a class="warning expanded button" href="{{ repo.url }}/edit">
{{ _("Edit") }}
</a>
(r"/users", users.UsersHandler),
(r"/users/(\w+)", users.ShowHandler),
(r"/users/(\w+)/repos/create", repos.CreateCustomHandler),
- (r"/users/(?P<user_slug>\w+)/repos/(?P<repo_slug>[A-Za-z0-9\-]+)",
+ (r"/users/(?P<user_slug>\w+)/repos/(?P<distro_slug>[A-Za-z0-9\-\.]+)/(?P<repo_slug>[A-Za-z0-9\-]+)",
repos.ShowHandler),
- (r"/users/(?P<user_slug>\w+)/repos/(?P<repo_slug>[A-Za-z0-9\-]+)\.repo",
+ (r"/users/(?P<user_slug>\w+)/repos/(?P<distro_slug>[A-Za-z0-9\-\.]+)/(?P<repo_slug>[A-Za-z0-9\-]+)\.repo",
repos.ConfigHandler),
- (r"/users/(?P<user_slug>\w+)/repos/(?P<repo_slug>[A-Za-z0-9\-]+)/builds",
+ (r"/users/(?P<user_slug>\w+)/repos/(?P<distro_slug>[A-Za-z0-9\-\.]+)/(?P<repo_slug>[A-Za-z0-9\-]+)/builds",
repos.BuildsHandler),
- (r"/users/(?P<user_slug>\w+)/repos/(?P<repo_slug>[A-Za-z0-9\-]+)/edit",
+ (r"/users/(?P<user_slug>\w+)/repos/(?P<distro_slug>[A-Za-z0-9\-\.]+)/(?P<repo_slug>[A-Za-z0-9\-]+)/edit",
repos.EditHandler),
- (r"/users/(?P<user_slug>\w+)/repos/(?P<repo_slug>[A-Za-z0-9\-]+)/mirrorlist",
+ (r"/users/(?P<user_slug>\w+)/repos/(?P<distro_slug>[A-Za-z0-9\-\.]+)/(?P<repo_slug>[A-Za-z0-9\-]+)/mirrorlist",
repos.MirrorlistHandler),
(r"/user/(\w+)/delete", users.UserDeleteHandler),
(r"/user/(\w+)/edit", users.UserEditHandler),
from . import ui_modules
class BaseHandler(base.BaseHandler):
- def _get_repo(self, repo_slug, distro_slug=None, user_slug=None):
- distro = user = None
-
- # Find the distribution
- if distro_slug:
- distro = self.backend.distros.get_by_slug(distro_slug)
- if not distro:
- raise tornado.web.HTTPError(404, "Could not find distro: %s" % distro_slug)
+ def _get_repo(self, distro_slug, repo_slug, user_slug=None):
+ user = None
# Find the user
if user_slug:
if not user:
raise tornado.web.HTTPError(404, "Could not find user: %s" % user_slug)
- assert distro or user, "Neither distro nor user set"
+ # Find the distribution
+ distro = self.backend.distros.get_by_slug(distro_slug)
+ if not distro:
+ raise tornado.web.HTTPError(404, "Could not find distro: %s" % distro_slug)
# Find the repository
- repo = (distro or user).get_repo(repo_slug)
+ if user:
+ repo = user.get_repo(distro, repo_slug)
+ else:
+ repo = distro.get_repo(repo_slug)
if not repo:
raise tornado.web.HTTPError(404, "Could not find repo: %s" % repo_slug)
if self.current_user.is_admin():
repo.mirrored = self.get_argument_bool("mirrored")
- if repo.owner:
- url = "/users/%s/repos/%s" % (repo.owner.name, repo.slug)
- else:
- url = "/distros/%s/repos/%s" % (repo.distro.slug, repo.slug)
-
- self.redirect(url)
+ self.redirect(repo.url)
class MirrorlistHandler(BaseHandler):
# Always use the buildservice itself as last resort
mirrors.append({
- "url" : "/".join((repo.url, arch)),
+ "url" : "/".join((repo.download_url, arch)),
})
self.finish({