def all_salaries(request, type, title): del_salaries = Salary.objects.filter(title=None) for m in del_salaries: m.delete() if type == 'Все': if title == 'Все': salaries = Salary.objects.all() else: salaries = Salary.objects.filter(title=title) else: if title == 'Все': salaries = Salary.objects.filter(type=type) else: salaries = Salary.objects.filter(type=type, title=title) type_for_filter = 'Все' if type == 'flat': type_for_filter = 'Квартиры' elif type == 'plot': type_for_filter = 'Участки' price_summ = sum( [float(i.price) for i in salaries.filter(summ_or_dollar='суммы')]) price_dollar = sum( [float(i.price) for i in salaries.filter(summ_or_dollar='доллары')]) #### find currency #url = 'https://bank.uz/currency' #content = BeautifulSoup(requests.get(url).content, features='lxml') #top_left = content.find('div', {'class':"diogram-top-left"}) #ul = top_left.find('ul', {'class': 'nav nav-tabs'}) #tabs_a = ul.find('div', {'class': 'tabs-a'}) #text = tabs_a.find_all('span', {'class': "medium-text"}) #currency = float(text[1].text.replace(' ', '')) #_________ summ_to_dollar = round(float(price_summ / currency()), 4) overall = price_dollar + summ_to_dollar allsalaries = [] l = [] for i in Salary.objects.all(): if not i.title in l: allsalaries.append(i) l.append(i.title) context = { 'salaries': salaries, 'type': type_for_filter, 'price_summ': price_summ, 'price_dollar': price_dollar, 'currency': currency(), 'summ_to_dollar': summ_to_dollar, 'overall': overall, 'title': title, 'allsalaries': allsalaries } return render(request, 'views/all_salaries.html', context)
def dollar_to_summ(value): r = float(value) * round(currency(), 4) return r
def summ_to_dollar(value): r = float(value) / round(currency(), 4) return round(r, 2)
def material(request, obj): del_materials = Material.objects.filter(title=None) for m in del_materials: m.delete() materials = Material.objects.filter(obj=obj) total_amount = [str(float(i.amount) * float(i.price)) for i in materials] price_summ = sum([ float(i.amount) * float(i.price) for i in materials.filter(summ_or_dollar='суммы') ]) price_dollar = sum([ float(i.amount) * float(i.price) for i in materials.filter(summ_or_dollar='доллары') ]) summ_to_dollar = round(float(price_summ / currency()), 4) overall = price_dollar + summ_to_dollar # ________create excel file df = { '№': [], 'Название': [], 'Измерение': [], 'Количество': [], 'Цена': [], 'Всего (сум)': [], 'Всего ($)': [], 'Дата': [] } #add title df['№'] = [i for i in range(1, len(materials) + 1)] df['Название'] = [i.title for i in materials] df['Измерение'] = [i.measurement for i in materials] df['Количество'] = [i.amount for i in materials] df['Цена'] = [i.price for i in materials] n = 0 for i in materials: if i.summ_or_dollar == 'суммы': df['Всего (сум)'].append(str(total_amount[n])) df['Всего ($)'].append(' ') else: df['Всего (сум)'].append(' ') df['Всего ($)'].append(str(total_amount[n])) n += 1 df['Дата'] = [i.published.strftime('%d.%m.%Y') for i in materials] df['Цена'].append(' ') df['Цена'].append(str(currency())) df['Всего (сум)'].append(str(price_summ)) df['Всего (сум)'].append(str(summ_to_dollar)) df['Всего (сум)'].append('$' + str(overall)) df['Всего ($)'].append(str(price_dollar)) for a in df: while len(df[a]) != len(df['Всего (сум)']): df[a].append(' ') df = pd.DataFrame(df).set_index('№') df.to_excel('files/excel/material_{}.xlsx'.format(obj)) #_________ context = { 'materials': materials, 'total_amount': total_amount, 'file_path': 'material_{}'.format(obj), 'type': 'Все', 'obj': obj, 'price_summ': price_summ, 'price_dollar': price_dollar, 'currency': currency, 'summ_to_dollar': summ_to_dollar, 'overall': overall } return render(request, 'views/material.html', context)
def sort_salary(request, obj, title, type): del_salaries = Salary.objects.filter(title=None) for m in del_salaries: m.delete() if type == 'Все': if title == 'Все': salaries = Salary.objects.filter(obj=obj) else: salaries = Salary.objects.filter(obj=obj, title=title) else: if title == 'Все': salaries = Salary.objects.filter(obj=obj, type=type) else: salaries = Salary.objects.filter(obj=obj, type=type, title=title) price_summ = sum( [float(i.price) for i in salaries.filter(summ_or_dollar='суммы')]) price_dollar = sum( [float(i.price) for i in salaries.filter(summ_or_dollar='доллары')]) summ_to_dollar = round(float(price_summ / currency()), 4) overall = price_dollar + summ_to_dollar #___to excel df = { '№': [], 'Название': [], 'Цена (сум)': [], 'Цена ($)': [], 'Дата': [] } #add title df['№'] = [i for i in range(1, len(salaries) + 1)] df['Название'] = [i.title for i in salaries] for i in salaries: if i.summ_or_dollar == 'суммы': df['Цена (сум)'].append(str(i.price)) df['Цена ($)'].append(' ') else: df['Цена (сум)'].append(' ') df['Цена ($)'].append(str(i.price)) df['Дата'] = [i.published.strftime('%d.%m.%Y') for i in salaries] df['Название'].append(' ') df['Название'].append(str(currency())) df['Цена (сум)'].append(str(price_summ)) df['Цена (сум)'].append(str(summ_to_dollar)) df['Цена (сум)'].append('$' + str(overall)) df['Цена ($)'].append(str(price_dollar)) for a in df: while len(df[a]) != len(df['Цена (сум)']): df[a].append(' ') df = pd.DataFrame(df).set_index('№') df.to_excel('files/excel/salary_{}.xlsx'.format(obj)) type_for_filter = 'Все' if type == 'flat': type_for_filter = 'Квартиры' elif type == 'plot': type_for_filter = 'Участки' l = [] allsalaries = [] for i in Salary.objects.all(): if not i.title in l: allsalaries.append(i) l.append(i.title) context = { 'salaries': salaries, 'file_path': 'salary_{}'.format(obj), 'type_for_filter': type_for_filter, 'type': type, 'obj': obj, 'title': title, 'allsalaries': allsalaries, 'price_summ': price_summ, 'price_dollar': price_dollar, 'currency': currency, 'summ_to_dollar': summ_to_dollar, 'overall': overall } return render(request, 'views/salary.html', context)