From f9bd95733b1d4780246a5007eb02eb9dff7ba5d8 Mon Sep 17 00:00:00 2001 From: Tanshu Date: Mon, 17 Dec 2012 15:08:12 +0530 Subject: [PATCH] Updated all (I think functions using try / catch to user the decorator. --- .../brewman/models/validation_exception.py | 17 ++++- brewman/brewman/views/account.py | 48 +++++------- brewman/brewman/views/attendance.py | 76 ++++++++----------- brewman/brewman/views/attendance_report.py | 33 ++++---- brewman/brewman/views/auth/client.py | 17 ++--- brewman/brewman/views/auth/group.py | 38 ++++------ brewman/brewman/views/auth/user.py | 52 +++++-------- brewman/brewman/views/cost_center.py | 32 +++----- brewman/brewman/views/employee.py | 62 +++++++-------- brewman/brewman/views/product.py | 59 ++++++-------- brewman/brewman/views/product_group.py | 42 +++++----- .../views/services/voucher/__init__.py | 19 ++--- .../views/services/voucher/save_voucher.py | 35 ++++----- .../views/services/voucher/update_voucher.py | 35 ++++----- 14 files changed, 240 insertions(+), 325 deletions(-) diff --git a/brewman/brewman/models/validation_exception.py b/brewman/brewman/models/validation_exception.py index c7c58e5c..1a922916 100644 --- a/brewman/brewman/models/validation_exception.py +++ b/brewman/brewman/models/validation_exception.py @@ -1,3 +1,6 @@ +from pyramid.response import Response +import transaction + class ValidationError(Exception): def __init__(self, message, Errors=None): self.message = message @@ -7,4 +10,16 @@ class ValidationError(Exception): # Now for your custom code... self.Errors = Errors def __str__(self): - return self.message \ No newline at end of file + return self.message + + +def TryCatchFunction(f): + def _decorator(self, *args, **kwargs): + try: + return f(self, *args, **kwargs) + except (ValidationError, ValueError, KeyError, AttributeError, TypeError) as ex: + transaction.abort() + response = Response("Failed validation: {0}".format(str(ex))) + response.status_int = 500 + return response + return _decorator diff --git a/brewman/brewman/views/account.py b/brewman/brewman/views/account.py index b1e0b78c..89b4469e 100644 --- a/brewman/brewman/views/account.py +++ b/brewman/brewman/views/account.py @@ -6,7 +6,7 @@ import transaction from brewman.models import DBSession from brewman.models.master import CostCenter, Ledger, LedgerType, LedgerBase -from brewman.models.validation_exception import ValidationError +from brewman.models.validation_exception import ValidationError, TryCatchFunction @view_config(route_name='account_list', renderer='brewman:templates/angular_base.mako', permission='Accounts') @view_config(request_method='GET', route_name='account_id', renderer='brewman:templates/angular_base.mako', @@ -18,39 +18,29 @@ def html(request): @view_config(request_method='POST', route_name='api_account', renderer='json', permission='Accounts') +@TryCatchFunction def save(request): - try: - item = Ledger(code=0, name=request.json_body['Name'], type=int(request.json_body['Type']), - is_active=request.json_body['IsActive'], is_reconcilable=request.json_body['IsReconcilable'], - costcenter_id=uuid.UUID(request.json_body['CostCenter']['CostCenterID'])).create() - transaction.commit() - return account_info(item.id) - except ValidationError as ex: - transaction.abort() - response = Response("Failed validation: {0}".format(ex.message)) - response.status_int = 500 - return response + item = Ledger(code=0, name=request.json_body['Name'], type=int(request.json_body['Type']), + is_active=request.json_body['IsActive'], is_reconcilable=request.json_body['IsReconcilable'], + costcenter_id=uuid.UUID(request.json_body['CostCenter']['CostCenterID'])).create() + transaction.commit() + return account_info(item.id) @view_config(request_method='POST', route_name='api_account_id', renderer='json', permission='Accounts') +@TryCatchFunction def update(request): - try: - item = Ledger.by_id(uuid.UUID(request.matchdict['id'])) - new_type = int(request.json_body['Type']) - if not item.type == new_type: - item.code = Ledger.get_code(new_type) - item.type = new_type - item.name = request.json_body['Name'] - item.is_active = request.json_body['IsActive'] - item.is_reconcilable = request.json_body['IsReconcilable'] - item.costcenter_id = uuid.UUID(request.json_body['CostCenter']['CostCenterID']) - transaction.commit() - return account_info(item.id) - except ValidationError as ex: - transaction.abort() - response = Response("Failed validation: {0}".format(ex.message)) - response.status_int = 500 - return response + item = Ledger.by_id(uuid.UUID(request.matchdict['id'])) + new_type = int(request.json_body['Type']) + if not item.type == new_type: + item.code = Ledger.get_code(new_type) + item.type = new_type + item.name = request.json_body['Name'] + item.is_active = request.json_body['IsActive'] + item.is_reconcilable = request.json_body['IsReconcilable'] + item.costcenter_id = uuid.UUID(request.json_body['CostCenter']['CostCenterID']) + transaction.commit() + return account_info(item.id) @view_config(request_method='DELETE', route_name='api_account_id', renderer='json', permission='Accounts') diff --git a/brewman/brewman/views/attendance.py b/brewman/brewman/views/attendance.py index 43b86bc6..6520e972 100644 --- a/brewman/brewman/views/attendance.py +++ b/brewman/brewman/views/attendance.py @@ -7,7 +7,7 @@ from sqlalchemy import or_ import transaction from brewman.models import DBSession from brewman.models.master import AttendanceType, Employee -from brewman.models.validation_exception import ValidationError +from brewman.models.validation_exception import ValidationError, TryCatchFunction from brewman.models.voucher import Attendance from brewman.views.fingerprint import get_prints from brewman.views.services.session import session_period_start, session_period_finish, session_current_date @@ -66,26 +66,21 @@ def attendance_date_report(date): @view_config(request_method='POST', route_name='api_attendance_date', renderer='json', permission='Attendance') +@TryCatchFunction def save(request): - try: - user_id = uuid.UUID(authenticated_userid(request)) - date = request.matchdict.get('date', None) - date_object = datetime.datetime.strptime(date, '%d-%b-%Y') + user_id = uuid.UUID(authenticated_userid(request)) + date = request.matchdict.get('date', None) + date_object = datetime.datetime.strptime(date, '%d-%b-%Y') - for item in request.json_body['Body']: - employee_id = uuid.UUID(item['id']) - attendance_type = item['AttendanceTypeID'] - if attendance_type != 0: - attendance = Attendance(employee_id=employee_id, date=date_object, attendance_type=attendance_type, - user_id=user_id) - attendance.create() - transaction.commit() - return attendance_date_report(date) - except ValidationError as ex: - transaction.abort() - response = Response("Failed validation: {0}".format(ex.message)) - response.status_int = 500 - return response + for item in request.json_body['Body']: + employee_id = uuid.UUID(item['id']) + attendance_type = item['AttendanceTypeID'] + if attendance_type != 0: + attendance = Attendance(employee_id=employee_id, date=date_object, attendance_type=attendance_type, + user_id=user_id) + attendance.create() + transaction.commit() + return attendance_date_report(date) @view_config(request_method='GET', route_name='api_employee_attendance', renderer='json', permission='Attendance') @@ -131,32 +126,27 @@ def employee_attendance(employee, start_date, finish_date): @view_config(request_method='POST', route_name='api_employee_attendance_id', renderer='json', permission='Attendance') +@TryCatchFunction def save_employee_attendance(request): - try: - start_date = None - finish_date = None - user_id = uuid.UUID(authenticated_userid(request)) - employee = Employee.by_id(uuid.UUID(request.matchdict['id'])) - for item in request.json_body['Body']: - if start_date is None: - start_date = item['Date'] - finish_date = item['Date'] + start_date = None + finish_date = None + user_id = uuid.UUID(authenticated_userid(request)) + employee = Employee.by_id(uuid.UUID(request.matchdict['id'])) + for item in request.json_body['Body']: + if start_date is None: + start_date = item['Date'] + finish_date = item['Date'] - attendance_type = item['AttendanceTypeID'] - if attendance_type != 0: - date = datetime.datetime.strptime(item['Date'], '%d-%b-%Y') - attendance = Attendance(employee_id=employee.id, date=date, attendance_type=attendance_type, - user_id=user_id) - attendance.create() - transaction.commit() - return {'StartDate': start_date, 'FinishDate': finish_date, - 'Employee': {'LedgerID': employee.id, 'Name': employee.name}, - 'Body': employee_attendance(employee, start_date, finish_date)} - except ValidationError as ex: - transaction.abort() - response = Response("Failed validation: {0}".format(ex.message)) - response.status_int = 500 - return response + attendance_type = item['AttendanceTypeID'] + if attendance_type != 0: + date = datetime.datetime.strptime(item['Date'], '%d-%b-%Y') + attendance = Attendance(employee_id=employee.id, date=date, attendance_type=attendance_type, + user_id=user_id) + attendance.create() + transaction.commit() + return {'StartDate': start_date, 'FinishDate': finish_date, + 'Employee': {'LedgerID': employee.id, 'Name': employee.name}, + 'Body': employee_attendance(employee, start_date, finish_date)} def daterange(start, stop, step=datetime.timedelta(days=1), inclusive=False): diff --git a/brewman/brewman/views/attendance_report.py b/brewman/brewman/views/attendance_report.py index 0c041c9a..11df22e0 100644 --- a/brewman/brewman/views/attendance_report.py +++ b/brewman/brewman/views/attendance_report.py @@ -9,7 +9,7 @@ import transaction from brewman.models import DBSession from brewman.models.auth import User from brewman.models.master import AttendanceType, Employee, Ledger -from brewman.models.validation_exception import ValidationError +from brewman.models.validation_exception import ValidationError, TryCatchFunction from brewman.models.voucher import Attendance, Voucher, VoucherType, Journal from brewman.views.attendance import daterange from brewman.views.services.session import session_period_start, session_period_finish, get_last_day, get_first_day @@ -55,26 +55,21 @@ def attendance_record(start_date, finish_date): @view_config(request_method='POST', route_name='api_credit_salary', renderer='json', permission='Attendance') +@TryCatchFunction def credit_salary(request): - try: - user = User.by_id(uuid.UUID(authenticated_userid(request))) - month = datetime.datetime.strptime(request.json_body['Month'], '%d-%b-%Y') + user = User.by_id(uuid.UUID(authenticated_userid(request))) + month = datetime.datetime.strptime(request.json_body['Month'], '%d-%b-%Y') - start_date = get_first_day(month) - finish_date = get_last_day(month) - voucher = Voucher(date=finish_date, narration='Auto Generated Salary Entry', user_id=user.id, - type=VoucherType.by_name('Journal'), posted=True, poster_id=user.id) - DBSession.add(voucher) - for item in salary_journals(start_date, finish_date): - voucher.journals.append(item) - DBSession.add(item) - transaction.commit() - return {'message': 'Salary Entry created'} - except ValidationError as ex: - transaction.abort() - response = Response("Failed validation: {0}".format(ex.message)) - response.status_int = 500 - return response + start_date = get_first_day(month) + finish_date = get_last_day(month) + voucher = Voucher(date=finish_date, narration='Auto Generated Salary Entry', user_id=user.id, + type=VoucherType.by_name('Journal'), posted=True, poster_id=user.id) + DBSession.add(voucher) + for item in salary_journals(start_date, finish_date): + voucher.journals.append(item) + DBSession.add(item) + transaction.commit() + return {'message': 'Salary Entry created'} def salary_journals(start_date, finish_date): diff --git a/brewman/brewman/views/auth/client.py b/brewman/brewman/views/auth/client.py index 6294434f..00723b68 100644 --- a/brewman/brewman/views/auth/client.py +++ b/brewman/brewman/views/auth/client.py @@ -5,7 +5,7 @@ from pyramid.view import view_config import transaction from brewman.models.auth import Client -from brewman.models.validation_exception import ValidationError +from brewman.models.validation_exception import ValidationError, TryCatchFunction @view_config(request_method='GET', route_name='client_list', renderer='brewman:templates/angular_base.mako', @@ -15,17 +15,12 @@ def html(request): @view_config(request_method='POST', route_name='api_client_id', renderer='json', permission='Clients') +@TryCatchFunction def update(request): - try: - item = Client.by_id(uuid.UUID(request.matchdict.get['id'])) - item.enabled = request.json_body['Enabled'] - transaction.commit() - return {} - except ValidationError as ex: - transaction.abort() - response = Response("Failed validation: {0}".format(ex.message)) - response.status_int = 500 - return response + item = Client.by_id(uuid.UUID(request.matchdict.get['id'])) + item.enabled = request.json_body['Enabled'] + transaction.commit() + return {} @view_config(request_method='GET', route_name='api_client', request_param='list', renderer='json', permission='Clients') diff --git a/brewman/brewman/views/auth/group.py b/brewman/brewman/views/auth/group.py index 2c094a93..f37844db 100644 --- a/brewman/brewman/views/auth/group.py +++ b/brewman/brewman/views/auth/group.py @@ -5,7 +5,7 @@ from pyramid.view import view_config import transaction from brewman.models import DBSession from brewman.models.auth import Group, Role -from brewman.models.validation_exception import ValidationError +from brewman.models.validation_exception import ValidationError, TryCatchFunction @view_config(route_name='group_list', renderer='brewman:templates/angular_base.mako', permission='Users') @view_config(request_method='GET', route_name='group_id', renderer='brewman:templates/angular_base.mako', @@ -17,34 +17,24 @@ def html(request): @view_config(request_method='POST', route_name='api_group', renderer='json', permission='Users') +@TryCatchFunction def save(request): - try: - group = Group(request.json_body['Name']) - DBSession.add(group) - add_permissions(group, request.json_body['Permissions']) - transaction.commit() - return group_info(group.id) - except ValidationError as ex: - transaction.abort() - response = Response("Failed validation: {0}".format(ex.message)) - response.status_int = 500 - return response + group = Group(request.json_body['Name']) + DBSession.add(group) + add_permissions(group, request.json_body['Permissions']) + transaction.commit() + return group_info(group.id) @view_config(request_method='POST', route_name='api_group_id', renderer='json', permission='Users') +@TryCatchFunction def update(request): - try: - id = request.matchdict.get('id', None) - group = Group.by_id(uuid.UUID(id)) - group.name = request.json_body['Name'] - add_permissions(group, request.json_body['Permissions']) - transaction.commit() - return group_info(group.id) - except ValidationError as ex: - transaction.abort() - response = Response("Failed validation: {0}".format(ex.message)) - response.status_int = 500 - return response + id = request.matchdict.get('id', None) + group = Group.by_id(uuid.UUID(id)) + group.name = request.json_body['Name'] + add_permissions(group, request.json_body['Permissions']) + transaction.commit() + return group_info(group.id) def add_permissions(group, permissions): diff --git a/brewman/brewman/views/auth/user.py b/brewman/brewman/views/auth/user.py index 2db8f3d5..3f6d06bb 100644 --- a/brewman/brewman/views/auth/user.py +++ b/brewman/brewman/views/auth/user.py @@ -7,7 +7,7 @@ import transaction from brewman.models import DBSession from brewman.models.auth import User, Group -from brewman.models.validation_exception import ValidationError +from brewman.models.validation_exception import ValidationError, TryCatchFunction @view_config(route_name='user_list', renderer='brewman:templates/angular_base.mako', permission='Users') @view_config(request_method='GET', route_name='user_id', renderer='brewman:templates/angular_base.mako', @@ -19,41 +19,31 @@ def html(request): @view_config(request_method='POST', route_name='api_user', renderer='json', permission='Users') +@TryCatchFunction def save(request): - try: - user = User(request.json_body['Name'], request.json_body['Password'], request.json_body['LockedOut']) - DBSession.add(user) - add_groups(user, request.json_body['Groups']) - transaction.commit() - return user_info(user.id) - except ValidationError as ex: - transaction.abort() - response = Response("Failed validation: {0}".format(ex.message)) - response.status_int = 500 - return response + user = User(request.json_body['Name'], request.json_body['Password'], request.json_body['LockedOut']) + DBSession.add(user) + add_groups(user, request.json_body['Groups']) + transaction.commit() + return user_info(user.id) @view_config(request_method='POST', route_name='api_user_id', renderer='json', permission='Users') +@TryCatchFunction def update(request): - try: - id = request.matchdict['id'] - p = re.compile('^[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$') - if p.match(id): - user = User.by_id(uuid.UUID(id)) - else: - user = User.by_name(id) - user.name = request.json_body['Name'] - user.locked_out = request.json_body['LockedOut'] - if request.json_body['Password'] != '' and request.json_body['Password'] != user.password: - user.password = request.json_body['Password'] - add_groups(user, request.json_body['Groups']) - transaction.commit() - return user_info(user.id) - except ValidationError as ex: - transaction.abort() - response = Response("Failed validation: {0}".format(ex.message)) - response.status_int = 500 - return response + id = request.matchdict['id'] + p = re.compile('^[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$') + if p.match(id): + user = User.by_id(uuid.UUID(id)) + else: + user = User.by_name(id) + user.name = request.json_body['Name'] + user.locked_out = request.json_body['LockedOut'] + if request.json_body['Password'] != '' and request.json_body['Password'] != user.password: + user.password = request.json_body['Password'] + add_groups(user, request.json_body['Groups']) + transaction.commit() + return user_info(user.id) def add_groups(user, groups): diff --git a/brewman/brewman/views/cost_center.py b/brewman/brewman/views/cost_center.py index ed60e097..a6d5aa0c 100644 --- a/brewman/brewman/views/cost_center.py +++ b/brewman/brewman/views/cost_center.py @@ -6,7 +6,7 @@ import transaction from brewman.models import DBSession from brewman.models.master import CostCenter -from brewman.models.validation_exception import ValidationError +from brewman.models.validation_exception import ValidationError, TryCatchFunction @view_config(route_name='cost_center_list', renderer='brewman:templates/angular_base.mako', permission='Authenticated') @@ -19,31 +19,21 @@ def html(request): @view_config(request_method='POST', route_name='api_cost_center', renderer='json', permission='Cost Centers') +@TryCatchFunction def save(request): - try: - item = CostCenter(request.json_body['Name']) - DBSession.add(item) - transaction.commit() - return cost_center_info(item.id) - except ValidationError as ex: - transaction.abort() - response = Response("Failed validation: {0}".format(ex.message)) - response.status_int = 500 - return response + item = CostCenter(request.json_body['Name']) + DBSession.add(item) + transaction.commit() + return cost_center_info(item.id) @view_config(request_method='POST', route_name='api_cost_center_id', renderer='json', permission='Cost Centers') +@TryCatchFunction def update(request): - try: - item = CostCenter.by_id(uuid.UUID(request.matchdict.get['id'])) - item.name = request.json_body['Name'] - transaction.commit() - return cost_center_info(item.id) - except ValidationError as ex: - transaction.abort() - response = Response("Failed validation: {0}".format(ex.message)) - response.status_int = 500 - return response + item = CostCenter.by_id(uuid.UUID(request.matchdict.get['id'])) + item.name = request.json_body['Name'] + transaction.commit() + return cost_center_info(item.id) @view_config(request_method='DELETE', route_name='api_cost_center_id', renderer='json', permission='Cost Centers') diff --git a/brewman/brewman/views/employee.py b/brewman/brewman/views/employee.py index 04e764de..66b478f5 100644 --- a/brewman/brewman/views/employee.py +++ b/brewman/brewman/views/employee.py @@ -6,7 +6,7 @@ from pyramid.view import view_config import transaction from brewman.models.master import CostCenter, Employee, LedgerBase -from brewman.models.validation_exception import ValidationError +from brewman.models.validation_exception import ValidationError, TryCatchFunction @view_config(route_name='employee_list', renderer='brewman:templates/angular_base.mako', permission='Authenticated') @view_config(request_method='GET', route_name='employee_id', renderer='brewman:templates/angular_base.mako', @@ -20,47 +20,37 @@ def html(request): @view_config(request_method='POST', route_name='api_employee', renderer='json', permission='Employees') +@TryCatchFunction def save(request): - try: - is_active = request.json_body['IsActive'] - joining_date = datetime.datetime.strptime(request.json_body['JoiningDate'], '%d-%b-%Y') - leaving_date = None if is_active else datetime.datetime.strptime(request.json_body['LeavingDate'], - '%d-%b-%Y') + is_active = request.json_body['IsActive'] + joining_date = datetime.datetime.strptime(request.json_body['JoiningDate'], '%d-%b-%Y') + leaving_date = None if is_active else datetime.datetime.strptime(request.json_body['LeavingDate'], + '%d-%b-%Y') - item = Employee(0, request.json_body['Name'], is_active, - uuid.UUID(request.json_body['CostCenter']['CostCenterID']), - request.json_body['Designation'], int(request.json_body['Salary']), - int(request.json_body['ServicePoints']), - joining_date, leaving_date).create() - transaction.commit() - return employee_info(item.id) - except ValidationError as ex: - transaction.abort() - response = Response("Failed validation: {0}".format(ex.message)) - response.status_int = 500 - return response + item = Employee(0, request.json_body['Name'], is_active, + uuid.UUID(request.json_body['CostCenter']['CostCenterID']), + request.json_body['Designation'], int(request.json_body['Salary']), + int(request.json_body['ServicePoints']), + joining_date, leaving_date).create() + transaction.commit() + return employee_info(item.id) @view_config(request_method='POST', route_name='api_employee_id', renderer='json', permission='Employees') +@TryCatchFunction def update(request): - try: - item = Employee.by_id(uuid.UUID(request.matchdict['id'])) - item.name = request.json_body['Name'] - item.is_active = request.json_body['IsActive'] - item.costcenter_id = uuid.UUID(request.json_body['CostCenter']['CostCenterID']) - item.designation = request.json_body['Designation'] - item.salary = int(request.json_body['Salary']) - item.service_points = int(request.json_body['ServicePoints']) - item.joining_date = datetime.datetime.strptime(request.json_body['JoiningDate'], '%d-%b-%Y') - item.leaving_date = None if item.is_active else datetime.datetime.strptime(request.json_body['LeavingDate'], - '%d-%b-%Y') - transaction.commit() - return employee_info(item.id) - except ValidationError as ex: - transaction.abort() - response = Response("Failed validation: {0}".format(ex.message)) - response.status_int = 500 - return response + item = Employee.by_id(uuid.UUID(request.matchdict['id'])) + item.name = request.json_body['Name'] + item.is_active = request.json_body['IsActive'] + item.costcenter_id = uuid.UUID(request.json_body['CostCenter']['CostCenterID']) + item.designation = request.json_body['Designation'] + item.salary = int(request.json_body['Salary']) + item.service_points = int(request.json_body['ServicePoints']) + item.joining_date = datetime.datetime.strptime(request.json_body['JoiningDate'], '%d-%b-%Y') + item.leaving_date = None if item.is_active else datetime.datetime.strptime(request.json_body['LeavingDate'], + '%d-%b-%Y') + transaction.commit() + return employee_info(item.id) @view_config(request_method='DELETE', route_name='api_employee_id', renderer='json', permission='Employees') diff --git a/brewman/brewman/views/product.py b/brewman/brewman/views/product.py index 3482c938..ca936c0f 100644 --- a/brewman/brewman/views/product.py +++ b/brewman/brewman/views/product.py @@ -6,7 +6,7 @@ from pyramid.view import view_config import transaction from brewman.models.master import Product, CostCenter, LedgerType, Ledger -from brewman.models.validation_exception import ValidationError +from brewman.models.validation_exception import ValidationError, TryCatchFunction @view_config(route_name='product_list', renderer='brewman:templates/angular_base.mako', permission='Authenticated') @view_config(request_method='GET', route_name='product_id', renderer='brewman:templates/angular_base.mako', @@ -18,43 +18,33 @@ def html(request): @view_config(request_method='POST', route_name='api_product', renderer='json', permission='Products') +@TryCatchFunction def save(request): - try: - item = Product(0, request.json_body['Name'], request.json_body['Units'], - Decimal(request.json_body['Fraction']), request.json_body['FractionUnits'], - Decimal(request.json_body['Yeild']), request.json_body['ShowForPurchase'], - uuid.UUID(request.json_body['ProductGroup']['ProductGroupID']), Ledger.all_purchases(), - Decimal(request.json_body['Price']), request.json_body['Discontinued']).create() - transaction.commit() - return product_info(item.id) - except ValidationError as ex: - transaction.abort() - response = Response("Failed validation: {0}".format(ex.message)) - response.status_int = 500 - return response + item = Product(0, request.json_body['Name'], request.json_body['Units'], + Decimal(request.json_body['Fraction']), request.json_body['FractionUnits'], + Decimal(request.json_body['Yeild']), request.json_body['ShowForPurchase'], + uuid.UUID(request.json_body['ProductGroup']['ProductGroupID']), Ledger.all_purchases(), + Decimal(request.json_body['Price']), request.json_body['Discontinued']).create() + transaction.commit() + return product_info(item.id) @view_config(request_method='POST', route_name='api_product_id', renderer='json', permission='Products') +@TryCatchFunction def update(request): - try: - item = Product.by_id(uuid.UUID(request.matchdict.get['id'])) - item.name = request.json_body['Name'] - item.units = request.json_body['Units'] - item.fraction = Decimal(request.json_body['Fraction']) - item.fraction_units = request.json_body['FractionUnits'] - item.yeild = Decimal(request.json_body['Yeild']) - item.show_for_purchase = request.json_body['ShowForPurchase'] - item.product_group_id = uuid.UUID(request.json_body['ProductGroup']['ProductGroupID']) - item.ledger_id = Ledger.all_purchases() - item.price = Decimal(request.json_body['Price']) - item.discontinued = request.json_body['Discontinued'] - transaction.commit() - return product_info(item.id) - except ValidationError as ex: - transaction.abort() - response = Response("Failed validation: {0}".format(ex.message)) - response.status_int = 500 - return response + item = Product.by_id(uuid.UUID(request.matchdict.get['id'])) + item.name = request.json_body['Name'] + item.units = request.json_body['Units'] + item.fraction = Decimal(request.json_body['Fraction']) + item.fraction_units = request.json_body['FractionUnits'] + item.yeild = Decimal(request.json_body['Yeild']) + item.show_for_purchase = request.json_body['ShowForPurchase'] + item.product_group_id = uuid.UUID(request.json_body['ProductGroup']['ProductGroupID']) + item.ledger_id = Ledger.all_purchases() + item.price = Decimal(request.json_body['Price']) + item.discontinued = request.json_body['Discontinued'] + transaction.commit() + return product_info(item.id) @view_config(request_method='DELETE', route_name='api_product_id', renderer='json', permission='Products') @@ -93,7 +83,8 @@ def show_list(request): return products -@view_config(request_method='GET', route_name='api_product', renderer='json', request_param='term', permission='Authenticated') +@view_config(request_method='GET', route_name='api_product', renderer='json', request_param='term', + permission='Authenticated') def show_term(request): filter = request.GET.get('term', None) filter = filter if filter is not None and filter is not '' else None diff --git a/brewman/brewman/views/product_group.py b/brewman/brewman/views/product_group.py index 34073209..c6a16657 100644 --- a/brewman/brewman/views/product_group.py +++ b/brewman/brewman/views/product_group.py @@ -6,10 +6,11 @@ import transaction from brewman.models import DBSession from brewman.models.master import ProductGroup -from brewman.models.validation_exception import ValidationError +from brewman.models.validation_exception import ValidationError, TryCatchFunction -@view_config(route_name='product_group_list', renderer='brewman:templates/angular_base.mako', permission='Authenticated') +@view_config(route_name='product_group_list', renderer='brewman:templates/angular_base.mako', + permission='Authenticated') @view_config(request_method='GET', route_name='product_group_id', renderer='brewman:templates/angular_base.mako', permission='Product Groups') @view_config(request_method='GET', route_name='product_group', renderer='brewman:templates/angular_base.mako', @@ -19,31 +20,21 @@ def html(request): @view_config(request_method='POST', route_name='api_product_group', renderer='json', permission='Product Groups') +@TryCatchFunction def save(request): - try: - item = ProductGroup(request.json_body['Name']) - DBSession.add(item) - transaction.commit() - return product_group_info(item.id) - except ValidationError as ex: - transaction.abort() - response = Response("Failed validation: {0}".format(ex.message)) - response.status_int = 500 - return response + item = ProductGroup(request.json_body['Name']) + DBSession.add(item) + transaction.commit() + return product_group_info(item.id) @view_config(request_method='POST', route_name='api_product_group_id', renderer='json', permission='Product Groups') +@TryCatchFunction def update(request): - try: - item = ProductGroup.by_id(uuid.UUID(request.matchdict.get['id'])) - item.name = request.json_body['Name'] - transaction.commit() - return product_group_info(item.id) - except ValidationError as ex: - transaction.abort() - response = Response("Failed validation: {0}".format(ex.message)) - response.status_int = 500 - return response + item = ProductGroup.by_id(uuid.UUID(request.matchdict.get['id'])) + item.name = request.json_body['Name'] + transaction.commit() + return product_group_info(item.id) @view_config(request_method='DELETE', route_name='api_product_group_id', renderer='json', permission='Product Groups') @@ -58,6 +49,7 @@ def delete(request): response.status_int = 500 return response + @view_config(request_method='GET', route_name='api_product_group_id', renderer='json', permission='Product Groups') def show_id(request): return product_group_info(uuid.UUID(request.matchdict.get('id', None))) @@ -68,12 +60,14 @@ def show_blank(request): return product_group_info(None) -@view_config(request_method='GET', route_name='api_product_group', request_param='list', renderer='json', permission='Authenticated') +@view_config(request_method='GET', route_name='api_product_group', request_param='list', renderer='json', + permission='Authenticated') def show_list(request): list = ProductGroup.list() product_groups = [] for item in list: - product_groups.append({'ProductGroupID': item.id, 'Name': item.name, 'Url': request.route_url('product_group_id', id=item.id)}) + product_groups.append( + {'ProductGroupID': item.id, 'Name': item.name, 'Url': request.route_url('product_group_id', id=item.id)}) return product_groups diff --git a/brewman/brewman/views/services/voucher/__init__.py b/brewman/brewman/views/services/voucher/__init__.py index a6647f60..93e59084 100644 --- a/brewman/brewman/views/services/voucher/__init__.py +++ b/brewman/brewman/views/services/voucher/__init__.py @@ -7,7 +7,7 @@ from brewman import groupfinder from brewman.models import DBSession from brewman.models.auth import User from brewman.models.master import LedgerBase, CostCenter -from brewman.models.validation_exception import ValidationError +from brewman.models.validation_exception import ValidationError, TryCatchFunction from brewman.models.voucher import Voucher, VoucherType from brewman.views.services.voucher.issue import issue_create_voucher, issue_update_voucher from brewman.views.services.voucher.journal import journal_update_voucher, journal_create_voucher @@ -48,19 +48,14 @@ def journal_get(request): @view_config(request_method='POST', route_name='api_voucher_id', request_param='post', renderer='json', permission='Post Vouchers') +@TryCatchFunction def voucher_post(request): user = User.by_id(uuid.UUID(authenticated_userid(request))) - try: - voucher = Voucher.by_id(uuid.UUID(request.matchdict['id'])) - voucher.posted = True - voucher.poster_id = user.id - transaction.commit() - return voucher_info(Voucher.by_id(voucher.id)) - except (ValidationError, ValueError, KeyError, AttributeError) as ex: - transaction.abort() - response = Response("Failed validation: {0}".format(ex.message)) - response.status_int = 500 - return response + voucher = Voucher.by_id(uuid.UUID(request.matchdict['id'])) + voucher.posted = True + voucher.poster_id = user.id + transaction.commit() + return voucher_info(Voucher.by_id(voucher.id)) def check_delete_permissions(request, voucher): diff --git a/brewman/brewman/views/services/voucher/save_voucher.py b/brewman/brewman/views/services/voucher/save_voucher.py index 63da85a0..e9503720 100644 --- a/brewman/brewman/views/services/voucher/save_voucher.py +++ b/brewman/brewman/views/services/voucher/save_voucher.py @@ -4,7 +4,7 @@ from pyramid.security import authenticated_userid from pyramid.view import view_defaults, view_config import transaction from brewman.models.auth import User -from brewman.models.validation_exception import ValidationError +from brewman.models.validation_exception import ValidationError, TryCatchFunction from brewman.models.voucher import Voucher from brewman.views.services.session import session_current_date_set from brewman.views.services.voucher import voucher_info, journal_create_voucher, purchase_create_voucher, issue_create_voucher @@ -54,23 +54,18 @@ class save_voucher(object): def salary_deduction(self): return self.save() + @TryCatchFunction def save(self): - try: - if self.json['Type'] in ['Journal', 'Payment', 'Receipt']: - voucher = journal_create_voucher(self.json, self.user) - elif self.json['Type'] in ['Purchase']: - voucher = purchase_create_voucher(self.json, self.user) - elif self.json['Type'] in ['Purchase Return']: - voucher = purchase_return_create_voucher(self.json, self.user) - elif self.json['Type'] in ['Issue']: - voucher = issue_create_voucher(self.json, self.user) - elif self.json['Type'] in ['Salary Deduction']: - voucher = salary_deduction_create_voucher(self.json, self.user) - transaction.commit() - session_current_date_set(self.request, self.json['Date']) - return voucher_info(Voucher.by_id(voucher.id)) - except (ValidationError, ValueError, KeyError, AttributeError) as ex: - transaction.abort() - response = Response("Failed validation: {0}".format(str(ex))) - response.status_int = 500 - return response + if self.json['Type'] in ['Journal', 'Payment', 'Receipt']: + voucher = journal_create_voucher(self.json, self.user) + elif self.json['Type'] in ['Purchase']: + voucher = purchase_create_voucher(self.json, self.user) + elif self.json['Type'] in ['Purchase Return']: + voucher = purchase_return_create_voucher(self.json, self.user) + elif self.json['Type'] in ['Issue']: + voucher = issue_create_voucher(self.json, self.user) + elif self.json['Type'] in ['Salary Deduction']: + voucher = salary_deduction_create_voucher(self.json, self.user) + transaction.commit() + session_current_date_set(self.request, self.json['Date']) + return voucher_info(Voucher.by_id(voucher.id)) diff --git a/brewman/brewman/views/services/voucher/update_voucher.py b/brewman/brewman/views/services/voucher/update_voucher.py index 78c6c907..92e5bc43 100644 --- a/brewman/brewman/views/services/voucher/update_voucher.py +++ b/brewman/brewman/views/services/voucher/update_voucher.py @@ -5,7 +5,7 @@ from pyramid.view import view_defaults, view_config import transaction from brewman import groupfinder from brewman.models.auth import User -from brewman.models.validation_exception import ValidationError +from brewman.models.validation_exception import ValidationError, TryCatchFunction from brewman.models.voucher import Voucher from brewman.views.services.session import session_current_date_set from brewman.views.services.voucher import voucher_info, issue_update_voucher, purchase_update_voucher, journal_update_voucher @@ -69,25 +69,20 @@ class update_voucher(object): def salary_deduction(self): return self.update() + @TryCatchFunction def update(self): if self.error is not None: return self.error - try: - if self.json['Type'] in ['Journal', 'Payment', 'Receipt']: - voucher = journal_update_voucher(self.voucher, self.json, self.user) - elif self.json['Type'] in ['Purchase']: - voucher = purchase_update_voucher(self.voucher, self.json, self.user) - elif self.json['Type'] in ['Purchase Return']: - voucher = purchase_return_update_voucher(self.voucher, self.json, self.user) - elif self.json['Type'] in ['Issue']: - voucher = issue_update_voucher(self.voucher, self.json, self.user) - elif self.json['Type'] in ['Salary Deduction']: - voucher = salary_deduction_update_voucher(self.voucher, self.json, self.user) - transaction.commit() - session_current_date_set(self.request,self.json['Date']) - return voucher_info(Voucher.by_id(voucher.id)) - except (ValidationError, ValueError, KeyError, AttributeError) as ex: - transaction.abort() - response = Response("Failed validation: {0}".format(str(ex))) - response.status_int = 500 - return response + if self.json['Type'] in ['Journal', 'Payment', 'Receipt']: + voucher = journal_update_voucher(self.voucher, self.json, self.user) + elif self.json['Type'] in ['Purchase']: + voucher = purchase_update_voucher(self.voucher, self.json, self.user) + elif self.json['Type'] in ['Purchase Return']: + voucher = purchase_return_update_voucher(self.voucher, self.json, self.user) + elif self.json['Type'] in ['Issue']: + voucher = issue_update_voucher(self.voucher, self.json, self.user) + elif self.json['Type'] in ['Salary Deduction']: + voucher = salary_deduction_update_voucher(self.voucher, self.json, self.user) + transaction.commit() + session_current_date_set(self.request, self.json['Date']) + return voucher_info(Voucher.by_id(voucher.id))