summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSunil Shetye2024-03-04 17:20:44 +0530
committerSunil Shetye2024-03-05 17:19:07 +0530
commit9803de90c1301af77f43c393e571e8730ff820c1 (patch)
treeb8da9d86bb828895adf66642a9121fdc10f0ec14
parenta73be3720eeff1b808708435c21bbf4164c16894 (diff)
downloadCommon-Interface-Project-9803de90c1301af77f43c393e571e8730ff820c1.tar.gz
Common-Interface-Project-9803de90c1301af77f43c393e571e8730ff820c1.tar.bz2
Common-Interface-Project-9803de90c1301af77f43c393e571e8730ff820c1.zip
refactor fix
-rw-r--r--blocks/blocks/xcosblocks/models.py56
-rw-r--r--blocks/blocks/xcosblocks/serializers.py103
-rw-r--r--blocks/blocks/xcosblocks/urls.py3
-rw-r--r--blocks/blocks/xcosblocks/views.py99
-rw-r--r--data/refactor.sql381
5 files changed, 615 insertions, 27 deletions
diff --git a/blocks/blocks/xcosblocks/models.py b/blocks/blocks/xcosblocks/models.py
index d9e336b1..c6afd29f 100644
--- a/blocks/blocks/xcosblocks/models.py
+++ b/blocks/blocks/xcosblocks/models.py
@@ -1,5 +1,4 @@
from django.db import models
-from django.core.validators import MaxValueValidator, MinValueValidator
class BlockType(models.Model):
@@ -491,7 +490,7 @@ class BlockPort(models.Model):
]
-class BlockTemp(models.Model):
+class NewBlock(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=100)
blockprefix = models.ForeignKey(BlockPrefix, default=1,
@@ -517,23 +516,50 @@ class BlockTemp(models.Model):
class Meta:
constraints = [
models.UniqueConstraint(fields=['main_category', 'name'],
- name='unique_category_name')
+ name='unique_main_category_name')
]
-class CommonBlockParameterTemp(models.Model):
- block_param_id = models.IntegerField(validators=[MinValueValidator(0),MaxValueValidator(60)]) # 0 to 60
- label = models.CharField(max_length=100, blank=True, null=True) #p000
- type = models.ForeignKey(ParameterDataType, on_delete=models.PROTECT,
- related_name='+', blank=True, null=True) #p000_type
- help = models.CharField(max_length=100, blank=True, null=True) #p000_help
- block = models.ForeignKey(BlockTemp, on_delete=models.CASCADE, related_name='+', blank=True, null=True) #p000_block
- value = models.CharField(max_length=100, blank=True, null=True) #p000_value_initial
+
+class NewBlockParameter(models.Model):
+ id = models.AutoField(primary_key=True)
+ block = models.ForeignKey(NewBlock, on_delete=models.PROTECT)
+ p_order = models.IntegerField()
+ p_label = models.CharField(max_length=100, blank=False)
+ p_type = models.ForeignKey(ParameterDataType, on_delete=models.PROTECT,
+ related_name='+')
+ p_help = models.CharField(max_length=100, blank=True, null=True)
+ p_value_initial = models.CharField(max_length=100, blank=True)
+
def __str__(self):
"""String for representing the Model object."""
- return self.name
-
+ return self.block.name
+
class Meta:
constraints = [
- models.UniqueConstraint(fields=['block_id', 'block'],
- name='unique_block_parameter_name')
+ models.UniqueConstraint(fields=['block', 'p_order'],
+ name='unique_block_p_order')
+ ]
+
+
+class NewBlockPort(models.Model):
+ id = models.AutoField(primary_key=True)
+ block = models.ForeignKey(NewBlock, on_delete=models.PROTECT)
+ port_order = models.IntegerField()
+ port_name = models.CharField(max_length=100)
+ port_number = models.CharField(max_length=10)
+ port_x = models.IntegerField(default=1)
+ port_y = models.IntegerField(default=1)
+ port_orientation = models.CharField(max_length=100)
+ port_part = models.IntegerField(default=1)
+ port_dmg = models.IntegerField(default=1)
+ port_type = models.CharField(max_length=100)
+
+ def __str__(self):
+ """String for representing the Model object."""
+ return '%s %s' % (self.block.name, self.port_order)
+
+ class Meta:
+ constraints = [
+ models.UniqueConstraint(fields=['block', 'port_order'],
+ name='unique_blocktemp_port_order')
]
diff --git a/blocks/blocks/xcosblocks/serializers.py b/blocks/blocks/xcosblocks/serializers.py
index 2445dc56..7a08d32f 100644
--- a/blocks/blocks/xcosblocks/serializers.py
+++ b/blocks/blocks/xcosblocks/serializers.py
@@ -1,9 +1,9 @@
from rest_framework import serializers
from .models import BlockType, Category, ParameterDataType, BlockPrefix, \
- BlockPrefixParameter, Block, BlockParameter, BlockPort
+ BlockPrefixParameter, Block, BlockParameter, BlockPort, \
+ NewBlock, NewBlockParameter, NewBlockPort
-from .models import CommonBlockParameterTemp, BlockTemp
from .xcosblocks import *
@@ -468,17 +468,100 @@ class SetBlockPortSerializer(serializers.Serializer):
ports = serializers.StringRelatedField(many=True)
-class CommonBlockParameterTemp(serializers.ModelSerializer):
+class NewBlockPortSerializer(serializers.ModelSerializer):
class Meta:
- model = CommonBlockParameterTemp
- fields = [ 'id', 'label', 'type', 'help','value', 'block', 'block_param_id']
+ model = NewBlockPort
+ fields = [
+ 'id',
+ 'block',
+ 'port_order',
+ 'port_name',
+ 'port_number',
+ 'port_x',
+ 'port_y',
+ 'port_orientation',
+ 'port_part',
+ 'port_dmg',
+ 'port_type',
+ ]
+
+
+class NewBlockParameterSerializer(serializers.ModelSerializer):
+ class Meta:
+ model = NewBlockParameter
+ fields = [
+ 'id',
+ 'block',
+ 'p_order',
+ 'p_label',
+ 'p_type',
+ 'p_help',
+ 'p_value_initial'
+ ]
-class BlockTemp(serializers.ModelSerializer):
+
+class NewBlockSerializer(serializers.ModelSerializer):
blockprefix = BlockPrefixSerializer()
main_category = CategorySerializer()
categories = CategorySerializer(many=True)
- blockport_set = BlockPortSerializer(many=True)
+ newblockport_set = NewBlockPortSerializer(many=True)
+ newblockparameter_set = NewBlockParameterSerializer(many=True)
+
class Meta:
- model = BlockTemp
- fields = [ 'id','name', 'blockprefix', 'main_category', 'categories', 'block_name', 'initial_display_parameter',
- 'simulation_function', 'block_image_path', 'block_width', 'block_height']
+ model = NewBlock
+ fields = [
+ 'id',
+ 'name',
+ 'blockprefix',
+ 'main_category',
+ 'categories',
+ 'block_name',
+ 'initial_display_parameter',
+ 'simulation_function',
+ 'block_image_path',
+ 'block_width',
+ 'block_height',
+ 'newblockport_set',
+ 'newblockparameter_set',
+ ]
+
+ @staticmethod
+ def prefetch_category(queryset):
+ return queryset.prefetch_related('categories')
+
+ @staticmethod
+ def prefetch_newblockport(queryset):
+ return queryset.prefetch_related('newblockport_set')
+
+ @staticmethod
+ def prefetch_newblockparameter(queryset):
+ return queryset.prefetch_related('newblockparameter_set')
+
+
+class SetNewBlockParameterSerializer(serializers.Serializer):
+ block = serializers.CharField(max_length=100, required=True,
+ allow_blank=False, trim_whitespace=True)
+
+ def getnewblockportserializer(self):
+ data = self.data
+ name = data['block']
+
+ (parameters, display_parameter, ports) = \
+ globals()['get_from_' + name](data)
+ simulation_function = ''
+
+ return SetNewBlockPortSerializer(data={
+ 'parameters': parameters,
+ 'display_parameter': display_parameter,
+ 'simulation_function': simulation_function,
+ 'ports': ports,
+ })
+
+
+class SetNewBlockPortSerializer(serializers.Serializer):
+ parameters = serializers.StringRelatedField(many=True)
+ display_parameter = serializers.CharField(
+ max_length=100, allow_blank=True, trim_whitespace=True)
+ simulation_function = serializers.CharField(
+ max_length=100, allow_blank=True, trim_whitespace=True)
+ ports = serializers.StringRelatedField(many=True)
diff --git a/blocks/blocks/xcosblocks/urls.py b/blocks/blocks/xcosblocks/urls.py
index 3e427b8d..0e49ba36 100644
--- a/blocks/blocks/xcosblocks/urls.py
+++ b/blocks/blocks/xcosblocks/urls.py
@@ -2,12 +2,15 @@ from django.urls import path
from rest_framework.routers import DefaultRouter
from .views import CategoryViewSet, BlockViewSet, BlockParameterViewSet, \
+ NewBlockViewSet, NewBlockParameterViewSet, \
get_block_images, set_block_parameter
router = DefaultRouter()
router.register(r'categories', CategoryViewSet)
router.register(r'blocks', BlockViewSet)
router.register(r'block_parameters', BlockParameterViewSet)
+router.register(r'newblocks', NewBlockViewSet)
+router.register(r'newblockparameters', NewBlockParameterViewSet)
urlpatterns = router.urls
urlpatterns += [
path('setblockparameter', set_block_parameter),
diff --git a/blocks/blocks/xcosblocks/views.py b/blocks/blocks/xcosblocks/views.py
index bc7ae706..b6bcccbf 100644
--- a/blocks/blocks/xcosblocks/views.py
+++ b/blocks/blocks/xcosblocks/views.py
@@ -5,10 +5,13 @@ import io
from rest_framework.parsers import JSONParser
from rest_framework.viewsets import ReadOnlyModelViewSet
-from .models import Category, Block, BlockParameter, BlockPort
+from .models import Category, Block, BlockParameter, BlockPort, \
+ NewBlock, NewBlockParameter, NewBlockPort
from .serializers import CategorySerializer, BlockSerializer, \
BlockParameterSerializer, BlockPortSerializer, ErrorSerializer, \
- SetBlockParameterSerializer
+ SetBlockParameterSerializer, \
+ NewBlockSerializer, NewBlockParameterSerializer, NewBlockPortSerializer, \
+ SetNewBlockParameterSerializer
class CategoryFilterSet(FilterSet):
@@ -126,3 +129,95 @@ def set_block_parameter(request):
serializer = SetBlockParameterSerializer()
return JsonResponse(serializer.data)
+
+
+class NewBlockFilterSet(FilterSet):
+ class Meta:
+ model = NewBlock
+ fields = {
+ 'id': ['exact'],
+ 'name': ['istartswith'],
+ 'categories': ['exact'],
+ }
+
+
+class NewBlockViewSet(ReadOnlyModelViewSet):
+ """
+ Listing All Block Details
+ """
+ queryset = NewBlock.objects.all().order_by('name')
+ queryset = NewBlockSerializer.prefetch_category(queryset)
+ queryset = NewBlockSerializer.prefetch_newblockport(queryset)
+ queryset = NewBlockSerializer.prefetch_newblockparameter(queryset)
+ serializer_class = NewBlockSerializer
+ filter_backends = [
+ DjangoFilterBackend
+ ]
+ filterset_class = NewBlockFilterSet
+
+
+class NewBlockParameterFilterSet(FilterSet):
+ class Meta:
+ model = NewBlockParameter
+ fields = {
+ 'block': ['exact'],
+ 'block__name': ['exact'],
+ }
+
+
+class NewBlockParameterViewSet(ReadOnlyModelViewSet):
+ """
+ Listing All Block Parameter Details
+ """
+ queryset = NewBlockParameter.objects.all()
+ serializer_class = NewBlockParameterSerializer
+ filter_backends = [
+ DjangoFilterBackend
+ ]
+ filterset_class = NewBlockParameterFilterSet
+
+
+class NewBlockPortFilterSet(FilterSet):
+ class Meta:
+ model = NewBlockPort
+ fields = {
+ 'block': ['exact'],
+ }
+
+
+class NewBlockPortViewSet(ReadOnlyModelViewSet):
+ """
+ Listing All Block Port Details
+ """
+ queryset = NewBlockPort.objects.all()
+ serializer_class = NewBlockPortSerializer
+ filter_backends = [
+ DjangoFilterBackend
+ ]
+ filterset_class = NewBlockPortFilterSet
+
+
+def set_newblockparameter(request):
+ if request.method == 'POST':
+ stream = io.BytesIO(request.body)
+ data = JSONParser().parse(stream)
+ serializer = SetNewBlockParameterSerializer(data=data)
+ if serializer.is_valid():
+ # process the data to get port
+ try:
+ port = serializer.getnewblockportserializer()
+ return JsonResponse(port.initial_data)
+ except Exception as e:
+ error = 'getnewblockportserializer error: %s' % str(e)
+ errorserializer = ErrorSerializer(data={
+ 'code': 500, 'error': error})
+ return JsonResponse(errorserializer, safe=False)
+ else:
+ error = 'getnewblockportserializer errors: %s' % serializer.errors
+ errorserializer = ErrorSerializer(data={
+ 'code': 500, 'error': error})
+ return JsonResponse(errorserializer, safe=False)
+ else:
+ serializer = SetNewBlockParameterSerializer()
+
+ return JsonResponse(serializer.data)
diff --git a/data/refactor.sql b/data/refactor.sql
new file mode 100644
index 00000000..f65bcf6f
--- /dev/null
+++ b/data/refactor.sql
@@ -0,0 +1,381 @@
+INSERT INTO xcosblocks_newblock (
+ id, name, blockprefix_id, main_category_id, block_name, initial_display_parameter, simulation_function, block_image_path, block_width, block_height
+)
+SELECT id, name, blockprefix_id, main_category_id, block_name, initial_display_parameter, simulation_function, block_image_path, block_width, block_height
+FROM xcosblocks_block;
+
+INSERT INTO xcosblocks_newblock_categories (
+ id, newblock_id, category_id
+)
+SELECT id, block_id, category_id
+FROM xcosblocks_block_categories;
+
+INSERT INTO xcosblocks_newblockparameter (
+ block_id, p_order, p_label, p_type_id, p_help, p_value_initial
+)
+SELECT block_id, 0, p000, p000_type_id, p000_help, p000_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p000 IS NOT NULL
+AND p000 != ''
+UNION
+SELECT block_id, 1, p001, p001_type_id, p001_help, p001_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p001 IS NOT NULL
+AND p001 != ''
+UNION
+SELECT block_id, 2, p002, p002_type_id, p002_help, p002_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p002 IS NOT NULL
+AND p002 != ''
+UNION
+SELECT block_id, 3, p003, p003_type_id, p003_help, p003_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p003 IS NOT NULL
+AND p003 != ''
+UNION
+SELECT block_id, 4, p004, p004_type_id, p004_help, p004_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p004 IS NOT NULL
+AND p004 != ''
+UNION
+SELECT block_id, 5, p005, p005_type_id, p005_help, p005_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p005 IS NOT NULL
+AND p005 != ''
+UNION
+SELECT block_id, 6, p006, p006_type_id, p006_help, p006_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p006 IS NOT NULL
+AND p006 != ''
+UNION
+SELECT block_id, 7, p007, p007_type_id, p007_help, p007_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p007 IS NOT NULL
+AND p007 != ''
+UNION
+SELECT block_id, 8, p008, p008_type_id, p008_help, p008_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p008 IS NOT NULL
+AND p008 != ''
+UNION
+SELECT block_id, 9, p009, p009_type_id, p009_help, p009_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p009 IS NOT NULL
+AND p009 != ''
+UNION
+SELECT block_id, 10, p010, p010_type_id, p010_help, p010_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p010 IS NOT NULL
+AND p010 != ''
+UNION
+SELECT block_id, 11, p011, p011_type_id, p011_help, p011_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p011 IS NOT NULL
+AND p011 != ''
+UNION
+SELECT block_id, 12, p012, p012_type_id, p012_help, p012_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p012 IS NOT NULL
+AND p012 != ''
+UNION
+SELECT block_id, 13, p013, p013_type_id, p013_help, p013_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p013 IS NOT NULL
+AND p013 != ''
+UNION
+SELECT block_id, 14, p014, p014_type_id, p014_help, p014_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p014 IS NOT NULL
+AND p014 != ''
+UNION
+SELECT block_id, 15, p015, p015_type_id, p015_help, p015_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p015 IS NOT NULL
+AND p015 != ''
+UNION
+SELECT block_id, 16, p016, p016_type_id, p016_help, p016_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p016 IS NOT NULL
+AND p016 != ''
+UNION
+SELECT block_id, 17, p017, p017_type_id, p017_help, p017_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p017 IS NOT NULL
+AND p017 != ''
+UNION
+SELECT block_id, 18, p018, p018_type_id, p018_help, p018_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p018 IS NOT NULL
+AND p018 != ''
+UNION
+SELECT block_id, 19, p019, p019_type_id, p019_help, p019_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p019 IS NOT NULL
+AND p019 != ''
+UNION
+SELECT block_id, 20, p020, p020_type_id, p020_help, p020_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p020 IS NOT NULL
+AND p020 != ''
+UNION
+SELECT block_id, 21, p021, p021_type_id, p021_help, p021_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p021 IS NOT NULL
+AND p021 != ''
+UNION
+SELECT block_id, 22, p022, p022_type_id, p022_help, p022_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p022 IS NOT NULL
+AND p022 != ''
+UNION
+SELECT block_id, 23, p023, p023_type_id, p023_help, p023_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p023 IS NOT NULL
+AND p023 != ''
+UNION
+SELECT block_id, 24, p024, p024_type_id, p024_help, p024_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p024 IS NOT NULL
+AND p024 != ''
+UNION
+SELECT block_id, 25, p025, p025_type_id, p025_help, p025_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p025 IS NOT NULL
+AND p025 != ''
+UNION
+SELECT block_id, 26, p026, p026_type_id, p026_help, p026_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p026 IS NOT NULL
+AND p026 != ''
+UNION
+SELECT block_id, 27, p027, p027_type_id, p027_help, p027_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p027 IS NOT NULL
+AND p027 != ''
+UNION
+SELECT block_id, 28, p028, p028_type_id, p028_help, p028_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p028 IS NOT NULL
+AND p028 != ''
+UNION
+SELECT block_id, 29, p029, p029_type_id, p029_help, p029_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p029 IS NOT NULL
+AND p029 != ''
+UNION
+SELECT block_id, 30, p030, p030_type_id, p030_help, p030_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p030 IS NOT NULL
+AND p030 != ''
+UNION
+SELECT block_id, 31, p031, p031_type_id, p031_help, p031_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p031 IS NOT NULL
+AND p031 != ''
+UNION
+SELECT block_id, 32, p032, p032_type_id, p032_help, p032_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p032 IS NOT NULL
+AND p032 != ''
+UNION
+SELECT block_id, 33, p033, p033_type_id, p033_help, p033_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p033 IS NOT NULL
+AND p033 != ''
+UNION
+SELECT block_id, 34, p034, p034_type_id, p034_help, p034_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p034 IS NOT NULL
+AND p034 != ''
+UNION
+SELECT block_id, 35, p035, p035_type_id, p035_help, p035_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p035 IS NOT NULL
+AND p035 != ''
+UNION
+SELECT block_id, 36, p036, p036_type_id, p036_help, p036_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p036 IS NOT NULL
+AND p036 != ''
+UNION
+SELECT block_id, 37, p037, p037_type_id, p037_help, p037_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p037 IS NOT NULL
+AND p037 != ''
+UNION
+SELECT block_id, 38, p038, p038_type_id, p038_help, p038_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p038 IS NOT NULL
+AND p038 != ''
+UNION
+SELECT block_id, 39, p039, p039_type_id, p039_help, p039_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p039 IS NOT NULL
+AND p039 != ''
+UNION
+SELECT block_id, 40, p040, p040_type_id, p040_help, p040_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p040 IS NOT NULL
+AND p040 != ''
+UNION
+SELECT block_id, 41, p041, p041_type_id, p041_help, p041_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p041 IS NOT NULL
+AND p041 != ''
+UNION
+SELECT block_id, 42, p042, p042_type_id, p042_help, p042_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p042 IS NOT NULL
+AND p042 != ''
+UNION
+SELECT block_id, 43, p043, p043_type_id, p043_help, p043_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p043 IS NOT NULL
+AND p043 != ''
+UNION
+SELECT block_id, 44, p044, p044_type_id, p044_help, p044_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p044 IS NOT NULL
+AND p044 != ''
+UNION
+SELECT block_id, 45, p045, p045_type_id, p045_help, p045_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p045 IS NOT NULL
+AND p045 != ''
+UNION
+SELECT block_id, 46, p046, p046_type_id, p046_help, p046_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p046 IS NOT NULL
+AND p046 != ''
+UNION
+SELECT block_id, 47, p047, p047_type_id, p047_help, p047_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p047 IS NOT NULL
+AND p047 != ''
+UNION
+SELECT block_id, 48, p048, p048_type_id, p048_help, p048_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p048 IS NOT NULL
+AND p048 != ''
+UNION
+SELECT block_id, 49, p049, p049_type_id, p049_help, p049_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p049 IS NOT NULL
+AND p049 != ''
+UNION
+SELECT block_id, 50, p050, p050_type_id, p050_help, p050_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p050 IS NOT NULL
+AND p050 != ''
+UNION
+SELECT block_id, 51, p051, p051_type_id, p051_help, p051_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p051 IS NOT NULL
+AND p051 != ''
+UNION
+SELECT block_id, 52, p052, p052_type_id, p052_help, p052_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p052 IS NOT NULL
+AND p052 != ''
+UNION
+SELECT block_id, 53, p053, p053_type_id, p053_help, p053_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p053 IS NOT NULL
+AND p053 != ''
+UNION
+SELECT block_id, 54, p054, p054_type_id, p054_help, p054_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p054 IS NOT NULL
+AND p054 != ''
+UNION
+SELECT block_id, 55, p055, p055_type_id, p055_help, p055_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p055 IS NOT NULL
+AND p055 != ''
+UNION
+SELECT block_id, 56, p056, p056_type_id, p056_help, p056_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p056 IS NOT NULL
+AND p056 != ''
+UNION
+SELECT block_id, 57, p057, p057_type_id, p057_help, p057_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p057 IS NOT NULL
+AND p057 != ''
+UNION
+SELECT block_id, 58, p058, p058_type_id, p058_help, p058_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p058 IS NOT NULL
+AND p058 != ''
+UNION
+SELECT block_id, 59, p059, p059_type_id, p059_help, p059_value_initial
+FROM xcosblocks_block
+JOIN xcosblocks_blockparameter ON xcosblocks_blockparameter.block_id = xcosblocks_block.id
+WHERE p059 IS NOT NULL
+AND p059 != ''
+ORDER BY 1, 2;
+
+INSERT INTO xcosblocks_newblockport (
+ id, block_id, port_order, port_name, port_number, port_x, port_y, port_orientation, port_part, port_dmg, port_type
+)
+SELECT id, block_id, port_order, port_name, port_number, port_x, port_y, port_orientation, port_part, port_dmg, port_type
+FROM xcosblocks_blockport;