Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 10 additions & 6 deletions conditional/blueprints/major_project_submission.py
Original file line number Diff line number Diff line change
Expand Up @@ -165,12 +165,16 @@ def submit_major_project(user_dict=None):


# Send the slack ping only after we know that the data was properly saved to the DB
send_slack_ping(
{
"text": f"<!subteam^S5XENJJAH> *{get_member_name(user_id)}* ({user_id})"
f" submitted their major project, *{name}*!"
}
)
if app.config['DEV_DISABLE_SLACK_PING']:
log.info("Slack ping skipped due to environment override")
else:
send_slack_ping(
{
"text": f"<!subteam^S5XENJJAH> *{get_member_name(user_id)}* ({user_id})"
f" submitted their major project, *{name}*!"
}
)


return jsonify({"success": True}), 200

Expand Down
1 change: 1 addition & 0 deletions config.env.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
IP = env.get("CONDITIONAL_IP", "0.0.0.0")
PORT = env.get("CONDITIONAL_PORT", 6969)
WEBHOOK_URL = env.get("CONDITIONAL_WEBHOOK_URL", "INSERT URL HERE")
DEV_DISABLE_SLACK_PING = env.get("DEV_DISABLE_SLACK_PING", "false") == "true"
PROFILING = env.get("CONDITIONAL_PROFILING", "false").lower() == "true"

# DB Info
Expand Down
28 changes: 23 additions & 5 deletions frontend/javascript/modules/majorProjectForm.js
Original file line number Diff line number Diff line change
Expand Up @@ -57,15 +57,33 @@ export default class MajorProjectForm {
skills.push(tag.textContent);
}

let projectName = this.form.querySelector('input[name=name]').value;
let projectTldr = this.form.querySelector('input[name=tldr]').value;
let projectTimeSpent = this.form.querySelector('textarea[name=time-commitment]').value;
let projectDescription = this.form.querySelector('textarea[name=description]').value;
let projectLinks = this.form.querySelector('textarea[name=links]').value;

// For each field, if it is not empty, trim it.
if (projectName !== "") projectName = projectName.trim();
if (projectTldr !== "") projectTldr = projectTldr.trim();
if (projectTimeSpent !== "") projectTimeSpent = projectTimeSpent.trim();
if (projectDescription !== "") projectDescription = projectDescription.trim();

if (!projectName || !projectTldr || !projectTimeSpent || !projectDescription || skills.length === 0) {
alert("Error: At least one required field is empty. \n\nProject Name, TLDR, Time Commitment, Description, and at least one skill are required.");
return;
}

let payload = {
projectName: this.form.querySelector('input[name=name]').value,
projectTldr: this.form.querySelector('input[name=tldr]').value,
projectTimeSpent: this.form.querySelector('textarea[name=time-commitment]').value,
projectName: projectName,
projectTldr: projectTldr,
projectTimeSpent: projectTimeSpent,
projectSkills: skills,
projectDescription: this.form.querySelector('textarea[name=description]').value,
projectLinks: this.form.querySelector('textarea[name=links]').value
projectDescription: projectDescription,
projectLinks: projectLinks
};


console.log(payload)

FetchUtil.postWithWarning(this.endpoint, payload, {
Expand Down
7 changes: 7 additions & 0 deletions frontend/stylesheets/pages/_major-project.scss
Original file line number Diff line number Diff line change
Expand Up @@ -132,4 +132,11 @@

.no-imgs {
margin-left: 0.2em;
}

label:has(+ input:required):after,
label:has(+ textarea:required):after,
label:has(+ div input[name="skill"]:required)::after {
content: ' *';
color: red;
}
Loading