def update(request): ''' Данная функция отвечает за обноление всех данных о пользователе: Профиль, Юр. данные, Инф. о доставке. Она принимает на вход всего 1 форму и в зависимости от параметров расбрасывает эти данные в набор моделей. ''' if request.method == 'POST': # Если пришли данные от формы form = ProfileForm(request.POST, request.FILES) # Создадним экземпляр формы if form.is_valid(): # Если все данные введены корректно... # Если произошли изменения в модели пользователя user = User.objects.get(id=request.user.id) user.first_name = form.cleaned_data['first_name'] user.last_name = form.cleaned_data['last_name'] user.save() # Если произошли изменения в модели профиля profile = Profile.objects.get(user=user) profile.phone = form.cleaned_data['phone'] is_legal = int(form.cleaned_data['is_legal']) # Подгрузка аватарки на сервер try: profile.img = handle_uploaded_file(request.FILES['img'], 'user_pic') except: pass # Проверка, является ли пользователь юр.лицом if is_legal == 0: profile.is_legal = False else: profile.is_legal = True profile.save() # Если пользователь становится юр.лицом, необходимо сохранить в базе его юридические данные form = LegalForm(request.POST) if form.is_valid(): try: legal = Legal.objects.get(profile=profile) legal.title = form.cleaned_data['legal_name'] legal.inn = form.cleaned_data['inn'] legal.kpp = form.cleaned_data['kpp'] legal.bik = form.cleaned_data['bik'] legal.rs = int(form.cleaned_data['rs']) legal.ks = int(form.cleaned_data['ks']) legal.post = form.cleaned_data['post'] except: legal = Legal( profile = profile, title = form.cleaned_data['legal_name'], inn = form.cleaned_data['inn'], kpp = form.cleaned_data['kpp'], bik = form.cleaned_data['bik'], rs = int(form.cleaned_data['rs']), ks = int(form.cleaned_data['ks']), post = form.cleaned_data['post'], ) legal.save() # Если пользователь вводит свои данные по доставке form = DeliveryForm(request.POST) if form.is_valid(): try: delivery = Delivery.objects.get(profile=profile) delivery.title = form.cleaned_data['delivery_name'] delivery.address = form.cleaned_data['address'] delivery.city = form.cleaned_data['city'] except: delivery = Delivery( profile = profile, title = form.cleaned_data['delivery_name'], address = form.cleaned_data['address'], city = form.cleaned_data['city'] ) delivery.save() return HttpResponseRedirect('/profile/')
def order(request): data = get_global_data(request) user_id = request.user.id if request.method == 'POST': # If the form has been submitted... order = Order(request.POST, request.FILES) # A form bound to the POST data if order.is_valid(): # All validation rules pass # Создаём переменные для принятых данных product = order.cleaned_data['product'] format = order.cleaned_data['format'] time = order.cleaned_data['time'] circulation = order.cleaned_data['circulation'] paper = order.cleaned_data['paper'] chromacity = order.cleaned_data['chromacity'] cost = order.cleaned_data['cost'] not_cash = order.cleaned_data['not_cash'] need_deliver = order.cleaned_data['need_deliver'] # Создаём переменные для оставшихся данных,которых нет в форме is_delivered = False order_status = 0 client = user_id # Создаём новый объект Заказа new_order = OrderModel( client = client, product = product, format = format, time = time, circulation = circulation, paper = paper, chromacity = chromacity, cost = cost, not_cash = not_cash, need_deliver = need_deliver, is_delivered = is_delivered, order_status = order_status, enter_date = datetime.datetime.now(), end_date = datetime.datetime.now(), ) # Попробуем записать на сервер первый файл try: handle_uploaded_file(request.FILES['file1'], 'client_files') file1_is_uploadded = True except: file1_is_uploadded = False # Попробуем записать на сервер второй файл try: handle_uploaded_file(request.FILES['file2'], 'client_files') file2_is_uploadded = True except: file2_is_uploadded = False if file1_is_uploadded: new_order.file1 = request.FILES['file1'] if file2_is_uploadded: new_order.file2 = request.FILES['file2'] # Генерация txt-файла для 1C f = open(DIRNAME_TO_WRITABLE_DIR+'/media/orders_logs/client-'+unicode(client)+'_'+unicode(datetime.datetime.now())+'.txt', 'w') order_desc = unicode(client) + '|' + unicode(product) + '|' + unicode(format) + '|' + unicode(time) + '|' + unicode(circulation) + '|' + unicode(paper) + '|' + unicode(chromacity) + '|' + unicode(cost) + '|' + unicode(not_cash) + '|' + unicode(need_deliver) + '|' + unicode(datetime.datetime.now()) #f.write(order_desc) f.close() # Отправляем пользователю сообщение, что его заказ - принят send_html_mail('Ваш заказ принят', request.user.email, {'name': request.user.first_name + ' ' + request.user.last_name}, 'emails/order_sent_mail.html', sender='*****@*****.**') # Сохраняем новый заказ в базу new_order.save() return HttpResponseRedirect('/profile/orders/') # Redirect after POST else: order = Order() # An unbound form data['order'] = order return data