Skip to content

Commit d6efcd9

Browse files
committed
Merge branch 'develop' of github.com:topcoder-platform/challenge-forum-processor into develop
# Conflicts: # config/template.json
2 parents 56ee34f + efc6feb commit d6efcd9

File tree

2 files changed

+39
-21
lines changed

2 files changed

+39
-21
lines changed

config/template.json

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,14 @@
1515
"group": {
1616
"name": "${ challenge.name }",
1717
"description": "Welcome to [${ challenge.name }](<%- challenge.url %>) Forum.",
18+
"selfServiceDescription": "Welcome to ${ challenge.name } Forum.",
1819
"privacy": "secret",
1920
"type": "challenge"
2021
},
2122
"categories": [
2223
{
2324
"name": "Code Documents",
24-
"selfservice": false,
25+
"selfService": false,
2526
"urlcode": "${ challenge.id }-documents",
2627
"discussions": [
2728
{
@@ -40,7 +41,7 @@
4041
},
4142
{
4243
"name": "Code Questions",
43-
"selfservice": false,
44+
"selfService": false,
4445
"urlcode": "${ challenge.id }-questions",
4546
"discussions": [
4647
{
@@ -53,7 +54,7 @@
5354
},
5455
{
5556
"name": "General Questions",
56-
"selfservice": true,
57+
"selfService": true,
5758
"urlcode": "${ challenge.id }-questions",
5859
"discussions": [
5960
]
@@ -67,13 +68,14 @@
6768
"group": {
6869
"name": "${ challenge.name }",
6970
"description": "Welcome to [${ challenge.name }](<%- challenge.url %>) Forum.",
71+
"selfServiceDescription": "Welcome to ${ challenge.name } Forum.",
7072
"privacy": "secret",
7173
"type": "challenge"
7274
},
7375
"categories": [
7476
{
7577
"name": "Code Documents",
76-
"selfservice": false,
78+
"selfService": false,
7779
"urlcode": "${ challenge.id }-documents",
7880
"discussions": [
7981
{
@@ -92,7 +94,7 @@
9294
},
9395
{
9496
"name": "Code Questions",
95-
"selfservice": false,
97+
"selfService": false,
9698
"urlcode": "${ challenge.id }-questions",
9799
"discussions": [
98100
{
@@ -105,7 +107,7 @@
105107
},
106108
{
107109
"name": "General Questions",
108-
"selfservice": true,
110+
"selfService": true,
109111
"urlcode": "${ challenge.id }-questions",
110112
"discussions": [
111113
]
@@ -124,7 +126,8 @@
124126
"urlcode": "$ { challenge.id }",
125127
"group": {
126128
"name": "${ challenge.name }",
127-
"description": "Welcome to the challenge forum.",
129+
"description": "Welcome to [${ challenge.name }](<%- challenge.url %>) Forum.",
130+
"selfServiceDescription": "Welcome to ${ challenge.name } Forum.",
128131
"privacy": "secret",
129132
"type": "challenge"
130133
},
@@ -134,28 +137,28 @@
134137
"body": "Spec Review Discussion",
135138
"announce": 0,
136139
"closed": 0,
137-
"selfservice": false
140+
"selfService": false
138141
},
139142
{
140143
"title": "Please give us feedback on this challenge!",
141144
"body": "Hi Competitors,\n\nAt topcoder, we are always trying to continuously improve how we are running competitions and tasks for our competitors. Part of this involves getting feedback from you on how well our tasks and challenges are being managed.\n\nPlease take 2-3 minutes to fill out this survey. The results will be used to identify areas of improvement, follow on training, procedural changes, etc. \n\n https://www.surveymonkey.com/r/3SYYTHP?Challenge_ID=<%- challenge.id %>",
142145
"announce": 0,
143146
"closed": 0,
144-
"selfservice": false
147+
"selfService": false
145148
},
146149
{
147150
"title": "Welcome!",
148151
"body": "Please read the requirements carefully. If you have questions, please let me know, I'll be glad to help you.",
149152
"announce": 0,
150153
"closed": 0,
151-
"selfservice": false
154+
"selfService": false
152155
},
153156
{
154157
"title": "Challenge Overview",
155158
"body": "[Back to Challenge Details page](<%- challenge.url %>)\n<% _.forEach(challenge.prizeSets, function(prizeSet) { %>* <%- prizeSet.type %>: <% _.forEach(prizeSet.prizes, function(prize) { %><%- prize.value %>$ <% }) %>\n<% }); %>",
156159
"announce": 1,
157160
"closed": 1,
158-
"selfservice": false
161+
"selfService": false
159162
}
160163
]
161164
}
@@ -172,13 +175,14 @@
172175
"group": {
173176
"name": "${ challenge.name }",
174177
"description": "Welcome to [${ challenge.name }](<%- challenge.url %>) Forum.",
178+
"selfServiceDescription": "Welcome to ${ challenge.name } Forum.",
175179
"privacy": "secret",
176180
"type": "challenge"
177181
},
178182
"categories": [
179183
{
180184
"name": "Code Documents",
181-
"selfservice": false,
185+
"selfService": false,
182186
"urlcode": "${ challenge.id }-documents",
183187
"discussions": [
184188
{
@@ -197,7 +201,7 @@
197201
},
198202
{
199203
"name": "Code Questions",
200-
"selfservice": false,
204+
"selfService": false,
201205
"urlcode": "${ challenge.id }-questions",
202206
"discussions": [
203207
{
@@ -210,7 +214,7 @@
210214
},
211215
{
212216
"name": "General Questions",
213-
"selfservice": true,
217+
"selfService": true,
214218
"urlcode": "${ challenge.id }-questions",
215219
"discussions": [
216220
]

src/services/vanilla.js

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ async function addTopcoderRoles (allVanillaRoles, topcoderRoleNames) {
140140
* @param {Object} challenge the challenge data
141141
*/
142142
async function createVanillaGroup (challenge) {
143-
logger.info(`The challenge with challengeID=${challenge.id}:`)
143+
logger.info(`Create: challengeID=${challenge.id}, status=${challenge.status}, selfService=${challenge.legacy.selfService}:`)
144144
const { text: challengeDetailsData, status: responseStatus } = await topcoderApi.getChallenge(challenge.id)
145145
const challengeDetails = JSON.parse(challengeDetailsData)
146146

@@ -163,6 +163,12 @@ async function createVanillaGroup (challenge) {
163163
throw new Error('Multiple discussions with type=\'challenge\' and provider=\'vanilla\' are not supported.')
164164
}
165165

166+
const isSelfService = challenge.legacy.selfService && challenge.legacy.selfService === true ? true: false
167+
if(isSelfService && challenge.status !== constants.TOPCODER.CHALLENGE_STATUSES.ACTIVE) {
168+
logger.info(`The forums are created only for self-service challenges with the Active status.`)
169+
return
170+
}
171+
166172
const { body: project } = await topcoderApi.getProject(challenge.projectId)
167173
const allProjectRoles = _.values(constants.TOPCODER.PROJECT_ROLES)
168174
const members = _.filter(project.members, member => {
@@ -200,7 +206,9 @@ async function createVanillaGroup (challenge) {
200206
logger.info(`Creating Vanilla entities for the '${challengeDetailsDiscussion.name}' discussion ....`)
201207

202208
const groupNameTemplate = _.template(groupTemplate.group.name)
203-
const groupDescriptionTemplate = _.template(groupTemplate.group.description)
209+
const groupDescriptionTemplate = challenge.legacy.selfService ? _.template(groupTemplate.group.selfServiceDescription)
210+
: _.template(groupTemplate.group.description)
211+
204212
const { body: group } = await vanillaClient.createGroup({
205213
name: groupNameTemplate({ challenge }),
206214
privacy: groupTemplate.group.privacy,
@@ -239,9 +247,8 @@ async function createVanillaGroup (challenge) {
239247

240248
logger.info(`The '${challengeCategory.name}' category was created.`)
241249

242-
const isSelfService = challenge.legacy.selfService;
243250
if (groupTemplate.categories) {
244-
const categories = _.filter(groupTemplate.categories, ['selfservice', isSelfService] )
251+
const categories = _.filter(groupTemplate.categories, ['selfService', isSelfService])
245252
for (const item of categories) {
246253
const urlCodeTemplate = _.template(item.urlcode)
247254
const { body: childCategory } = await vanillaClient.createCategory({
@@ -257,7 +264,7 @@ async function createVanillaGroup (challenge) {
257264
}
258265

259266
if (groupTemplate.discussions) {
260-
const groupDiscussions = _.filter(groupTemplate.discussions, ['selfservice', isSelfService] )
267+
const groupDiscussions = _.filter(groupTemplate.discussions, ['selfService', isSelfService])
261268
await createDiscussions(group, challenge, groupDiscussions, challengeCategory)
262269
}
263270

@@ -284,11 +291,18 @@ async function createVanillaGroup (challenge) {
284291
* @param {Object} challenge the challenge data
285292
*/
286293
async function updateVanillaGroup (challenge) {
287-
logger.info(`The challenge with challengeID=${challenge.id}:`)
294+
logger.info(`Update: challengeID=${challenge.id}, status=${challenge.status}, selService=${challenge.legacy.selfService}:`)
288295

289296
const { body: groups } = await vanillaClient.searchGroups(challenge.id)
290297
if (groups.length === 0) {
291-
throw new Error('The group wasn\'t found for this challenge')
298+
const isSelfService = challenge.legacy.selfService && challenge.legacy.selfService === true ? true: false
299+
// Create the forums for self-service challenges with the Active status
300+
if(isSelfService && challenge.status === constants.TOPCODER.CHALLENGE_STATUSES.ACTIVE) {
301+
await createVanillaGroup(challenge)
302+
return
303+
} else {
304+
throw new Error('The group wasn\'t found for this challenge')
305+
}
292306
}
293307

294308
if (groups.length > 1) {

0 commit comments

Comments
 (0)