Skip to content

Commit f9e34e1

Browse files
committed
pre 0.2
1 parent dda07e1 commit f9e34e1

File tree

8 files changed

+118
-26
lines changed

8 files changed

+118
-26
lines changed

assets/static/js/app.js

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@ $('#confirmAction').find('.modal-content form').on('submit', function(event) {
3737
});
3838

3939
$('#changePassword, #userForm, #projectForm').on('hide.bs.modal', function (event) {
40+
$('.has-error', this).removeClass('has-error').find('input,textarea').tooltip('destroy');
41+
$('.alert').hide();
42+
$("[role='tooltip']", this).tooltip('destroy');
43+
4044
$(this).find('.modal-dialog form').trigger("reset");
4145
});
4246

@@ -50,17 +54,38 @@ $('#projectForm').on('show.bs.modal', function (event) {
5054
$.ajax({
5155
method : 'GET',
5256
url : button.data('source'),
53-
data : $(this).serialize(),
5457
dataType : 'json',
5558
success : function(data, event) {
56-
$('#project_name').val(data.project_name);
57-
$('#repository_url').val(data.repository_url);
59+
60+
var select = [];
61+
62+
if (button.data('source') == '/project/possible-owners/') {
63+
64+
data.forEach(function(item, i, arr) {
65+
select.push('<option value="' + item.user_id + '">' + item.user_name + '</option>');
66+
});
67+
} else {
68+
69+
$('#project_name').val(data.project_name);
70+
$('#repository_url').val(data.repository_url);
71+
$('#github_secret').val(data.github_secret);
72+
73+
data.possible_owners.forEach(function(item, i, arr) {
74+
var selected = '';
75+
if (typeof(data.project_owner_id) !== undefined && data.project_owner_id == item.user_id) {
76+
selected = 'selected';
77+
}
78+
select.push('<option value="' + item.user_id + '" ' + selected + '>' + item.user_name + '</option>');
79+
});
80+
}
81+
82+
$('#select_users').html(select.join(""));
5883
},
5984
error: function(request, status, error) {
6085

6186
var data = JSON.parse(request.responseText);
6287

63-
if (data.error !== undefined) {
88+
if (typeof(data.error) !== undefined) {
6489

6590
alert(data.error);
6691

assets/templates_src/index.html

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ <h3 class="box-title">Projects</h3>
1818
{% for item in items %}
1919
<tr>
2020
<td>
21-
<a href="/project/{{ item.ProjectID }}/builds/">{{ item.ProjectName }}</a>
21+
<a href="/project-{{ item.ProjectID }}/builds/">{{ item.ProjectName }}</a>
2222
<br> {{ item.ProjectToken }}
2323
</td>
2424
<td>
@@ -35,7 +35,7 @@ <h3 class="box-title">Projects</h3>
3535
<span class="label label-primary">
3636
{% endif %}
3737
{{ item.Status }}</span> {% if item.LastBuildID %} (
38-
<a href="/project/{{ item.ProjectID }}/build/{{ item.LastBuildID }}/">{{ item.CommitSHA | truncatechars:15 }}</a>) {% if item.FinishedAt %} {{ item.FinishedAt | naturaltime }} {% else %} started at {{ item.StartedAt | naturaltime }} {% endif %} {% endif %}
38+
<a href="/project-{{ item.ProjectID }}/build-{{ item.LastBuildID }}/">{{ item.CommitSHA | truncatechars:15 }}</a>) {% if item.FinishedAt %} {{ item.FinishedAt | naturaltime }} {% else %} started at {{ item.StartedAt | naturaltime }} {% endif %} {% endif %}
3939
</td>
4040
{% if CurrentUser.IsSuperuser %}
4141
<td>
@@ -44,7 +44,7 @@ <h3 class="box-title">Projects</h3>
4444
data-target="#projectForm"
4545
data-title="Edit project"
4646
data-action="/project/update/{{ item.ProjectID }}/"
47-
data-source="/project/{{ item.ProjectID }}/get/"
47+
data-source="/project-{{ item.ProjectID }}/get/"
4848
><i class="fa fa-pencil-square-o" aria-hidden="true"></i>edit</a>
4949
<a href="#" data-toggle="modal" data-target="#confirmAction" data-action="/project/delete/{{ item.ProjectID }}/"><i class="fa fa-trash" aria-hidden="true"></i>delete</a>
5050
</td>
@@ -62,6 +62,7 @@ <h3 class="box-title">Projects</h3>
6262
data-target="#projectForm"
6363
data-action="/project/add/"
6464
data-title="Add project"
65+
data-source="/project/possible-owners/"
6566
class="btn btn-primary"
6667
>Add project</button>
6768
</div>
@@ -81,21 +82,20 @@ <h4 class="modal-title">-</h4>
8182
<label for="message-text" class="control-label">name:</label>
8283
<input type="text" name="name" id="project_name" class="form-control" data-title="Please enter a project name" required>
8384
</div>
84-
<input type="hidden" value="{{ CurrentUser.ID }}" name="owner_id">
85-
<!--div class="form-group">
85+
<div class="form-group">
8686
<label for="message-text" class="control-label">owner:</label>
8787
<select class="form-control" id="select_users" name="owner_id">
8888
<option value="{{ CurrentUser.ID }}">{{ CurrentUser.Name }}</option>
8989
</select>
90-
</div-->
90+
</div>
9191
<div class="form-group">
9292
<label for="message-text" class="control-label">repository url</label>
9393
<input type="text" name="url" id="repository_url" class="form-control" data-title="Please enter a repository url" required>
9494
</div>
95-
<!--div class="form-group">
96-
<label for="message-text" class="control-label">github secret</label>
97-
<input type="text" name="github_secret" class="form-control">
98-
</div-->
95+
<div class="form-group">
96+
<label for="message-text" class="control-label">github secret (if necessary)</label>
97+
<input type="text" id="github_secret" name="github_secret" class="form-control">
98+
</div>
9999
</div>
100100
<div class="modal-footer">
101101
<button type="button" class="btn btn-default" data-dismiss="modal">close</button>

assets/templates_src/project/builds.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ <h1>Builds</h1>
1414
<h3 class="box-title">Total: {{ total }}</h3>
1515
<div class="box-tools">
1616
<select class="form-control" id="project_branches">
17-
<option value="/project/{{ ProjectID }}/builds/">branches</option>
17+
<option value="/project-{{ ProjectID }}/builds/">branches</option>
1818
{% for branch in branches %}
19-
<option value="/project/{{ ProjectID }}/builds/branch/{{ branch.ID }}/" {% if branch.ID == BranchID %}selected{% endif %}>{{ branch.Name }}</option>
19+
<option value="/project-{{ ProjectID }}/builds/branch-{{ branch.ID }}/" {% if branch.ID == BranchID %}selected{% endif %}>{{ branch.Name }}</option>
2020
{% endfor %}
2121

2222
</select>
@@ -49,11 +49,11 @@ <h3 class="box-title">Total: {{ total }}</h3>
4949
{{ item.Status }}</span>
5050
</td>
5151
<td>
52-
<a href="/project/{{ item.ProjectID }}/build/{{ item.BuildID }}/">{{ item.CommitSHA }}</a>
52+
<a href="/project-{{ item.ProjectID }}/build-{{ item.BuildID }}/">{{ item.CommitSHA }}</a>
5353
</td>
5454
<td>{{ item.CommitMessage | truncatechars:255 }}</td>
5555
<td>
56-
<a href="/project/{{ item.ProjectID }}/builds/branch/{{ item.BranchID }}/">{{ item.Branch }}</a>
56+
<a href="/project-{{ item.ProjectID }}/builds/branch-{{ item.BranchID }}/">{{ item.Branch }}</a>
5757
</td>
5858
<td>
5959
{% if item.FinishedAt %}

assets/templates_src/project/view_build.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ <h1>Builds</h1> {% endblock %}
33
{% block breadcrumb%}
44
<li><a href="/"><i class="fa fa-dashboard"></i> Dashboard</a></li>
55
{% verbatim %}
6-
<li><a href="/project/{{ build.ProjectID}}/builds/">{{ build.ProjectName}}</a></li>
6+
<li><a href="/project-{{ build.ProjectID}}/builds/">{{ build.ProjectName}}</a></li>
77
<li class="active">{{ build.CommitSHA }}</li>
88
{% endverbatim %}
99
{% endblock %} {% block content%} {% verbatim %}
@@ -26,7 +26,7 @@ <h3 class="box-title">Commit {{ build.CommitSHA }}</h3>
2626
{{ build.Status }}</span>
2727

2828
<br>
29-
<strong>Branch:</strong> <a href="/project/{{ build.ProjectID }}/builds/branch/{{ build.BranchID }}/">{{ build.Branch }}</a><br>
29+
<strong>Branch:</strong> <a href="/project-{{ build.ProjectID }}/builds/branch-{{ build.BranchID }}/">{{ build.Branch }}</a><br>
3030
<strong>Author:</strong> {{ build.AuthorName }} ({{ build.AuthorEmail }})<br>
3131
{% if build.AuthorName != build.CommitterName %}<br>
3232
<strong>Commiter:</strong> {{ build.CommitterName }} ({{ build.CommitterEmail }})<br>
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package project
2+
3+
import (
4+
"github.com/postgres-ci/app-server/src/app/models/project"
5+
"github.com/postgres-ci/app-server/src/common/errors"
6+
"github.com/postgres-ci/app-server/src/tools/render"
7+
"github.com/postgres-ci/http200ok"
8+
9+
"net/http"
10+
)
11+
12+
func possibleOwnersHendler(c *http200ok.Context) {
13+
14+
owners, err := project.PossibleOwners()
15+
16+
if err != nil {
17+
18+
code := http.StatusInternalServerError
19+
20+
if e, ok := err.(*errors.Error); ok {
21+
22+
code = e.Code
23+
}
24+
25+
render.JSONError(c, code, err.Error())
26+
27+
return
28+
}
29+
30+
render.JSON(c, owners)
31+
}

src/app/controllers/project/route.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,13 @@ import (
77

88
func Route(server *http200ok.Server) {
99

10-
server.Get("/project/:ProjectID/builds/", buildsHandler)
11-
server.Get("/project/:ProjectID/builds/branch/:BranchID/", buildsHandler)
12-
server.Get("/project/:ProjectID/build/:BuildID/", viewBuildHandler)
10+
server.Get("/project-:ProjectID/get/", getHandler)
11+
server.Get("/project-:ProjectID/builds/", buildsHandler)
12+
server.Get("/project-:ProjectID/builds/branch-:BranchID/", buildsHandler)
13+
server.Get("/project-:ProjectID/build-:BuildID/", viewBuildHandler)
14+
server.Get("/project/possible-owners/", possibleOwnersHendler)
15+
1316
server.Post("/project/add/", addHandler)
14-
server.Get("/project/:ProjectID/get/", getHandler)
1517
server.Post("/project/update/:ProjectID/", updateHandler)
1618
server.Post("/project/delete/:ProjectID/", middleware.CheckPassword, deleteHandler)
1719
}

src/app/models/project/get.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ import (
1111
)
1212

1313
type user struct {
14-
Id int32 `json:"user_id"`
15-
Name string `json:"user_name"`
14+
Id int32 `db:"user_id" json:"user_id"`
15+
Name string `db:"user_name" json:"user_name"`
1616
}
1717

1818
type users []user
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package project
2+
3+
import (
4+
log "github.com/Sirupsen/logrus"
5+
"github.com/postgres-ci/app-server/src/common/errors"
6+
"github.com/postgres-ci/app-server/src/env"
7+
)
8+
9+
func PossibleOwners() ([]user, error) {
10+
11+
var owners []user
12+
13+
err := env.Connect().Select(&owners, `
14+
SELECT
15+
user_id,
16+
user_name
17+
FROM project.get_possible_owners()
18+
`,
19+
)
20+
21+
if err != nil {
22+
23+
err := errors.Wrap(err)
24+
25+
if err.(*errors.Error).IsFatal() {
26+
27+
log.Errorf("Could not fetch possible owners: %v", err)
28+
}
29+
30+
return nil, err
31+
}
32+
33+
return owners, nil
34+
}

0 commit comments

Comments
 (0)