Example #1
0
    def get_kanaria(self, create_if_not_exist=False):
        import os
        from pykintone.application_settings.view import View
        import pykintone.application_settings.form_field as ff
        from pykintone.structure_field import File

        app = None
        register = lambda a: self.register_application(a.app_id, Brain.MY_NAME, Brain.MY_USER_NAME)

        # get from database
        app = self.get_application_by_code(Brain.MY_USER_NAME)

        # check existence
        if not app:
            infos = self.service.administration().select_app_info(name=Brain.MY_NAME).infos
            if len(infos) > 0:
                app = self.service.app(infos[0].app_id)
                register(app)

        if not app and create_if_not_exist:
            app_id = ""
            with self.service.administration() as admin:
                # create application
                created = admin.create_application(Brain.MY_NAME)
                app_id = created.app_id

                # update general information
                icon = File.upload(os.path.join(os.path.dirname(__file__), "./static/icon.png"), admin)
                set_settings = admin.general_settings().update({
                    "icon": {
                        "type": "FILE",
                        "file": {
                            "fileKey": icon.file_key
                        }
                    }
                })

                # create form
                fields = [
                    ff.BaseFormField.create("SINGLE_LINE_TEXT", "subject", "Subject"),
                    ff.BaseFormField.create("MULTI_LINE_TEXT", "body", "MessageBody"),
                    ff.BaseFormField.create("SINGLE_LINE_TEXT", "from_address", "From Address"),
                    ff.BaseFormField.create("SINGLE_LINE_TEXT", "to_address", "To Address"),
                    ff.BaseFormField.create("FILE", "attached_files", "Attached Files")
                ]
                add_fields = admin.form().add(fields)

                # create view
                view = View.create("LetterList", fields)
                add_views = admin.view().update(view)

                if set_settings.ok and add_fields.ok and add_views.ok:
                    admin._cached_changes = True
                else:
                    raise Exception("Error is occurred when creating kanaria application")

            app = self.service.app(app_id)
            register(app)

        return app
Example #2
0
def post(action):
    ks = kintoneInterface()
    app = ks.service.app(action.order.app_id)
    app_index = ks.get_application_index(app.app_id)
    letter = action.order.letter()
    analyzer = TextAnalyzer()

    # get form structure
    layouts = app.administration().form().get_layout(app.app_id).layouts
    fields = []
    for ly in layouts:
        fields += ly.fields
    data = analyzer.map_letter_to_field(letter, fields)

    # file field
    file_field = [f for f in fields if f.field_type == "FILE"]
    if len(file_field) > 0 and len(letter.attached_files) > 0:
        from pykintone.structure_field import File
        at = letter.attached_files[0]
        f = File.upload(at["content"], app, file_name=at["filename"])
        data[file_field[0].code] = {
            "value": [{
                "fileKey": f.file_key
            }]
        }

    result = app.create(data)
    return result, app_index
Example #3
0
def post(action):
    ks = kintoneInterface()
    app = ks.service.app(action.order.app_id)
    app_index = ks.get_application_index(app.app_id)
    letter = action.order.letter()
    analyzer = TextAnalyzer()

    # get form structure
    layouts = app.administration().form().get_layout(app.app_id).layouts
    fields = []
    for ly in layouts:
        fields += ly.fields
    data = analyzer.map_letter_to_field(letter, fields)

    # file field
    file_field = [f for f in fields if f.field_type == "FILE"]
    if len(file_field) > 0 and len(letter.attached_files) > 0:
        from pykintone.structure_field import File
        at = letter.attached_files[0]
        f = File.upload(at["content"], app, file_name=at["filename"])
        data[file_field[0].code] = {"value": [{"fileKey": f.file_key}]}

    result = app.create(data)
    return result, app_index
Example #4
0
    def get_kanaria(self, create_if_not_exist=False):
        import os
        from pykintone.application_settings.view import View
        import pykintone.application_settings.form_field as ff
        from pykintone.structure_field import File

        app = None
        register = lambda a: self.register_application(a.app_id, Brain.MY_NAME,
                                                       Brain.MY_USER_NAME)

        # get from database
        app = self.get_application_by_code(Brain.MY_USER_NAME)

        # check existence
        if not app:
            infos = self.service.administration().select_app_info(
                name=Brain.MY_NAME).infos
            if len(infos) > 0:
                app = self.service.app(infos[0].app_id)
                register(app)

        if not app and create_if_not_exist:
            app_id = ""
            with self.service.administration() as admin:
                # create application
                created = admin.create_application(Brain.MY_NAME)
                app_id = created.app_id

                # update general information
                icon = File.upload(
                    os.path.join(os.path.dirname(__file__),
                                 "./static/icon.png"), admin)
                set_settings = admin.general_settings().update({
                    "icon": {
                        "type": "FILE",
                        "file": {
                            "fileKey": icon.file_key
                        }
                    }
                })

                # create form
                fields = [
                    ff.BaseFormField.create("SINGLE_LINE_TEXT", "subject",
                                            "Subject"),
                    ff.BaseFormField.create("MULTI_LINE_TEXT", "body",
                                            "MessageBody"),
                    ff.BaseFormField.create("SINGLE_LINE_TEXT", "from_address",
                                            "From Address"),
                    ff.BaseFormField.create("SINGLE_LINE_TEXT", "to_address",
                                            "To Address"),
                    ff.BaseFormField.create("FILE", "attached_files",
                                            "Attached Files")
                ]
                add_fields = admin.form().add(fields)

                # create view
                view = View.create("LetterList", fields)
                add_views = admin.view().update(view)

                if set_settings.ok and add_fields.ok and add_views.ok:
                    admin._cached_changes = True
                else:
                    raise Exception(
                        "Error is occurred when creating kanaria application")

            app = self.service.app(app_id)
            register(app)

        return app