summaryrefslogtreecommitdiff
path: root/src/projManagement/Validation.py
blob: a582cab58680bd69212ae609cfb243c16af38016 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134

#===============================================================================
#
#          FILE: Validation.py
# 
#         USAGE: --- 
# 
#   DESCRIPTION: This module is use to create validation for openProject,newProject and other activity. 
# 
#       OPTIONS: ---
#  REQUIREMENTS: ---
#          BUGS: ---
#         NOTES: ---
#        AUTHOR: Fahim Khan, fahim.elex@gmail.com
#  ORGANIZATION: eSim team at FOSSEE, IIT Bombay.
#       CREATED: Wednesday 12 February 2015 
#      REVISION:  ---
#===============================================================================
import os
import re 
import distutils.spawn


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
    """
    def __init__(self):
        pass
    
    def validateOpenproj(self,projDir):
        """
        This function validate Open Project Information.
        """
        print "Function: Validating Open Project Information"
        projName = os.path.basename(str(projDir))
        lookProj = os.path.join(str(projDir),projName+".proj")
        #Check existence of project
        if os.path.exists(lookProj):
            return True
        else:
            return False
       
        
    
    def validateNewproj(self,projDir):
        """
        This Project Validate New Project Information
        """
        print "Function: Validating New Project Information"
                
        #Checking existence of project with same name
        if os.path.exists(projDir):
            return "CHECKEXIST" #Project with name already exist
        else:
            #Check Proper name for project. It should not have space
            if re.search(r"\s",projDir ):
                return "CHECKNAME"
            else:
                return "VALID"
            
    def validateKicad(self,projDir):
        """
        This function validate if Kicad components are present
        """
        print "FUnction : Validating for Kicad components"
        if projDir == None:
            return False
        else:
            return True
        
    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")
        #Check existence of project
        if os.path.exists(lookCir):
            return True
        else:
            return False
        
    def validateSub(self,subDir,givenNum):
        """
        This function checks if ".sub" file is present.
        """
        subName = os.path.basename(str(subDir))
        lookSub = os.path.join(str(subDir),subName+".sub")
        #Check existence of project
        if os.path.exists(lookSub):
            f = open(lookSub)
            data=f.read()
            f.close()
            netlist=data.splitlines()
            for eachline in netlist:
                eachline=eachline.strip()
                if len(eachline)<1:
                    continue
                words=eachline.split()
                if words[0] == '.subckt':
                    #The number of ports is specified in this line
                    #eg. '.subckt ua741 6 7 3' has 3 ports (6, 7 and 3).
                    numPorts = len(words) - 2
                    print "Looksub : ",lookSub
                    print "Given Number of ports : ",givenNum
                    print "Actual Number of ports :",numPorts
                    if numPorts != givenNum:
                        return "PORT"
                    else:
                        return "True"
        else:
            return "DIREC"
        
    def validateCirOut(self,projDir):
        """
        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
        if os.path.exists(lookCirOut):
            return True
        else:
            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