• Какое оптимальное время въехать в проект?

    @bituke
    ох хотел бы я глянуть ваш проект..
  • Какие библиотеки надо поизучать, чему научиться и тд для того, что бы зарабатывать и какие знания для этого нужны?

    @bituke
    ключевые слова: python/django, django rest framework
    как закончишь с этим, уже будешь знать, куда тебе двигаться)
  • Используется ли celery + django в крупных, или "серьезных" проектах?

    @bituke Автор вопроса
    Борис Алексеев, а спрашиваю я концептуально потому что сейчас делается небольшой проект, а потом он будет расти и жрать много ОЗУ. Неизвестно же сколько клиентов будет у магазина через 3 года, а весь функционал бэкграунд задач будет на celery, который будет хавать много памяти и придется переписывать на что-то другое что очень дорого обойдется заказчику. Так вот интересно насколько celery ужасен)Ну и видимо не настолько, насколько я представлял
  • Используется ли celery + django в крупных, или "серьезных" проектах?

    @bituke Автор вопроса
    Борис Алексеев, тут речь про куки, при каждом клике вся инфа сохраняется в кэш браузера, поэтому если что-то вылетит -ничего страшного, но проблема в том, что при заходе с другого устройства, не будет сохраненной информации. И как оказалось так и вправду еще делают) посмотрел у вайлдбириз, корзина через куки сделана, видимо, это экономит ресурсы.
  • Используется ли celery + django в крупных, или "серьезных" проектах?

    @bituke Автор вопроса
    maksam07, потому-что то, что было добавлено в нее с пк, не будет видно в телефоне. Короче информация будет храниться только на одном устройстве, а так никто не делает
  • Используется ли celery + django в крупных, или "серьезных" проектах?

    @bituke Автор вопроса
    maksam07, ключевое слово "может", а должна быть на бэке) да и вопрос больше концептуальный, интересует описание, где и когда лучше использовать.
  • Как проверить является ли пользователь админом в serializer?

    @bituke
    нужен код, ну и работа с юзером обычно проводится в вьюшке, а не в сериализаторах
  • Как делаю игры Supercell?

    @bituke
    prog199708, у них самописный движок, его нет в открытом доступе, написан на языка выше
  • Как делаю игры Supercell?

    @bituke
    а ты пробовал обратится с этим вопросом в гугл?
  • Что чаще используют под фронт в связке с обычным django?

    @bituke
    stan288, не просто предпочитают) drf это база) на шаблонизаторах никто проекты не пишет, только если для обучения. всегда пишут бэкенд и фронтенд, после чего по отдельности разворачивают
  • Как написать опросник с вариантами ответа от 0 до 5, что бы условие выполнялось корректно?

    @bituke
    Far-man, это я к тому, что сначала нужно посмотреть обучалки, примеры других ботов, переписать этих ботов самостоятельно, после этого 90% твоих вопросов отпадут) а чекнуть видосик и сразу рваться пилить бота, после чего слать сюда свои вопросы - это не комильфо)
  • Ошибка Traceback. Как исправить?

    @bituke
    MoRo67, для начала изучить питон, понять его логику, потом пробовать писать код)
    повторяю:
    def __init__(self, ai_game):
            """Инициализирует корабль и задает начальную позицию"""
            self.screen = ai_game.screen
            self.screen_rect = ai_game.screen.get_rect()

    ты вот здесь в self.ship = Ship(screen) передаешь объект screen
    потом из переданного screen зачем-то вызываешь screen self.screen = ai_game.screen
    дальше сам
  • Ошибка Traceback. Как исправить?

    @bituke
    MoRo67, ...ты передаешь в Ship объект screen, и в 7 строке из screen вызываешь screen?
  • Ошибка Traceback. Как исправить?

    @bituke
    MoRo67, я про это:
    File "D:\pythonProject\main.py", line 17, in __init__
        self.ship = Ship(screen)
    NameError: name 'screen' is not defined

    тут сказано, 17 строка, 'screen' не найден
  • Как сравнивать дату только по году и месяцу?

    @bituke Автор вопроса
    Спасибо большое)
  • Redirect перезагрудает страницу, django, что делать?

    @bituke
    ужаснейший код)) даже у меня такого на старте не было)) Во-первых вместо try/except используй get_object_or_404, дальше в if можно использовать просто if user (твоя конструкция никогда не сработает, потому что изначально user у тебя строка, а не None). После чего убери все except'ы и отлавливай ошибки, либо указывай, какую ошибку отлавливаешь. И убедительная просьба, не придумывай код самостоятельно, прочитай книжку по django и многие фичи которые ты реализуешь через костыли, будешь писать лаконично и грамотно
  • В чем заключаются архитектурные ошибки моего кода?

    @bituke Автор вопроса
    Я короче спустя пару часов все наладил)) там суть в том, что нужно получить определенные данные на каждый месяц определенного периода. Я каждый раз зачем-то в каждой функции добавлял данные сразу за все месяца через цикл, когда это можно сделать уже после в самом конце, один раз. Большая часть ваших советов не пригодилась, но на будущее очень будет полезно, вы прям помогли) Оптимизировал код, выглядит следующим образом:
    class Calculation():
    
    	def __init__(self, calculation):
    		#init data for calculations
    		self.calculation = calculation
    		self.project = calculation.project
    		self.sales_init = calculation.variant_sales.sales_init
    		self.project_capex = calculation.variant_capex.capexs.project_capex
    		self.opexs = calculation.variant_costs.opexs
    		self.project_tax = calculation.variant_taxs
    		self.start_date = self.sales_init.start_date
    		self.end_date = self.sales_init.end_date
    		self.project_duration = self.end_date - self.start_date
    		self.daterange = list(pd.date_range(self.start_date, 
    											self.end_date, 
    											freq='M', 
    											normalize=True,))
    		self.daterange.append(self.end_date)
    
    		#indexation periods numbers
    		self.value_indexation_period = None
    		self.inflation_indexation_period = None
    
    		#init_indexing_numbers
    		self.init_indexing_numbers(inflation=False)
    		self.init_indexing_numbers(inflation=True)
    
    	def init_indexing_numbers(self, inflation=False):
    		'''Установка периода индексации
    		inflation == False -> устанавливает период для индексации объема
    		inflation == True -> устанавливает период для индексации инфляции'''
    
    		indexation_period = None
    		indexation_number = None
    		if inflation:
    			indexation_period = self.sales_init.inflation_indexation_period
    			indexation_number = self.self.inflation_indexation_period = None
    		else:
    			indexation_period = self.sales_init.value_indexation_period
    			indexation_number = self.self.value_indexation_period = None
    
    		if indexation_period == 2:
    			indexation_number = 1
    		elif indexation_period == 1:
    			indexation_number = 3
    		else:
    			indexation_number = 12
    
    	def get_indexation(sefl, date_index, inflation=False):
    		'''Получить индексацию
    		date_index - номер месяца проекта в итерации
    		inflation==True -> индексация по инфляции
    		inflation==False -> индексация по объему'''
    
    		indexation_period = None
    		if inflation:
    			indexation_period = self.inflation_indexation_period
    			sales_init_indexation = self.sales_init.inflation_indexation
    		else:
    			indexation_period = self.value_indexation_period
    			sales_init_indexation = self.sales_init.value_indexation
    
    		indexation = 1
    
    		if date_index % indexation_period==0 and date_index != 0:
    			if date_index in range(0, indexation_period):
    				indexation = 1
    			else:
    				indexation *= sales_init_indexation
    
    		return indexation
    
    	def get_depreciation(self):
    		'''получить аммортизацию проекта'''
    		amount_capital_expenditure = self.project_capex.amount_capital_expenditure #сумма кап. расходов
    		deprication_period = self.project_capex.deprication_period #период аммортизации 
    		return amount_capital_expenditure/deprication_period
    
    	def get_revenue(self, count):
    		'''Получить итоговую выручку'''
    		inflation_indexations = self.get_indexation(count, inflation=True)
    		value_indexations = self.get_indexation(count, inflation=False)
    		price = inflation_indexations*self.sales_init.price
    		volume = value_indexations*self.sales_init.sales_volume
    
    		return price*volume
    
    	def get_total_commercial_costs(self, count):
    		'''получить итоговую сумму коммерческих расходов'''
    		opex_price = 0
    		for opex in self.opexs.filter(cost_types_by_economic_grouping=8):
    			price = opex.price
    			if opex.price_indexation:
    				price = price*self.get_indexation(count, inflation=True)
    
    			if opex.types_business_activity_costs == 0:
    				price = price*self.get_indexation(count, inflation=False)
    
    			opex_price += price
    
    		return opex_price
    
    	def get_total_managerial_costs(self, count):
    		'''получить итоговую сумму управленческих расходов'''
    		opex_price = 0
    		for opex in self.opexs.filter(cost_types_by_economic_grouping=9):
    			price = opex.price
    			if opex.price_indexation:
    				price = price*self.get_indexation(count, inflation=True)
    			if opex.types_business_activity_costs == 0:
    				price = price*self.get_indexation(count, inflation=False)
    			opex_price += price
    
    		return opex_price
    
    	def get_total_costs(self, count):
    		'''получить итоговую сумму остальных расходов'''
    		opex_price = 0
    		for opex in self.opexs.all().exclude(
    											cost_types_by_economic_grouping=9).exclude(
    											cost_types_by_economic_grouping=8):
    			price = opex.price
    			if opex.price_indexation:
    				price = price*self.get_indexation(count, inflation=True)
    			if opex.types_business_activity_costs == 0:
    				price = price*self.get_indexation(count, inflation=False)
    			opex_price += price
    
    		return opex_price
    
    	def get_gross_profit(self, count):
    		'''Получить валовую прибыль'''
    		revenues = self.get_revenue()
    		costs = self.get_total_costs()
    		revenue = revenues(count)
    		cost = costs(count)
    		return revenue-cost
    
    	def get_ebit(self, count):
    		'''EBIT'''
    		gross_profit = self.get_gross_profit(count)
    		commercial_costs = self.get_commercial_costs(count)
    		managerial_costs = self.get_managerial_costs(count)
    
    		return gross_profit-commercial_costs-managerial_costs
    
    	def get_interest_expenses(self, count):
    		'''процентные расходы'''
    		pass
    
    	def get_profit_before_tax(self, count):
    		'''прибыль до налогооблажения'''
    		profit = self.get_ebit(count)-self.get_interest_expenses(count)
    		return profit
    
    	def get_income_tax(self, count):
    		'''получить налог на прибыль'''
    		tax_min = self.project_tax.tax_prm_min
    		tax_min_burden = tax_min.tax_min_burden
    		income_tax = 0
    		if tax_min.exsist():
    			if tax_min.tax_min_burden_base == 0:
    				income_tax = self.get_revenue(count)*tax_min_burden
    			else:
    				income_tax = self.get_profit_before_tax(count)*tax_min_burden
    		else:
    			income_tax = self.project_tax.tax_prm_standart.tax_rates.filter(
    						tax_type=3).first()*self.get_profit_before_tax(count)
    
    		return income_tax
    
    	def get_net_profit(self, count):
    		'''чистая прибыль'''
    		profit = self.get_profit_before_tax(count)-self.get_income_tax(count)
    		return profit
    
    	def get_ebitda(self, count):
    		'''ебитда'''
    		ebitda = self.get_ebit(count)/self.get_depreciation()
    		return ebitda
    
    	def add_data_to_db(self):
    		'''Добавить все данные в таблицу ProfitAndLossPlan'''
    		count = 0
    		for i in self.daterange:
    			pf_and_loss_plan = ProfitAndLossPlan(month=i,
    												revenue = round(self.get_revenue(count), 2),
    												сost_price = round(self.get_total_costs(count), 2),
    												gross_profit = round(self.get_gross_profit(count), 2),
    												calculation=self.calculation,)
    			pf_and_loss_plan.save()
    			count+=1
    
    		return True
  • В чем заключаются архитектурные ошибки моего кода?

    @bituke Автор вопроса
    круто... уже третий раз перечитываю, переписываю код. Огромное спасибо за потраченное время
  • Как использовать токен авторизации в обычных представлениях?

    @bituke Автор вопроса
    спасибо за ответ, это то - что я хотел услышать.