Esempio n. 1
0
 def save_fileinfo_to_db(username, file_id, content_type, file_length):
     """Save info about file into DB
     """
     user = User.get(User.username == username)
     File.create(filename=file_id,
                 type=content_type,
                 user=user,
                 length=file_length)
    def test__model__file__create(self):
        actual_result = File.create("my-device", "foo.bar", "super", "baz",
                                    False)

        self.assertEqual("my-device", actual_result.device)
        self.assertEqual("foo.bar", actual_result.filename)
        self.assertEqual("baz", actual_result.parent_dir_uuid)
        self.assertEqual(False, actual_result.is_directory)
        self.assertRegex(actual_result.uuid,
                         r"[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}")
        mock.wrapper.session.add.assert_called_with(actual_result)
        mock.wrapper.session.commit.assert_called_with()
Esempio n. 3
0
def create_file(data: dict, user: str, device: Device) -> dict:
    """
    Create a new file.
    :param data: The given data.
    :param user: The user uuid.
    :param device: The device of the file.
    :return: The response
    """

    filename: str = data["filename"]
    content: str = data["content"]
    is_directory: bool = data["is_directory"]
    parent_dir_uuid: str = data["parent_dir_uuid"]

    file_count: int = (wrapper.session.query(func.count(
        File.uuid)).filter_by(device=device.uuid,
                              filename=filename,
                              parent_dir_uuid=parent_dir_uuid).scalar())

    if file_count > 0:
        return file_already_exists

    parent_dir: File = (wrapper.session.query(File).filter_by(
        device=device.uuid, uuid=parent_dir_uuid, is_directory=True).first())
    if not parent_dir and parent_dir_uuid is not None:
        return parent_directory_not_found

    if is_directory and content != "":
        return directory_can_not_have_textcontent

    file: File = File.create(device.uuid, filename, content, parent_dir_uuid,
                             is_directory)

    m.contact_user(
        user,
        {
            "notify-id": "file-update",
            "origin": "create",
            "device_uuid": device.uuid,
            "data": {
                "created": [file.uuid],
                "deleted": [],
                "changed": []
            },
        },
    )

    return file.serialize
Esempio n. 4
0
def create(data: dict, user: str) -> dict:
    """
    Create a new file.
    :param data: The given data.
    :param user: The user uuid.
    :return: The response
    """
    device: Optional[Device] = wrapper.session.query(Device).filter_by(
        uuid=data['device_uuid']).first()

    if device is None:
        return invalid_device

    if not device.check_access(user):
        return permission_denied
    if 'filename' in data:
        filename: str = data['filename']
    else:
        return no_file_name
    if 'content' in data:
        content: str = data['content']
    else:
        return no_content

    file_count: int = wrapper.session.query(File).filter_by(
        device=device.uuid, filename=filename).count()

    if file_count > 0:
        return file_already_exists

    if len(filename) == 0:
        return empty_name_not_allowed

    if len(filename) > 64:
        return name_too_long

    if len(content) > CONTENT_LENGTH:
        return length_exceeded

    file: Optional[File] = File.create(device.uuid, filename, content)

    return file.serialize
 def test__model__device__create__different_uuid(self):
     first_element = File.create("device", "foo.bar", "super", "baz",
                                 False).uuid
     second_element = File.create("device", "foo.bar", "super", "baz",
                                  False).uuid
     self.assertNotEqual(first_element, second_element)
Esempio n. 6
0
 def add(cls, _id, kootaj, desc=''):
     obj = Model(kootaj=kootaj, desc=desc)
     obj.set_id(_id=_id)
     obj.create()