Browse Source

Merge pull request 'dev_1' (#5) from dev_1 into master

Reviewed-on: #5
master
Rajasekar Shanthakumar 6 months ago
parent
commit
f98b20fe40
  1. 4
      README.md
  2. 4
      UI/data_conversion_ui.py
  3. 2
      UI/data_conversition.ui
  4. BIN
      doc/images/main.PNG
  5. 4
      model.py
  6. 55
      seasave_data_conversion/cnv_converter.py
  7. 2
      view/view.py

4
README.md

@ -6,7 +6,3 @@
</figure>
<figure>
<img src="doc/images/settings.PNG" alt="drawing" >
<figcaption> Available themes</figcaption>
</figure>

4
UI/data_conversion_ui.py

@ -427,9 +427,9 @@ class Ui_Data_conversion(QWidget):
self.horizontalLayout_9.addWidget(self.Qsize_widget, 0, Qt.AlignRight)
QSizeGrip(self.Qsize_widget)
self.verticalLayout_3.addLayout(self.horizontalLayout_9)
self.frame.installEventFilter(self)
self.retranslateUi()

2
UI/data_conversition.ui

@ -689,7 +689,7 @@ QProgressBar::hover
</string>
</property>
<property name="value">
<number>24</number>
<number>0</number>
</property>
</widget>
</item>

BIN
doc/images/main.PNG

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 43 KiB

4
model.py

@ -1,6 +1,7 @@
import sys
from view.view import View
from seasave_data_conversion.cnv_converter import PangaeaColumnAttribute, PangaeaTypeDataBase, ExtractMetaData, CsvWriter, SingleOrBatch, DefaultColumnAttribute, DefaultDataBaseType, TextWriter
from seasave_data_conversion.cnv_converter import PangaeaColumnAttribute, PangaeaTypeDataBase, ExtractMetaData, CsvWriter,\
SingleOrBatch, DefaultColumnAttribute, DefaultDataBaseType, TextWriter, XlxsGenerator
from utils.previousData import PreviousData
from controller.data_conversion_controller import DataConversionController
@ -18,6 +19,7 @@ class Model:
data_base_options['column_attribute'].append({'default': DefaultColumnAttribute})
output_file_formatting['output_format'].append({'csv':CsvWriter})
output_file_formatting['output_format'].append({'txt':TextWriter})
output_file_formatting['output_format'].append({'xlxs':XlxsGenerator})
data_conversion_object['previous_data_class'] = PreviousData
self.controller = DataConversionController(data_conversion_object, data_base_options, output_file_formatting)
self.view.data_conversion_controls(self.controller)

55
seasave_data_conversion/cnv_converter.py

@ -5,6 +5,9 @@ import os
import csv
from abc import ABC, abstractmethod
from typing import Callable, Generator
import pandas as pd
import dask as ds
class SourceFileInfo(ABC):
@ -45,10 +48,11 @@ class CsvWriter(DataWriter):
return True
except FileNotFoundError:
return False
except PermissionError:
return False
def data_writer(self, string_check, f, Qflag = None, addQflag = None):
with open(f, 'r', encoding="utf-8") as source_file:
with open(f, 'r', encoding="ISO-8859-1") as source_file:
if os.path.exists(self.converted_data_folder+'/'+f.split('/')[-1].split('.')[0]+'.csv'):
with open(self.converted_data_folder+'/'+f.split('/')[-1].split('.')[0]+'.csv', 'a' , newline="") as target_file:
write = csv.writer(target_file)
@ -84,9 +88,9 @@ class TextWriter(DataWriter):
return False
def data_writer(self, string_check, f, Qflag = None, addQflag = None):
with open(f, 'r', encoding="utf-8", newline="") as source_file:
with open(f, 'r', encoding="ISO-8859-1", newline="") as source_file:
if os.path.exists(self.converted_data_folder+'/'+f.split('/')[-1].split('.')[0]+'.txt'):
with open(self.converted_data_folder+'/'+f.split('/')[-1].split('.')[0]+'.txt', 'a') as target_file:
with open(self.converted_data_folder+'/'+f.split('/')[-1].split('.')[0]+'.txt', 'a') as target_file:
for line in source_file:
if( string_check.search(line) == None):
data_line = line.split(r"\t")[0].strip()
@ -194,13 +198,15 @@ class ExtractMetaData(MetaData):
new_attribute = list()
column_attributes = column_attributes()
with open(file_names, 'r') as file:
print(file_names)
for line in file:
if cls.string_check.search(line):
if 'name' in line:
line =line.split('=')[1].split(':')[0].strip()
if data_base_type == 'default':
line =line.split('=')[1].split(':')[1].strip()
new_attribute.append(line)
else:
line =line.split('=')[1].split(':')[0].strip()
if line in column_attributes:
new_attribute.append(column_attributes[line][0][data_base_type])
else:
@ -216,6 +222,41 @@ class ExtractMetaData(MetaData):
class XlxsGenerator(CsvWriter):
def __init__(self, converted_data_folder:str):
self.converted_data_folder = converted_data_folder
def attribute_write(self, index:list, f:str):
try:
if os.path.isfile(self.converted_data_folder+r'/'+f.split(r'/')[-1].split('.')[0]+'.csv'):
os.remove(self.converted_data_folder+r'/'+f.split(r'/')[-1].split('.')[0]+'.csv')
with open(self.converted_data_folder+r'/'+f.split(r'/')[-1].split('.')[0]+'.csv', 'a', encoding="utf-8" , newline="") as inx:
write = csv.writer(inx, delimiter=',')
write.writerow(index)
return True
except FileNotFoundError:
return False
except PermissionError:
return False
def data_writer(self, string_check, f, Qflag = None, addQflag = None):
with open(f, 'r', encoding="ISO-8859-1") as source_file:
if os.path.exists(self.converted_data_folder+'/'+f.split('/')[-1].split('.')[0]+'.csv'):
with open(self.converted_data_folder+'/'+f.split('/')[-1].split('.')[0]+'.csv', 'a' , newline="") as target_file:
write = csv.writer(target_file)
for line in source_file:
if( string_check.search(line) == None):
data_line = line.split(r"\t")[0].strip()
data_line = data_line.split()
if addQflag:
write.writerow(data_line+Qflag)
else:
write.writerow(data_line)
#yield progress_bar_value
read_file = pd.read_csv (self.converted_data_folder+r'/'+f.split(r'/')[-1].split('.')[0]+'.csv')
read_file.to_excel (self.converted_data_folder+r'/'+f.split(r'/')[-1].split('.')[0]+'.xlsx', index = None, header=True)
os.remove(self.converted_data_folder+r'/'+f.split(r'/')[-1].split('.')[0]+'.csv')
return True
else:
pass

2
view/view.py

@ -53,7 +53,7 @@ class View:
self.data_converstion_ui.data_conversion_min.clicked.connect(self.MinimusedWindow)
self.data_converstion_ui.data_conversion_settings.clicked.connect(self.theme_option)
self.data_converstion_ui.cancelbtn.clicked.connect(controller.terminate_data_conversion)
#self.data_converstion_ui.xlxs_rb.setDisabled(True)
def MaximizeWindow(self):
if self.data_converstion_ui.isMaximized():
self.data_converstion_ui.showNormal()

Loading…
Cancel
Save