Review: Needs Fixing
A few issues / questions. See in line.
Diff comments:
>
> === modified file 'openlp/core/projectors/editform.py'
> --- openlp/core/projectors/editform.py2017-12-29 09:15:48 +
> +++ openlp/core/projectors/editform.py2018-03-24 08:24:22 +
> @@ -58,10 +58,15 @@
> # IP Address
> self.ip_label = QtWidgets.QLabel(edit_projector_dialog)
> self.ip_label.setObjectName('projector_edit_ip_label')
> -self.ip_text = QtWidgets.QLineEdit(edit_projector_dialog)
> -self.ip_text.setObjectName('projector_edit_ip_text')
> +self.ip_text_edit = QtWidgets.QLineEdit(edit_projector_dialog)
> +self.ip_text_edit.setObjectName('projector_edit_ip_text')
> +self.ip_text_show = QtWidgets.QLabel(edit_projector_dialog)
append _label to the name please
> +self.ip_text_show.setObjectName('projector_show_ip_text')
> self.dialog_layout.addWidget(self.ip_label, 0, 0)
> -self.dialog_layout.addWidget(self.ip_text, 0, 1)
> +# For new projector, use edit widget
> +self.dialog_layout.addWidget(self.ip_text_edit, 0, 1)
> +# For edit projector, use show widget
> +self.dialog_layout.addWidget(self.ip_text_show, 0, 1)
> # Port number
> self.port_label = QtWidgets.QLabel(edit_projector_dialog)
> self.port_label.setObjectName('projector_edit_ip_label')
> @@ -187,7 +198,8 @@
>
>record=record.id)))
> valid = False
> return
> -adx = self.ip_text.text()
> +if self.new_projector:
'adx' will not be defined if this is False
> +adx = self.ip_text_edit.text()
> valid = verify_ip_address(adx)
> if valid:
> ip = self.projectordb.get_projector_by_ip(adx)
>
> === modified file 'openlp/core/projectors/pjlink.py'
> --- openlp/core/projectors/pjlink.py 2018-02-11 11:42:13 +
> +++ openlp/core/projectors/pjlink.py 2018-03-24 08:24:22 +
> @@ -973,45 +975,60 @@
> ip = self.ip
> log.debug('({ip}) get_data(ip="{ip_in}"
> buffer="{buff}"'.format(ip=self.entry.name, ip_in=ip, buff=buff))
> # NOTE: Class2 has changed to some values being UTF-8
> -data_in = decode(buff, 'utf-8')
> +if type(buff) is bytes:
I think isinstance(buff, bytes) is preferred.
> +data_in = decode(buff, 'utf-8')
> +else:
> +data_in = buff
> data = data_in.strip()
> +# log.debug('({ip}) get_data()
> data_in="{data}"'.format(ip=self.entry.name, data=data_in))
Is this temporary?
> # Initial packet checks
> if (len(data) < 7):
> self._trash_buffer(msg='get_data(): Invalid packet - length')
> return self.receive_data_signal()
> elif len(data) > self.max_size:
> -self._trash_buffer(msg='get_data(): Invalid packet - too long')
> +self._trash_buffer(msg='get_data(): Invalid packet - too long
> ({length} bytes)'.format(length=len(data)))
> return self.receive_data_signal()
> elif not data.startswith(PJLINK_PREFIX):
> self._trash_buffer(msg='get_data(): Invalid packet - PJLink
> prefix missing')
> return self.receive_data_signal()
> -elif '=' not in data:
> +elif data[6] != '=':
> self._trash_buffer(msg='get_data(): Invalid reply - Does not
> have "="')
> return self.receive_data_signal()
> log.debug('({ip}) get_data(): Checking new data
> "{data}"'.format(ip=self.entry.name, data=data))
> header, data = data.split('=')
> +log.debug('({ip}) get_data() header="{header}"
> data="{data}"'.format(ip=self.entry.name,
> +
> header=header, data=data))
> # At this point, the header should contain:
> # "PV"
> # Where:
> # P = PJLINK_PREFIX
> # V = PJLink class or version
> # C = PJLink command
> +version, cmd = header[1], header[2:].upper()
> +log.debug('({ip}) get_data() version="{version}"
> cmd="{cmd}"'.format(ip=self.entry.name,
> +
> version=version, cmd=cmd))
> +'''
Whats happening with this code here to .
> try:
> version, cmd = header[1], header[2:].upper()
> +log.debug('({ip}) get_data() version="{version}"
> cmd="{cmd}"'.format(ip=self.entry.name,
> +
> version=version, cmd=cmd))
> except ValueError as e:
> self.change_status(E_INVALID_DATA)
> log.warning('({ip}) get_data(): Received data:
>