Skip to content

Commit

Permalink
Changes that will be committed later
Browse files Browse the repository at this point in the history
  • Loading branch information
jandsonrj committed Aug 1, 2023
1 parent 253a7ef commit ceac0ef
Show file tree
Hide file tree
Showing 6 changed files with 74 additions and 3 deletions.
6 changes: 3 additions & 3 deletions backend/core/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,13 +54,13 @@ def has_add_permission(self, request):

@admin.register(ProductContent)
class ProductContentAdmin(admin.ModelAdmin):
list_display = ("id", "product", "column_name", "ucd", "order")
list_display = ("id", "product", "column_name", "ucd", "alias", "order")

def has_add_permission(self, request):
return False

def has_change_permission(self, request, obj=None):
return False
# def has_change_permission(self, request, obj=None):
# return False

def has_delete_permission(self, request, obj=None):
return False
Expand Down
18 changes: 18 additions & 0 deletions backend/core/migrations/0026_productcontent_alias.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 4.0.2 on 2023-07-25 17:21

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('core', '0025_remove_product_survey'),
]

operations = [
migrations.AddField(
model_name='productcontent',
name='alias',
field=models.CharField(blank=True, max_length=256, null=True, verbose_name='Alias'),
),
]
3 changes: 3 additions & 0 deletions backend/core/models/product_content.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,5 +27,8 @@ class ProductContent(models.Model):
default=0,
)

alias = models.CharField(
max_length=256, verbose_name="Alias", null=True, blank=True)

def __str__(self):
return f"{self.product.display_name} - {self.column_name}"
3 changes: 3 additions & 0 deletions backend/pzserver/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
)
from django.contrib import admin
from django.urls import include, path
from pzserver.views import update_aliases
from drf_spectacular.views import (
SpectacularAPIView,
SpectacularRedocView,
Expand Down Expand Up @@ -58,6 +59,8 @@
path("api/logged_user/", LoggedUserView.as_view(), name="logged_user"),
path("api/logout/", Logout.as_view(), name="logout"),
path("api/shib/", include("core.shibboleth_urls", namespace="shibboleth")),
# API ALIAS
path('api/update-aliases/', update_aliases, name='update_aliases'),
# API DOCs
path("api/schema/", SpectacularAPIView.as_view(), name="schema"),
path(
Expand Down
29 changes: 29 additions & 0 deletions backend/pzserver/views.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
from rest_framework.decorators import api_view, permission_classes
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
from core.models import ProductContent
from django.views.decorators.csrf import csrf_exempt

@api_view(['POST'])
@permission_classes([IsAuthenticated])
@csrf_exempt
def update_aliases(request):
data = request.data
product_id = data.get('productId')
updates = data.get('updates', [])

try:
product_contents = ProductContent.objects.filter(product_id=product_id)
for update in updates:
content_id = update.get('id')
alias = update.get('alias')
if content_id and alias:
content = product_contents.get(pk=content_id)
content.alias = alias
content.save()

return Response({'message': 'Aliases updated successfully.'})
except ProductContent.DoesNotExist:
return Response({'error': 'Product not found.'}, status=404)
except Exception as e:
return Response({'error': str(e)}, status=500)
18 changes: 18 additions & 0 deletions frontend/components/newProduct/Step3.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import PropTypes from 'prop-types'
import React, { useEffect, useRef, useState } from 'react'
import { contentAssociation, getProductContents } from '../../services/product'
import Loading from '../Loading'
import axios from 'axios'

export default function NewProductStep3({ productId, onNext, onPrev }) {
const ucds = [
Expand Down Expand Up @@ -118,8 +119,25 @@ export default function NewProductStep3({ productId, onNext, onPrev }) {
...prevState,
[pc.column_name]: value
}))
updateAliasOnServer(pc.id, value)
}

const updateAliasOnServer = async (contentId, aliasValue) => {
try {
await axios.post('/api/update-aliases/', {
productId: productId,
updates: [
{
id: contentId,
alias: aliasValue
}
]
});
} catch (error) {
console.error('Error updating alias:', error);
}
};

const handleCancelEdit = pc => {
const updatedEditableFields = { ...editableFields }
delete updatedEditableFields[pc.column_name]
Expand Down

0 comments on commit ceac0ef

Please sign in to comment.