Skip to content

Instantly share code, notes, and snippets.

@linevych
Last active July 6, 2016 19:31
Show Gist options
  • Save linevych/b75c3cb81237b8dfa0b2f0b86832f7b8 to your computer and use it in GitHub Desktop.
Save linevych/b75c3cb81237b8dfa0b2f0b86832f7b8 to your computer and use it in GitHub Desktop.
Code review for Dmytro
"""vitruna URL Configuration
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/1.9/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: url(r'^$', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.conf.urls import url, include
2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls'))
"""
from django.conf.urls import url
from django.contrib import admin
from dashboard.views import *
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^dashboard/', Dashboard.as_view(), name='dashboard'),
url(r'^setup/', SetupShop.as_view(), name='setup'),
]
"""
Dashboard views
---------------
Пиши коменатрі в reStructuredText, потім їх можна буде зібрати Sphinx'ом докупи.
(Приклад ReadTheDocs.org)
"""
from django.http import HttpResponseRedirect
from django.views.generic import FormView
from django.contrib.auth.mixins import LoginRequiredMixin
from django.core.urlresolvers import reverse
from core.models import Shop
from .forms import ShopForm
class SetupShop(FormView, LoginRequiredMixin):
"""
Set up shop, main view.
Description of the view goes here.
....
LoginRequiredMixin == @login_required
Що означає request.user.role == '1' я ХЗ, в тебе якась кастомна модель User?
"""
form_class = ShopForm()
template_name = 'setup.html'
# Хардкодити url дуже погана звичка.
# Тобі треба користуватись параметром name в urls.py.
# В моєму випадку то: name='dashboard'
success_url = reverse('dashboard')
login_url = reverse('login')
def get(self, request, *args, **kwargs):
"""
Переписуємо стандартний метод get() з FormView.
Можна зробити те саме з post() якщо тобі потрібно так само POST запити обробляти.
"""
try:
have_shop = Shop.objects.get(owner=request.user.pk)
if have_shop:
return HttpResponseRedirect(self.get_success_url())
except:
# конструкція super(class_name).method_name() означає що далі буде виконуватись код методу
# з батьківського класу, в нашому випадку він буде ренедрити форму
super(SetupShop).get(request, *args, **kwargs)
def clean_owner(self):
"""
Змінюємо значення owner в формі.
В FormView можна проводити будь-які операції над даними поля оголосивши метод clean_{{field_name}}.
В даному випадку ми змінюємо значення owner.
"""
owner = self.request.user
return owner
class Dashboard(FormView):
"""
На скріні видно не все, тому в точності написати не можу ;)
"""
pass
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment