Пример #1
0
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/')
Пример #2
0
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