def list(request): customer_list = Customer.objects.all() customer_filter = CustomerFilter(request.GET, queryset=customer_list) can_index = funcs.has_perm_or_is_owner(request.user, 'customer.index_customer') if not can_index: messages.error(request, 'No access to see list of customers') return redirect('errorpage') page = request.GET.get('page', 1) paginator = Paginator(customer_filter.qs, 50) try: customer_page = paginator.page(page) except PageNotAnInteger: customer_page = paginator.page(1) except EmptyPage: customer_page = paginator.page(paginator.num_pages) context = { 'filter': customer_filter, 'customers': customer_page, 'title': 'مشتریان', } return render(request, 'customer/index.html', context)
def pricedb_index(request): can_index = funcs.has_perm_or_is_owner(request.user, 'pricedb.index_pricedb') if not can_index: messages.error(request, 'عدم دسترسی کافی!') return redirect('errorpage') price_set = PriceDb.objects.all() return render(request, 'pricedb/index.html', {'price_set': price_set})
def pricedb_edit(request, pricedb_pk): can_index = funcs.has_perm_or_is_owner(request.user, 'pricedb.edit_pricedb') if not can_index: messages.error(request, 'عدم دسترسی کافی!') return redirect('errorpage') price_set = PriceDb.objects.get(pk=pricedb_pk) pass
def fund_details(request, fund_pk): fund = Fund.objects.get(pk=fund_pk) can_read = funcs.has_perm_or_is_owner(request.user, 'view_fund', fund) if not can_read: messages.error(request, 'عدم دسترسی کافی') return redirect('errorpage') expenses = fund.expense_set.all() sum = 0 for e in expenses: sum += e.amount context = {'fund': fund, 'expenses': expenses, 'amount_sum': sum} return render(request, 'fund/details.html', context)
def pricedb_form(request): can_index = funcs.has_perm_or_is_owner(request.user, 'pricedb.add_pricedb') if not can_index: messages.error(request, 'عدم دسترسی کافی!') return redirect('errorpage') price_set = PriceDb() price_set.title = request.POST['title'] price_set.summary = request.POST['summary'] price_set.save() db_kw = [ 5.5, 7.5, 11, 15, 18.5, 22, 30, 37, 45, 55, 75, 90, 110, 132, 160, 200, 220, 250, 315, 355, 400, 450, ] db_speed = [1000, 1500, 3000] motor_pks = {} for kw in db_kw: pk_list = [] for speed in db_speed: motor = MotorDB() motor.kw = kw motor.speed = speed motor.price_set = price_set motor.save() pk_list.append(motor.pk) motor_pks[kw] = pk_list return render(request, 'pricedb/form.html', { 'motor_pks': motor_pks, 'db_kw': db_kw, 'db_speed': db_speed, })
def pricedb_clean(request): can_index = funcs.has_perm_or_is_owner(request.user, 'pricedb.delete_pricedb') if not can_index: messages.error(request, 'عدم دسترسی کافی!') return redirect('errorpage') motors = MotorDB.objects.all() for motor in motors: tf = motor.prime_cost or motor.base_price or motor.sale_price if not tf: motor.delete() return redirect('pricedb_index')
def pricedb_details(request, pricedb_pk): can_index = funcs.has_perm_or_is_owner(request.user, 'pricedb.index_pricedb') if not can_index: messages.error(request, 'عدم دسترسی کافی!') return redirect('errorpage') db_kw = [ 5.5, 7.5, 11, 15, 18.5, 22, 30, 37, 45, 55, 75, 90, 110, 132, 160, 200, 220, 250, 315, 355, 400, 450, ] db_speed = [1000, 1500, 3000] priceset = PriceDb.objects.get(pk=pricedb_pk) prices = priceset.motordb_set.all().order_by('pk') list = [] for pr in prices: list.append(pr.prime_cost) final = {} count = 0 for kw in db_kw: price_list = [] for speed in db_speed: price_list.append(list[count]) count += 1 final[kw] = price_list return render(request, 'pricedb/details.html', { 'price_list': final, 'price_set': priceset, })
def fund_edit_form(request, fund_pk): fund_instance = Fund.objects.get(pk=fund_pk) can_edit = funcs.has_perm_or_is_owner(request.user, 'fund.edit_fund', fund_instance) if not can_edit: messages.error(request, 'عدم دسترسی کافی') return redirect('errorpage') fund_instance.date_fa = fund_instance.date_fa.togregorian() form = forms.FundForm(request.POST or None, instance=fund_instance) if form.is_valid(): fund = form.save(commit=False) fund.save() return redirect('fund_index') context = {'form': form} return render(request, 'fund/fund_form.html', context)
def tenders_admin(request, key='', path_to_html_file=''): can_index = funcs.has_perm_or_is_owner(request.user, 'request.index_requests') if not can_index: messages.error(request, 'عدم دسترسی کافی!') return redirect('errorpage') if 'key' in request.POST: key = request.POST['key'] pars_tenders, aria_tenders = find_tenders(key) path_to_html_file = 'requests/admin_jemco/tenders/tenders.html' # render_tenders(pars_tenders, aria_tenders, key) return render(request, 'requests/admin_jemco/tenders/tenders.html', { 'tenders_items': pars_tenders, 'aria_tenders': aria_tenders, 'key': key })
def pricedb_insert(request): can_index = funcs.has_perm_or_is_owner(request.user, 'pricedb.add_pricedb') if not can_index: messages.error(request, 'عدم دسترسی کافی!') return redirect('errorpage') kv = {} for key in request.POST.keys(): if key.startswith('pk_'): a = key.split('_') kv[a[1]] = request.POST[key] for pk in kv: motor = MotorDB.objects.get(pk=pk) if not kv[pk]: kv[pk] = 0 motor.prime_cost = kv[pk] motor.save() return redirect('pricedb_index')
def perform_mutate(cls, form, info): # todo: probably i should remove all permform_updates. # todo: every perform_update override can lead to an update problem although it works on creation. owner = form.cleaned_data['owner'] can_add = funcs.has_perm_or_is_owner(owner, 'incomes.add_incomerow') if not can_add: sys.tracebacklimit = -1 raise GraphQLError('No permission to do that.') proforma = form.cleaned_data['proforma'] income = form.cleaned_data['income'] amount = form.cleaned_data['amount'] if proforma.req_id.customer != income.customer: sys.tracebacklimit = -1 raise GraphQLError("customer mismatch") # TODO: two checks should be done. # 1- sum of income rows shouldn't be more than income amount, # 2- proforma income rows sum should be less than proforma amount proforma_assigns = proforma.incomerow_set.aggregate(sum=Sum('amount')) if proforma_assigns['sum'] is None: proforma_assigns['sum'] = 0 income_assings = income.incomerow_set.aggregate(sum=Sum('amount')) if income_assings['sum'] is None: income_assings['sum'] = 0 remained_income = income.amount - income_assings['sum'] proforma_remained = proforma.total_proforma_price_vat( )['price_vat'] - proforma_assigns['sum'] if amount > remained_income: raise GraphQLError('مبلغ بزرگتر از مانده دریافتی') if (proforma_remained - amount) <= 0: raise GraphQLError('proforma amount not sufficient') return super().perform_mutate(form, info)
def req_form_copy(request): # acl_obj = OrderProxy(request.user, 'request.add_requests') # is_allowed = AccessControl(acl_obj).allow() # is_allowed = funcs.has_perm_or_is_owner(request.user, 'request.add_requests', ) # if not is_allowed: # messages.error(request, 'عدم دسترسی کافی') # return redirect('errorpage') if request.method == 'POST': form = RequestCopyForm(request.POST or None) if form.is_valid(): req_no = form.cleaned_data['number'] if form.cleaned_data['new_number']: has_parent = False new_numebr = form.cleaned_data['new_number'] else: has_parent = True if not Requests.objects.filter(is_active=True).filter( number=req_no): messages.error(request, 'درخواست مورد نظر یافت نشد.') return redirect('errorpage') master_req = Requests.objects.filter(is_active=True).get( number=req_no) can_add = funcs.has_perm_or_is_owner(request.user, 'request.add_requests', instance=master_req) if not can_add: messages.error(request, 'عدم دسترسی کافی') return redirect('errorpage') reqspec_sets = master_req.reqspec_set.all() print(reqspec_sets.count()) temp_number = master_req.number master_req.pk = None if has_parent: master_req.parent_number = temp_number # last_request = Requests.objects.filter(is_active=True).filter(parent_number__isnull=False).order_by('number').last() master_req.number = Requests.objects.order_by( 'number').last().number + 1 else: if not Requests.objects.filter(number=new_numebr): master_req.number = new_numebr else: messages.error(request, 'درخواست با این شماره موجود است.') return redirect('errorpage') master_req.save() if master_req.owner != request.user: master_req.colleagues.add(master_req.owner) master_req.owner = request.user master_req.save() for s in reqspec_sets: s.pk = None s.req_id = master_req s.save() messages.error( request, f"درخواست شماره {master_req.number} از درخواست شماره {temp_number} کپی گردید." ) return redirect('order:insert_spec', pk=master_req.pk) if request.method == 'GET': form = RequestCopyForm() context = { 'form': form, } return render(request, 'requests/admin_jemco/yrequest/req_form_copy.html', context)