Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ###forms.py
- class ClientForm(ModelForm):
- class Meta:
- model = Client
- fields = ('fio', 'phone', 'email', 'address', 'client_type')
- labels = {
- 'fio': (u'ФИО контактного лица'),
- 'phone': (u'Телефон'),
- 'email': (u'Эл. почта'),
- 'address': (u'Адрес'),
- 'client_type': (''), }
- widgets = {
- 'fio': TextInput(attrs={'id': 'edit-fio', 'class': 'form-control', 'name': 'fio'}),
- 'address': TextInput(attrs={'id': "edit-address", 'class': 'form-control'}),
- 'phone': TextInput(attrs={'id': 'edit-phone', 'class': 'form-control'}),
- 'email': EmailInput(attrs={'id': 'edit-mail', 'class': 'form-control'}),
- 'client_type': RadioSelect(attrs={'id': 'customer-type', }),
- }
- class OrderForm(ModelForm):
- class Meta:
- model = Order
- fields = ('comment', 'pay_type')
- labels = {
- 'comment': (u'Комментарий к заказу'),
- 'pay_type': (u''),
- }
- # localized_fields = ('__all__',)
- widgets = {
- 'comment': Textarea(attrs={'cols': 80, 'rows': 3, 'id': 'edit-comment', 'class': 'form-control'}),
- 'pay_type': Select(attrs={'id': 'pay-type', 'class': 'pay-type'}),
- }
- class ContactForm(Form):
- name = forms.CharField(max_length=50, required=True, label=u'Имя', widget=TextInput(attrs={'id': 'edit-name', 'class': 'form-control'}))
- mail = forms.EmailField(max_length=50, required=True, label=u'Эл. почта',
- widget=EmailInput(attrs={'id': 'edit-mail', 'class': 'form-control'}))
- message = forms.CharField(max_length=50, required=True, label=u'Текст сообщения',
- widget=Textarea(attrs={'rows': 5, 'id': 'edit-comment', 'class': 'form-control'}))
- class OrderDetailsForm(Form):
- count = forms.IntegerField(min_value=1, max_value=1000, required=True, label=u'',
- widget=TextInput(
- attrs={'id': 'edit-count', 'name': 'count', 'class': 'form-control', 'value': 1}))
- ##views.py
- def catalog(kwargs):
- """
- get page for current_menu
- """
- context = kwargs['context']
- categories = Category.objects.all()
- context['categories'] = categories
- context['categories_grouped'] = grouped(categories, 3)
- return context
- def subcategory(kwargs):
- """
- get page for current_menu
- """
- context = kwargs['context']
- request = kwargs['request']
- record_slug = get_slug_from_path(request.path)
- subcategory = Subcategory.objects.get(slug=record_slug)
- context['subcategory'] = subcategory
- return context
- # @login_required
- def basket(kwargs):
- """
- get page for current_menu
- """
- context = kwargs['context']
- request = kwargs['request']
- user = request.user
- client = None
- order=None
- if user.is_authenticated():
- client = user.user_profile
- else:
- try:
- client = Client.objects.get(session_key=request.session.session_key)
- except:
- return context
- if client:
- orders = Order.objects.filter(client=client, status__title='active')
- if orders:
- order = orders[0]
- order_form = OrderForm(instance=order, prefix='ord', label_suffix='')
- client_form = ClientForm(instance=client, prefix='cli', label_suffix='')
- if request.POST:
- post = request.POST.copy()
- order_form = OrderForm(post, instance=order, prefix='ord', label_suffix='')
- client_form = ClientForm(post, instance=client, prefix='cli', label_suffix='')
- # paytype_form=PayType(post, instance=order.pay_type, prefix='paytp')
- if order_form.is_valid() and client_form.is_valid():
- order = order_form.save(commit=False)
- order.client = client_form.save()
- # order.pay_type=paytype_form.save()
- status = Status.objects.get(title='sent')
- order.status = status
- order.save()
- # Generate orders file for 1C
- generate_order(None, None, None)
- else:
- total_sum = 0
- count_pos = order.order_details.count()
- context['count_pos'] = count_pos
- for item in order.order_details.all():
- total_sum += item.summa
- total_sum_cop = int(math.modf(total_sum)[0])
- context['total_sum_rub'] = int(total_sum)
- if total_sum_cop > 0:
- context['total_sum_cop'] = total_sum_cop
- else:
- context['total_sum_cop'] = ""
- context['client'] = client
- context['order_form'] = order_form
- context['client_form'] = client_form
- context['status'] = order.status.title
- context['order'] = order
- c = {}
- c.update(csrf(request))
- return context
- def contacts(kwargs):
- """
- """
- context = kwargs['context']
- request = kwargs['request']
- contact_form = ContactForm(label_suffix='', auto_id='edit-%s')
- thanks = False
- if request.method == 'POST':
- post = request.POST.copy()
- contact_form = ContactForm(post, label_suffix='', auto_id='edit-%s')
- if contact_form.is_valid():
- name = contact_form.cleaned_data['name']
- mail = contact_form.cleaned_data['mail']
- message = contact_form.cleaned_data['message']
- subject = 'Новое сообщение с сайта'
- try:
- send_mail(subject, message, mail, recipients)
- thanks = True
- except Exception, e:
- print 'Ошибка авторизации SMTP'
- context['contact_form'] = contact_form
- context['thanks'] = thanks
- c = {}
- c.update(csrf(request))
- return context
- def product(kwargs):
- """
- get product for current_menu
- """
- price_type = None
- context = kwargs['context']
- request = kwargs['request']
- record_slug = get_slug_from_path(request.path)
- imgs = Image.objects.filter(image !=None)
- ref_record = Product.objects.get(slug=record_slug)
- product_have_images=False
- for image in ref_record.product_images.all():
- image_path=os.path.join(settings.MEDIA_URL, image.image.path)
- if os.path.exists(image_path):
- product_have_images=True
- break
- try:
- user = request.user
- price_type = request.user.user_profile.price_type
- except:
- pass
- try:
- price = ref_record.product_prices.get(price_type=price_type).value
- except:
- price = None
- try:
- price_default = ref_record.product_prices.filter(price_type__title=DEFAULT_PRICE_TYPE)[0].value
- except:
- price_default = None
- #
- orderdetails_form = OrderDetailsForm(label_suffix='')
- if request.POST:
- post = request.POST.copy()
- orderdetails_form = OrderDetailsForm(post, label_suffix='')
- if orderdetails_form.is_valid():
- products_cnt = orderdetails_form.cleaned_data['count']
- add_to_basket(request, ref_record.pk, products_cnt)
- context['product_have_images'] = product_have_images
- context['ref_record'] = ref_record
- context['price'] = price
- context['price_default'] = price_default
- context['orderdetails_form'] = orderdetails_form
- context['order_items_count'] = order_items_count(request)
- return context
- def actions(kwargs):
- """
- get random actions
- """
- context = kwargs['context']
- actions = Product.objects.filter(action=True).order_by('?')[:2]
- context['actions'] = actions
- return context
- from django.template import RequestContext
- from django.shortcuts import render_to_response
- def add_to_basket(request, pk1, cnt=1):
- product = Product.objects.get(pk1=pk1)
- data = request.POST.copy()
- client = None
- order = None
- try:
- user = request.user
- except:
- pass
- if user.is_authenticated():
- client = user.user_profile
- else:
- try:
- client = Client.objects.get_or_create(session_key=request.session.session_key)[0]
- except Exception, e:
- pass
- if client:
- orders = Order.objects.filter(client=client, status__title='active')
- else:
- return
- if orders:
- order = orders[0]
- if not order:
- order = Order()
- order.client = client
- status = Status.objects.get(title='active')
- order.status = status
- order.save()
- # try find details
- details_items = Details.objects.filter(order=order, product=product)
- if details_items.count() > 0:
- details = details_items[0]
- details.count += cnt
- details.summa = product.get_price_for_user(request) * details.count
- else:
- details = Details()
- details.order = order
- details.product = product
- details.count = cnt
- details.summa = product.get_price_for_user(request) * details.count
- details.save()
- return HttpResponseRedirect(request.META.get("HTTP_REFERER", '/'))
- @login_required
- def cabinet(kwargs):
- context = kwargs['context']
- categories = Category.objects.all()
- context['categories'] = categories
- return context
Advertisement
Add Comment
Please, Sign In to add comment