func (this *ProblemController) SaveTestCase() { if !this.isLoggedIn() { this.Redirect("/user/login", 302) return } //Redirect if user doesnt hold editor rights uid := this.GetSession("id") user := models.User{Uid: uid.(int)} if !user.IsEditor() { this.Redirect("/", 302) return } pid := this.Ctx.Input.Param(":id") id, _ := strconv.Atoi(pid) timeout, _ := strconv.Atoi(this.GetString("timeout")) //remove string replace input := strings.Replace(this.GetString("input"), "\r", "", -1) output := strings.Replace(this.GetString("output"), "\r", "", -1) testcase := models.Testcases{ Pid: id, //Input: this.GetString("input"), //Output: this.GetString("output"), Timeout: timeout, } testcase.Input = input testcase.Output = output done := testcase.Create() if done == true { this.Redirect("/problem/"+pid, 302) } this.Redirect("/problem/"+pid+"/addtest", 302) }
func (this *ProblemController) AddTestCase() { if !this.isLoggedIn() { this.Redirect("/user/login", 302) return } //Redirect if user doesnt hold editor rights uid := this.GetSession("id") user := models.User{Uid: uid.(int)} if !user.IsEditor() { this.Redirect("/", 302) return } pid := this.Ctx.Input.Param(":id") id, _ := strconv.Atoi(pid) problem := models.Problem{Pid: id} problem.GetByPid() this.Data["problem"] = problem testcases := models.Testcases{Pid: id} cases, _ := testcases.GetAllByPid() this.Data["title"] = "Add Test Case" this.Data["cases"] = cases this.Layout = "layout.tpl" this.TplNames = "problem/addtest.tpl" this.LayoutSections = make(map[string]string) this.LayoutSections["HtmlHead"] = "" this.LayoutSections["Sidebar"] = "" }
// Save Problem // To-do: Clean info before save - Ambigous // To-do: Check login and user previlages - Done func (this *ProblemController) SaveProblem() { if !this.isLoggedIn() { this.Redirect("/user/login", 302) return } //Redirect if user doesnt hold editor rights id := this.GetSession("id") user := models.User{} user.Uid = id.(int) if !user.IsEditor() { this.Redirect("/", 302) return } points, _ := strconv.Atoi(this.GetString("points")) //remove replace foe newlines sampleInput := strings.Replace(this.GetString("sample_input"), "\r", "", -1) sampleOutput := strings.Replace(this.GetString("sample_output"), "\r", "", -1) problem := models.Problem{ Statement: this.GetString("statement"), Description: this.GetString("description"), Constraints: this.GetString("constraints"), //Sample_input: this.GetString("sample_input"), //Sample_output: this.GetString("sample_output"), Type: this.GetString("type"), Difficulty: this.GetString("difficulty"), Points: points, Uid: id.(int), } problem.Sample_output = sampleOutput problem.Sample_input = sampleInput id, noerr := problem.Create() pid := strconv.Itoa(id.(int)) if noerr == true { this.Redirect("/problem/"+pid, 302) } this.Data["title"] = "Create Problem " this.Layout = "layout.tpl" this.TplNames = "problem/create.tpl" this.LayoutSections = make(map[string]string) this.LayoutSections["HtmlHead"] = "" this.LayoutSections["Sidebar"] = "" }
// Create Page func (this *ProblemController) Create() { // If not logged redirect to login if !this.isLoggedIn() { this.Redirect("/user/login", 302) return } //Redirect if user doesnt hold editor rights id := this.GetSession("id") user := models.User{} user.Uid = id.(int) if !user.IsEditor() { this.Redirect("/", 302) return } this.Data["title"] = "Create Problem " this.Layout = "layout.tpl" this.TplNames = "problem/create.tpl" this.LayoutSections = make(map[string]string) this.LayoutSections["HtmlHead"] = "" this.LayoutSections["Sidebar"] = "" }