summaryrefslogtreecommitdiff
path: root/src/projManagement/Validation.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/projManagement/Validation.py')
-rw-r--r--src/projManagement/Validation.py168
1 files changed, 111 insertions, 57 deletions
diff --git a/src/projManagement/Validation.py b/src/projManagement/Validation.py
index 65103282..f2d84314 100644
--- a/src/projManagement/Validation.py
+++ b/src/projManagement/Validation.py
@@ -1,4 +1,3 @@
-
# =========================================================================
#
# FILE: Validation.py
@@ -21,12 +20,25 @@ import os
import re
import distutils.spawn
+"""
+This is Validation class use for validating Project.
+e.g if .proj is present in project directory
+or if new project name is already exist in workspace etc
+"""
+
class Validation:
"""
- This is Validation class use for validating Project.
- e.g if .proj is present in project directory
- or if new project name is already exist in workspace etc
+ Takes as input the path of the project and checks if
+ projName.proj file exists
+ projName is same as the folder selected
+
+ @params
+ :projDir => contains the path of the project folder selected to open
+
+ @return
+ True => If the folder contains the projName.proj file
+ False => If the folder doesn't contain projName.proj file
"""
def __init__(self):
@@ -34,17 +46,7 @@ class Validation:
def validateOpenproj(self, projDir):
"""
- Takes as input the path of the project and checks if
- projName.proj file exists
- projName is same as the folder selected
-
- @params
- :projDir => contains the path of the project folder selected\
- to open
-
- @return
- True => If the folder contains the projName.proj file
- False => If the folder doesn't contain projName.proj file
+ This function validate Open Project Information.
"""
print("Function: Validating Open Project Information")
projName = os.path.basename(str(projDir))
@@ -55,17 +57,21 @@ class Validation:
else:
return False
- def validateNewproj(self, projDir):
- """
- Validate new project created
+ """
+ Validate new project created
- @params
- :projDir => Contains path of the new projDir created
+ @params
+ :projDir => Contains path of the new projDir created
- @return
- :"CHECKEXIST" => If smae project name folder exists
- :"CHECKNAME" => If space is there in name
- :"VALID" => If valid project name given
+ @return
+ :"CHECKEXIST" => If smae project name folder exists
+ :"CHECKNAME" => If space is there in name
+ :"VALID" => If valid project name given
+ """
+
+ def validateNewproj(self, projDir):
+ """
+ This Project Validate New Project Information
"""
print("Function: Validating New Project Information")
@@ -79,18 +85,22 @@ class Validation:
else:
return "VALID"
- def validateKicad(self, projDir):
- """
- Validate if projDir is set appropriately in the function calling file
- and if Kicad components are present
+ """
+ Validate if projDir is set appropriately in the function calling file
+ and if Kicad components are present
- @params
- :projDir => the path of the project directory, passed from
- the calling function
+ @params
+ :projDir => the path of the project directory, passed from
+ the calling function
- @return
- True
- False
+ @return
+ True
+ False
+ """
+
+ def validateKicad(self, projDir):
+ """
+ This function validate if Kicad components are present
"""
print("FUnction : Validating for Kicad components")
if projDir is None:
@@ -98,17 +108,21 @@ class Validation:
else:
return True
- def validateCir(self, projDir):
- """
- Validate if cir file present in the directory with the appropriate .cir
- file name, same as the project directory base
+ """
+ Validate if cir file present in the directory with the appropriate .cir
+ file name, same as the project directory base
- @params
- :projDir => the path to the project directory
+ @params
+ :projDir => the path to the project diretory
- @return
- True
- False
+ @return
+ True
+ False
+ """
+
+ def validateCir(self, projDir):
+ """
+ This function checks if ".cir" file is present.
"""
projName = os.path.basename(str(projDir))
lookCir = os.path.join(str(projDir), projName + ".cir")
@@ -161,17 +175,7 @@ class Validation:
return "DIREC"
def validateCirOut(self, projDir):
- """
- This function checks if ".cir.out" file is present.
-
- @params
- :projDir => the path of the project directory, passed from
- the calling function
-
- @return
- True
- False
- """
+ """This function checks if ".cir.out" file is present."""
projName = os.path.basename(str(projDir))
lookCirOut = os.path.join(str(projDir), projName + ".cir.out")
# Check existence of project
@@ -181,8 +185,58 @@ class Validation:
return False
def validateTool(self, toolName):
+ """This function check if tool is present in the system."""
+ return distutils.spawn.find_executable(toolName) is not None
+
+ def validateSubcir(self, projDir):
"""
- This function check if tool is present in the system,
- Example, nghdl, eeschema...
+ This function checks for valid format of .sub file.
+ Correct format of file is:
+ - File should start with **.subckt <filename>**
+ - End with **.ends <filename>**
+ Function is passed with the file of path it checks the
+ file line by line untill it get .subckt as its first word
+ and then check for second word is it <fileName> or not.
+
+ Then it checks for second last line if it is ".ends
+ <filename>" it return True if conditions satisfy else
+ return False.
+
"""
- return distutils.spawn.find_executable(toolName) is not None
+ projName = os.path.basename(str(projDir))
+ fileName = projName[:-4]
+
+ first = True
+ last_line = []
+
+ # Checks if file is empty or not.
+ if os.stat(projDir).st_size == 0:
+ print("File is empty")
+ print("===================")
+ return False
+
+ with open(projDir, 'r') as f:
+ for line in f:
+ word = line.split()
+ if len(word) == 0 or word[0][0] == "*":
+ continue
+ if first:
+ if word[0] == ".subckt" and word[1] == fileName:
+ first = False
+ else:
+ print("First line not found")
+ return False
+ else:
+ last_line = word
+
+ if first is True:
+ print("First line not found")
+ return False
+
+ print(last_line)
+ if len(last_line) >= 2 and last_line[0] == ".ends" and \
+ last_line[1] == fileName:
+ return True
+
+ print("Last line not found")
+ return False