{% extends "repo_master.html" %}
{% block title %}{{ select.capitalize() }} - {{
repo.namespace + '/' if repo.namespace }}{{ repo.name }}{% endblock %}
{% set tag = "home" %}
{% block header %}
<meta name="go-import" content="{{ config.get('APP_URL', '').split('://', 1)[1] }}{{ repo.fullname }} git {{ config.get('GIT_URL_GIT') }}{{ repo.fullname }}.git">
{% endblock %}
{% block repo %}
<div class="row">
{% if g.repo_obj and g.repo_obj.is_empty %}
<div class="col-md-8">
<div class="alert {% if category == 'error' %}alert-warning{% else %}alert-info{%endif%}" role="alert">
<p>This repo is brand new!</p>
{% if g.authenticated and g.repo_committer %}
<p>If you already have a git repo:</p>
<pre>git remote add origin {{ config.get('GIT_URL_SSH') }}{% if repo.parent %}forks/{% endif %}{{ repo.fullname }}.git
git push -u origin master</pre>
<p>If you have not created your git repo yet:</p>
<pre>git clone {{ config.get('GIT_URL_SSH') }}{% if repo.parent %}forks/{% endif %}{{ repo.fullname }}.git
cd {{ repo.name }}
touch README.rst
git add README.rst
git commit -m "Add README file"
git push -u origin master</pre>
{% else %}
<p>The Project Creator has not pushed any code yet</p>
{% endif %}
</div>
</div>
{% else %}
<div class="col-md-8">
{% if readme %}
<section class="readme">
{{ readme | noJS | safe }}
</section>
{% else %}
<section class="no-readme">
<div class="card">
<div class="card-header text-center text-muted pt-2 pb-2">
The {{repo.name}} project's README file is empty or unavailable.
</div>
</div>
</section>
{% endif %}
</div>
{% endif %}
<div class="col-md-4">
<div class="card">
<div class="card-block">
<h5><strong>Source GIT URLs</strong>{% if
(authenticated and g.repo_committer) or
(config['DOC_APP_URL'] and repo and
repo.settings.get('project_documentation', True))
%}
<span class="pull-xs-right"><a data-toggle="collapse" href="#moregiturls"
aria-expanded="false" aria-controls="moregiturls"
id="more_gits">more</a></span>{%endif%}</h5>
<div>
{% if g.authenticated and g.repo_committer %}
<div class="form-group">
<div class="input-group input-group-sm">
<div class="input-group-addon">SSH</div>
<input class="form-control" type="text" value="{{
git_url_ssh }}{{ repo.fullname }}.git" readonly>
</div>
</div>
{% endif %}
<div class="form-group">
<div class="input-group input-group-sm">
<div class="input-group-addon">GIT</div>
<input class="form-control" type="text" value="{{
config.get('GIT_URL_GIT') }}{{ repo.fullname }}.git" readonly>
</div>
</div>
<div class="collapse" id="moregiturls">
{% if config['DOC_APP_URL']
and repo
and repo.settings.get('project_documentation', True) %}
<h5><strong>Docs GIT URLs</strong></h5>
{% if g.authenticated and g.repo_committer %}
<div class="form-group">
<div class="input-group input-group-sm">
<div class="input-group-addon">SSH</div>
<input class="form-control" type="text" value="{{
git_url_ssh }}docs/{{ repo.fullname }}.git" readonly>
</div>
</div>
{% endif %}
<div class="form-group">
<div class="input-group input-group-sm">
<div class="input-group-addon">GIT</div>
<input class="form-control" type="text" value="{{
config.get('GIT_URL_GIT') }}docs/{{ repo.fullname }}.git" readonly>
</div>
</div>
{% endif %}
{% if g.authenticated and g.repo_committer %}
{% if config.get('ENABLE_TICKETS', True)
and repo.settings.get('issue_tracker', True) %}
<h5><strong>Issues GIT URLs</strong></h5>
<div class="form-group">
<div class="input-group input-group-sm">
<div class="input-group-addon">SSH</div>
<input class="form-control" type="text" value="{{
git_url_ssh }}tickets/{{ repo.fullname }}.git" readonly>
</div>
</div>
{% endif %}
<h5><strong>Pull Requests GIT URLs</strong></h5>
<div class="form-group">
<div class="input-group input-group-sm">
<div class="input-group-addon">SSH</div>
<input class="form-control" type="text" value="{{
git_url_ssh }}requests/{{ repo.fullname }}.git" readonly>
</div>
</div>
{% endif %}
</div>
</div>
</div>
</div>
<div class="card mb-3">
<div class="card-body">
<h5><strong>Contributors</strong></h5>
<div class="mb-4">
<div>
<a href="{{ url_for('ui_ns.view_user', username=repo.user.user)}}">
{{ repo.user.default_email | avatar(20) | safe }}
{{ repo.user.fullname }} ({{ repo.user.user }})
</a>
- main admin
</div>
{% for access in repo.contributors %}
{% for user in repo.contributors[access] %}
<div>
<a href="{{ url_for('ui_ns.view_user', username=user.user)}}">
{{ user.default_email | avatar(20) | safe }}
{{ user.fullname }} ({{ user.user }})
</a>
- {{ access }}
</div>
{% endfor %}
{% endfor %}
{% for access in repo.contributor_groups %}
{% for group in repo.contributor_groups[access] %}
<div>
<a href="{{ url_for('ui_ns.view_group', group=group.group_name)}}">
@{{ group.group_name }}
</a>
- {{ access }}
</div>
{% endfor %}
{% endfor %}
</div>
<h5><strong>Branches</strong></h5>
<div class="mb-4">
{% if head %}
<div id="branch-{{ head }}" class="repoinfo-branchlistitem row">
<div class="branch_name col-md-8">
{% if branchname == head %}
<span class="oi text-muted" data-glyph="random"
title="Default branch"></span>
<strong title="Currently viewing branch {{ head }}" data-toggle="tooltip">{{ head }}</strong>
{% else %}
<span class="oi text-muted" data-glyph="random"
title="Default branch"></span>
<a href="{{ url_for('ui_ns.view_repo_branch',
repo=repo.name,
username=username,
namespace=repo.namespace,
branchname=head) }}"
title="{{ head }}" data-toggle="tooltip">
{{ head }}
</a>
{% endif %}
</div>
<div class="branch_del col-md-4">
<span class="oi text-muted" data-glyph="star"
title="Default branch"></span>
</div>
</div>
{% endif %}
{% for branch in g.branches if branch != head %}
<div id="branch-{{ branch | replace('/', '__')
}}" class="repoinfo-branchlistitem row">
<div class="branch_name col-md-8">
<span class="oi text-muted" data-glyph="random"></span>
{% if branchname != branch %}
<a class="" href="{{ url_for('ui_ns.view_repo_branch',
repo=repo.name,
username=username,
namespace=repo.namespace,
branchname=branch) }}"
title="{{ branch }}" data-toggle="tooltip">{{ branch }}
</a>
{% else %}
<strong title="Currently viewing branch {{branch}}" data-toggle="tooltip">{{ branch }}</strong>
{% endif %}
</div>
<div class="branch_del col-md-4">
{% if g.repo_committer and branch != head and config.get('ALLOW_DELETE_BRANCH', True) %}
<form id="delete_branch_form-{{
branch | replace('/', '__') | replace('+', '___')
}}" action="{{
url_for('ui_ns.delete_branch',
repo=repo.name,
username=username,
namespace=repo.namespace,
branchname=branch)
}}" method="post" class="inline icon del_icon"
onsubmit="return confirm('Are you sure you want to remove the branch: {{ branch }}?\nThis cannot be un-done!');">
{{ form.csrf_token }}
<a title="Remove branch {{ branch }}" href="#"
onclick="$('#delete_branch_form-{{
branch | replace('/', '__') | replace('.', '\\\\.')
| replace('+', '___')
}}').submit();">
<span class="oi" data-glyph="trash"></span>
</a>
</form>
{% endif %}
</div>
</div>
{% endfor %}
</div>
{% if head %}
<div class="mb-1">
<a class="btn btn-secondary btn-xs btn-block"
href="{{ url_for('ui_ns.new_request_pull',
repo=repo.name,
username=username,
namespace=repo.namespace,
branch_to=head,
branch_from=branchname or 'master') }}">Open Pull-Request
</a>
</div>
{% endif %}
</div>
<div class="repo_date" title="{{repo.date_created}}">
created {{repo.date_created|humanize}}
</div>
</div>
{% if last_commits %}
<div class="card">
<div class="card-header">
<strong>Recent Commits in
<span class="pr-toplabel">
<span class="oi" data-glyph="random"></span>
{{branchname}}
</span>
</strong>
</div>
<div class="card-body p-0">
<div class="list-group list-group-flush">
{% for commit in last_commits %}
<a href="{{
url_for('ui_ns.view_commit',
repo=repo.name,
username=username,
namespace=repo.namespace,
commitid=commit.hex) }}" class="list-group-item list-group-item-action">
<div class="commitdate" title="{{ commit.commit_time|format_ts }}">
<small>
<strong>
{{ commit.author | author2avatar(20) | safe }}
{{ commit.author.name }}
</strong>
commited {{ commit.commit_time|humanize }}
</small>
</div>
<div><small>
{{ commit.message.split('\n')[0] }}
</small></div>
</a>
{% endfor %}
</div>
</div>
</div>
{% endif %}
</div>
</div>
{% endblock %}
{% block jscripts %}
{{ super() }}
<script type="text/javascript">
$(document).ready(function() {
$(".extra_gits").hide();
});
$(function() {
$( "#more_gits" ).click(function() {
if ($( "#more_gits" ).html() == 'more') {
$( "#more_gits" ).html('less');
} else {
$( "#more_gits" ).html('more');
}
});
{% if g.authenticated and g.repo_committer %}
$.ajax({
url: '{{ url_for("internal_ns.get_pull_request_ready_branch") }}' ,
type: 'POST',
data: {
namespace: "{{ repo.namespace if repo.namespace }}",
repo: "{{ repo.name }}",
repouser: "{{ repo.user.user if repo.is_fork else '' }}",
csrf_token: "{{ form.csrf_token.current_token }}",
},
dataType: 'json',
success: function(res) {
if (res.code == 'OK'){
for (branch in res.message.new_branch){
var url = "{{ url_for(
'ui_ns.new_request_pull',
repo=repo.name,
username=repo.user.user if repo.is_fork else None,
namespace=repo.namespace,
branch_to=head or 'master',
branch_from='') }}";
html = '<div class="alert alert-info" role="alert"> \
The branch ' + branch +' contains '
+ res.message.new_branch[branch].length
+ ' commits not in the main branch \
<span class="pr-toplabel"> \
<span class="oi" data-glyph="random"> </span> \
{{ head }}</span> \
<div id="request_pull" class="col-md-2"> \
<a class="btn btn-primary btn-sm" href="' + url + branch + '"> Create pull request </a> \
</div></div>';
/*$($('.bodycontent').find('.row').children()[0]).before(html);*/
{% if repo.is_fork %}
html2 = ' \
<a class="small label label-sm label-primary" data-toggle="tooltip" \
href="' + url + branch + '"\
title="' + branch +' contains '
+ res.message.new_branch[branch].length+' \
commit not in the upstream project. Click to create new PR now.'+'"> New PR</a> \
</div>';
{% else %}
html2 = ' \
<a class="small label label-sm label-primary" data-toggle="tooltip" \
href="' + url + branch + '"\
title="' + branch +' contains '
+ res.message.new_branch[branch].length+' \
commit not in the main branch. Click to create new PR now.'+'"> New PR</a> \
</div>';
{%endif%}
var _b = branch.replace(/\./g, '\\.').replace('/', '__').replace('\+', '\\+');
$('#branch-' + _b + ' .branch_del').prepend(html2);
$('[data-toggle="tooltip"]').tooltip({placement : 'bottom'});
}
for (branch in res.message.branch_w_pr){
var html = ' \
<a class="small label label-sm label-success" data-toggle="tooltip" '
+ 'href="{{ request.url_root }}' + res.message.branch_w_pr[branch]
+ '"title="' + branch +' is already in an opened pull-request">'
+ 'PR#' + res.message.branch_w_pr[branch].split('/').slice(-1)[0] + ' </a> \
</div>';
$('#branch-' + branch.replace(/\./g, '\\.').replace('/', '__')
+ ' .branch_del').prepend(html);
$('[data-toggle="tooltip"]').tooltip({placement : 'bottom'});
}
}
}
});
{% endif %}
});
</script>
{% endblock %}