コード例 #1
0
ファイル: Types.py プロジェクト: dio4/vista_1
 def toQDateTime(dt):
     if isinstance(dt, datetime.date):
         return QDateTime(Serializeable.toQDate(dt), QTime())
     elif isinstance(dt, datetime.datetime):
         return QDateTime(Serializeable.toQDate(dt),
                          QTime(dt.hour, dt.minute, dt.second))
     return QDateTime()
コード例 #2
0
ファイル: Types.py プロジェクト: dio4/vista_1
 def datetimeFromJSON(strDatetime):
     try:
         pyDT = datetime.datetime.strptime(
             strDatetime, "%Y-%m-%dT%H:%M:%S.%fZ") if strDatetime else None
     except ValueError:
         pyDT = datetime.datetime.strptime(
             strDatetime, "%Y-%m-%dT%H:%M:%SZ") if strDatetime else None
     return QDateTime(pyDT.year, pyDT.month, pyDT.day, pyDT.hour,
                      pyDT.minute, pyDT.second) if pyDT else QDateTime()
コード例 #3
0
    def testDateTimeWriteTabfile(self):
        """Check writing date and time fields to an MapInfo tabfile."""
        ml = QgsVectorLayer(
            ('Point?crs=epsg:4326&field=id:int&'
             'field=date_f:date&field=time_f:time&field=dt_f:datetime'),
            'test', 'memory')

        assert ml is not None, 'Provider not initialised'
        assert ml.isValid(), 'Source layer not valid'
        provider = ml.dataProvider()
        assert provider is not None

        ft = QgsFeature()
        ft.setGeometry(QgsGeometry.fromPoint(QgsPoint(10, 10)))
        ft.setAttributes([
            1,
            QDate(2014, 3, 5),
            QTime(13, 45, 22),
            QDateTime(QDate(2014, 3, 5), QTime(13, 45, 22))
        ])
        res, features = provider.addFeatures([ft])
        assert res
        assert len(features) > 0

        dest_file_name = os.path.join(str(QDir.tempPath()), 'datetime.tab')
        print(dest_file_name)
        crs = QgsCoordinateReferenceSystem()
        crs.createFromId(4326, QgsCoordinateReferenceSystem.EpsgCrsId)
        write_result = QgsVectorFileWriter.writeAsVectorFormat(
            ml, dest_file_name, 'utf-8', crs, 'MapInfo File')
        self.assertEqual(write_result, QgsVectorFileWriter.NoError)

        # Open result and check
        created_layer = QgsVectorLayer(u'{}|layerid=0'.format(dest_file_name),
                                       u'test', u'ogr')

        fields = created_layer.dataProvider().fields()
        self.assertEqual(
            fields.at(fields.indexFromName('date_f')).type(), QVariant.Date)
        self.assertEqual(
            fields.at(fields.indexFromName('time_f')).type(), QVariant.Time)
        self.assertEqual(
            fields.at(fields.indexFromName('dt_f')).type(), QVariant.DateTime)

        f = created_layer.getFeatures(QgsFeatureRequest()).next()

        date_idx = created_layer.fieldNameIndex('date_f')
        assert isinstance(f.attributes()[date_idx], QDate)
        self.assertEqual(f.attributes()[date_idx], QDate(2014, 3, 5))
        time_idx = created_layer.fieldNameIndex('time_f')
        assert isinstance(f.attributes()[time_idx], QTime)
        self.assertEqual(f.attributes()[time_idx], QTime(13, 45, 22))
        datetime_idx = created_layer.fieldNameIndex('dt_f')
        assert isinstance(f.attributes()[datetime_idx], QDateTime)
        self.assertEqual(f.attributes()[datetime_idx],
                         QDateTime(QDate(2014, 3, 5), QTime(13, 45, 22)))
コード例 #4
0
def forceDateTime(val):
    if isinstance(val, QVariant):
        return val.toDateTime()
    if isinstance(val, QDateTime):
        return val
    if isinstance(val, QDate):
        return QDateTime(val, QTime())
    if isinstance(val, QTime):
        return QDateTime(QDate(), val)
    if val is None:
        return QDateTime()
    return QDateTime(val)
コード例 #5
0
    def setvalue(self, value):
        strvalue = value
        if value in [None, "", NULL]:
            value = DateWidget.DEFAULTDATE
            self._is_valid = value.isValid()
        elif isinstance(value, basestring):
            value = QDateTime.fromString(strvalue, Qt.ISODate)
            if not value or (value and value.date().year() < 0):
                value = QDateTime.fromString(strvalue, Qt.SystemLocaleShortDate)

            self._is_valid = value.isValid()
            if not self._is_valid:
                raise ValueError("Unable to parse date string {}".format(strvalue))

        if isinstance(value, QDate):
            value = QDateTime(value)
            self._is_valid = value.isValid()

        if hasattr(self.datewidget, 'setDate'):
            self.datewidget.setDate(value.date())

        if hasattr(self.datewidget, 'setTime'):
            self.datewidget.setTime(value.time())

        self.set_date(value)
コード例 #6
0
    def __init__(self, parent=None):
        super(TSDateWidget, self).__init__(parent=parent)
        self.setupUi(self)
        self.setWindowTitle("TSAnalyzer - Date Tool")
        self.mjd = 51544.5
        self.julday = 2451545
        self.demical_year = 2000.0
        self.doy = "2000-001"
        self.date = datetime(2000, 1, 1, 12)
        self.dateEdit.setDateTime(QDateTime(2000, 1, 1, 12, 0))

        self.conversionButton.clicked.connect(self._click_conversionButton)
        self.ydEdit.setInputMask("9999-999")
        self.dyEdit.setInputMask("9999.9999")
        self.mjdEdit.setValue(51544.5)
        self.juldayEdit.setInputMask("9999999")
        self.gpsweekEdit.setInputMask("99999")

        self.radios = [
            self.dateRadio, self.mjdRadio, self.juldayRadio, self.dyRadio,
            self.ydRadio, self.gpsweekRadio
        ]
        self.edits = [
            self.dateEdit, self.mjdEdit, self.juldayEdit, self.dyEdit,
            self.ydEdit, self.gpsweekEdit
        ]
コード例 #7
0
 def dateTimeStart(self):
     """
     Returns a merging of data from the date end with the date start.
     
     :return     <QDateTime>
     """
     return QDateTime(self.dateStart(), self.timeStart())
コード例 #8
0
 def dateTimeEnd(self):
     """
     Returns a merging of data from the date end with the time end.
     
     :return     <QDateTime>
     """
     return QDateTime(self.dateEnd(), self.timeEnd())
コード例 #9
0
ファイル: relojConfig.py プロジェクト: SADyCUNGSIDEI/Software
    def setHoraEquipo(self):
        horaEquipoRaw = placaService.getDateTime()
        horaEquipo = QDateTime(horaEquipoRaw[0], horaEquipoRaw[1],
                               horaEquipoRaw[2], horaEquipoRaw[3],
                               horaEquipoRaw[4], horaEquipoRaw[5])

        self.dateTimeEdit.setDateTime(horaEquipo)
コード例 #10
0
    def testDateTimeTypes(self):
        vl = QgsVectorLayer(
            '%s table="qgis_test"."date_times" sql=' % (self.dbconn),
            "testdatetimes", "postgres")
        assert (vl.isValid())

        fields = vl.dataProvider().fields()
        self.assertEqual(
            fields.at(fields.indexFromName('date_field')).type(),
            QVariant.Date)
        self.assertEqual(
            fields.at(fields.indexFromName('time_field')).type(),
            QVariant.Time)
        self.assertEqual(
            fields.at(fields.indexFromName('datetime_field')).type(),
            QVariant.DateTime)

        f = vl.getFeatures(QgsFeatureRequest()).next()

        date_idx = vl.fieldNameIndex('date_field')
        assert isinstance(f.attributes()[date_idx], QDate)
        self.assertEqual(f.attributes()[date_idx], QDate(2004, 3, 4))
        time_idx = vl.fieldNameIndex('time_field')
        assert isinstance(f.attributes()[time_idx], QTime)
        self.assertEqual(f.attributes()[time_idx], QTime(13, 41, 52))
        datetime_idx = vl.fieldNameIndex('datetime_field')
        assert isinstance(f.attributes()[datetime_idx], QDateTime)
        self.assertEqual(f.attributes()[datetime_idx],
                         QDateTime(QDate(2004, 3, 4), QTime(13, 41, 52)))
コード例 #11
0
ファイル: RecipeEditDialog.py プロジェクト: dio4/vista_1
 def getRecord(self, record):
     dateTime = QDateTime(self.edtDate.date(), QTime().currentTime())
     record.setValue('dateTime', dateTime)
     i = self.cmbSocCodes.currentIndex()
     socCode = forceString(self.cmbSocCodes.itemData(i))
     record.setValue('socCode', socCode)
     pregCard = forceInt(self.edtPregCard.text())
     if pregCard > 0:
         record.setValue('pregCard', pregCard)
     else:
         record.setNull('pregCard')
     getRBComboBoxValue(self.cmbFinance, record, 'finance_id')
     record.setValue('mkb', toVariant(self.cmbMKB.text()))
     getRBComboBoxValue(self.cmbDrug, record, 'formularyItem_id')
     getLineEditValue(self.edtDosage, record, 'dosage')
     getSpinBoxValue(self.spbQnt, record, 'qnt')
     getLineEditValue(self.edtSigna, record, 'signa')
     getSpinBoxValue(self.spbDuration, record, 'duration')
     getSpinBoxValue(self.spbNumPerDay, record, 'numPerDay')
     record.setValue('isVk', int(self.rbtnVkYes.isChecked()))
     record.setValue('printMnn', int(self.rbtnPrintMNN.isChecked()))
     record.setValue('percentage',
                     int(50 if self.rbtn50proc.isChecked() else 100))
     getComboBoxValue(self.cmbTerm, record, 'term')
     record.setValue(
         'status',
         self.modelRecipeStatus.getCode(self.cmbStatus.currentIndex()))
     record.setValue('deleted', 0)
コード例 #12
0
    def getTimelineOptions(self, appdef):
        layers = appdef["Layers"]
        times = set()
        for layer in layers:
            if layer.timeInfo is not None:
                if isinstance(layer.timeInfo[0], basestring):
                    features = layer.layer.getFeatures()
                    for feature in features:
                        for field in layer.timeInfo:
                            try:
                                value = feature[field]
                                if isinstance(value, QDate):
                                    t = QDateTime()
                                    t.setDate(value)
                                else:
                                    t = QDateTime.fromString(
                                        unicode(value), Qt.ISODate)
                                if t.isValid():
                                    times.add(t.toMSecsSinceEpoch())
                            except:
                                pass
                else:
                    times.add(layer.timeInfo[0])
                    times.add(layer.timeInfo[1])

        if times:
            return [min(times), max(times)]
        else:
            return [0, 1]
コード例 #13
0
ファイル: talkeditor.py プロジェクト: riolowry/freeseer
    def add_talk(self):
        date = self.addTalkWidget.dateEdit.date()
        time = self.addTalkWidget.timeEdit.time()
        datetime = QDateTime(date, time)
        presentation = Presentation(
            unicode(self.addTalkWidget.titleLineEdit.text()),
            unicode(self.addTalkWidget.presenterLineEdit.text()),
            "",  # description
            "",  # level
            unicode(self.addTalkWidget.eventLineEdit.text()),
            unicode(self.addTalkWidget.roomLineEdit.text()),
            unicode(datetime.toString(Qt.ISODate)))

        # Do not add talks if they are empty strings
        if (len(presentation.title) == 0):
            return

        self.db.insert_presentation(presentation)

        # cleanup
        self.addTalkWidget.titleLineEdit.clear()
        self.addTalkWidget.presenterLineEdit.clear()

        self.presentationModel.select()

        self.hide_add_talk_widget()

        # If this is launched from the recording app
        # refresh the talk list
        if self.recordapp:
            self.recordapp.load_event_list()
コード例 #14
0
ファイル: reporteditor.py プロジェクト: bossjones/freeseer
    def add_talk(self):
        date = self.addTalkWidget.dateEdit.date()
        startTime = self.addTalkWidget.startTimeEdit.time()
        datetime = QDateTime(date,
                             startTime)  # original "time" is now "startTime"
        presentation = Presentation(
            unicode(self.addTalkWidget.titleLineEdit.text()),
            unicode(self.addTalkWidget.presenterLineEdit.text()),
            "",  # description
            "",  # level
            unicode(self.addTalkWidget.eventLineEdit.text()),
            unicode(self.addTalkWidget.roomLineEdit.text()),
            unicode(datetime.toString()),
            unicode(self.addTalkWidget.endTimeEdit.text()))

        # Do not add talks if they are empty strings
        if (len(presentation.title) == 0):
            return

        self.db.insert_presentation(presentation)

        # cleanup
        self.addTalkWidget.titleLineEdit.clear()
        self.addTalkWidget.presenterLineEdit.clear()

        self.failureModel.select()

        self.hide_add_talk_widget()
コード例 #15
0
def from_datetime(datetime):

    if datetime is not None:
        return QDateTime(datetime.year, datetime.month, datetime.day,
                         datetime.hour, datetime.minute)
    else:
        return QDateTime.currentDateTime()
コード例 #16
0
 def test_datetime_textbox_changed(self):
     gui = self.window.getGui()
     signal_mock = Mock()
     gui.signalCurrentTimeUpdated = signal_mock
     qdate = QDateTime(2010, 1, 1, 1, 2)
     gui.currentTimeChangedDateText(qdate)
     # assert that the signal was called with the correct datetime
     signal_mock.emit.assert_called_with(qdate)
コード例 #17
0
    def lastModified(self, path):
        fi = QFileInfo(path)
        if fi.exists():
            return fi.lastModified()
        else:
            err = 'No such file or directory'

        qDebug("FileSystem.lastModified - %s: '%s'" % (err, path))
        return QDateTime()
コード例 #18
0
    def _qgs_memory_layer(self, style, features=None):
        """ Create QgsVectorLayer with memory backend and load
        features into it """

        result = QgsVectorLayer(style.parent.geometry_type, None, 'memory')
        provider = result.dataProvider()

        # Setup layer fields
        fldmap = {}
        for fld in style.parent.fields:
            provider.addAttributes(
                [QgsField(fld.keyname, *FIELD_TYPE_TO_QGIS[fld.datatype])])
            fldmap[fld.keyname] = len(fldmap)
        qgsfields = provider.fields()
        result.updateFields()

        # Load style from qml file
        result.loadNamedStyle(self.env.file_storage.filename(
            style.qml_fileobj))

        # Disable read only flag when it was set via qml file
        result.setReadOnly(False)

        # Load features into layers if needed
        if features is not None:
            result.startEditing()

            for feat in features:
                qgsfeat = QgsFeature(qgsfields)
                fattrs = [None] * len(fldmap)
                for k, v in feat.fields.iteritems():
                    if v is None:
                        continue
                    elif isinstance(v, date):
                        v = QDate(v.year, v.month, v.day)
                    elif isinstance(v, time):
                        v = QTime(v.hour, v.minute, v.second)
                    elif isinstance(v, datetime):
                        v = QDateTime(v.year, v.month, v.day, v.hour, v.minute,
                                      v.second)
                    fattrs[fldmap[k]] = v
                qgsfeat.setAttributes(fattrs)

                # Method fromWkb() is much faster constructor fromWkt()
                # TODO: QGIS 3 have constructor fromWkb()
                qgsgeom = QgsGeometry()
                qgsgeom.fromWkb(feat.geom.wkb)
                qgsfeat.setGeometry(qgsgeom)

                result.addFeature(qgsfeat)

            result.commitChanges()

        result.setCrs(QgsCoordinateReferenceSystem(style.parent.srs.id))

        return result
コード例 #19
0
    def __init__(self):
        QARecord.__init__()
        self.Type = QARecordType.Session

        self.NULLDATE = QDateTime(QDate(2222, 2, 22), QTime(22, 22, 22, 22))
        self.dwgCreated = QDateTime()
        self.dwgSaved = QDateTime()
        self.dwgFileName = None
        self.dwgSizeOpened = 0
        self.dwgSizeClosed = 0
        self.tagName = None
        self.tagProject = None
        self.tagReason = None
        self.tagSection = None
        self.sessionType = None
        self.qaLastSaved = QDateTime()
        self.closed = QDateTime()
        self.correlation = None
        self.corrupted = None
コード例 #20
0
def convert_timestamp_to_qdatetime(timestamp):
    from PyQt4.QtCore import QDateTime
    from math import modf
    timestamp_frac, timestamp_whole = modf(timestamp)
    # Qt time
    qdatetime = QDateTime()
    qdatetime.setTime_t(int(timestamp_whole))
    qdatetime = qdatetime.addMSecs(int(timestamp_frac * 1000))
    #
    return qdatetime
コード例 #21
0
 def dateTimeAt(self, point):
     """
     Returns the date time at the inputed point.
     
     :param      point | <QPoint>
     """
     for dtime, data in self._dateTimeGrid.items():
         if (data[1].contains(point)):
             return QDateTime.fromTime_t(dtime)
     return QDateTime()
コード例 #22
0
ファイル: cinfkiosk.py プロジェクト: PenelopeJones/batteries
def tickStringsDate(self, values, scale, spacing):
    """Return HH:mm:ss strings from unixtime values"""
    # FIXME Change date format depending of min max value
    # FIXME Make better date locator
    out = []
    for value in values:
        t = QDateTime()
        t.setTime_t(value)
        out.append(t.toString('HH:mm:ss'))
    return out
コード例 #23
0
ファイル: test_gps.py プロジェクト: lmotta/Roam
def test_extact_rmc_handles_empty_values():
    gps = GPSService()
    msg = "$GNRMC,033523.00,V,,,,,,,270115,,,N*67"
    data = pynmea2.parse(msg)
    info = gps.extract_rmc(data)
    assert info.longitude == 0.0
    assert info.latitude == 0.0
    assert info.speed == 0.0
    assert info.status == "V"
    assert info.direction == 0
    assert info.utcDateTime == QDateTime(2015, 1, 27, 3, 35, 23, 0, Qt.UTC)
    msg = "$GPRMC,,V,,,,,,,,,,N*53"
    data = pynmea2.parse(msg)
    info = gps.extract_rmc(data)
    assert info.longitude == 0.0
    assert info.latitude == 0.0
    assert info.speed == 0.0
    assert info.status == "V"
    assert info.direction == 0
    assert info.utcDateTime == QDateTime(2015, 1, 27, 3, 35, 23, 0, Qt.UTC)
コード例 #24
0
ファイル: test_gps.py プロジェクト: lmotta/Roam
def test_extact_rmc_returns_correct_info():
    gps = GPSService()
    msg = "$GNRMC,033615.00,A,3157.10477,S,11549.42965,E,0.120,,270115,,,A*73"
    data = pynmea2.parse(msg)
    info = gps.extract_rmc(data)
    assert info.longitude == 115.8238275
    assert info.latitude == -31.951746166666666
    assert info.speed == 0.22224
    assert info.status == "A"
    assert info.direction == 0
    assert info.utcDateTime == QDateTime(2015, 1, 27, 3, 36, 15, 0, Qt.UTC)
コード例 #25
0
 def setEditorData(self, editor, index):
     """Overriding method setEditorData
     Model --> Editor"""
     value = self.get_value(index)
     if isinstance(editor, QLineEdit):
         if not isinstance(value, basestring):
             value = unicode(value)
         editor.setText(value)
     elif isinstance(editor, QDateEdit):
         editor.setDate(value)
     elif isinstance(editor, QDateTimeEdit):
         editor.setDateTime(QDateTime(value.date(), value.time()))
コード例 #26
0
 def on_searchButton_clicked(self):
     self.layer = self.layerComboManager.getLayer()
     pkeyName = primaryKey(self.layer)
     if self.layer is None or pkeyName is None:
         return
     self.loggedActionsTable.geomColumn = self.layer.hasGeometryType()
     featureId = int(self.featureEdit.text() or 0)
     searchBeforeDate = QDateTime()
     if self.searchBefore.isChecked():
         searchBeforeDate = self.searchAfterDate.dateTime()
     searchAfterDate = QDateTime()
     if self.searchAfter.isChecked():
         searchAfterDate = self.searchAfterDate.dateTime()
     self.buttonDisplayMode(True)
     self.results = self.logLayer.performSearch(self.layer, featureId, pkeyName,
                                                self.searchInserts.isChecked(), self.searchUpdates.isChecked(),
                                                self.searchDeletes.isChecked(), self.searchOnlyGeometry.isChecked(),
                                                searchAfterDate, searchBeforeDate)
     self.buttonDisplayMode(False)
     self.panShowGeometry.setEnabled(self.layer.hasGeometryType())
     self.displayLoggedActions()
コード例 #27
0
ファイル: EventRecipesPage.py プロジェクト: dio4/vista_1
    def on_actAdd_triggered(self):
        db = QtGui.qApp.db
        clientInfo = getClientInfo(self.clientId)
        if len(clientInfo.SNILS) == 0:
            QtGui.QMessageBox.warning(
                self, u'Внимание', u'У пациента не заполнен СНИЛС.\n'
                u'Укажите СНИЛС пациента в рег. карте.',
                QtGui.QMessageBox.Close)
            return
        if len(clientInfo.socStatuses) == 0:
            QtGui.QMessageBox.warning(self, u'Внимание',
                                      u'У пациента отсутствуют льготы.',
                                      QMessageBox.Close)
            return
        federalCode = forceString(
            db.translate('Person', 'id', self.personId, 'federalCode'))
        if len(federalCode) == 0:
            QtGui.QMessageBox.warning(
                self, u'Внимание',
                u'У ответственного за событие врача не указан федеральный код.',
                QMessageBox.Close)
            return

        record = self.tblItems.model().getEmptyRecord()
        record.setValue('dateTime', toVariant(QDateTime().currentDateTime()))
        try:
            record.setValue('percentage', toVariant(100))
            if self.mkb:
                record.setValue('mkb', toVariant(self.mkb))
            record.setValue('term', toVariant(2))
            record.setValue('printMnn', toVariant(1))

            context = CInfoContext()
            client, setPerson = self.getEventInfo(context)

            if len(client.socStatuses) == 0:
                raise Exception(u'В регистрационной карте не указаны льготы!')

            dlg = CRecipeEditDialog(self, client.socStatuses, client.id,
                                    setPerson.personId)
            dlg.setRecord(record)
            if dlg.exec_() == QDialog.Accepted:
                dlg.getRecord(record)
                recipeNumber = self.getRecipeNumber(record)
                record.setValue('number', recipeNumber)

                self.tblItems.model().addRecord(record)
                self.tblItems.model().reset()
                self.tblItems.setCurrentRow(self.tblItems.model().rowCount() -
                                            1)
        except Exception as ex:
            QtGui.QMessageBox.question(self, u'Внимание', ex.message,
                                       QMessageBox.Close)
コード例 #28
0
 def __init__(self, logFeature, featureLayer, pkeyName, geomColumn):
     self.featureLayer = featureLayer
     self.fields = featureLayer.dataProvider().fields()
     self.logFeature = QgsFeature(logFeature)
     self.geomColumn = geomColumn
     self.date = QDateTime().fromString(logFeature["action_tstamp_clk"],
                                        Qt.ISODate)
     print logFeature[
         "action_tstamp_clk"], self.date, self.date.toMSecsSinceEpoch()
     self.dateMs = self.date.toMSecsSinceEpoch()
     self.logData = self.logFeature["row_data"]
     self.layerFeatureId = int(self.getFieldValue(self.logData, pkeyName))
コード例 #29
0
 def log_table_entry(self, instance):
     """
     Ensure that only import are done once
     :return:
     """
     try:
         current_time = QDateTime()
         import_time = current_time.currentDateTime()
         log_entry = instance + ' '+ str(import_time.toPyDateTime())
         self.importlogger.log_action(log_entry)
     except IOError as io:
         self._notif_bar_str.insertErrorNotification(MSG + ": "+io.message)
         pass
コード例 #30
0
    def isDirty(self, *args):
        date = self.getSelectedDate()
        time = self.getSelectedTime()

        datetime = QDateTime(date, time)

        if self.mode == "Date":
            value = datetime.toString("ddd d MMM yyyy")
        elif self.mode == "Time":
            value = datetime.toString("h:m ap")
        else:
            value = datetime.toString("ddd d MMM yyyy 'at' h:m ap")

        self.label.setText(value)