def new_inbound_operation(request, entity_id, entity_cls, form_cls, target, title): entity = entity_cls.objects.get(pk=entity_id) building = entity.building() building_accessible(request, building, True) if request.method == 'POST': form = form_cls(request.POST, entity=entity) if form.is_valid() and ('cmd' not in form.cleaned_data or form.cleaned_data['cmd'] == 'save'): try: if 'cmd' in form.cleaned_data: del form.cleaned_data['cmd'] entity.new_inbound_operation(**form.cleaned_data) except Exception as e: data = {'form': form, 'target': target, 'parent_id': entity_id, 'building': building, 'title': title + ' ' + entity.name} logger.exception('Cannot save inbound operation') form.add_form_error(e) return render(request, 'edit_dialog.html', data) return render(request, 'edit_ok.html') else: form = form_cls(entity=entity, initial=entity.initial_operation()) data = {'form': form, 'target': target, 'parent_id': entity_id, 'building': building, 'title': title + ' ' + entity.name} return render(request, 'edit_dialog.html', data)
def new_transfer(request, account_id, form_cls, target, title): src_account = Account.objects.get(pk=account_id) try: account_link = AccountLink.objects.get(account=src_account) building = account_link.holder.building() except AccountLink.DoesNotExist: collecting_fund = CollectingFund.objects.get(account=src_account) building = collecting_fund.building() building_accessible(request, building, True) if request.method == 'POST': form = form_cls(request.POST, account=src_account, user=request.user, building=building) if form.is_valid(): try: data = __transfer_data(building, form) src_account.new_transfer(**data) return render(request, 'edit_ok.html') # TODO @iia catch by different exceptions except Exception as e: data = {'form' : form, 'target': target, 'entity_id': account_id, 'building': building, 'title': title + ' ' + src_account.name} logger.exception('Cannot save transfer') form.add_form_error(e) return render(request, 'edit_dialog.html', data) else: form = form_cls(account=src_account, user=request.user, building=building) data = {'form' : form, 'target': target, 'entity_id': account_id, 'building': building, 'title': title + ' ' + src_account.name} return render(request, 'edit_dialog.html', data)
def edit_entity(request, entity_id, entity_cls, form_cls, target, title='Entity'): entity = entity_cls.objects.get(pk=entity_id) building = entity.building() building_accessible(request, building, True) if request.method == 'DELETE': if entity.can_delete(): entity.delete() return HttpResponse() else: return HttpResponseBadRequest() if request.method == 'POST': form = form_cls(request.POST, user=request.user, building=building, instance=entity) if form.is_valid(): try: form.save() return render(request, 'edit_ok.html') # TODO @iia catch by different exceptions except Exception as e: data = {'form': form, 'target': target, 'entity_id': entity_id, 'building': building, 'title': title + ' ' + entity.name} logger.exception('Cannot save entity') form.add_form_error(e) return render(request, 'edit_dialog.html', data) else: form = form_cls(user=request.user, building=building, instance=entity) data = {'form': form, 'target': target, 'entity_id': entity_id, 'building': building, 'title': title + ' ' + entity.name} return render(request, 'edit_dialog.html', data)
def new_building_entity(request, building_id, form_cls, target, title='New Entity', save_kwargs=None, commit_directly=False): building = ApartmentGroup.objects.get(pk=building_id).building() building_accessible(request, building, True) if request.method == 'POST': form = form_cls(request.POST, user=request.user, building=building) if form.is_valid(): try: if commit_directly: form.save() else: entity = form.save(commit=False) if save_kwargs != None: save_kwargs['building'] = building entity.save(**save_kwargs) else: entity.save() return render(request, 'edit_ok.html') # TODO @iia catch by different exceptions except Exception as e: data = {'form': form, 'target': target, 'parent_id': building_id, 'building': building, 'title': title} logger.exception('Cannot save building entity') form.add_form_error(e) return render(request, 'edit_dialog.html', data) else: form = form_cls(user=request.user, building=building) data = {'form': form, 'target': target, 'parent_id': building_id, 'building': building, 'title': title} return render(request, 'edit_dialog.html', data)
def download_list(request, building_id, month): building = ApartmentGroup.objects.get(pk=building_id) building_accessible(request, building, True) begin_ts = datetime.strptime(month + '-%02d' % building.close_day, "%Y-%m-%d").date() end_ts = begin_ts + relativedelta(months=1) l = request.user.administrator.license l.validate_month(building, begin_ts) building.mark_display(begin_ts) temp = download_display_list(building, begin_ts, end_ts) return __pdf_response(building, month, 'lista', temp)
def download_report(request, generator, name, building_id, month): building = ApartmentGroup.objects.get(pk=building_id) building_accessible(request, building, True) if month == None: day = date.today() month = str(day.month) else: day = datetime.strptime(month + '-01', '%Y-%m-%d').date() last = calendar.monthrange(day.year, day.month)[1] day = date(year=day.year, month=day.month, day=last) l = request.user.administrator.license l.validate_month(building, day) temp = generator(building, day) return __pdf_response(building, month, name, temp)
def upload_initial_operations(request, building_id): building = ApartmentGroup.objects.get(pk=building_id) building_accessible(request, building, True) if request.method == 'POST': form = UploadInitialOperations(request.POST, request.FILES, building=building) if form.is_valid(): try: load_initial_operations(building, request.FILES['file']) return render(request, 'edit_ok.html') except Exception as e: logger.exception('Cannot upload initial operations') form.add_form_error(e) else: form = UploadInitialOperations(building=building) data = {'form': form, 'building': building} return render(request, 'upload_initial_operations.html', data)
def new_billable(request, building_id, form_class, save_kwargs=None): building = ApartmentGroup.objects.get(pk=building_id).building() building_accessible(request, building, True) user_license = request.user.administrator.license if request.method == 'POST': form = form_class(request.POST, user=request.user, building=building, user_license=user_license) if form.is_valid() and form.cleaned_data['cmd'] == 'save': return __save_service(request, form) else: form = form_class(user=request.user, building=building, user_license=user_license) data = {'form': form, 'target': 'new_billable_' + form_class.target(), 'parent_id': building_id, 'building': building, 'title': form_class.new_title()} return render(request, 'edit_dialog.html', data)
def operation_list(request, building_id, account_id, month=None): building = ApartmentGroup.objects.get(pk=building_id) building_accessible(request, building) if month == None: today = date.today() month = date(day=building.close_day, month=today.month, year=today.year) else: month = datetime.strptime(month + '-%02d' % building.close_day, "%Y-%m-%d").date() l = License.for_building(building) l.validate_month(building, month) month_end = month + relativedelta(months=1) account = Account.objects.get(pk=account_id) ops = account.operation_list(month, month_end) initial_penalties, final_penalties = None, None src_exclude = None apartment = entity_for_account(Apartment, account) # TODO(Stefan) there's logic put in the view, this is uncool if apartment != None: initial_penalties = apartment.penalties(month) final_penalties = apartment.penalties(month_end) src_exclude = Q(dest=apartment.building().penalties_account) service = entity_for_account(CollectingFund, account) if service != None: src_exclude = Q(doc__type='collection') initial = account.balance(month, src_exclude) final = account.balance(month_end, src_exclude) data = {'account': account, 'docs': ops, 'building': building, 'initial_balance': initial, 'initial_penalties': initial_penalties, 'final_balance': final, 'final_penalties': final_penalties, 'month': month, 'month_end': month_end, 'service': service, 'building': building_for_account(account)} return render(request, 'operation_list.html', data)
def operation_doc(request, building_id, account_id, operationdoc_id): building = ApartmentGroup.objects.get(pk=building_id) building_accessible(request, building, True) OperationDoc.delete_doc(operationdoc_id) return redirect('operation_list', building_id=building_id, account_id=account_id)
def download_initial_operations_template(request, building_id): building = ApartmentGroup.objects.get(pk=building_id) building_accessible(request, building, True) temp = initial_operations_template(building) return __xlsx_response(building, 'solduri_initiale_', temp)
def building_tab(request, building_id, tab, show_all=False): building = ApartmentGroup.objects.get(pk=building_id).building() building_accessible(request, building) data = {'building': building, 'active_tab': tab, 'show_all': show_all} return render(request, tab + '.html', data)