remotes/origin/setup
ArturBaybulatov 10 years ago
commit f73c8cbb03
  1. 8
      projects/forms.py
  2. 11
      projects/migrations/0001_initial.py
  3. 35
      projects/migrations/0002_auto_20160517_0903.py
  4. 18
      projects/templates/projects/portfolio_form.html
  5. 5
      projects/urls.py
  6. 18
      projects/views.py
  7. 2
      specializations/migrations/0001_initial.py
  8. 3
      users/admin.py
  9. 12
      users/migrations/0001_initial.py
  10. 34
      users/models.py

@ -1,5 +1,5 @@
from django.forms import ModelForm from django.forms import ModelForm
from .models import Project from .models import Project, Portfolio
class ProjectForm(ModelForm): class ProjectForm(ModelForm):
class Meta: class Meta:
@ -12,3 +12,9 @@ class ProjectForm(ModelForm):
# 'user', # 'user',
# 'specialization', # 'specialization',
) )
class PortfolioForm(ModelForm):
class Meta:
model = Portfolio
fields = '__all__'

@ -1,7 +1,8 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# Generated by Django 1.9.6 on 2016-05-17 09:03 # Generated by Django 1.9.6 on 2016-05-18 16:08
from __future__ import unicode_literals from __future__ import unicode_literals
from django.conf import settings
from django.db import migrations, models from django.db import migrations, models
import django.db.models.deletion import django.db.models.deletion
@ -11,7 +12,8 @@ class Migration(migrations.Migration):
initial = True initial = True
dependencies = [ dependencies = [
('specializations', '0001_initial'), migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('specializations', '__first__'),
] ]
operations = [ operations = [
@ -21,6 +23,7 @@ class Migration(migrations.Migration):
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=255)), ('name', models.CharField(max_length=255)),
('description', models.TextField()), ('description', models.TextField()),
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
], ],
), ),
migrations.CreateModel( migrations.CreateModel(
@ -28,6 +31,7 @@ class Migration(migrations.Migration):
fields=[ fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('img', models.ImageField(upload_to='projects/portfolio')), ('img', models.ImageField(upload_to='projects/portfolio')),
('portfolio', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='projects.Portfolio')),
], ],
), ),
migrations.CreateModel( migrations.CreateModel(
@ -37,7 +41,8 @@ class Migration(migrations.Migration):
('name', models.CharField(max_length=255)), ('name', models.CharField(max_length=255)),
('price', models.DecimalField(decimal_places=2, max_digits=10)), ('price', models.DecimalField(decimal_places=2, max_digits=10)),
('text', models.TextField(blank=True)), ('text', models.TextField(blank=True)),
('specialization', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='projects', to='specializations.Specialization')), ('specialization', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='projects', to='specializations.Specialization')),
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='projects', to=settings.AUTH_USER_MODEL)),
], ],
options={ options={
'verbose_name_plural': 'Проекты', 'verbose_name_plural': 'Проекты',

@ -1,35 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.6 on 2016-05-17 09:03
from __future__ import unicode_literals
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
('projects', '0001_initial'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.AddField(
model_name='project',
name='user',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='projects', to=settings.AUTH_USER_MODEL),
),
migrations.AddField(
model_name='portfoliophoto',
name='portfolio',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='projects.Portfolio'),
),
migrations.AddField(
model_name='portfolio',
name='user',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
),
]

@ -0,0 +1,18 @@
{% extends "base.html" %}
{% block content %}
<h1>Добавление</h1>
<form method="post" action="">
{{ form.errors }}
{% csrf_token %}
{% for field in form %}
<div class="row">
{{ field.label }}
{{ field }}
</div>
{% endfor %}
<input type="submit" value="Создать" />
</form>
{% endblock %}s

@ -1,11 +1,12 @@
from django.conf import urls from django.conf import urls
# from django.contrib.auth.views import login, logout # from django.contrib.auth.views import login, logout
from .views import ProjectListView, ProjectDetailView, ProjectCreateView from .views import ProjectListView, ProjectDetailView, ProjectCreateView , PortfolioCreateView
urlpatterns = [ urlpatterns = [
urls.url(r'^$', ProjectListView.as_view(), name='projects-list'), urls.url(r'^$', ProjectListView.as_view(), name='projects-list'),
urls.url(r'^create/$', ProjectCreateView.as_view(), name='project-create'), urls.url(r'^create/$', ProjectCreateView.as_view(), name='project-create'),
urls.url(r'^portfolio/create/$', PortfolioCreateView.as_view(), name='portfolio-create'),
urls.url(r'(?P<pk>\d+)$', ProjectDetailView.as_view(), name='project-detail'), urls.url(r'(?P<pk>\d+)$', ProjectDetailView.as_view(), name='project-detail'),
] ]

@ -1,12 +1,9 @@
from django.shortcuts import render from django.shortcuts import render
from django.contrib.auth.mixins import PermissionRequiredMixin from django.contrib.auth.mixins import PermissionRequiredMixin
from django.views.generic import ListView, DetailView, CreateView from django.views.generic import ListView, DetailView, CreateView
from django.contrib.auth.models import Permission
from django.contrib.auth.decorators import permission_required
from .models import Project from .models import Project, Portfolio
from users.models import User from .forms import ProjectForm, PortfolioForm
from .forms import ProjectForm
class ProjectListView(ListView): class ProjectListView(ListView):
@ -24,5 +21,16 @@ class ProjectDetailView(DetailView):
class ProjectCreateView(PermissionRequiredMixin, CreateView): class ProjectCreateView(PermissionRequiredMixin, CreateView):
model = Project model = Project
permission_required = ['projects.add_project'] permission_required = ['projects.add_project']
raise_exception = True
form_class = ProjectForm form_class = ProjectForm
success_url = '/projects/' success_url = '/projects/'
class PortfolioCreateView(PermissionRequiredMixin, CreateView):
model = Portfolio
form_class = PortfolioForm
permission_required = ['projects.add_portfolio']
success_url = '/projects/'

@ -1,5 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# Generated by Django 1.9.6 on 2016-05-17 09:03 # Generated by Django 1.9.6 on 2016-05-18 16:08
from __future__ import unicode_literals from __future__ import unicode_literals
from django.db import migrations, models from django.db import migrations, models

@ -1,5 +1,6 @@
from django.contrib import admin from django.contrib import admin
from .models import User from .models import User, Team
admin.site.register(User) admin.site.register(User)
admin.site.register(Team)

@ -1,7 +1,8 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# Generated by Django 1.9.6 on 2016-05-17 09:03 # Generated by Django 1.9.6 on 2016-05-18 16:08
from __future__ import unicode_literals from __future__ import unicode_literals
from django.conf import settings
from django.db import migrations, models from django.db import migrations, models
@ -25,7 +26,6 @@ class Migration(migrations.Migration):
('last_name', models.CharField(blank=True, max_length=255)), ('last_name', models.CharField(blank=True, max_length=255)),
('email', models.EmailField(db_index=True, max_length=255, unique=True)), ('email', models.EmailField(db_index=True, max_length=255, unique=True)),
('is_active', models.BooleanField(default=True)), ('is_active', models.BooleanField(default=True)),
('is_admin', models.BooleanField(default=False)),
('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.Group', verbose_name='groups')), ('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.Group', verbose_name='groups')),
('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.Permission', verbose_name='user permissions')), ('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.Permission', verbose_name='user permissions')),
], ],
@ -33,4 +33,12 @@ class Migration(migrations.Migration):
'abstract': False, 'abstract': False,
}, },
), ),
migrations.CreateModel(
name='Team',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=255)),
('users', models.ManyToManyField(blank=True, to=settings.AUTH_USER_MODEL)),
],
),
] ]

@ -15,7 +15,7 @@ class UserManager(BaseUserManager):
def create_superuser(self, email, password): def create_superuser(self, email, password):
user = self.create_user(email, password) user = self.create_user(email, password)
user.is_admin = True user.is_superuser = True
user.save(using=self._db) user.save(using=self._db)
return user return user
@ -35,12 +35,11 @@ class User(AbstractBaseUser, PermissionsMixin):
last_name = models.CharField(max_length=255, blank=True) last_name = models.CharField(max_length=255, blank=True)
email = models.EmailField(max_length=255, unique=True, db_index=True) email = models.EmailField(max_length=255, unique=True, db_index=True)
is_active = models.BooleanField(default=True) is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
@property @property
def is_staff(self): def is_staff(self):
return self.is_admin return self.is_superuser
def __str__(self): def __str__(self):
return self.email return self.email
@ -50,24 +49,17 @@ class User(AbstractBaseUser, PermissionsMixin):
def get_full_name(self): def get_full_name(self):
return self.first_name + ' ' + self.last_name return self.first_name + ' ' + self.last_name
# def has_perm(self, perm, obj=None):
# perm = perm.split('.')[-1]
# if self.user and not self.user.is_active:
# return False
# elif self.user and self.user.is_superuser:
# return True
# return perm in self.get_perms(obj)
#
#
def has_perm(self, perm, obj=None):
# return self.is_admin
return True
def has_module_perms(self, app_label):
return self.is_admin
USERNAME_FIELD = 'email' USERNAME_FIELD = 'email'
REQUIRED_FIELDS = [] REQUIRED_FIELDS = []
objects = UserManager() objects = UserManager()
perform_objects = PerformUserManager() perform_objects = PerformUserManager()
customers_objects = CustomerUserManager() customers_objects = CustomerUserManager()
class Team(models.Model):
name = models.CharField(max_length=255)
users = models.ManyToManyField(User, blank=True)
owner = models.OneToOneField(User, related_name='team')
def __str__(self):
return self.name

Loading…
Cancel
Save