AlexProfi

Vews and forms tz66.ru

Sep 8th, 2015
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 9.67 KB | None | 0 0
  1. ###forms.py
  2.  
  3.  
  4. class ClientForm(ModelForm):
  5.     class Meta:
  6.         model = Client
  7.         fields = ('fio', 'phone', 'email', 'address', 'client_type')
  8.         labels = {
  9.             'fio': (u'ФИО контактного лица'),
  10.             'phone': (u'Телефон'),
  11.             'email': (u'Эл. почта'),
  12.             'address': (u'Адрес'),
  13.             'client_type': (''), }
  14.  
  15.         widgets = {
  16.             'fio': TextInput(attrs={'id': 'edit-fio', 'class': 'form-control', 'name': 'fio'}),
  17.             'address': TextInput(attrs={'id': "edit-address", 'class': 'form-control'}),
  18.             'phone': TextInput(attrs={'id': 'edit-phone', 'class': 'form-control'}),
  19.             'email': EmailInput(attrs={'id': 'edit-mail', 'class': 'form-control'}),
  20.             'client_type': RadioSelect(attrs={'id': 'customer-type', }),
  21.         }
  22.  
  23.  
  24. class OrderForm(ModelForm):
  25.     class Meta:
  26.         model = Order
  27.         fields = ('comment', 'pay_type')
  28.         labels = {
  29.             'comment': (u'Комментарий к заказу'),
  30.             'pay_type': (u''),
  31.         }
  32.         # localized_fields = ('__all__',)
  33.         widgets = {
  34.             'comment': Textarea(attrs={'cols': 80, 'rows': 3, 'id': 'edit-comment', 'class': 'form-control'}),
  35.             'pay_type': Select(attrs={'id': 'pay-type', 'class': 'pay-type'}),
  36.         }
  37.  
  38.  
  39. class ContactForm(Form):
  40.     name = forms.CharField(max_length=50, required=True, label=u'Имя', widget=TextInput(attrs={'id': 'edit-name', 'class': 'form-control'}))
  41.  
  42.     mail = forms.EmailField(max_length=50, required=True, label=u'Эл. почта',
  43.                       widget=EmailInput(attrs={'id': 'edit-mail', 'class': 'form-control'}))
  44.  
  45.     message = forms.CharField(max_length=50, required=True, label=u'Текст сообщения',
  46.                         widget=Textarea(attrs={'rows': 5, 'id': 'edit-comment', 'class': 'form-control'}))
  47.  
  48.  
  49. class OrderDetailsForm(Form):
  50.     count = forms.IntegerField(min_value=1, max_value=1000, required=True, label=u'',
  51.                          widget=TextInput(
  52.                              attrs={'id': 'edit-count', 'name': 'count', 'class': 'form-control', 'value': 1}))
  53.  
  54. ##views.py
  55. def catalog(kwargs):
  56.     """
  57.    get page for current_menu
  58.    """
  59.     context = kwargs['context']
  60.  
  61.     categories = Category.objects.all()
  62.  
  63.     context['categories'] = categories
  64.     context['categories_grouped'] = grouped(categories, 3)
  65.  
  66.     return context
  67.  
  68.  
  69. def subcategory(kwargs):
  70.     """
  71.    get page for current_menu
  72.    """
  73.     context = kwargs['context']
  74.     request = kwargs['request']
  75.     record_slug = get_slug_from_path(request.path)
  76.  
  77.     subcategory = Subcategory.objects.get(slug=record_slug)
  78.  
  79.     context['subcategory'] = subcategory
  80.     return context
  81.  
  82.  
  83. # @login_required
  84. def basket(kwargs):
  85.     """
  86.    get page for current_menu
  87.    """
  88.  
  89.     context = kwargs['context']
  90.     request = kwargs['request']
  91.  
  92.     user = request.user
  93.     client = None
  94.     order=None
  95.  
  96.     if user.is_authenticated():
  97.         client = user.user_profile
  98.     else:
  99.         try:
  100.             client = Client.objects.get(session_key=request.session.session_key)
  101.         except:
  102.             return context
  103.     if client:
  104.         orders = Order.objects.filter(client=client, status__title='active')
  105.         if orders:
  106.             order = orders[0]
  107.  
  108.             order_form = OrderForm(instance=order, prefix='ord', label_suffix='')
  109.             client_form = ClientForm(instance=client, prefix='cli', label_suffix='')
  110.  
  111.             if request.POST:
  112.                 post = request.POST.copy()
  113.                 order_form = OrderForm(post, instance=order, prefix='ord', label_suffix='')
  114.                 client_form = ClientForm(post, instance=client, prefix='cli', label_suffix='')
  115.                 # paytype_form=PayType(post, instance=order.pay_type, prefix='paytp')
  116.  
  117.                 if order_form.is_valid() and client_form.is_valid():
  118.                     order = order_form.save(commit=False)
  119.                     order.client = client_form.save()
  120.                     # order.pay_type=paytype_form.save()
  121.                     status = Status.objects.get(title='sent')
  122.                     order.status = status
  123.                     order.save()
  124.                     # Generate orders file for 1C
  125.                     generate_order(None, None, None)
  126.  
  127.  
  128.             else:
  129.  
  130.                 total_sum = 0
  131.                 count_pos = order.order_details.count()
  132.                 context['count_pos'] = count_pos
  133.  
  134.                 for item in order.order_details.all():
  135.                     total_sum += item.summa
  136.  
  137.                 total_sum_cop = int(math.modf(total_sum)[0])
  138.  
  139.                 context['total_sum_rub'] = int(total_sum)
  140.  
  141.                 if total_sum_cop > 0:
  142.                     context['total_sum_cop'] = total_sum_cop
  143.                 else:
  144.                     context['total_sum_cop'] = ""
  145.                 context['client'] = client
  146.  
  147.                 context['order_form'] = order_form
  148.                 context['client_form'] = client_form
  149.             context['status'] = order.status.title
  150.     context['order'] = order
  151.  
  152.     c = {}
  153.     c.update(csrf(request))
  154.  
  155.     return context
  156.  
  157.  
  158. def contacts(kwargs):
  159.     """
  160.  
  161.    """
  162.     context = kwargs['context']
  163.     request = kwargs['request']
  164.  
  165.     contact_form = ContactForm(label_suffix='', auto_id='edit-%s')
  166.     thanks = False
  167.  
  168.     if request.method == 'POST':
  169.         post = request.POST.copy()
  170.         contact_form = ContactForm(post, label_suffix='', auto_id='edit-%s')
  171.  
  172.         if contact_form.is_valid():
  173.             name = contact_form.cleaned_data['name']
  174.             mail = contact_form.cleaned_data['mail']
  175.             message = contact_form.cleaned_data['message']
  176.             recipients = ['[email protected]']
  177.             subject = 'Новое сообщение с сайта'
  178.             try:
  179.                 send_mail(subject, message, mail, recipients)
  180.                 thanks = True
  181.             except Exception, e:
  182.                 print 'Ошибка авторизации SMTP'
  183.  
  184.     context['contact_form'] = contact_form
  185.     context['thanks'] = thanks
  186.  
  187.     c = {}
  188.     c.update(csrf(request))
  189.  
  190.     return context
  191.  
  192.  
  193. def product(kwargs):
  194.     """
  195.    get product for current_menu
  196.    """
  197.     price_type = None
  198.     context = kwargs['context']
  199.     request = kwargs['request']
  200.     record_slug = get_slug_from_path(request.path)
  201.     imgs = Image.objects.filter(image !=None)
  202.  
  203.     ref_record = Product.objects.get(slug=record_slug)
  204.     product_have_images=False
  205.     for image in ref_record.product_images.all():
  206.         image_path=os.path.join(settings.MEDIA_URL, image.image.path)
  207.         if os.path.exists(image_path):
  208.             product_have_images=True
  209.             break
  210.  
  211.     try:
  212.         user = request.user
  213.         price_type = request.user.user_profile.price_type
  214.     except:
  215.         pass
  216.     try:
  217.         price = ref_record.product_prices.get(price_type=price_type).value
  218.     except:
  219.         price = None
  220.     try:
  221.         price_default = ref_record.product_prices.filter(price_type__title=DEFAULT_PRICE_TYPE)[0].value
  222.     except:
  223.         price_default = None
  224.  
  225.         #
  226.     orderdetails_form = OrderDetailsForm(label_suffix='')
  227.  
  228.     if request.POST:
  229.         post = request.POST.copy()
  230.         orderdetails_form = OrderDetailsForm(post, label_suffix='')
  231.  
  232.         if orderdetails_form.is_valid():
  233.             products_cnt = orderdetails_form.cleaned_data['count']
  234.             add_to_basket(request, ref_record.pk, products_cnt)
  235.  
  236.     context['product_have_images'] = product_have_images
  237.     context['ref_record'] = ref_record
  238.     context['price'] = price
  239.     context['price_default'] = price_default
  240.     context['orderdetails_form'] = orderdetails_form
  241.     context['order_items_count'] = order_items_count(request)
  242.  
  243.     return context
  244.  
  245.  
  246. def actions(kwargs):
  247.     """
  248.    get random actions
  249.    """
  250.     context = kwargs['context']
  251.  
  252.     actions = Product.objects.filter(action=True).order_by('?')[:2]
  253.  
  254.     context['actions'] = actions
  255.     return context
  256.  
  257.  
  258. from django.template import RequestContext
  259. from django.shortcuts import render_to_response
  260.  
  261. def add_to_basket(request, pk1, cnt=1):
  262.     product = Product.objects.get(pk1=pk1)
  263.     data = request.POST.copy()
  264.  
  265.     client = None
  266.     order = None
  267.  
  268.     try:
  269.         user = request.user
  270.     except:
  271.         pass
  272.     if user.is_authenticated():
  273.         client = user.user_profile
  274.     else:
  275.         try:
  276.             client = Client.objects.get_or_create(session_key=request.session.session_key)[0]
  277.         except Exception, e:
  278.             pass
  279.     if client:
  280.         orders = Order.objects.filter(client=client, status__title='active')
  281.     else:
  282.         return
  283.     if orders:
  284.         order = orders[0]
  285.     if not order:
  286.         order = Order()
  287.  
  288.     order.client = client
  289.     status = Status.objects.get(title='active')
  290.     order.status = status
  291.  
  292.     order.save()
  293.  
  294.     # try find details
  295.     details_items = Details.objects.filter(order=order, product=product)
  296.     if details_items.count() > 0:
  297.         details = details_items[0]
  298.         details.count += cnt
  299.         details.summa = product.get_price_for_user(request) * details.count
  300.     else:
  301.         details = Details()
  302.         details.order = order
  303.         details.product = product
  304.         details.count = cnt
  305.         details.summa = product.get_price_for_user(request) * details.count
  306.     details.save()
  307.  
  308.     return HttpResponseRedirect(request.META.get("HTTP_REFERER", '/'))
  309.  
  310. @login_required
  311. def cabinet(kwargs):
  312.     context = kwargs['context']
  313.  
  314.     categories = Category.objects.all()
  315.  
  316.     context['categories'] = categories
  317.     return context
Advertisement
Add Comment
Please, Sign In to add comment