コード例 #1
0
ファイル: forms.py プロジェクト: socialdevices/manager
    def save(self):
        interface_code = self.cleaned_data['file'].read()
        parser = InterfaceParser()

        interface = parser.parse(interface_code)

        with transaction.commit_on_success():
            i = Interface(name=interface['interface_name'], interface_file=self.cleaned_data['file'])
            i.save()

            for method in interface['precondition_methods']:
                m = Method(name=method['method_name'], interface=i)
                m.save()

                for parameter in method['parameters']:
                    mp = MethodParameter(method=m, name=parameter)
                    mp.save()

            for trigger in interface['trigger_methods']:
                m = Method.objects.get(interface__name=interface['interface_name'], name=trigger)

                t = Trigger(method=m)
                t.save()

            # Send file to Mirri
            event_handler = EventHandler()
            try:
                client = MirriClient()
                client.upload_interface_file(interface['interface_name'], self.cleaned_data['file'])
            except (MirriConnectionError, MirriTimeoutError, MirriNotFoundError), e:
                logger.error('Interface file %s could not be posted to Mirri: %s' % (self.cleaned_data['file'].name, e))
                event_handler.add_event('Interface file %s could not be posted to Mirri: %s' % (self.cleaned_data['file'].name, e))
            else:
コード例 #2
0
ファイル: forms.py プロジェクト: socialdevices/manager
    def clean_file(self):
        file = self.cleaned_data['file']
        interface_code = file.read()
        file.seek(0)
        parser = InterfaceParser()

        interface = []
        try:
            interface = parser.parse(interface_code)
        except SyntaxError, e:
            raise forms.ValidationError('File %s contains syntax errors (line %s, col %s): %s' % (file.name, e.lineno, e.offset, e.text))