Updated all (I think functions using try / catch to user the decorator.

This commit is contained in:
Tanshu
2012-12-17 15:08:12 +05:30
parent 211b8cee2a
commit f9bd95733b
14 changed files with 240 additions and 325 deletions

View File

@ -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
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

View File

@ -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')

View File

@ -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):

View File

@ -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):

View File

@ -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')

View File

@ -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):

View File

@ -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):

View File

@ -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')

View File

@ -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')

View File

@ -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

View File

@ -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

View File

@ -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):

View File

@ -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))

View File

@ -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))