def test_duplicate(
    config,
    dbsession,
    get_csrf_request_with_db,
    company,
    user,
    full_expense_sheet,
    mk_expense_type,
):
    from autonomie.views.expenses.expense import ExpenseSheetDuplicateView
    config.add_route('/expenses/{id}', "/{id}")
    request = get_csrf_request_with_db(
        post={'month': '10', 'year': '2017', 'submit': 'submit'}
    )
    # https://github.com/CroissanceCommune/autonomie/issues/774
    mk_expense_type(label='KM', code='KM', amount=0.184, year=2017)

    request.context = full_expense_sheet
    view = ExpenseSheetDuplicateView(request)
    result = view.__call__()
    assert result.location != "/{id}".format(id=full_expense_sheet.id)

    from autonomie.models.expense.sheet import ExpenseSheet
    id = int(result.location[1:])
    new_sheet = ExpenseSheet.get(id)
    assert new_sheet.month == 10
    assert new_sheet.year == 2017
    assert new_sheet.company_id == company.id
    assert new_sheet.user_id == user.id
    assert len(new_sheet.lines) == len(full_expense_sheet.lines)
    assert len(new_sheet.kmlines) == len(full_expense_sheet.kmlines)
Example #2
0
    def duplicate(self):
        """
        Duplicate an expense line to an existing ExpenseSheet
        """
        logger.info(u"Duplicate ExpenseKmLine")
        sheet_id = self.request.json_body.get('sheet_id')
        sheet = ExpenseSheet.get(sheet_id)

        if sheet is None:
            return RestError(["Wrong sheet_id"])

        if not self.request.has_permission('edit.expensesheet'):
            logger.error(u"Unauthorized action : possible break in attempt")
            raise HTTPForbidden()

        new_line = self.context.duplicate(sheet=sheet)
        if new_line.type_object is None:
            return RestError([
                u"Aucun type de frais kilométriques correspondant n'a pu être "
                u"retrouvé sur l'année {0}".format(sheet.year)
            ],
                             code=403)

        new_line.sheet_id = sheet.id
        self.request.dbsession.add(new_line)
        self.request.dbsession.flush()
        return new_line
Example #3
0
def test_duplicate(
    config,
    dbsession,
    get_csrf_request_with_db,
    company,
    user,
    full_expense_sheet,
):
    from autonomie.views.expenses.expense import ExpenseSheetDuplicateView
    config.add_route('/expenses/{id}', "/{id}")
    request = get_csrf_request_with_db(post={
        'month': '10',
        'year': '2017',
        'submit': 'submit'
    })
    request.context = full_expense_sheet
    view = ExpenseSheetDuplicateView(request)
    result = view.__call__()
    assert result.location != "/{id}".format(id=full_expense_sheet.id)

    from autonomie.models.expense.sheet import ExpenseSheet
    id = int(result.location[1:])
    new_sheet = ExpenseSheet.get(id)
    assert new_sheet.month == 10
    assert new_sheet.year == 2017
    assert new_sheet.company_id == company.id
    assert new_sheet.user_id == user.id
    assert len(new_sheet.lines) == len(full_expense_sheet.lines)
    assert len(new_sheet.kmlines) == len(full_expense_sheet.kmlines)
Example #4
0
    def duplicate(self):
        """
        Duplicate an expense line to an existing ExpenseSheet
        """
        logger.info(u"Duplicate ExpenseKmLine")
        sheet_id = self.request.json_body.get('sheet_id')
        sheet = ExpenseSheet.get(sheet_id)

        if sheet is None:
            return RestError(["Wrong sheet_id"])

        if not self.request.has_permission('edit.expensesheet'):
            logger.error(u"Unauthorized action : possible break in attempt")
            raise HTTPForbidden()

        new_line = self.context.duplicate(sheet=sheet)
        if new_line.type_object is None:
            return RestError([
                u"Aucun type de frais kilométriques correspondant n'a pu être "
                u"retrouvé sur l'année {0}".format(sheet.year)
            ], code=403)

        new_line.sheet_id = sheet.id
        self.request.dbsession.add(new_line)
        self.request.dbsession.flush()
        return new_line
Example #5
0
def test_duplicate(
    config,
    dbsession,
    get_csrf_request_with_db,
    company,
    user,
    full_expense_sheet,
    mk_expense_type,
):
    from autonomie.views.expenses.expense import ExpenseSheetDuplicateView
    config.add_route('/expenses/{id}', "/{id}")
    request = get_csrf_request_with_db(post={
        'month': '10',
        'year': '2017',
        'submit': 'submit'
    })
    # https://github.com/CroissanceCommune/autonomie/issues/774
    mk_expense_type(label='KM', code='KM', amount=0.184, year=2017)

    request.context = full_expense_sheet
    view = ExpenseSheetDuplicateView(request)
    result = view.__call__()
    assert result.location != "/{id}".format(id=full_expense_sheet.id)

    from autonomie.models.expense.sheet import ExpenseSheet
    id = int(result.location[1:])
    new_sheet = ExpenseSheet.get(id)
    assert new_sheet.month == 10
    assert new_sheet.year == 2017
    assert new_sheet.company_id == company.id
    assert new_sheet.user_id == user.id
    assert len(new_sheet.lines) == len(full_expense_sheet.lines)
    assert len(new_sheet.kmlines) == len(full_expense_sheet.kmlines)
Example #6
0
    def duplicate(self):
        """
        Duplicate an expense line to an existing ExpenseSheet
        """
        logger.info(u"Duplicate ExpenseLine")
        sheet_id = self.request.json_body.get('sheet_id')
        sheet = ExpenseSheet.get(sheet_id)

        if sheet is None:
            return RestError(["Wrong sheet_id"])

        if not self.request.has_permission('edit.expensesheet'):
            logger.error(u"Unauthorized action : possible break in attempt")
            raise HTTPForbidden()

        new_line = self.context.duplicate(sheet=sheet)
        new_line.sheet_id = sheet.id
        self.request.dbsession.add(new_line)
        self.request.dbsession.flush()
        return new_line
Example #7
0
    def duplicate(self):
        """
        Duplicate an expense line to an existing ExpenseSheet
        """
        logger.info(u"Duplicate ExpenseLine")
        sheet_id = self.request.json_body.get('sheet_id')
        sheet = ExpenseSheet.get(sheet_id)

        if sheet is None:
            return RestError(["Wrong sheet_id"])

        if not self.request.has_permission('edit.expensesheet'):
            logger.error(u"Unauthorized action : possible break in attempt")
            raise HTTPForbidden()

        new_line = self.context.duplicate(sheet=sheet)
        new_line.sheet_id = sheet.id
        self.request.dbsession.add(new_line)
        self.request.dbsession.flush()
        return new_line