Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
key.txt
ui/apiKeys.py
ui/__pycache__/
*__pycache__*
.DS_Store
crash_info.log

.idea
2 changes: 1 addition & 1 deletion collBook.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@

"""
__author__ = "Caleb Powell, Jacob Motley"
__credits__ = ["Caleb Powell, Jacob Motley, Joey Shaw"]
__credits__ = ["Caleb Powell, Jacob Motley, Dax Ledesma, Joey Shaw"]
__email__ = "calebadampowell@gmail.com"
__status__ = "Alpha"
__version__ = 'v0.1.8-alpha'
Expand Down
16 changes: 11 additions & 5 deletions ui/importindexdialog.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,15 @@ class importDialog(QDialog):
the necessary index fields are missing from a csv file being loaded.
Called in pandastablemodel, under the open_CSV function"""

def __init__(self, parent=None, df=False):
def __init__(self, parent=None, df=False, inat=False):
super().__init__()
self.init_ui(parent, df)
self.init_ui(parent, df, inat)

def init_ui(self, parent, df):
def init_ui(self, parent, df, inat):
if isinstance(df, pd.DataFrame):
self.parent = parent # this is the master window
importDialog = Ui_importIndexDialog()
importDialog.setupUi(self)
importDialog.setupUi(self, inat)
self.df = df
# populate the qcombo boxes
for box in [importDialog.value_Existing_Specimen_Numbers,
Expand Down Expand Up @@ -54,8 +54,14 @@ def indexAssignments(self):
# generate sequential specimenNumbers
numSeq = [str(x+1) for x in range(len(self.df))]
self.df['specimenNumber'] = numSeq

useExistingSite = self.importDialog.value_Use_Existing_Site_Numbers
if useExistingSite.isChecked():
useOneSite = self.importDialog.value_Use_One_Site

if useOneSite.isChecked():
numSeq = [str(1) for _ in range(len(self.df))]
self.df['siteNumber'] = numSeq
elif useExistingSite.isChecked():
# generate sequential siteNumbers
existingCol = self.importDialog.value_Existing_Site_Numbers.currentText()
self.df['siteNumber'] = self.df[existingCol]
Expand Down
27 changes: 21 additions & 6 deletions ui/importindexdialogUI.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_importIndexDialog(object):
def setupUi(self, importIndexDialog):
def setupUi(self, importIndexDialog, inat):
importIndexDialog.setObjectName("importIndexDialog")
importIndexDialog.resize(411, 396)
font = QtGui.QFont()
Expand All @@ -36,9 +36,19 @@ def setupUi(self, importIndexDialog):
self.horizontalLayout_2.addWidget(self.value_Existing_Site_Numbers)
self.formLayout.setLayout(0, QtWidgets.QFormLayout.SpanningRole, self.horizontalLayout_2)
self.value_Gen_Site_Numbers = QtWidgets.QRadioButton(self.groupBox)
self.value_Gen_Site_Numbers.setChecked(True)
if inat:
self.value_Gen_Site_Numbers.setChecked(False)
else:
self.value_Gen_Site_Numbers.setChecked(True)
self.value_Gen_Site_Numbers.setObjectName("value_Gen_Site_Numbers")
self.formLayout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.value_Gen_Site_Numbers)
self.value_Use_One_Site = QtWidgets.QRadioButton(self.groupBox)
if inat:
self.value_Use_One_Site.setChecked(True)
else:
self.value_Use_One_Site.setChecked(False)
self.value_Use_One_Site.setObjectName("value_Use_One_Site")
self.formLayout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.value_Use_One_Site)
self.gridLayout.addWidget(self.groupBox, 6, 0, 1, 1)
self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
Expand Down Expand Up @@ -80,20 +90,25 @@ def setupUi(self, importIndexDialog):
spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.gridLayout.addItem(spacerItem2, 4, 0, 1, 1)

self.retranslateUi(importIndexDialog)
self.value_Use_Existing_Specimen_Numbers.toggled['bool'].connect(self.value_Existing_Specimen_Numbers.setEnabled)
self.retranslateUi(importIndexDialog, inat)
self.value_Use_Existing_Site_Numbers.toggled['bool'].connect(self.value_Existing_Site_Numbers.setEnabled)
self.value_Use_Existing_Specimen_Numbers.toggled['bool'].connect(self.value_Existing_Specimen_Numbers.setEnabled)
QtCore.QMetaObject.connectSlotsByName(importIndexDialog)

def retranslateUi(self, importIndexDialog):
def retranslateUi(self, importIndexDialog, inat):
_translate = QtCore.QCoreApplication.translate
importIndexDialog.setWindowTitle(_translate("importIndexDialog", "Form"))
self.groupBox.setTitle(_translate("importIndexDialog", "Site Number"))
self.value_Use_Existing_Site_Numbers.setText(_translate("importIndexDialog", "Pick from existing columns"))
self.value_Gen_Site_Numbers.setText(_translate("importIndexDialog", "Generate unique site numbers"))
self.value_Use_One_Site.setText(_translate("importIndexDialog", "Treat all imported records as one site (recommended for iNaturalist-like files)"))
self.pushButton_Cancel.setText(_translate("importIndexDialog", "Cancel"))
self.pushButton_Assign.setText(_translate("importIndexDialog", "Assign"))
self.label.setText(_translate("importIndexDialog", "Could not locate indexing fields (ie: siteNumber, specimenNumber, or otherCatalogNumbers)."))
if inat:
self.label.setText(_translate("importIndexDialog", "Importing iNaturalist file."))
else:
self.label.setText(_translate("importIndexDialog",
"Could not locate indexing fields (ie: siteNumber, specimenNumber, or otherCatalogNumbers)."))
self.label_2.setText(_translate("importIndexDialog", "Select how to assign index fields."))
self.groupBox_2.setTitle(_translate("importIndexDialog", "Specimen Numbers"))
self.value_Use_Existing_Specimen_Numbers.setText(_translate("importIndexDialog", "Pick from existing columns"))
Expand Down
7 changes: 6 additions & 1 deletion ui/locality.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ def userAsk(self, text):

def reverseGeoCall(self, latitude, longitude):
apiUrl = f'https://maps.googleapis.com/maps/api/geocode/json?latlng={str(latitude)},{str(longitude)}&key={self.gAPIkey}'
print(apiUrl)
try:
apiCall = requests.get(apiUrl)
except ConnectionError:
Expand Down Expand Up @@ -132,8 +133,12 @@ def genLocality(self, currentRowArg):
country = addressComponent['short_name']
newLocality['country'] = country
currentRowArg['country'] = country
if addressComponent['types'][0] == 'natural_feature':
country = addressComponent['natural_feature']
newLocality['natural_feature'] = country
currentRowArg['natural_feature'] = country
# construct the locality items with a controlled order
localityList = ['country','stateProvince','county','municipality','park','path']
localityList = ['country','stateProvince','county','municipality','natural_feature','park','path']
localityItemList = []
for item in localityList:
newLocalityItem = newLocality.get(item, False)
Expand Down
Loading