From 78a206c81830b44aaeee3f921d903cc2136e989e Mon Sep 17 00:00:00 2001 From: kolaente Date: Thu, 3 Jun 2021 18:11:44 +0200 Subject: [PATCH] Add setting for first day of the week --- pkg/migration/20210603174608.go | 43 ++++++++++++++++++++++++++++++ pkg/routes/api/v1/user_settings.go | 3 +++ pkg/routes/api/v1/user_show.go | 1 + pkg/swagger/docs.go | 4 +++ pkg/swagger/swagger.json | 4 +++ pkg/swagger/swagger.yaml | 4 +++ pkg/user/user.go | 2 ++ 7 files changed, 61 insertions(+) create mode 100644 pkg/migration/20210603174608.go diff --git a/pkg/migration/20210603174608.go b/pkg/migration/20210603174608.go new file mode 100644 index 000000000..3eeb374f7 --- /dev/null +++ b/pkg/migration/20210603174608.go @@ -0,0 +1,43 @@ +// Vikunja is a to-do list application to facilitate your life. +// Copyright 2018-2021 Vikunja and contributors. All rights reserved. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public Licensee as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public Licensee for more details. +// +// You should have received a copy of the GNU Affero General Public Licensee +// along with this program. If not, see . + +package migration + +import ( + "src.techknowlogick.com/xormigrate" + "xorm.io/xorm" +) + +type users20210603174608 struct { + WeekStart int `xorm:"null" json:"-"` +} + +func (users20210603174608) TableName() string { + return "users" +} + +func init() { + migrations = append(migrations, &xormigrate.Migration{ + ID: "20210603174608", + Description: "Add week start user setting", + Migrate: func(tx *xorm.Engine) error { + return tx.Sync2(users20210603174608{}) + }, + Rollback: func(tx *xorm.Engine) error { + return nil + }, + }) +} diff --git a/pkg/routes/api/v1/user_settings.go b/pkg/routes/api/v1/user_settings.go index 3eacef8e8..c112e031d 100644 --- a/pkg/routes/api/v1/user_settings.go +++ b/pkg/routes/api/v1/user_settings.go @@ -48,6 +48,8 @@ type UserSettings struct { // If a task is created without a specified list this value should be used. Applies // to tasks made directly in API and from clients. DefaultListID int64 `json:"default_list_id"` + // The day when the week starts for this user. 0 = sunday, 1 = monday, etc. + WeekStart int `json:"week_start"` } // GetUserAvatarProvider returns the currently set user avatar @@ -174,6 +176,7 @@ func UpdateGeneralUserSettings(c echo.Context) error { user.DiscoverableByName = us.DiscoverableByName user.OverdueTasksRemindersEnabled = us.OverdueTasksRemindersEnabled user.DefaultListID = us.DefaultListID + user.WeekStart = us.WeekStart _, err = user2.UpdateUser(s, user) if err != nil { diff --git a/pkg/routes/api/v1/user_show.go b/pkg/routes/api/v1/user_show.go index b9793997a..1277b1cb3 100644 --- a/pkg/routes/api/v1/user_show.go +++ b/pkg/routes/api/v1/user_show.go @@ -69,6 +69,7 @@ func UserShow(c echo.Context) error { DiscoverableByEmail: u.DiscoverableByEmail, OverdueTasksRemindersEnabled: u.OverdueTasksRemindersEnabled, DefaultListID: u.DefaultListID, + WeekStart: u.WeekStart, }, } diff --git a/pkg/swagger/docs.go b/pkg/swagger/docs.go index b4d89e9cc..b84260c24 100644 --- a/pkg/swagger/docs.go +++ b/pkg/swagger/docs.go @@ -8579,6 +8579,10 @@ var doc = `{ "overdue_tasks_reminders_enabled": { "description": "If enabled, the user will get an email for their overdue tasks each morning.", "type": "boolean" + }, + "week_start": { + "description": "The day when the week starts for this user. 0 = sunday, 1 = monday, etc.", + "type": "integer" } } }, diff --git a/pkg/swagger/swagger.json b/pkg/swagger/swagger.json index 70e7ef04d..f3f52a2ed 100644 --- a/pkg/swagger/swagger.json +++ b/pkg/swagger/swagger.json @@ -8562,6 +8562,10 @@ "overdue_tasks_reminders_enabled": { "description": "If enabled, the user will get an email for their overdue tasks each morning.", "type": "boolean" + }, + "week_start": { + "description": "The day when the week starts for this user. 0 = sunday, 1 = monday, etc.", + "type": "integer" } } }, diff --git a/pkg/swagger/swagger.yaml b/pkg/swagger/swagger.yaml index 3bb815c66..2c17c828b 100644 --- a/pkg/swagger/swagger.yaml +++ b/pkg/swagger/swagger.yaml @@ -1201,6 +1201,10 @@ definitions: description: If enabled, the user will get an email for their overdue tasks each morning. type: boolean + week_start: + description: The day when the week starts for this user. 0 = sunday, 1 = monday, + etc. + type: integer type: object v1.authInfo: properties: diff --git a/pkg/user/user.go b/pkg/user/user.go index 2108c8735..796de8c92 100644 --- a/pkg/user/user.go +++ b/pkg/user/user.go @@ -72,6 +72,7 @@ type User struct { DiscoverableByEmail bool `xorm:"bool default false index" json:"-"` OverdueTasksRemindersEnabled bool `xorm:"bool default true index" json:"-"` DefaultListID int64 `xorm:"bigint null index" json:"-"` + WeekStart int `xorm:"null" json:"-"` // A timestamp when this task was created. You cannot change this value. Created time.Time `xorm:"created not null" json:"created"` @@ -373,6 +374,7 @@ func UpdateUser(s *xorm.Session, user *User) (updatedUser *User, err error) { "discoverable_by_email", "overdue_tasks_reminders_enabled", "default_list_id", + "week_start", ). Update(user) if err != nil {