def editMoneyIO(self, id, account, happentime, moneyiotype, money, currency, isshare, description, user, alarm=None): moneyio = self.getMoneyIO(id, user) if moneyio: initaccount = moneyio.account initmoney = moneyio.money initmoneyiotype = moneyio.moneyiotype moneyio.account = account moneyio.happentime = happentime moneyio.moneyiotype = moneyiotype moneyio.money = money moneyio.currency = currency moneyio.isshare = isshare moneyio.description = description if user: moneyio.user = user if alarm: moneyio.alarm = alarm moneyio.put() AccountService().updateAccountMoney(initaccount, initmoney, initmoneyiotype.isio * -1) AccountService().updateAccountMoney( AccountService().getAccount(account.id, user), money, moneyiotype.isio)
def moneybl_add(request): if not check_user_login(request): return login(request) user = request.session.get('user') if request.method == 'POST': form = MoneyBLForm(data=request.POST, user=user) if form.is_valid(): account = AccountService().getAccount(form.cleaned_data['account'], user) isio = int(form.cleaned_data['isio']) happentime = form.cleaned_data['happentime'] money = form.cleaned_data['money'] currency = AccountService().getCurrency( form.cleaned_data['currency']) description = form.cleaned_data['description'] MoneyService().addMoneyBL(account, isio, happentime, money, currency, description, user) return HttpResponseRedirect('/moneybl/') else: form = MoneyBLForm(user=user) pageinfo = PageInfo(page_menu_name='Money', user=user, page_title=ugettext('Add Money Borrow and Lend')) helptext_list = AdminService().getCategoryHelpTextList( 'Money Income and Expense') form_action_url = '/moneybl/add' return render_to_response( 'common_add_edit.html', { 'pageinfo': pageinfo, 'helptext_list': helptext_list, 'form_action_url': form_action_url, 'form': form, 'user': user })
def moneytransfer_edit(request, id): if not check_user_login(request): return login(request) user = request.session.get('user') if request.method == 'POST': form = MoneyTransferForm(data=request.POST, user=user) if form.is_valid(): fromaccount = AccountService().getAccount( form.cleaned_data['fromaccount'], user) toaccount = AccountService().getAccount( form.cleaned_data['toaccount'], user) happentime = form.cleaned_data['happentime'] money = form.cleaned_data['money'] currency = AccountService().getCurrency( form.cleaned_data['currency']) description = form.cleaned_data['description'] MoneyService().editMoneyTransfer(id, fromaccount, toaccount, happentime, money, currency, description, user) return HttpResponseRedirect('/moneytransfer/') else: moneytransfer = MoneyService().getMoneyTransfer(id, user) if moneytransfer: moneytransfer_currency_id = None if moneytransfer.currency: moneytransfer_currency_id = moneytransfer.currency.id moneytransfer_fromaccount_id = None if moneytransfer.fromaccount: moneytransfer_fromaccount_id = moneytransfer.fromaccount.id moneytransfer_toaccount_id = None if moneytransfer.toaccount: moneytransfer_toaccount_id = moneytransfer.toaccount.id form = MoneyTransferForm(initial={ 'fromaccount': moneytransfer_fromaccount_id, 'toaccount': moneytransfer_toaccount_id, 'happentime': moneytransfer.happentime, 'money': moneytransfer.money, 'currency': moneytransfer_currency_id, 'description': moneytransfer.description }, user=user) else: return HttpResponseRedirect('/moneytransfer/') pageinfo = PageInfo(page_menu_name='Money', user=user, page_title=ugettext('Edit Money Transfer')) helptext_list = AdminService().getCategoryHelpTextList( 'Money Income and Expense') form_action_url = '/moneytransfer/edit/' + id return render_to_response( 'common_add_edit.html', { 'pageinfo': pageinfo, 'helptext_list': helptext_list, 'form_action_url': form_action_url, 'form': form, 'user': user })
def deleteMoneyTransfer(self, id, user): moneytransfer = self.getMoneyTransfer(id, user) if moneytransfer: AccountService().updateAccountMoney(moneytransfer.fromaccount, moneytransfer.money, 1) AccountService().updateAccountMoney(moneytransfer.toaccount, moneytransfer.money, -1) moneytransfer.delete()
def __init__(self, id, user, *args, **kwargs ): super(ObjectForm, self).__init__(*args, **kwargs) self.id = id self.user = user self.fields['accountlist'].choices=AccountService().getAccountChoices(self.user) self.fields['currency'].choices=AccountService().getCurrencyChoices() if 'data' in kwargs: self.data = kwargs['data']
def __init__(self, user, *args, **kwargs): super(MoneyTransferForm, self).__init__(*args, **kwargs) self.user = user self.fields['fromaccount'].choices = AccountService( ).getAccountChoices(self.user) self.fields['toaccount'].choices = AccountService().getAccountChoices( self.user) self.fields['currency'].choices = AccountService().getCurrencyChoices() if 'data' in kwargs: self.data = kwargs['data']
def __init__(self, user, *args, **kwargs): super(MoneyIOForm, self).__init__(*args, **kwargs) self.user = user self.fields['account'].choices = AccountService().getAccountChoices( self.user) self.fields['moneyiotype'].choices = MoneyService( ).getMoneyIOUserTypeChoices(self.user) self.fields['currency'].choices = AccountService().getCurrencyChoices() if 'data' in kwargs: self.data = kwargs['data']
def __init__(self, user, *args, **kwargs): super(MoneyIOStatSearchForm, self).__init__(*args, **kwargs) self.user = user self.fields['account'].choices = [ (-1, 'All') ] + AccountService().getAccountChoices(self.user) self.fields['currency'].choices = [ (-1, 'All') ] + AccountService().getCurrencyChoices() if 'data' in kwargs: self.data = kwargs['data']
def addMoneyTransfer(self, fromaccount, toaccount, happentime, money, currency, description, user): moneytransfer = MoneyTransfer(fromaccount=fromaccount, toaccount=toaccount, happentime=happentime, money=money, currency=currency, description=description, user=user) moneytransfer.put() AccountService().updateAccountMoney(fromaccount, money, -1) AccountService().updateAccountMoney(toaccount, money, 1)
def currency_edit(request, id): if not check_user_is_admin(request): return HttpResponseRedirect('/notadmin/') user = request.session.get('user') if request.method == 'POST': form = CurrencyForm(data=request.POST) if form.is_valid(): name = form.cleaned_data['name'] symbol = form.cleaned_data['symbol'] AdminService().editCurrency(id, name, symbol) return HttpResponseRedirect('/admin/') else: currency = AccountService().getCurrency(id) if currency: form = CurrencyForm(initial= {'name': currency.name, 'symbol':currency.symbol }) else: form = CurrencyForm() page_title=ugettext('Edit Currency') form_action_url='/admin/currency/edit/' + id page_module='Admin' return render_to_response('common_add_edit.html', {'page_title':page_title, 'form_action_url': form_action_url, 'form': form, 'user':user, 'page_module' : page_module })
def add(request): if not check_user_login(request): return login(request) user = request.session.get('user') if request.method == 'POST': form = ObjectForm(data=request.POST, user=user, id = None) if form.is_valid(): name = form.cleaned_data['name'] finishdate = form.cleaned_data['finishdate'] money = float(form.cleaned_data['money']) currency = AccountService().getCurrency(form.cleaned_data['currency']) accountlist = form.cleaned_data['accountlist'] description = form.cleaned_data['description'] ObjectService().addObject(name, finishdate, money, currency, accountlist, description, user) return HttpResponseRedirect('/object/') else: form = ObjectForm(user=user, id = None) page_title=ugettext('Add Object') pageinfo = PageInfo(page_menu_name='Object', user=user, page_title=page_title) helptext_list = AdminService().getCategoryHelpTextList('Object') form_action_url='/object/add/' return render_to_response('common_add_edit.html', {'pageinfo':pageinfo, 'helptext_list': helptext_list, 'form_action_url': form_action_url, 'form': form, 'user':user })
def accounttype_edit(request, id): if not check_user_is_admin(request): return HttpResponseRedirect('/notadmin/') user = request.session.get('user') if request.method == 'POST': form = AccountTypeForm(data=request.POST) if form.is_valid(): name = form.cleaned_data['name'] canadvance = form.cleaned_data['canadvance'] AdminService().editAccountType(id, name, canadvance) return HttpResponseRedirect('/admin/') else: accounttype = AccountService().getAccountType(id) if accounttype: form = AccountTypeForm(initial= {'name': accounttype.name, 'canadvance':accounttype.canadvance }) else: form = AccountTypeForm() page_title=ugettext('Edit Account Type') form_action_url='/admin/accounttype/edit/' + id page_module='Admin' return render_to_response('common_add_edit.html', {'page_title':page_title, 'form_action_url': form_action_url, 'form': form, 'user':user, 'page_module' : page_module })
def addMoneyIO(self, account, happentime, moneyiotype, money, currency, isshare, description, user, alarm=None): moneyio = MoneyIO() moneyio.account = account moneyio.happentime = happentime moneyio.moneyiotype = moneyiotype moneyio.money = money moneyio.currency = currency moneyio.isshare = isshare moneyio.description = description if user: moneyio.user = user if alarm: moneyio.alarm = alarm moneyio.put() AccountService().updateAccountMoney(account, money, moneyiotype.isio)
def clean(self): cleaned_data = self.cleaned_data begindate = cleaned_data.get('begindate') enddate = cleaned_data.get('enddate') if begindate and enddate and begindate >= enddate: raise forms.ValidationError( ugettext('The begin data should be earlier than end date')) isautogenmoneyio = cleaned_data.get('isautogenmoneyio') money = cleaned_data.get('money') if isautogenmoneyio and money <= 0: raise forms.ValidationError( ugettext('The amount should be more than zero')) account_id = cleaned_data.get('account') account = AccountService().getAccount(account_id, self.user) moneyiousertype_id = cleaned_data.get('moneyiousertype') moneyiousertype = MoneyService().getMoneyIOUserType( moneyiousertype_id, self.user) if (isautogenmoneyio and account and moneyiousertype and moneyiousertype.isio == -1 and money > 0 and account.totalmoney < money): totalmoney = account.totalmoney raise forms.ValidationError( ugettext( 'The account total amount (%(totalmoney)10.2f) is not enough to expense' ) % {'totalmoney': totalmoney}) return cleaned_data
def add(request): if not check_user_login(request): return login(request) user = request.session.get('user') moneyiousertype_list = MoneyService().getMoneyIOUserTypeList(user) moneyiousertype_count = MoneyService().getMoneyIOUserTypeCount(user) BudgetDetailFormSet = formset_factory(BudgetDetailForm, max_num=moneyiousertype_count) if request.method == 'POST': budgetform = BudgetForm(request.POST) budgetdetailformset = BudgetDetailFormSet(request.POST) if budgetform.is_valid() and budgetdetailformset.is_valid(): name = budgetform.cleaned_data['name'] begindate = budgetform.cleaned_data['begindate'] enddate = budgetform.cleaned_data['enddate'] currency = AccountService().getCurrency( budgetform.cleaned_data['currency']) description = budgetform.cleaned_data['description'] budget = BudgetService().addBudget(name, begindate, enddate, currency, description, user) for budgetdetailform in budgetdetailformset.forms: moneyiousertypeid = budgetdetailform.cleaned_data[ 'moneyiousertypeid'] moneyiousertype = MoneyService().getMoneyIOUserType( moneyiousertypeid, user) money = budgetdetailform.cleaned_data['money'] if money > 0.0: BudgetService().addBudgetDetail(budget, moneyiousertype, money) return HttpResponseRedirect('/budget/') else: budgetform = BudgetForm() formsetinitdata = [{ 'moneyiousertypeid': moneyiousertype.id, 'moneyiousertypename': moneyiousertype.name, 'money': 0.0 } for moneyiousertype in moneyiousertype_list] budgetdetailformset = BudgetDetailFormSet(initial=formsetinitdata) page_title = ugettext('Add Budget') pageinfo = PageInfo(page_menu_name='Budget', user=user, page_title=page_title) helptext_list = AdminService().getCategoryHelpTextList('Budget') form_action_url = '/budget/add/' return render_to_response( 'budget_add_edit.html', { 'helptext_list': helptext_list, 'form_action_url': form_action_url, 'budgetform': budgetform, 'budgetdetailformset': budgetdetailformset, 'user': user, 'pageinfo': pageinfo })
def getMoneyStatList(self, filter_dict, user): currency_list = AccountService().getCurrencyList() moneystat_list = [] for currency in currency_list: moneystat = self.getMoneyStat(filter_dict, currency, user) if moneystat: moneystat_list.append(moneystat) return moneystat_list
def add(request): if not check_user_login(request): return login(request) user = request.session.get('user') if request.method == 'POST': form = AlarmForm(data=request.POST, user=user, id=None) if form.is_valid(): name = form.cleaned_data['name'] account = AccountService().getAccount(form.cleaned_data['account'], user) begindate = form.cleaned_data['begindate'] enddate = form.cleaned_data['enddate'] cycletype = form.cleaned_data['cycletype'] cyclevalue = form.cleaned_data['cyclevalue'] isautogenmoneyio = form.cleaned_data['isautogenmoneyio'] moneyiousertype = MoneyService().getMoneyIOUserType( form.cleaned_data['moneyiousertype'], user) money = form.cleaned_data['money'] currency = AccountService().getCurrency( form.cleaned_data['currency']) description = form.cleaned_data['description'] AlarmService().addAlarm(name, account, begindate, enddate, cycletype, cyclevalue, isautogenmoneyio, moneyiousertype, money, currency, description, user) return HttpResponseRedirect('/alarm/') else: form = AlarmForm(user=user, id=None) pageinfo = PageInfo(page_menu_name='Alarm', user=user, page_title=ugettext('Add Alarm')) helptext_list = AdminService().getCategoryHelpTextList('Alarm') form_action_url = '/alarm/add/' return render_to_response( 'common_add_edit.html', { 'pageinfo': pageinfo, 'helptext_list': helptext_list, 'form_action_url': form_action_url, 'form': form, 'user': user })
def editMoneyBL(self, id, account, isio, happentime, money, currency, description, user): moneybl = self.getMoneyBL(id, user) if moneybl: initmoney = moneybl.money initaccount = moneybl.account initisio = moneybl.isio moneybl.account = account moneybl.isio = isio moneybl.happentime = happentime moneybl.money = money moneybl.currency = currency moneybl.description = description if user: moneybl.user = user moneybl.put() AccountService().updateAccountMoney(initaccount, initmoney, initisio * -1) AccountService().updateAccountMoney( AccountService().getAccount(account.id, user), money, isio)
def addMoneyBL(self, account, isio, happentime, money, currency, description, user): moneybl = MoneyBL(account=account, isio=isio, happentime=happentime, money=money, currency=currency, description=description, user=user) moneybl.put() AccountService().updateAccountMoney(account, money, isio)
def moneytransfer_account_to_data(request, account_id): if not check_user_login(request): return '' user = request.session.get('user') account = AccountService().getAccount(account_id, user) if account == None: return '' filter_dict = {'toaccount': account} return get_json_data(request, filter_dict)
def clean(self): cleaned_data = self.cleaned_data money = cleaned_data.get('money') isio = int(cleaned_data.get('isio')) account_id = cleaned_data.get('account') account = AccountService().getAccount(account_id, self.user) if account and account.type.canadvance == False and money > 0 and isio == -1 and account.totalmoney < money: totalmoney = account.totalmoney raise forms.ValidationError( ugettext( 'The account total amount (%(totalmoney)10.2f) is not enough to borrow' ) % {'totalmoney': totalmoney}) return cleaned_data
def getModelList(self, model_name, filter_dict, orderby, pagesize, pagecount, user): if model_name == 'account': return AccountService().getAccountList(filter_dict, orderby, pagesize, pagecount, user) elif model_name == 'budget': return BudgetService().getBudgetList(filter_dict, orderby, pagesize, pagecount, user) elif model_name == 'alarm': return AlarmService().getAlarmList(filter_dict, orderby, pagesize, pagecount, user) elif model_name == 'object': return ObjectService().getObjectList(filter_dict, orderby, pagesize, pagecount, user) elif model_name == 'moneyio': return MoneyService().getMoneyIOList(filter_dict, orderby, pagesize, pagecount, user) elif model_name == 'moneybl': return MoneyService().getMoneyBLList(filter_dict, orderby, pagesize, pagecount, user) elif model_name == 'moneytransfer': return MoneyService().getMoneyTransferList(filter_dict, orderby, pagesize, pagecount, user) elif model_name == 'usermessage': return UserService().getMessageList(filter_dict, orderby, pagesize, pagecount, user)
def clean(self): cleaned_data = self.cleaned_data money = cleaned_data.get('money') moneyiotype_id = cleaned_data.get('moneyiotype') moneyiotype = MoneyService().getMoneyIOUserType( moneyiotype_id, self.user) isio = moneyiotype.isio account_id = cleaned_data.get('account') account = AccountService().getAccount(account_id, self.user) if account and account.type.canadvance == False and money > 0 and isio == -1 and account.totalmoney < money: totalmoney = account.totalmoney raise forms.ValidationError( ugettext( 'The account total amount (%(totalmoney)10.2f) is not enough to expense' ) % {'totalmoney': totalmoney}) return cleaned_data
def edit(request, id): if not check_user_login(request): return login(request) user = request.session.get('user') if request.method == 'POST': form = ObjectForm(data=request.POST, user=user, id=id) if form.is_valid(): name = form.cleaned_data['name'] finishdate = form.cleaned_data['finishdate'] money = float(form.cleaned_data['money']) currency = AccountService().getCurrency(form.cleaned_data['currency']) accountlist = form.cleaned_data['accountlist'] description = form.cleaned_data['description'] ObjectService().editObject(id, name, finishdate, money, currency, accountlist, description, user) return HttpResponseRedirect('/object/') else: object = ObjectService().getObject(id, user) if object: object_currency_id = None if object.currency: object_currency_id = object.currency.id form = ObjectForm(initial= {'name': object.name, 'finishdate':object.finishdate, 'money':object.money, 'currency':object_currency_id, 'accountlist':object.accountlist, 'description':object.description}, user=user, id=id) else: return HttpResponseRedirect('/object/') page_title=ugettext('Edit Object') pageinfo = PageInfo(page_menu_name='Object', user=user, page_title=page_title) helptext_list = AdminService().getCategoryHelpTextList('Object') form_action_url='/object/edit/' + id return render_to_response('common_add_edit.html', {'pageinfo':pageinfo, 'helptext_list': helptext_list, 'form_action_url': form_action_url, 'form': form, 'user':user })
def clean(self): cleaned_data = self.cleaned_data fromaccount_id = cleaned_data.get('fromaccount') toaccount_id = cleaned_data.get('toaccount') if fromaccount_id == toaccount_id: raise forms.ValidationError( ugettext('The from account should not be same as to account')) cleaned_data = self.cleaned_data fromaccount_id = cleaned_data.get('fromaccount') money = cleaned_data.get('money') fromaccount = AccountService().getAccount(fromaccount_id, self.user) if fromaccount and fromaccount.type.canadvance == False and money > 0 and fromaccount.totalmoney < money: totalmoney = fromaccount.totalmoney raise forms.ValidationError( ugettext( 'The from account total amount (%(totalmoney)10.2f) is not enough to transfer' ) % {'totalmoney': totalmoney}) return cleaned_data
def index(request): if not check_user_login(request): return login(request) helptext_list = AdminService().getCategoryHelpTextList('Home') user = request.session.get('user', None) pageinfo = PageInfo(page_menu_name='Home', user=user) begindate = datetime.datetime.strptime( common.datetimeutil.get_firstday_month(), '%Y-%m-%d') enddate = datetime.date.today() moneyio_list = MoneyService().getMoneyIOList(None, '-createtime', 5, 1, user)[0] account_list = AccountService().getAccountList(None, '-createtime', 5, 1, user)[0] object_list = ObjectService().getObjectList(None, '-createtime', 5, 1, user)[0] budget_filter_dict = {'begindate >=': begindate, 'begindate <=': enddate} budget_list = BudgetService().getBudgetList(budget_filter_dict, '-begindate', 5, 1, user)[0] errormessage = request.session.get('errormessage', None) request.session['errormessage'] = None return render_to_response( 'index.html', { 'user': user, 'helptext_list': helptext_list, 'pageinfo': pageinfo, 'moneyio_list': moneyio_list, 'account_list': account_list, 'object_list': object_list, 'budget_list': budget_list, 'errormessage': errormessage })
def detail(request, id): if not check_user_login(request): return login(request) user = request.session.get('user') object = ObjectService().getObject(id, user) object_list = [] if object: object_list.append(object) page_title = ugettext('Object Detail') pageinfo = PageInfo(page_menu_name='Object', user=user, page_title=page_title) helptext_list = AdminService().getCategoryHelpTextList('Object') account_list = AccountService().getAccountListByIDList(object.accountlist, user) return render_to_response('object_detail.html', {'object': object, 'object_list': object_list, 'user':user, 'pageinfo': pageinfo, 'helptext_list':helptext_list, 'account_list' : account_list }) else: return render_to_response('object_detail.html', {'object': None})
def editMoneyTransfer(self, id, fromaccount, toaccount, happentime, money, currency, description, user): moneytransfer = MoneyService().getMoneyTransfer(id, user) if moneytransfer: initmoney = moneytransfer.money initfromaccount = moneytransfer.fromaccount inittoaccount = moneytransfer.toaccount moneytransfer.fromaccount = fromaccount moneytransfer.toaccount = toaccount moneytransfer.happentime = happentime moneytransfer.money = money moneytransfer.currency = currency moneytransfer.description = description if user: moneytransfer.user = user moneytransfer.put() AccountService().updateAccountMoney(initfromaccount, initmoney, 1) AccountService().updateAccountMoney(inittoaccount, initmoney, -1) AccountService().updateAccountMoney( AccountService().getAccount(fromaccount.id, user), money, -1) AccountService().updateAccountMoney( AccountService().getAccount(toaccount.id, user), money, 1)
def getModelCount(self, model_name, filter_dict, user): if model_name == 'account': return AccountService().getAccountCount(filter_dict, user)
def __init__(self, *args, **kwargs): super(BudgetForm, self).__init__(*args, **kwargs) self.fields['currency'].choices = AccountService().getCurrencyChoices() if 'data' in kwargs: self.data = kwargs['data']
def deleteAccountType(self, id): accounttype = AccountService().getAccountType(id) if accounttype: accounttype.delete()
def editAccountType(self, id, name, canadvance): accounttype = AccountService().getAccountType(id) if accounttype: accounttype.name = name accounttype.canadvance= canadvance accounttype.put()
def deleteCurrency(self, id): currency = AccountService().getCurrency(id) if currency: currency.delete()
def editCurrency(self, id, name, symbol): currency = AccountService().getCurrency(id) if currency: currency.name = name currency.symbol = symbol currency.put()