def submit_change(self):
            sender = self.sender()
            self.cbindlned = {"column_1": self.lnedColumn1.text().strip(), "column_2": self.lnedColumn2.text().strip()}
            self.cbindini = ini.InputHandler(name="cbind", lnedentry=self.cbindlned)
            self.facade.input_register(self.cbindini)
            self.facade.create_log_record("cbind")
            self._log = self.facade._tablelog["cbind"]

            if self.previous_click is True:
                self.viewEdit = view.PandasTableModelEdit(None)
            else:
                pass

            try:
                self.cbindtable = hlp.cbind(self.facade._data, self.cbindlned["column_1"], self.cbindlned["column_2"])
            except Exception as e:
                print(str(e))
                self.error.showMessage("Could combine column values: " + str(e))

            hlp.write_column_to_log(self.cbindlned, self._log, "cbind")

            if sender is self.btnPreview:
                self.viewEdit.set_data(self.cbindtable)
                self.preview.tabviewPreview.setModel(self.viewEdit)
                self.preview.show()
            elif sender is self.btnSaveClose:
                self.facade._data = self.cbindtable
                self.update_data.emit("update")
                self.close()
    def submit_change(self):
        sender = self.sender()
        self.cbindlned = {
            'column_1': self.lnedColumn1.text().strip(),
            'column_2': self.lnedColumn2.text().strip()
        }
        self.cbindini = ini.InputHandler(name='cbind',
                                         lnedentry=self.cbindlned)
        self.facade.input_register(self.cbindini)
        self.facade.create_log_record('cbind')
        self._log = self.facade._tablelog['cbind']

        if self.previous_click is True:
            self.viewEdit = view.PandasTableModelEdit(None)
        else:
            pass

        try:
            self.cbindtable = hlp.cbind(self.facade._data,
                                        self.cbindlned['column_1'],
                                        self.cbindlned['column_2'])
        except Exception as e:
            print(str(e))
            self.error.showMessage('Could combine column values: ' + str(e))

        hlp.write_column_to_log(self.cbindlned, self._log, 'cbind')

        if sender is self.btnPreview:
            self.viewEdit.set_data(self.cbindtable)
            self.preview.tabviewPreview.setModel(self.viewEdit)
            self.preview.show()
        elif sender is self.btnSaveClose:
            self.facade._data = self.cbindtable
            self.update_data.emit('update')
            self.close()
Example #3
0
        def submit_change(self):
            sender = self.sender()
            self.widetolonglned = {
                'value_columns':
                hlp.string_to_list(self.lnedValuecolumns.text()),
                'datatype_name': self.cboxDatatypecolumn.currentText(),
                'panel_data': self.ckPaneldata.isChecked()
            }

            self.widetolongini = ini.InputHandler(
                name='widetolong', lnedentry=self.widetolonglned)
            self.facade.input_register(self.widetolongini)
            self.facade.create_log_record('widetolong')
            self._log = self.facade._tablelog['widetolong']

            try:
                if self.widetolonglned['panel_data'] is False:
                    self.widetolongtable = hlp.wide_to_long(
                        self.facade._data,
                        value_columns=self.widetolonglned['value_columns'],
                        value_column_name=self.widetolonglned['datatype_name'])
                else:
                    temp = self.facade._data.copy()
                    temp['id'] = temp.index
                    self.widetolongtable = wide_to_long(
                        temp,
                        self.widetolonglned['value_columns'],
                        i="id",
                        j=self.widetolonglned['datatype_name'])
                    self.widetolongtable[self.widetolonglned[
                        'datatype_name']] = self.widetolongtable.index.get_level_values(
                            self.widetolonglned['datatype_name'])
                    self.widetolongtable.reset_index(drop=True, inplace=True)
            except Exception as e:
                print(str(e))
                self.error.showMessage('Could not melt data: ', str(e))

            try:
                assert self.widetolonglned['datatype_name'] != 'NULL'
            except Exception as e:
                print(str(e))
                self.error.showMessage('Invalid datatype column: ' + str(e))
                return

            if sender is self.btnPreview:
                self.widetolongmodel = view.PandasTableModel(
                    self.widetolongtable)
                self.preview.tabviewPreview.setModel(self.widetolongmodel)
                self.preview.show()
            elif sender is self.btnSaveClose:
                hlp.write_column_to_log(self.widetolonglned, self._log,
                                        'widetolong')
                self.facade._data = self.widetolongtable
                self.update_data.emit('update')
                self.close()
 def changeHorizontalHeader(self, index):
     """ method to update data model when column headers
     are changed """
     oldHeader = self.facade._data.iloc[:, index].name
     newHeader, ok = QtGui.QInputDialog.getText(self, "Input", "New Column Label:")
     if ok:
         self.facade._data.rename(columns={oldHeader: newHeader}, inplace=True)
     self.facade.create_log_record("changecolumn")
     self._log = self.facade._tablelog["changecolumn"]
     hlp.write_column_to_log({"column_changes": {oldHeader: newHeader}}, self._log, "changecolumn")
     self.update_data_model("header_changes")
    def submit_change(self):
        sender = self.sender()
        self.covarlned['columns'] = hlp.string_to_list(
            self.lnedColumns.text()
        )

        self.covarini = ini.InputHandler(
            name='covarinfo', tablename='covartable',
            lnedentry=self.covarlned)

        self.facade.input_register(self.covarini)
        self.facade.create_log_record('covartable')
        self._log = self.facade._tablelog['covartable']

        if self.covarlned['columns'][0] == '':
            print('in pass')
            pass
        else:
            try:
                self.facade._data[self.covarlned['columns']]
            except Exception as e:
                print(str(e))
                self._log.debug(str(e))
                self.error.showMessage(
                    'Column names not valid: Check spacing ' +
                    'and headers.')
                raise ValueError('Column names are incorrect')

        try:
            self.covardata = ddf.DictionaryDataframe(
                self.facade._data, self.covarlned['columns']
            ).convert_records()
        except Exception as e:
            print(str(e))
            self._log.debug(str(e))
            self.error.showMessage('Could not concatenate columns')
            raise TypeError('Could not concatenate columns')

        self.facade.push_tables['covariates'] = self.covardata

        if sender is self.btnColumns:
            self.message.about(self, 'Status', 'Columns recorded')
        elif sender is self.btnPreview:
            self.covarmodel = views.PandasTableModelEdit(
                self.covardata)
            self.preview.tabviewPreview.setModel(self.covarmodel)
            self.preview.show()
        elif sender is self.btnSaveClose:
            hlp.write_column_to_log(
                self.covarlned, self._log, 'covartable')
            self.close()
Example #6
0
    def submit_change(self):
        sender = self.sender()
        self.replacevaluelned = {
            'column_name': self.lnedColumnname.text().strip(),
            'value_from': self.lnedFrom.text(),
            'value_to': self.lnedTo.text().strip(),
            'all_columns': self.ckAllcolumns.isChecked()
        }
        self.replacevalueini = ini.InputHandler(
            name='replacevalue', lnedentry=self.replacevaluelned)
        self.facade.input_register(self.replacevalueini)
        self.facade.create_log_record('replacevalue')
        self._log = self.facade._tablelog['replacevalue']

        if self.previous_click is True:
            self.viewEdit = view.PandasTableModelEdit(None)
        else:
            pass

        try:
            if self.replacevaluelned['all_columns'] is True:
                self.replacevaluetable = self.facade._data.replace({
                    self.replacevaluelned['value_from']:
                    self.replacevaluelned['value_to']
                })
            else:
                columntochange = self.replacevaluelned['column_name']
                assert (columntochange is not '') is True
                self.replacevaluetable = self.facade._data.replace({
                    columntochange: {
                        self.replacevaluelned['value_from']:
                        self.replacevaluelned['value_to']
                    }
                })
            self.previous_click = True
        except Exception as e:
            print(str(e))
            self.error.showMessage('Could not replace values: ' + str(e))

        hlp.write_column_to_log(self.replacevaluelned, self._log,
                                'replacevalue')

        if sender is self.btnPreview:
            self.viewEdit.set_data(self.replacevaluetable)
            self.preview.tabviewPreview.setModel(self.viewEdit)
            self.preview.show()
        elif sender is self.btnSaveClose:
            self.facade._data = self.replacevaluetable
            self.update_data.emit('replace_mod')
            self.close()
        def submit_change(self):
            sender = self.sender()

            self.obslned = OrderedDict((

            ))

            self.obsckbox = OrderedDict((

            ))

            available = [
                x for x,y in zip(
                    list(self.obslned.keys()), list(
                        self.obsckbox.values()))
                if y is False
            ]

            rawini = ini.InputHandler(
                name='rawinfo',
                tablename='rawtable',
                lnedentry= hlp.extract(self.obslned, available),
                checks=self.obsckbox)

            self.facade.input_register(rawini)
            self.facade.create_log_record('rawtable')
            self._log = self.facade._tablelog['rawtable']
            
            try:
                self.rawdirector = self.facade.make_table('rawinfo')
                assert self.rawdirector._availdf is not None

            except Exception as e:
                print(str(e))
                self._log.debug(str(e))
                self.error.showMessage(
                    'Column(s) not identified')
                raise AttributeError('Column(s) not identified')


            self.obstable = self.rawdirector._availdf.copy()
            self.obsmodel = self.viewEdit(self.obstable)
            if sender is self.btnPreview:
                self.preview.tabviewPreview.setModel(self.obsmodel)
                self.preview.show()
            elif sender is self.btnSaveClose:
                hlp.write_column_to_log(
                    self.obslned, self._log, 'rawtable')                
                self.close()
Example #8
0
 def changeHorizontalHeader(self, index):
     ''' method to update data model when column headers
     are changed '''
     oldHeader = self.facade._data.iloc[:, index].name
     newHeader, ok = QtGui.QInputDialog.getText(self, 'Input',
                                                'New Column Label:')
     if ok:
         self.facade._data.rename(columns={oldHeader: newHeader},
                                  inplace=True)
     self.facade.create_log_record('changecolumn')
     self._log = self.facade._tablelog['changecolumn']
     hlp.write_column_to_log({'column_changes': {
         oldHeader: newHeader
     }}, self._log, 'changecolumn')
     self.update_data_model('header_changes')
        def submit_change(self):
            sender = self.sender()
            self.splitcolumnlned = {
                'column_name':
                self.lnedColumnname.text().strip(),
                'split_column_by':
                self.lnedSplitcolumnby.text()
            }
            print('split inputs: ', self.splitcolumnlned)
            self.splitcolumnini = ini.InputHandler(
                name='splitcolumn',
                lnedentry=self.splitcolumnlned
            )
            self.facade.input_register(self.splitcolumnini)
            self.facade.create_log_record('splitcolumn')
            self._log = self.facade._tablelog['splitcolumn']

            if self.previous_click is True:
                self.viewEdit = view.PandasTableModelEdit(None)
            else:
                pass

            try:
                self.splitcolumntable = hlp.split_column(
                    self.facade._data,
                    self.splitcolumnlned['column_name'],
                    self.splitcolumnlned['split_column_by']
                )
                self.previous_click = True
            except Exception as e:
                print(str(e))
                self.error.showMessage(
                    'Could split column: ' + str(e))

            hlp.write_column_to_log(
                self.splitcolumnlned, self._log, 'splitcolumn')

            if sender is self.btnPreview:
                self.viewEdit.set_data(
                    self.splitcolumntable)
                self.preview.tabviewPreview.setModel(
                    self.viewEdit)
                self.preview.show()
            elif sender is self.btnSaveClose:
                self.facade._data = self.splitcolumntable
                self.update_data.emit('update')
                self.close()
        def submit_change(self):
            sender = self.sender()
            self.widetolonglned = {
                'value_columns':
                hlp.string_to_list(self.lnedValuecolumns.text()),
                'datatype_name': self.cboxDatatypecolumn.currentText()
            }
            self.widetolongini = ini.InputHandler(
                name='widetolong',
                lnedentry=self.widetolonglned
            )
            self.facade.input_register(self.widetolongini)
            self.facade.create_log_record('widetolong')
            self._log = self.facade._tablelog['widetolong']

            try:
                self.widetolongtable = hlp.wide_to_long(
                    self.facade._data,
                    value_columns=self.widetolonglned['value_columns'],
                    value_column_name=self.widetolonglned['datatype_name']
                )
            except Exception as e:
                print(str(e))
                self.error.showMessage('Could not melt data: ', str(e))

            try:
                assert self.widetolonglned['datatype_name'] != 'NULL'
            except Exception as e:
                print(str(e))
                self.error.showMessage(
                    'Invalid datatype column: ' + str(e))
                return

            hlp.write_column_to_log(
                self.widetolonglned, self._log, 'widetolong')

            if sender is self.btnPreview:
                self.widetolongmodel = view.PandasTableModel(
                    self.widetolongtable)
                self.preview.tabviewPreview.setModel(
                    self.widetolongmodel)
                self.preview.show()
            elif sender is self.btnSaveClose:
                self.facade._data = self.widetolongtable
                self.update_data.emit('update')
                self.close()
    def submit_change(self):
        sender = self.sender()
        self.addsitecolumn = {
            'addsite': self.lnedAddsite.text()
        }

        # Input handler
        self.addsiteini = ini.InputHandler(
            name='addsite',
            lnedentry=self.addsitecolumn)
        self.facade.input_register(self.addsiteini)

        self.sitelabel = self.addsitecolumn['addsite']

        # Logger
        self.facade.create_log_record('addsite')
        self._log = self.facade._tablelog['addsite']            

        if sender is self.btnAddsite:
            try:
                self.facade._data['site_added'] = self.sitelabel
                self.message.about(self, 'Status', 'Site column added')
            except Exception as e:
                print(str(e))
                self._log.debug(str(e))
                self.error.showMessage(
                    'Could create column for sites: ' + str(e)
                )
                raise ValueError(
                    'Could create column for sites: ' + str(e)
                )
        if sender is self.btnSaveClose:
            hlp.write_column_to_log(
                self.addsitecolumn, self._log, 'addsite'
            )
            try:
                assert 'site_added' in self.facade._data.columns.values.tolist()
            except Exception as e:
                print(str(e))
                raise AttributeError(str(e))
                self.error.showMessage(
                    'Could not add site column: ' + str(e)
                )
            self.close()
        elif sender is self.btnCancel:
            self.close()
Example #12
0
    def submit_change(self):
        sender = self.sender()
        self.covarlned['columns'] = hlp.string_to_list(self.lnedColumns.text())

        self.covarini = ini.InputHandler(name='covarinfo',
                                         tablename='covartable',
                                         lnedentry=self.covarlned)

        self.facade.input_register(self.covarini)
        self.facade.create_log_record('covartable')
        self._log = self.facade._tablelog['covartable']

        if self.covarlned['columns'][0] == '':
            print('in pass')
            pass
        else:
            try:
                self.facade._data[self.covarlned['columns']]
            except Exception as e:
                print(str(e))
                self._log.debug(str(e))
                self.error.showMessage(
                    'Column names not valid: Check spacing ' + 'and headers.')
                raise ValueError('Column names are incorrect')

        try:
            self.covardata = ddf.DictionaryDataframe(
                self.facade._data,
                self.covarlned['columns']).convert_records()
        except Exception as e:
            print(str(e))
            self._log.debug(str(e))
            self.error.showMessage('Could not concatenate columns')
            raise TypeError('Could not concatenate columns')

        self.facade.push_tables['covariates'] = self.covardata

        if sender is self.btnColumns:
            self.message.about(self, 'Status', 'Columns recorded')
        elif sender is self.btnPreview:
            self.covarmodel = views.PandasTableModelEdit(self.covardata)
            self.preview.tabviewPreview.setModel(self.covarmodel)
            self.preview.show()
        elif sender is self.btnSaveClose:
            hlp.write_column_to_log(self.covarlned, self._log, 'covartable')
            self.close()
 def changeHorizontalHeader(self, index):
     ''' method to update data model when column headers
     are changed '''
     oldHeader = self.facade._data.iloc[:,index].name
     newHeader, ok = QtGui.QInputDialog.getText(
         self, 'Input', 'New Column Label:')
     if ok:
         self.facade._data.rename(
             columns={oldHeader:newHeader}, inplace=True)
     self.facade.create_log_record('changecolumn')
     self._log = self.facade._tablelog['changecolumn']
     hlp.write_column_to_log(
         {
             'column_changes':
             {
                 oldHeader: newHeader}
         },
         self._log, 'changecolumn'
     )
     self.update_data_model('header_changes')
Example #14
0
        def submit_change(self):
            sender = self.sender()

            self.obslned = OrderedDict(())

            self.obsckbox = OrderedDict(())

            available = [
                x for x, y in zip(list(self.obslned.keys()),
                                  list(self.obsckbox.values())) if y is False
            ]

            rawini = ini.InputHandler(name='rawinfo',
                                      tablename='rawtable',
                                      lnedentry=hlp.extract(
                                          self.obslned, available),
                                      checks=self.obsckbox)

            self.facade.input_register(rawini)
            self.facade.create_log_record('rawtable')
            self._log = self.facade._tablelog['rawtable']

            try:
                self.rawdirector = self.facade.make_table('rawinfo')
                assert self.rawdirector._availdf is not None

            except Exception as e:
                print(str(e))
                self._log.debug(str(e))
                self.error.showMessage('Column(s) not identified')
                raise AttributeError('Column(s) not identified')

            self.obstable = self.rawdirector._availdf.copy()
            self.obsmodel = self.viewEdit(self.obstable)
            if sender is self.btnPreview:
                self.preview.tabviewPreview.setModel(self.obsmodel)
                self.preview.show()
            elif sender is self.btnSaveClose:
                hlp.write_column_to_log(self.obslned, self._log, 'rawtable')
                self.close()
Example #15
0
        def submit_change(self):
            sender = self.sender()
            self.addsitecolumn = {'addsite': self.lnedAddsite.text()}

            # Input handler
            self.addsiteini = ini.InputHandler(name='addsite',
                                               lnedentry=self.addsitecolumn)
            self.facade.input_register(self.addsiteini)

            self.sitelabel = self.addsitecolumn['addsite']

            # Logger
            self.facade.create_log_record('addsite')
            self._log = self.facade._tablelog['addsite']

            if sender is self.btnAddsite:
                try:
                    self.facade._data['site_added'] = self.sitelabel
                    self.message.about(self, 'Status', 'Site column added')
                except Exception as e:
                    print(str(e))
                    self._log.debug(str(e))
                    self.error.showMessage('Could create column for sites: ' +
                                           str(e))
                    raise ValueError('Could create column for sites: ' +
                                     str(e))
            if sender is self.btnSaveClose:
                hlp.write_column_to_log(self.addsitecolumn, self._log,
                                        'addsite')
                try:
                    assert 'site_added' in self.facade._data.columns.values.tolist(
                    )
                except Exception as e:
                    print(str(e))
                    raise AttributeError(str(e))
                    self.error.showMessage('Could not add site column: ' +
                                           str(e))
                self.close()
            elif sender is self.btnCancel:
                self.close()
Example #16
0
        def submit_change(self):
            sender = self.sender()
            self.splitcolumnlned = {
                'column_name': self.lnedColumnname.text().strip(),
                'split_column_by': self.lnedSplitcolumnby.text()
            }
            print('split inputs: ', self.splitcolumnlned)
            self.splitcolumnini = ini.InputHandler(
                name='splitcolumn', lnedentry=self.splitcolumnlned)
            self.facade.input_register(self.splitcolumnini)
            self.facade.create_log_record('splitcolumn')
            self._log = self.facade._tablelog['splitcolumn']

            if self.previous_click is True:
                self.viewEdit = view.PandasTableModelEdit(None)
            else:
                pass

            try:
                self.splitcolumntable = hlp.split_column(
                    self.facade._data, self.splitcolumnlned['column_name'],
                    self.splitcolumnlned['split_column_by'])
                self.previous_click = True
            except Exception as e:
                print(str(e))
                self.error.showMessage('Could split column: ' + str(e))

            hlp.write_column_to_log(self.splitcolumnlned, self._log,
                                    'splitcolumn')

            if sender is self.btnPreview:
                self.viewEdit.set_data(self.splitcolumntable)
                self.preview.tabviewPreview.setModel(self.viewEdit)
                self.preview.show()
            elif sender is self.btnSaveClose:
                self.facade._data = self.splitcolumntable
                self.update_data.emit('update')
                self.close()
    def save_close(self):
        self.update_data()
        session = orm.Session()
        sitecheck = session.query(orm.Sitetable.siteid).order_by(
            orm.Sitetable.siteid)
        session.close()
        sitecheckdf = read_sql(sitecheck.statement, sitecheck.session.bind)
        changed_df = self.sitetablemodel.data(None, QtCore.Qt.UserRole)
        changed_site_list = changed_df['siteid'].values.tolist()

        if sitecheckdf is not None:
            if len(sitecheckdf) == 0:
                checker = True
            else:
                records_entered = sitecheckdf['siteid'].values.tolist()
                check = [
                    x for x in list(set(records_entered))
                    if x in changed_site_list
                ]
                checker = (len(check) == 0)
        else:
            checker = True

        if checker is True:
            pass
        else:
            self._log.debug('SiteId present under different LTER')
            self.error.showMessage('Site abbreviations already in database ' +
                                   'from an different LTER. Please modify ' +
                                   'site abbreviations.')
            raise AttributeError('SiteID already present under different LTER')

        self.save_data = self.sitetablemodel.data(None, QtCore.Qt.UserRole)

        # Updating  site levels
        self.facade.register_site_levels(self.facade._data[
            self.siteloc['siteid']].drop_duplicates().values.tolist())

        if len(self.save_data) == 0:
            self.save_data = self.save_data.append(
                DataFrame(
                    {
                        'siteid': 'NULL',
                        'lat': 'nan',
                        'lng': 'nan',
                        'descript': 'NULL'
                    },
                    index=[0]))
        else:
            pass

        lterid_df = hlp.produce_null_df(1, ['lterid'], len(self.save_data),
                                        self.lter)
        print(lterid_df)

        self.save_data = concat([self.save_data, lterid_df],
                                axis=1).reset_index(drop=True)
        print(self.save_data)
        self.facade.push_tables['sitetable'] = self.save_data

        hlp.write_column_to_log(self.sitelned, self._log, 'sitetable_c')

        oldsitetable = hlp.produce_null_df(
            len(self.save_data.columns),
            self.save_data.columns.values.tolist(), len(self.save_data), 'nan')
        hlp.updated_df_values(oldsitetable, self.save_data, self._log,
                              'sitetable')

        self.climatesite_unlocks.emit(self.facade._data)
        self._log.debug('facade site levels' +
                        ' '.join(self.facade._valueregister['sitelevels']))
        self.submit_change()
        self.close()
 def write_to_log(self, dict_obj):
     self.facade.create_log_record('changecell')
     self._log = self.facade._tablelog['changecell']
     hlp.write_column_to_log(
         dict_obj, self._log, 'changecell')
    def submit_change(self):
        sender = self.sender()
        self.replacevaluelned = {
            'column_name':
            self.lnedColumnname.text().strip(),
            'value_from':
            self.lnedFrom.text(),
            'value_to':
            self.lnedTo.text().strip(),
            'all_columns': self.ckAllcolumns.isChecked()
        }
        self.replacevalueini = ini.InputHandler(
            name='replacevalue',
            lnedentry=self.replacevaluelned
        )
        self.facade.input_register(self.replacevalueini)
        self.facade.create_log_record('replacevalue')
        self._log = self.facade._tablelog['replacevalue']

        if self.previous_click is True:
            self.viewEdit = view.PandasTableModelEdit(None)
        else:
            pass

        try:
            if self.replacevaluelned['all_columns'] is True:
                self.replacevaluetable = self.facade._data.replace(
                    {
                        self.replacevaluelned['value_from']:
                        self.replacevaluelned['value_to']
                    }
                )
            else:
                columntochange = self.replacevaluelned['column_name']
                assert (columntochange is not '') is True
                self.replacevaluetable = self.facade._data.replace(
                    {
                        columntochange: {
                            self.replacevaluelned['value_from']:
                            self.replacevaluelned['value_to']
                        }
                    }
                )
            self.previous_click = True
        except Exception as e:
            print(str(e))
            self.error.showMessage(
                'Could not replace values: ' + str(e))

        hlp.write_column_to_log(
            self.replacevaluelned, self._log, 'replacevalue')

        if sender is self.btnPreview:
            self.viewEdit.set_data(
                self.replacevaluetable)
            self.preview.tabviewPreview.setModel(
                self.viewEdit)
            self.preview.show()
        elif sender is self.btnSaveClose:
            self.facade._data = self.replacevaluetable
            self.update_data.emit('replace_mod')
            self.close()
    def submit_change(self):
        '''
        Method to get data from user form and make project table
        to upload
        '''
        sender = self.sender()
        self.form_entries = OrderedDict((
            ('samplingunits', self.dtype(
                self.lnedDatatypeunits.text() != '',
                self.lnedDatatypeunits.text(),
                None
            )),
            ('datatype', self.dtype(
                self.cboxDatatype.currentText() != '',
                self.cboxDatatype.currentText(),
                None
            )),
            ('structured_type_1', self.structure(
                self.ckStructure1.isChecked(),
                self.lnedStructure1.text(),
                self.lnedStructureunits1.text()
            )),
            ('structured_type_2', self.structure(
                self.ckStructure2.isChecked(),
                self.lnedStructure2.text(),
                self.lnedStructureunits2.text()
            )),
            ('structured_type_3', self.structure(
                self.ckStructure3.isChecked(),
                self.lnedStructure3.text(),
                self.lnedStructureunits3.text()
            )),
            ('samplefreq', self.sampfreq(
                self.cboxSamplingfrequency.currentText() != 'NULL',
                self.cboxSamplingfrequency.currentText(),
                None
            )),
            ('studytype', self.studytype(
                self.cboxStudytype.currentText() != 'NULL',
                self.cboxStudytype.currentText(),
                None
            )),
            ('community', self.community(
                True,
                (
                    'yes' if
                    self.rbtnCommunityyes.isChecked() is True
                    else 'no'
                ),
                None
            )),
            ('spatial_replication_level_1_extent', self.ext(
                self.ckSpatialextent1.isChecked(),
                self.lnedSpatialextent1.text(),
                self.lnedSpatialextentunits1.text()
            )),
            ('spatial_replication_level_2_extent', self.ext(
                self.ckSpatialextent2.isChecked(),
                self.lnedSpatialextent2.text(),
                self.lnedSpatialextentunits2.text()
            )),
            ('spatial_replication_level_3_extent', self.ext(
                self.ckSpatialextent3.isChecked(),
                self.lnedSpatialextent3.text(),
                self.lnedSpatialextentunits3.text()
            )),
            ('spatial_replication_level_4_extent', self.ext(
                self.ckSpatialextent4.isChecked(),
                self.lnedSpatialextent4.text(),
                self.lnedSpatialextentunits4.text()
            )),
            ('spatial_replication_level_5_extent', self.ext(
                self.ckSpatialextent5.isChecked(),
                self.lnedSpatialextent5.text(),
                self.lnedSpatialextentunits5.text()

            )),
            ('treatment_type_1', self.treatments(
                self.cboxTreatment1.currentText() != 'NULL',
                self.cboxTreatment1.currentText(),
                None
            )),
            ('treatment_type_2', self.treatments(
                self.cboxTreatment2.currentText() != 'NULL',
                self.cboxTreatment2.currentText(),
                None
            )),
            ('treatment_type_3', self.treatments(
                self.cboxTreatment3.currentText() != 'NULL',
                self.cboxTreatment3.currentText(),
                None
            )),
            ('control_group', self.treatments(
                self.ckControlgroup.isChecked(),
                self.lnedControlgroup.text(),
                None
            )),
            ('derived', self.derived(
                self.cboxDerived.currentText() != 'NULL',
                self.cboxDerived.currentText(),
                None
            )),
            ('authors', self.contacts(
                self.lnedAuthor.text() != '',
                self.lnedAuthor.text(),
                None
            )),
            ('authors_contact', self.contacts(
                self.lnedContact.text() != '',
                self.lnedContact.text(),
                None
            ))
        ))

        self.mainini = ini.InputHandler(
            name='maininfo', tablename='project_table',
            lnedentry=self.form_entries
        )

        self.facade.input_register(self.mainini)
        try:
            self.maindirector = self.facade.make_table('maininfo')
        except Exception as e:
            print(str(e))
            self.error.showMessage(str(e))
        self.facade.create_log_record('project_table')
        self._log = self.facade._tablelog['project_table']
        self.project_table = self.maindirector._availdf.copy()

        try:
            check_list = [
                'authors', 'authors_contact', 'studytype',
                'derived', 'community', 'samplefreq', 'datatype'
            ]
            record = None
            for i, item in enumerate(check_list):
                print(item, ': ', self.form_entries[item].entry)
                record = item
                assert (
                    self.form_entries[item].entry != 'NULL') is True

                assert (
                    self.form_entries[item].entry != '') is True

            if sender is self.btnPreview:
                self.mainmodel = self.viewEdit(self.project_table)
                self.preview.tabviewPreview.setModel(self.mainmodel)
                self.preview.show()
                return
            else:
                pass
            self.facade.push_tables['project_table'] = self.project_table
            self._log.debug(
                'project_table mod: ' +
                ' '.join(self.project_table.columns.values.tolist()))

            orm.convert_types(self.project_table, orm.project_types)
            hlp.write_column_to_log(
                self.form_entries, self._log, 'project_table')
            self.close()

        except Exception as e:
            print(str(e))
            self.error.showMessage(
                'Invalid entry: ' + record
            )
Example #21
0
 def write_to_log(self, dict_obj):
     self.facade.create_log_record('changecell')
     self._log = self.facade._tablelog['changecell']
     hlp.write_column_to_log(dict_obj, self._log, 'changecell')
        def submit_change(self):
            sender = self.sender()
            self.timelned = {
                "dayname": self.lnedDay.text(),
                "dayform": self.cboxDay.currentText(),
                "monthname": self.lnedMonth.text(),
                "monthform": self.cboxMonth.currentText(),
                "yearname": self.lnedYear.text(),
                "yearform": self.cboxYear.currentText(),
                "jd": self.ckJulian.isChecked(),
                "hms": self.ckMonthSpelling.isChecked(),
            }
            print("dict: ", self.timelned)
            for i, item in enumerate(self.timelned.values()):
                print("dict values: ", list(self.timelned.keys())[i], item)

            # Input handler
            self.timeini = ini.InputHandler(name="timeinfo", tablename="timetable", lnedentry=self.timelned)
            self.facade.input_register(self.timeini)

            # Initiating time parser class
            self.timetable = tmpa.TimeParse(self.facade._data, self.timelned)

            # Logger
            self.facade.create_log_record("timetable")
            self._log = self.facade._tablelog["timetable"]

            try:
                # Calling formater method
                timeview = self.timetable.formater().copy()
                timeview_og_col = timeview.columns.values.tolist()
                timeview.columns = [x + "_derived" for x in timeview_og_col]
                timeview = concat([timeview, self.facade._data], axis=1)
                print("timeview first try:", timeview)

            except Exception as e:
                print(str(e))
                self._log.debug(str(e))
                self.error.showMessage("Could not format dates - " + "Check entries for errors")
                raise ValueError("Could not format dates - " + "Check entries for errors")
            self.facade._valueregister["sitelevels"]

            if sender is self.btnPreview:
                timeview = timeview.applymap(str)
                self.timemodel = self.viewEdit(timeview)
                self.preview.tabviewPreview.setModel(self.timemodel)
                self.preview.show()

            elif sender is self.btnSaveClose:
                hlp.write_column_to_log(self.timelned, self._log, "timetable")
                try:
                    timeview.loc[1, "day_derived"] = to_numeric(timeview["day_derived"])
                    timeview["month_derived"] = to_numeric(timeview["month_derived"])
                    timeview["year_derived"] = to_numeric(timeview["year_derived"])
                except Exception as e:
                    print(str(e))
                    pass

                try:
                    self.facade.push_tables["timetable"] = timeview
                except Exception as e:
                    print(str(e))

                try:
                    assert timeview is not None
                except Exception as e:
                    print(str(e))
                    self._log.debug(str(e))
                    self.error.showMessage("Could not convert data to integers")
                    raise TypeError("Could not convert data to integers")
                self.close()
    def submit_change(self):
        sender = self.sender()
        self.timelned = {
            'dayname': self.lnedDay.text(),
            'dayform': self.cboxDay.currentText(),
            'monthname': self.lnedMonth.text(),
            'monthform': self.cboxMonth.currentText(),
            'yearname': self.lnedYear.text(),
            'yearform': self.cboxYear.currentText(),
            'jd': self.ckJulian.isChecked(),
            'hms': self.ckMonthSpelling.isChecked()
        }
        print('dict: ', self.timelned)
        for i, item in enumerate(self.timelned.values()):
            print('dict values: ', list(self.timelned.keys())[i], item)

        # Input handler
        self.timeini = ini.InputHandler(name='timeinfo',
                                        tablename='timetable',
                                        lnedentry=self.timelned)
        self.facade.input_register(self.timeini)

        # Initiating time parser class
        self.timetable = tmpa.TimeParse(self.facade._data, self.timelned)

        # Logger
        self.facade.create_log_record('timetable')
        self._log = self.facade._tablelog['timetable']

        try:
            # Calling formater method
            timeview = self.timetable.formater().copy()
            timeview_og_col = timeview.columns.values.tolist()
            timeview.columns = [x + '_derived' for x in timeview_og_col]
            timeview = concat([timeview, self.facade._data], axis=1)
        except Exception as e:
            print(str(e))
            self._log.debug(str(e))
            self.error.showMessage('Could not format dates - ' +
                                   'Check entries for errors')
            raise ValueError('Could not format dates - ' +
                             'Check entries for errors')
        self.facade._valueregister['sitelevels']

        if sender is self.btnPreview:
            timeview = timeview.applymap(str)
            self.timemodel = self.viewEdit(timeview)
            self.preview.tabviewPreview.setModel(self.timemodel)
            self.preview.show()

        elif sender is self.btnSaveClose:
            hlp.write_column_to_log(self.timelned, self._log, 'timetable')
            try:
                timeview.loc[1, 'day_derived'] = to_numeric(
                    timeview['day_derived'])
                timeview['month_derived'] = to_numeric(
                    timeview['month_derived'])
                timeview['year_derived'] = to_numeric(timeview['year_derived'])
            except Exception as e:
                print(str(e))
                pass
            try:
                self.facade.push_tables['timetable'] = (timeview)
            except Exception as e:
                print(str(e))
            print('save block: ', timeview.columns)
            print('save block: ', timeview)

            try:
                assert timeview is not None
            except Exception as e:
                print(str(e))
                self._log.debug(str(e))
                self.error.showMessage('Could not convert data to integers')
                raise TypeError('Could not convert data to integers')
            self.close()
    def submit_change(self):
        '''
        Method to take user input for the taxa
        dialog box, pass the information to the user facade,
        create the taxa table, and then rename colums
        as necessary.
        '''
        sender = self.sender()
        self.taxalned = OrderedDict(
            (('common_name', self.lnedCommonname.text().strip()),
             ('sppcode', self.lnedSppCode.text().strip()),
             ('kingdom', self.lnedKingdom.text().strip()),
             ('subkingdom', self.lnedSubkingdom.text().strip()),
             ('infrakingdom', self.lnedInfrakingdom.text().strip()),
             ('superdivision', self.lnedSuperdivision.text().strip()),
             ('division', self.lnedDivision.text().strip()),
             ('subdivision', self.lnedSubdivision.text().strip()),
             ('superphylum', self.lnedSuperphylum.text().strip()),
             ('phylum', self.lnedPhylum.text().strip()),
             ('subphylum', self.lnedSubphylum.text().strip()),
             ('clss', self.lnedClass.text().strip()),
             ('subclass', self.lnedSubclass.text().strip()),
             ('ordr',
              self.lnedOrder.text().strip()), ('family',
                                               self.lnedFamily.text().strip()),
             ('genus',
              self.lnedGenus.text().strip()), ('species',
                                               self.lnedSpp.text().strip())))

        self.taxackbox = OrderedDict(
            (('common_name',
              self.ckCommonname.isChecked()), ('sppcode',
                                               self.ckSppCode.isChecked()),
             ('kingdom',
              self.ckKingdom.isChecked()), ('subkingdom',
                                            self.ckSubkingdom.isChecked()),
             ('infrakingdom', self.ckInfrakingdom.isChecked()),
             ('superdivision', self.ckSuperdivision.isChecked()),
             ('division',
              self.ckDivision.isChecked()), ('subdivision',
                                             self.ckSubdivision.isChecked()),
             ('superphylum', self.ckSuperphylum.isChecked()),
             ('phylum',
              self.ckPhylum.isChecked()), ('subphylum',
                                           self.ckSubphylum.isChecked()),
             ('clss', self.ckClass.isChecked()), ('subclass',
                                                  self.ckSubclass.isChecked()),
             ('ordr', self.ckOrder.isChecked()), ('family',
                                                  self.ckFamily.isChecked()),
             ('genus', self.ckGenus.isChecked()), ('species',
                                                   self.ckSpp.isChecked())))

        # NEED TO IMPLEMNT METHODS TO CREATE COLUMNS FROM
        # USER INPUT (should be easy) !!!!!!!!!
        self.taxacreate = {'taxacreate': self.ckCreateTaxa.isChecked()}

        self.available = [
            x for x, y in zip(list(self.taxalned.keys()),
                              list(self.taxackbox.values())) if y is True
        ]

        self.taxaini = ini.InputHandler(name='taxainfo',
                                        tablename='taxa_table',
                                        lnedentry=hlp.extract(
                                            self.taxalned, self.available),
                                        checks=self.taxacreate)
        self.facade.input_register(self.taxaini)
        self.facade.create_log_record('taxa_table')
        self._log = self.facade._tablelog['taxa_table']

        try:
            print('about to make taxa table')
            self.taxadirector = self.facade.make_table('taxainfo')
            assert self.taxadirector._availdf is not None

        except Exception as e:
            print(str(e))
            self._log.debug(str(e))
            self.error.showMessage('Column(s) not identified')
            raise AttributeError('Column(s) not identified: ' + str(e))

        self.taxa_table = self.taxadirector._availdf.copy()
        self.taxamodel = self.viewEdit(self.taxa_table)

        if sender is self.btnTaxasubmit:
            self.preview.tabviewPreview.setModel(self.taxamodel)
            self.preview.show()
        elif sender is self.btnSaveClose:
            # Convert to strings and strip
            #self.taxa_table = self.taxa_table.applymap(str)
            #self.taxa_table = self.taxa_table.applymap(lambda x: x.strip())

            self.facade.push_tables['taxa_table'] = self.taxa_table
            hlp.write_column_to_log(self.taxalned, self._log, 'taxa_table')
            self.saved = True
            self.close()
        def save_close(self):
            self.update_data()
            session = orm.Session()
            sitecheck = session.query(
                orm.Sitetable.siteid).order_by(
                    orm.Sitetable.siteid)
            session.close()
            sitecheckdf = read_sql(
                sitecheck.statement, sitecheck.session.bind)
            changed_df = self.sitetablemodel.data(
                None, QtCore.Qt.UserRole)
            changed_site_list = changed_df['siteid'].values.tolist()

            if sitecheckdf is not None:
                if len(sitecheckdf) == 0:
                   checker = True
                else:
                    records_entered = sitecheckdf[
                        'siteid'].values.tolist()
                    check = [
                        x for x in
                        list(set(records_entered)) if
                        x in changed_site_list]
                    checker = (len(check) == 0)
            else:
                checker = True

            if checker is True:
                pass
            else:
                self._log.debug('SiteId present under different LTER')
                self.error.showMessage(
                    'Site abbreviations already in database ' +
                    'from an different LTER. Please modify ' +
                    'site abbreviations.')
                raise AttributeError(
                    'SiteID already present under different LTER')

            self.save_data = self.sitetablemodel.data(
                None, QtCore.Qt.UserRole)

            # Updating  site levels
            self.facade.register_site_levels(
                self.facade._data[
                    self.siteloc[
                        'siteid']].drop_duplicates().values.tolist())

            if len(self.save_data) == 0:
                self.save_data= self.save_data.append(
                    DataFrame(
                        {
                            'siteid':'NULL',
                            'lat': 'nan',
                            'lng': 'nan',
                            'descript': 'NULL'
                        }, index=[0])
                )
            else:
                pass

            lterid_df = hlp.produce_null_df(
                1, ['lterid'], len(self.save_data), self.lter)
            print(lterid_df)

            self.save_data = concat(
                [self.save_data, lterid_df]
                , axis=1).reset_index(drop=True)
            print(self.save_data)
            self.facade.push_tables['sitetable'] = self.save_data

            hlp.write_column_to_log(
                self.sitelned, self._log, 'sitetable_c')

            oldsitetable = hlp.produce_null_df(
                len(self.save_data.columns),
                self.save_data.columns.values.tolist(),
                len(self.save_data),
                'nan'
            )
            hlp.updated_df_values(
                oldsitetable, self.save_data, self._log, 'sitetable'
            )

            self.climatesite_unlocks.emit(self.facade._data)
            self._log.debug(
                'facade site levels' +
                ' '.join(self.facade._valueregister['sitelevels']))
            self.submit_change()
            self.close()
    def save_close(self):
        '''
        Method to save the study_site_table as it is seen
        by the user (matching sites that were accepted by user 
        are removed from the saved table because it will be pushed)
        '''
        update_message = QtGui.QMessageBox.question(
            self,'Message', 'Did you update records?',
            QtGui.QMessageBox.Yes, QtGui.QMessageBox.No)
        if update_message == QtGui.QMessageBox.No:
            return
        else:
            pass

        # Retrieve study_site_table data from user view
        save_data = self.sitetablemodel.data(
            None, QtCore.Qt.UserRole)
        self.save_data = save_data.drop_duplicates()
        print('saved data (initial): ', self.save_data)
        self.facade.register_site_levels(
            self.facade._data[
                self.siteloc[
                    'study_site_key']].drop_duplicates().values.tolist())

        # If there are no site because they are already
        # in the database then create an empty dataframe
        if len(self.save_data) == 0:
            self.save_data= self.save_data.append(
                DataFrame(
                    {
                        'study_site_key':'NULL',
                        'lat_study_site': 'nan',
                        'lng_study_site': 'nan',
                        'descript': 'NULL'
                    }, index=[0])
            )
        else:
            pass

        # Append dataframe with current LTER 
        lterid_df = hlp.produce_null_df(
            1, ['lter_table_fkey'], len(self.save_data), self.lter)
        print(lterid_df)
        self.save_data = concat(
            [self.save_data, lterid_df]
            , axis=1).reset_index(drop=True)
        #Convert types and strip stings
        numeric_cols = ['lat_study_site', 'lng_study_site']
        self.save_data[
            self.save_data.columns.difference(numeric_cols)] = self.save_data[
                self.save_data.columns.difference(numeric_cols)].applymap(str)
        self.save_data[
            self.save_data.columns.difference(numeric_cols)] = self.save_data[
                self.save_data.columns.difference(numeric_cols)].applymap(
                    lambda x: x.strip())
        self.save_data[numeric_cols] = to_numeric(
            self.save_data[numeric_cols], errors='coerce')


        print('Pushed dataset: ', self.save_data)
        self.facade.push_tables['study_site_table'] = self.save_data

        # Helpers to keep track of user changes to site names
        hlp.write_column_to_log(
            self.sitelned, self._log, 'sitetable_c')
        oldsitetable = hlp.produce_null_df(
            len(self.save_data.columns),
            self.save_data.columns.values.tolist(),
            len(self.save_data),
            'nan'
        )
        hlp.updated_df_values(
            oldsitetable, self.save_data, self._log, 'sitetable'
        )

        # Signal to confim this form has been completed and
        # user can move on to other tables
        self.site_unlocks.emit('study_site_mod')
        site_unsorted = self.facade._data[
            self.siteloc[
                'study_site_key']].drop_duplicates().values.tolist()
        site_unsorted.sort()
        self.sitelevels = site_unsorted
        self._log.debug(
            'facade site levels' +
            ' '.join(self.facade._valueregister['sitelevels']))
        self._log.debug(
            'sitelevels (Save Block): ' +
            ' '.join(self.sitelevels))

        self.saved.append(1)
        self.close()
    def save_close(self):
        '''
        Method to save the study_site_table as it is seen
        by the user (matching sites that were accepted by user 
        are removed from the saved table because it will be pushed)
        '''
        self.updated_from_query_matches = False

        # Retrieve study_site_table data from user view
        self.save_data = self.sitetablemodel.data(None, QtCore.Qt.UserRole)

        # If there are no site because they are already
        # in the database then create an empty dataframe
        if len(self.save_data) == 0:
            self.save_data = self.save_data.append(
                DataFrame(
                    {
                        'study_site_key': 'NULL',
                        'lat_study_site': 'nan',
                        'lng_study_site': 'nan',
                        'descript': 'NULL'
                    },
                    index=[0]))
        else:
            pass

        # Append dataframe with current LTER
        lterid_df = hlp.produce_null_df(1, ['lter_table_fkey'],
                                        len(self.save_data), self.lter)
        print(lterid_df)
        self.save_data = concat([self.save_data, lterid_df],
                                axis=1).reset_index(drop=True)

        #Convert types and strip stings
        numeric_cols = ['lat_study_site', 'lng_study_site']
        self.save_data[self.save_data.columns.difference(
            numeric_cols)] = self.save_data[self.save_data.columns.difference(
                numeric_cols)].applymap(str)
        self.save_data[self.save_data.columns.difference(
            numeric_cols)] = self.save_data[self.save_data.columns.difference(
                numeric_cols)].applymap(lambda x: x.strip())
        self.save_data[numeric_cols] = to_numeric(self.save_data[numeric_cols],
                                                  errors='coerce')

        print('Pushed dataset: ', self.save_data)
        self.facade.push_tables['study_site_table'] = self.save_data

        # Helpers to keep track of user changes to site names
        hlp.write_column_to_log(self.sitelned, self._log, 'sitetable_c')
        oldsitetable = hlp.produce_null_df(
            len(self.save_data.columns),
            self.save_data.columns.values.tolist(), len(self.save_data), 'nan')
        hlp.updated_df_values(oldsitetable, self.save_data, self._log,
                              'sitetable')

        # Signal to confim this form has been completed and
        # user can move on to other tables
        self.site_unlocks.emit(self.facade._data)
        self._log.debug('facade site levels' +
                        ' '.join(self.facade._valueregister['sitelevels']))
        self._log.debug(
            'sitelevels (Save Block): ' +
            ' '.join(self.save_data['study_site_key'].values.tolist()))
        self.close()
        def submit_change(self):
            '''
            Method to take user input for the taxa
            dialog box, pass the information to the user facade,
            create the taxa table, and then rename colums
            as necessary.
            '''
            sender = self.sender()
            self.taxalned = OrderedDict((
                ('common_name', self.lnedCommonname.text().strip()),
                ('sppcode', self.lnedSppCode.text().strip()),
                ('kingdom', self.lnedKingdom.text().strip()),
                ('subkingdom', self.lnedSubkingdom.text().strip()),
                ('infrakingdom', self.lnedInfrakingdom.text().strip()),
                ('superdivision', self.lnedSuperdivision.text().strip()),
                ('division', self.lnedDivision.text().strip()),
                ('subsubdivision', self.lnedSubdivision.text().strip()),
                ('superphylum', self.lnedSuperphylum.text().strip()),
                ('phylum', self.lnedPhylum.text().strip()),
                ('subphylum', self.lnedSubphylum.text().strip()),
                ('clss', self.lnedClass.text().strip()),
                ('subclass', self.lnedSubclass.text().strip()),
                ('ordr', self.lnedOrder.text().strip()),
                ('family', self.lnedFamily.text().strip()),
                ('genus', self.lnedGenus.text().strip()),
                ('species', self.lnedSpp.text().strip())
            ))

            self.taxackbox = OrderedDict((
                ('common_name', self.ckCommonname.isChecked()),
                ('sppcode', self.ckSppCode.isChecked()),
                ('kingdom', self.ckKingdom.isChecked()),
                ('subkingdom', self.ckSubkingdom.isChecked()),
                ('infrakingdom', self.ckInfrakingdom.isChecked()),
                ('superdivision', self.ckSuperdivision.isChecked()),
                ('division', self.ckDivision.isChecked()),
                ('subsubdivision', self.ckSubdivision.isChecked()),
                ('superphylum', self.ckSuperphylum.isChecked()),
                ('phylum', self.ckPhylum.isChecked()),
                ('subphylum', self.ckSubphylum.isChecked()),
                ('clss', self.ckClass.isChecked()),
                ('subclass', self.ckSubclass.isChecked()),
                ('ordr', self.ckOrder.isChecked()),
                ('family', self.ckFamily.isChecked()),
                ('genus', self.ckGenus.isChecked()),
                ('species', self.ckSpp.isChecked())
            ))

            # NEED TO IMPLEMNT METHODS TO CREATE COLUMNS FROM
            # USER INPUT (should be easy) !!!!!!!!!
            self.taxacreate = {
                'taxacreate': self.ckCreateTaxa.isChecked()
            }
            
            self.available = [
                x for x,y in zip(
                    list(self.taxalned.keys()), list(
                        self.taxackbox.values()))
                if y is True
            ]
            
            self.taxaini = ini.InputHandler(
                name='taxainfo',
                tablename='taxa_table',
                lnedentry=hlp.extract(self.taxalned, self.available),
                checks=self.taxacreate
            )
            self.facade.input_register(self.taxaini)
            self.facade.create_log_record('taxa_table')
            self._log = self.facade._tablelog['taxa_table']

            try:
                print('about to make taxa table')
                self.taxadirector = self.facade.make_table(
                    'taxainfo')
                assert self.taxadirector._availdf is not None

            except Exception as e:
                print(str(e))
                self._log.debug(str(e))
                self.error.showMessage(
                    'Column(s) not identified')
                raise AttributeError(
                    'Column(s) not identified: ' + str(e))

            self.taxa_table = self.taxadirector._availdf.copy()
            self.taxamodel = self.viewEdit(self.taxa_table)
            
            if sender is self.btnTaxasubmit:
                self.preview.tabviewPreview.setModel(self.taxamodel)
                self.preview.show()
            elif sender is self.btnSaveClose:
                # Convert to strings and strip -- not using, screws up
                # matching down the line
                #self.taxa_table = self.taxa_table.applymap(str)
                #self.taxa_table = self.taxa_table.applymap(lambda x: x.strip())

                self.facade.push_tables['taxa_table'] = self.taxa_table
                hlp.write_column_to_log(
                    self.taxalned, self._log, 'taxa_table')
                self.saved = True
                self.close()
        def submit_change(self):
            sender = self.sender()
            self.obslned = OrderedDict((
                ('spatial_replication_level_2', self.lnedRep2.text()),
                ('spatial_replication_level_3', self.lnedRep3.text()),
                ('spatial_replication_level_4', self.lnedRep4.text()),
                ('spatial_replication_level_5', self.lnedRep5.text()),
                ('structured_type_1', self.lnedStructure1.text()),
                ('structured_type_2', self.lnedStructure2.text()),
                ('structured_type_3', self.lnedStructure3.text()),
                ('treatment_type_1', self.lnedTreatment1.text()),
                ('treatment_type_2', self.lnedTreatment2.text()),
                ('treatment_type_3', self.lnedTreatment3.text()),
                ('unitobs', self.lnedRaw.text())
            ))

            self.obsckbox = OrderedDict((
                ('spatial_replication_level_2', self.ckRep2.isChecked()),
                ('spatial_replication_level_3', self.ckRep3.isChecked()),
                ('spatial_replication_level_4', self.ckRep4.isChecked()),
                ('spatial_replication_level_5', self.ckRep5.isChecked()),
                ('structured_type_1', self.ckStructure1.isChecked()),
                ('structured_type_2', self.ckStructure2.isChecked()),
                ('structured_type_3', self.ckStructure3.isChecked()),
                ('treatment_type_1', self.ckTreatment1.isChecked()),
                ('treatment_type_2', self.ckTreatment2.isChecked()),
                ('treatment_type_3', self.ckTreatment3.isChecked()),
                ('unitobs', True)
            ))
            self.table = {
                'count_table': self.rbtnCount.isChecked(),
                'biomass_table': self.rbtnBiomass.isChecked(),
                'density_table': self.rbtnDensity.isChecked(),
                'percent_cover_table': self.rbtnPercentcover.isChecked(),
                'individual_table': self.rbtnIndividual.isChecked() 
            }
            available = [
                x for x,y in zip(
                    list(self.obslned.keys()), list(
                        self.obsckbox.values()))
                if y is True
            ]
            try:
                self.tablename = [
                    x for x, y in
                    zip(list(self.table.keys()), list(self.table.values()))
                    if y is True
                ][0]
            except Exception as e:
                print(str(e))
                self.error.showMessage('Select data type')
            rawini = ini.InputHandler(
                name='rawinfo',
                tablename= self.tablename,
                lnedentry= hlp.extract(self.obslned, available),
                checks=self.obsckbox)

            self.facade.input_register(rawini)
            self.facade.create_log_record(self.tablename)
            self._log = self.facade._tablelog[self.tablename]

            try:
                self.rawdirector = self.facade.make_table('rawinfo')
                print('obs table build: ', self.rawdirector)
                assert self.rawdirector._availdf is not None

            except Exception as e:
                print(str(e))
                self._log.debug(str(e))
                self.error.showMessage(
                    'Column(s) not identified')
                raise AttributeError(
                    'Column(s) not identified: ' + str(e))

            self.obstable = self.rawdirector._availdf.copy()
            self.obsmodel = self.viewEdit(
                self.obstable)
            if sender is self.btnPreview:
                self.preview.tabviewPreview.setModel(self.obsmodel)
                self.preview.show()
            elif sender is self.btnSaveClose:
                self.facade.push_tables[self.tablename] = self.obstable
                hlp.write_column_to_log(
                    self.obslned, self._log, self.tablename)                
                self.close()
Example #30
0
    def submit_change(self):
        '''
        Method to get data from user form and make project table
        to upload
        '''
        sender = self.sender()
        self.form_entries = OrderedDict(
            (('samplingunits',
              self.dtype(self.lnedDatatypeunits.text() != '',
                         self.lnedDatatypeunits.text(), None)),
             ('datatype',
              self.dtype(self.cboxDatatype.currentText() != '',
                         self.cboxDatatype.currentText(),
                         None)), ('structured_type_1',
                                  self.structure(
                                      self.ckStructure1.isChecked(),
                                      self.lnedStructure1.text(),
                                      self.lnedStructureunits1.text())),
             ('structured_type_2',
              self.structure(self.ckStructure2.isChecked(),
                             self.lnedStructure2.text(),
                             self.lnedStructureunits2.text())),
             ('structured_type_3',
              self.structure(self.ckStructure3.isChecked(),
                             self.lnedStructure3.text(),
                             self.lnedStructureunits3.text())),
             ('structured_type_4',
              self.structure(self.ckStructure4.isChecked(),
                             self.lnedStructure4.text(),
                             self.lnedStructureunits4.text())),
             ('samplefreq',
              self.sampfreq(self.cboxSamplingfrequency.currentText() != 'NULL',
                            self.cboxSamplingfrequency.currentText(), None)),
             ('studytype',
              self.studytype(self.cboxStudytype.currentText() != 'NULL',
                             self.cboxStudytype.currentText(), None)),
             ('community',
              self.community(
                  True, ('yes' if self.rbtnCommunityyes.isChecked() is True
                         else 'no'),
                  None)), ('spatial_replication_level_1_extent',
                           self.ext(self.ckSpatialextent1.isChecked(),
                                    self.lnedSpatialextent1.text(),
                                    self.lnedSpatialextentunits1.text())),
             ('spatial_replication_level_2_extent',
              self.ext(self.ckSpatialextent2.isChecked(),
                       self.lnedSpatialextent2.text(),
                       self.lnedSpatialextentunits2.text())),
             ('spatial_replication_level_3_extent',
              self.ext(self.ckSpatialextent3.isChecked(),
                       self.lnedSpatialextent3.text(),
                       self.lnedSpatialextentunits3.text())),
             ('spatial_replication_level_4_extent',
              self.ext(self.ckSpatialextent4.isChecked(),
                       self.lnedSpatialextent4.text(),
                       self.lnedSpatialextentunits4.text())),
             ('spatial_replication_level_5_extent',
              self.ext(self.ckSpatialextent5.isChecked(),
                       self.lnedSpatialextent5.text(),
                       self.lnedSpatialextentunits5.text())),
             ('treatment_type_1',
              self.treatments(self.cboxTreatment1.currentText() != 'NULL',
                              self.cboxTreatment1.currentText(), None)),
             ('treatment_type_2',
              self.treatments(self.cboxTreatment2.currentText() != 'NULL',
                              self.cboxTreatment2.currentText(), None)),
             ('treatment_type_3',
              self.treatments(self.cboxTreatment3.currentText() != 'NULL',
                              self.cboxTreatment3.currentText(),
                              None)), ('control_group',
                                       self.treatments(
                                           self.ckControlgroup.isChecked(),
                                           self.lnedControlgroup.text(),
                                           None)),
             ('derived',
              self.derived(self.cboxDerived.currentText() != 'NULL',
                           self.cboxDerived.currentText(),
                           None)), ('authors',
                                    self.contacts(self.lnedAuthor.text() != '',
                                                  self.lnedAuthor.text(),
                                                  None)),
             ('authors_contact',
              self.contacts(self.lnedContact.text() != '',
                            self.lnedContact.text(), None))))

        self.mainini = ini.InputHandler(name='maininfo',
                                        tablename='project_table',
                                        lnedentry=self.form_entries)

        self.facade.input_register(self.mainini)
        try:
            self.maindirector = self.facade.make_table('maininfo')
        except Exception as e:
            print(str(e))
            self.error.showMessage(str(e))
        self.facade.create_log_record('project_table')
        self._log = self.facade._tablelog['project_table']
        self.project_table = self.maindirector._availdf.copy()

        try:
            check_list = [
                'authors', 'authors_contact', 'studytype', 'derived',
                'community', 'samplefreq', 'datatype'
            ]
            record = None
            for i, item in enumerate(check_list):
                print(item, ': ', self.form_entries[item].entry)
                record = item
                assert (self.form_entries[item].entry != 'NULL') is True

                assert (self.form_entries[item].entry != '') is True

            if sender is self.btnPreview:
                self.mainmodel = self.viewEdit(self.project_table)
                self.preview.tabviewPreview.setModel(self.mainmodel)
                self.preview.show()
                return
            else:
                pass
            self.facade.push_tables['project_table'] = self.project_table
            self._log.debug(
                'project_table mod: ' +
                ' '.join(self.project_table.columns.values.tolist()))

            orm.convert_types(self.project_table, orm.project_types)
            hlp.write_column_to_log(self.form_entries, self._log,
                                    'project_table')
            self.close()

        except Exception as e:
            print(str(e))
            self.error.showMessage('Invalid entry: ' + record)
    def submit_change(self):
        sender = self.sender()
        self.obslned = OrderedDict(
            (('spatial_replication_level_2',
              self.lnedRep2.text()), ('spatial_replication_level_3',
                                      self.lnedRep3.text()),
             ('spatial_replication_level_4',
              self.lnedRep4.text()), ('spatial_replication_level_5',
                                      self.lnedRep5.text()),
             ('structure_type_1',
              self.lnedStructure1.text()), ('structure_type_2',
                                            self.lnedStructure2.text()),
             ('structure_type_3',
              self.lnedStructure3.text()), ('structure_type_4',
                                            self.lnedStructure4.text()),
             ('treatment_type_1',
              self.lnedTreatment1.text()), ('treatment_type_2',
                                            self.lnedTreatment2.text()),
             ('treatment_type_3',
              self.lnedTreatment3.text()), ('unitobs', self.lnedRaw.text())))

        self.obsckbox = OrderedDict(
            (('spatial_replication_level_2',
              self.ckRep2.isChecked()), ('spatial_replication_level_3',
                                         self.ckRep3.isChecked()),
             ('spatial_replication_level_4',
              self.ckRep4.isChecked()), ('spatial_replication_level_5',
                                         self.ckRep5.isChecked()),
             ('structure_type_1',
              self.ckStructure1.isChecked()), ('structure_type_2',
                                               self.ckStructure2.isChecked()),
             ('structure_type_3',
              self.ckStructure3.isChecked()), ('structure_type_4',
                                               self.ckStructure4.isChecked()),
             ('treatment_type_1',
              self.ckTreatment1.isChecked()), ('treatment_type_2',
                                               self.ckTreatment2.isChecked()),
             ('treatment_type_3', self.ckTreatment3.isChecked()), ('unitobs',
                                                                   True)))
        self.table = {
            'count_table': self.rbtnCount.isChecked(),
            'biomass_table': self.rbtnBiomass.isChecked(),
            'density_table': self.rbtnDensity.isChecked(),
            'percent_cover_table': self.rbtnPercentcover.isChecked(),
            'individual_table': self.rbtnIndividual.isChecked()
        }
        available = [
            x for x, y in zip(list(self.obslned.keys()),
                              list(self.obsckbox.values())) if y is True
        ]
        try:
            self.tablename = [
                x for x, y in zip(list(self.table.keys()),
                                  list(self.table.values())) if y is True
            ][0]
        except Exception as e:
            print(str(e))
            self.error.showMessage('Select data type')

        rawini = ini.InputHandler(name='rawinfo',
                                  tablename=self.tablename,
                                  lnedentry=hlp.extract(
                                      self.obslned, available),
                                  checks=self.obsckbox)

        self.facade.input_register(rawini)
        self.facade.create_log_record(self.tablename)
        self._log = self.facade._tablelog[self.tablename]

        try:
            self.rawdirector = self.facade.make_table('rawinfo')
            print('obs table build: ', self.rawdirector)
            assert self.rawdirector._availdf is not None

        except Exception as e:
            print(str(e))
            self._log.debug(str(e))
            self.error.showMessage('Column(s) not identified')
            raise AttributeError('Column(s) not identified: ' + str(e))

        self.obstable = self.rawdirector._availdf.copy()
        self.obsmodel = self.viewEdit(self.obstable)
        if sender is self.btnPreview:
            self.preview.tabviewPreview.setModel(self.obsmodel)
            self.preview.show()
        elif sender is self.btnSaveClose:
            self.facade.push_tables[self.tablename] = self.obstable
            hlp.write_column_to_log(self.obslned, self._log, self.tablename)
            self.close()
    def submit_change(self):
        sender = self.sender()
        self.timelned = {
            'dayname': self.lnedDay.text(),
            'dayform': self.cboxDay.currentText(),
            'monthname': self.lnedMonth.text(),
            'monthform': self.cboxMonth.currentText(),
            'yearname': self.lnedYear.text(),
            'yearform': self.cboxYear.currentText(),
            'jd': self.ckJulian.isChecked(),
            'hms': self.ckMonthSpelling.isChecked()
        }
        print('dict: ', self.timelned)
        for i, item in enumerate(self.timelned.values()):
            print('dict values: ', list(self.timelned.keys())[i], item)

        # Input handler
        self.timeini = ini.InputHandler(
            name='timeinfo', tablename='timetable',
            lnedentry=self.timelned)
        self.facade.input_register(self.timeini)

        # Initiating time parser class
        self.timetable = tmpa.TimeParse(
            self.facade._data, self.timelned)

        # Logger
        self.facade.create_log_record('timetable')
        self._log = self.facade._tablelog['timetable']

        try:
            # Calling formater method
            timeview = self.timetable.formater().copy()
            timeview_og_col = timeview.columns.values.tolist()
            timeview.columns = [
                x+'_derived' for x in timeview_og_col
            ]
            timeview = concat(
                [timeview, self.facade._data], axis=1)
        except Exception as e:
            print(str(e))
            self._log.debug(str(e))
            self.error.showMessage(
                'Could not format dates - ' +
                'Check entries for errors'
            )
            raise ValueError(
                'Could not format dates - ' +
                'Check entries for errors')
        self.facade._valueregister['sitelevels']

        if sender is self.btnPreview:
            timeview = timeview.applymap(str)
            self.timemodel = self.viewEdit(timeview)
            self.preview.tabviewPreview.setModel(self.timemodel)
            self.preview.show()

        elif sender is self.btnSaveClose:
            hlp.write_column_to_log(
                self.timelned, self._log, 'timetable'
            )
            try:
                timeview.loc[1, 'day_derived'] = to_numeric(
                    timeview['day_derived'])
                timeview['month_derived'] = to_numeric(
                    timeview['month_derived'])
                timeview['year_derived'] = to_numeric(
                    timeview['year_derived'])
            except Exception as e:
                print(str(e))
                pass
            try:
                self.facade.push_tables['timetable'] = (
                    timeview)
            except Exception as e:
                print(str(e))
            print('save block: ', timeview.columns)
            print('save block: ', timeview)

            try:
                assert timeview is not None
            except Exception as e:
                print(str(e))
                self._log.debug(str(e))
                self.error.showMessage(
                    'Could not convert data to integers')
                raise TypeError(
                    'Could not convert data to integers')
            self.close()