Skip to content

Commit 6fd808e

Browse files
Sanji515RishabhJain2018
authored andcommitted
Fix Cloud-CV#1893: Add feature to edit Challenge Host Team details(Cloud-CV#1989)
1 parent 2c1cd81 commit 6fd808e

File tree

5 files changed

+127
-4
lines changed

5 files changed

+127
-4
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# -*- coding: utf-8 -*-
2+
# Generated by Django 1.11.15 on 2019-01-10 18:37
3+
from __future__ import unicode_literals
4+
5+
from django.db import migrations, models
6+
7+
8+
class Migration(migrations.Migration):
9+
10+
dependencies = [
11+
('hosts', '0003_challengehostteam_team_url'),
12+
]
13+
14+
operations = [
15+
migrations.AlterField(
16+
model_name='challengehostteam',
17+
name='team_url',
18+
field=models.CharField(blank=True, default='', max_length=1000),
19+
),
20+
]

apps/hosts/models.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class ChallengeHostTeam(TimeStampedModel):
1313
"""
1414
team_name = models.CharField(max_length=100, unique=True)
1515
created_by = models.ForeignKey(User, related_name='challenge_host_team_creator')
16-
team_url = models.CharField(max_length=1000, default="", null=True)
16+
team_url = models.CharField(max_length=1000, default="", blank=True)
1717

1818
def __str__(self):
1919
return '{0}: {1}'.format(self.team_name, self.created_by)

frontend/src/js/controllers/challengeHostTeamsCtrl.js

+82-3
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
.module('evalai')
88
.controller('ChallengeHostTeamsCtrl', ChallengeHostTeamsCtrl);
99

10-
ChallengeHostTeamsCtrl.$inject = ['utilities', 'loaderService', '$state', '$http', '$rootScope', '$mdDialog'];
10+
ChallengeHostTeamsCtrl.$inject = ['utilities', 'loaderService', '$scope', '$state', '$http', '$rootScope', '$mdDialog'];
1111

12-
function ChallengeHostTeamsCtrl(utilities, loaderService, $state, $http, $rootScope, $mdDialog) {
12+
function ChallengeHostTeamsCtrl(utilities, loaderService, $scope, $state, $http, $rootScope, $mdDialog) {
1313
var vm = this;
1414
var userKey = utilities.getData('userKey');
1515

@@ -37,7 +37,6 @@
3737
// stop loader
3838
vm.stopLoader = loaderService.stopLoader;
3939

40-
4140
vm.activateCollapsible = function() {
4241
angular.element('.collapsible').collapsible();
4342
};
@@ -138,6 +137,86 @@
138137

139138
utilities.sendRequest(parameters);
140139

140+
141+
vm.showMdDialog = function(ev, hostTeamId) {
142+
vm.hostTeamId = hostTeamId;
143+
parameters.url = 'hosts/challenge_host_team/' + hostTeamId;
144+
parameters.method = 'GET';
145+
parameters.token = userKey;
146+
parameters.callback = {
147+
onSuccess: function(response) {
148+
vm.team.TeamName = response.data.team_name;
149+
vm.team.TeamURL = response.data.team_url;
150+
},
151+
onError: function(response) {
152+
var error = response.data['error'];
153+
vm.stopLoader();
154+
$rootScope.notify("error", error);
155+
}
156+
};
157+
utilities.sendRequest(parameters);
158+
159+
$mdDialog.show({
160+
scope: $scope,
161+
preserveScope: true,
162+
targetEvent: ev,
163+
templateUrl: 'dist/views/web/edit-host-teams.html'
164+
});
165+
};
166+
167+
168+
vm.updateChallengeHostTeamData = function(updateChallengeHostTeamDataForm) {
169+
if (updateChallengeHostTeamDataForm) {
170+
var parameters = {};
171+
parameters.url = 'hosts/challenge_host_team/' + vm.hostTeamId;
172+
parameters.method = 'PATCH';
173+
parameters.data = {
174+
"team_name": vm.team.TeamName,
175+
"team_url": vm.team.TeamURL
176+
};
177+
parameters.token = userKey;
178+
parameters.callback = {
179+
onSuccess: function() {
180+
$mdDialog.hide();
181+
vm.team = {};
182+
$rootScope.notify("success", "Host Team updated!");
183+
var parameters = {};
184+
// Retrives the updated lists and displays it.
185+
parameters.url = 'hosts/challenge_host_team';
186+
parameters.method = 'GET';
187+
parameters.token = userKey;
188+
parameters.callback = {
189+
onSuccess: function(response) {
190+
vm.existTeam.results = response.data.results;
191+
},
192+
onError: function(response) {
193+
var error = response.data['error'];
194+
vm.stopLoader();
195+
$rootScope.notify("error", error);
196+
}
197+
};
198+
utilities.sendRequest(parameters);
199+
},
200+
onError: function(response) {
201+
var error;
202+
if ('team_name' in response.data) {
203+
error = response.data['team_name'];
204+
}
205+
else {
206+
error = response.data['error'];
207+
}
208+
$rootScope.notify("error", error[0]);
209+
}
210+
};
211+
212+
utilities.sendRequest(parameters);
213+
}
214+
else {
215+
$mdDialog.hide();
216+
}
217+
};
218+
219+
141220
// function to create new team
142221
vm.createNewTeam = function() {
143222
vm.isLoader = true;

frontend/src/views/web/challenge-host-teams.html

+1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
<span ng-if="value.team_url != ''"><b class="text-med-black">Team: </b><a class="orange-text" href="{{value.team_url}}" target="_blank">{{value.team_name}}</a></span>
2525
<span ng-if="value.team_url == ''"><b class="text-med-black">Team: </b>{{value.team_name}}</span>
2626
<a ng-click="challengeHostTeams.confirmDelete($event, value.id)"><i class="fa fa-trash list-icon text-highlight w-300 right grey-text"></i></a>
27+
<a ng-click="challengeHostTeams.showMdDialog($event, value.id)"><i class="fa fa fa-pencil list-icon text-highlight w-300 right grey-text"></i></a>
2728
<a ng-click="challengeHostTeams.inviteOthers($event, value.id)"><i class="fa fa-user-plus list-icon text-highlight w-300 right"></i></a>
2829
<br>
2930
<span><b class="text-med-black">Created by: </b>{{value.created_by}}</span>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<section class="ev-md-container text-center rm-overflow-y">
2+
<div class="row">
3+
<div class="col s12 m12">
4+
<div class="ev-md-container ev-card-body update-profile-card">
5+
<form name="updateChallengeHostTeamDataForm" ng-submit="challengeHostTeams.updateChallengeHostTeamData(updateChallengeHostTeamDataForm.$valid)">
6+
<div class="pass-title">Update Host Team</div>
7+
<div class="input-field align-left">
8+
<input id="teamName" name="teamName" type="text" class="text-dark-black dark-autofill w-400" ng-model="challengeHostTeams.team.TeamName" value="{{challengeHostTeams.team.TeamName}}" focus-if="challengeHostTeams.team.TeamName" required>
9+
<label class="active" for="teamName">Team Name</label>
10+
</div>
11+
<div class="input-field align-left">
12+
<input id="teamUrl" name="teamUrl" type="text" class="text-dark-black dark-autofill w-400" ng-model="challengeHostTeams.team.TeamURL" value="{{challengeHostTeams.team.TeamURL}}" focus-if="challengeHostTeams.team.TeamURL">
13+
<label for="teamUrl">Team URL (Optional)</label>
14+
</div>
15+
<ul class="inline-list pointer">
16+
<li><a class="dark-link" type="button" ng-click="challengeHostTeams.updateChallengeHostTeamData(false)"><strong>Cancel </strong></a></li>
17+
<li><button class="btn ev-btn-dark waves-effect waves-dark grad-btn grad-btn-dark fs-14" ng-disabled="updateChallengeHostTeamDataForm.$pristine" type="submit" value="Submit">Submit </button></li>
18+
</ul>
19+
</form>
20+
</div>
21+
</div>
22+
</div>
23+
</section>

0 commit comments

Comments
 (0)