mirror of
https://github.com/pinry/pinry.git
synced 2025-11-13 08:35:41 +01:00
Fix: no-changes on board name should be allowed
This commit is contained in:
@@ -221,10 +221,11 @@ class BoardSerializer(serializers.HyperlinkedModelSerializer):
|
||||
def update(self, instance: Board, validated_data):
|
||||
pins_to_add = validated_data.pop("pins_to_add", [])
|
||||
pins_to_remove = validated_data.pop("pins_to_remove", [])
|
||||
if Board.objects.filter(
|
||||
board = Board.objects.filter(
|
||||
submitter=instance.submitter,
|
||||
name=validated_data.get('name', None)
|
||||
).exists():
|
||||
).first()
|
||||
if board.id != instance.id:
|
||||
raise ValidationError(
|
||||
detail={'name': "Board with this name already exists"}
|
||||
)
|
||||
|
||||
@@ -18,6 +18,13 @@
|
||||
>
|
||||
</b-input>
|
||||
</b-field>
|
||||
<b-field label="Privacy Option"
|
||||
:type="createModel.form.private.type"
|
||||
:message="createModel.form.private.error">
|
||||
<b-checkbox v-model="createModel.form.private.value">
|
||||
{{ pinModel.form.private.value?"only visible to yourself":"visible to everyone" }}
|
||||
</b-checkbox>
|
||||
</b-field>
|
||||
</div>
|
||||
<div v-if="isEdit">
|
||||
<b-field label="Name"
|
||||
@@ -31,6 +38,13 @@
|
||||
>
|
||||
</b-input>
|
||||
</b-field>
|
||||
<b-field label="Privacy Option"
|
||||
:type="editModel.form.private.type"
|
||||
:message="editModel.form.private.error">
|
||||
<b-checkbox v-model="editModel.form.private.value">
|
||||
{{ editModel.form.private.value?"only visible to yourself":"visible to everyone" }}
|
||||
</b-checkbox>
|
||||
</b-field>
|
||||
</div>
|
||||
</section>
|
||||
<footer class="modal-card-foot">
|
||||
@@ -56,7 +70,7 @@ import API from './api';
|
||||
import ModelForm from './utils/ModelForm';
|
||||
import bus from './utils/bus';
|
||||
|
||||
const fields = ['name'];
|
||||
const fields = ['name', 'private'];
|
||||
|
||||
export default {
|
||||
name: 'BoardEditModal',
|
||||
@@ -108,7 +122,10 @@ export default {
|
||||
},
|
||||
createBoard() {
|
||||
const self = this;
|
||||
const promise = API.Board.create(this.createModel.form.name.value);
|
||||
const promise = API.Board.create(
|
||||
this.createModel.form.name.value,
|
||||
this.createModel.form.private.value,
|
||||
);
|
||||
promise.then(
|
||||
(resp) => {
|
||||
bus.bus.$emit(bus.events.refreshBoards);
|
||||
|
||||
@@ -76,6 +76,7 @@ function createBoardItem(board) {
|
||||
}
|
||||
boardItem.id = board.id;
|
||||
boardItem.name = board.name;
|
||||
boardItem.private = board.private;
|
||||
boardItem.total_pins = pins4Board.length;
|
||||
if (previewImage.image.thumbnail.image !== null) {
|
||||
boardItem.preview_image_url = pinHandler.escapeUrl(
|
||||
|
||||
@@ -4,9 +4,9 @@ import storage from './utils/storage';
|
||||
const API_PREFIX = '/api/v2/';
|
||||
|
||||
const Board = {
|
||||
create(name) {
|
||||
create(name, private_ = false) {
|
||||
const url = `${API_PREFIX}boards/`;
|
||||
const data = { name };
|
||||
const data = { name, private: private_ };
|
||||
return new Promise(
|
||||
(resolve, reject) => {
|
||||
axios.post(url, data).then(
|
||||
|
||||
Reference in New Issue
Block a user