remotes/origin/setup
ArturBaybulatov 10 years ago
parent 7664a1fba7
commit 75d7a13444
  1. 43
      archilance/management/commands/seed_data.py
  2. 5
      projects/forms.py
  3. 30
      projects/migrations/0003_auto_20160519_1312.py
  4. 21
      projects/migrations/0004_auto_20160519_1338.py
  5. 28
      projects/models.py
  6. 8
      projects/serializers.py
  7. 16
      projects/views.py
  8. 2
      users/admin.py
  9. 21
      users/migrations/0002_team_groups.py
  10. 5
      users/models.py

@ -13,12 +13,19 @@
# import os
# import requests
# import util
from django.contrib.auth.models import Group, Permission
from django.contrib.contenttypes.models import ContentType
from django.core.management import BaseCommand
from django.utils import timezone
import pydash as _; _.map = _.map_; _.filter = _.filter_
import pydash as _;
_.map = _.map_; _.filter = _.filter_
import random
from django.contrib.auth.models import Group
from projects.models import Project
from registration.models import RegistrationProfile
from specializations.models import Specialization
from users.models import User
@ -63,8 +70,36 @@ class Command(BaseCommand):
User.objects.create_superuser('admin@example.com', '123456')
customer_group = Group.objects.create(name='Исполнители')
contractor_group = Group.objects.create(name='Заказчики')
contractor_group = Group.objects.create(name='Исполнители')
customer_group = Group.objects.create(name='Заказчики')
# ct_proj = ContentType.objects.get_for_model(Project)
# ct_spec = ContentType.objects.get_for_model(Specialization)
# ct_register = ContentType.objects.get_for_model(RegistrationProfile)
#
#
# proj_perms = Permission.objects.filter(content_type=ct_proj)
# spec_perms = Permission.objects.filter(content_type=ct_spec)
# ct_register = Permission.objects.filter(content_type=ct_register)
#
# contractor_group.permissions.add(spec_perms, ct_register)
# customer_group.permissions.add(proj_perms, spec_perms, ct_register)
_root = Specialization.objects.create(name='_root')
stages = ('A','B','C','D')
for s1 in stages:
x = Specialization.objects.create(name='Стадия %s' % s1, parent=_root)
for s2 in stages:
y = Specialization.objects.create(name='Стадия %s-%s' % (s1,s2), parent=x)
for s3 in stages:
z = Specialization.objects.create(name='Стадия %s-%s-%s' % (s1,s2,s3), parent=y)
for s4 in stages:
Specialization.objects.create(name='Стадия %s-%s-%s-%s' % (s1,s2,s3,s4), parent=z)
def create_user(i):
username = 'user-%s' % i

@ -7,10 +7,9 @@ class ProjectForm(ModelForm):
fields = (
'name',
'text',
'price',
# 'user',
# 'specialization',
'specialization',
'text',
)

@ -0,0 +1,30 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.6 on 2016-05-19 13:12
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):
dependencies = [
('specializations', '0001_initial'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('projects', '0002_auto_20160519_1022'),
]
operations = [
migrations.AddField(
model_name='project',
name='specialization',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='projects', to='specializations.Specialization'),
),
migrations.AddField(
model_name='project',
name='user',
field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, related_name='projects', to=settings.AUTH_USER_MODEL),
preserve_default=False,
),
]

@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.6 on 2016-05-19 13:38
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('projects', '0003_auto_20160519_1312'),
]
operations = [
migrations.AlterField(
model_name='project',
name='specialization',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='projects', to='specializations.Specialization'),
),
]

@ -7,13 +7,13 @@ from specializations.models import Specialization
class Project(models.Model):
name = models.CharField(max_length=255)
price = models.DecimalField(max_digits=10, decimal_places=2)
specialization = models.ForeignKey(Specialization, related_name='projects')
text = models.TextField(blank=True)
# user = models.ForeignKey(User, related_name='projects')
# specialization = models.ForeignKey(Specialization, related_name='projects', blank=True, null=True) # TODO: Make required
user = models.ForeignKey(User, related_name='projects')
# type_work = models.CharField()
# budget = models.CharField()
# cro = models.BooleanField(default=False)
# type_work = models.CharField()
def __str__(self):
return self.name
@ -25,28 +25,28 @@ class Project(models.Model):
class Answer(models.Model):
COST_TYPE_CHOICES = (
('RUR', 'rur'),
('USD', 'usd'),
('EUR', 'eur'),
('rur', 'rur'),
('usd', 'usd'),
('eur', 'eur'),
)
TERM_TYPE_CHOICES = (
('HOUR', 'hour'),
('DAY', 'day'),
('MONTH', 'month'),
('hour', 'hour'),
('day', 'day'),
('month', 'month'),
)
cost = models.DecimalField(max_digits=10, decimal_places=2)
cost_type = models.CharField(max_length=5, choices=COST_TYPE_CHOICES, default='RUR')
text = models.TextField()
term = models.DecimalField(max_digits=10, decimal_places=2)
term_type = models.CharField(max_length=10, choices=TERM_TYPE_CHOICES, default='hour')
term_type = models.CharField(max_length=10, choices=TERM_TYPE_CHOICES, default='HOUR')
project = models.ForeignKey(Project, related_name='answers')
user = models.ForeignKey(User, related_name='answers')
def __str__(self):
return self.text
class Meta:
verbose_name = 'Ответ к проекту'
verbose_name_plural = 'Ответы к проектам'

@ -5,17 +5,17 @@ from specializations.serializers import SpecializationSerializer
from users.serializers import UserSerializer
class ProjectSerializer(ModelSerializer):
# specialization = SpecializationSerializer()
# user = UserSerializer()
specialization = SpecializationSerializer()
user = UserSerializer()
class Meta:
model = Project
fields = (
'id',
# 'specialization',
# 'user',
'name',
'price',
'specialization',
'text',
'user',
)

@ -20,17 +20,23 @@ class ProjectDetailView(DetailView):
class ProjectCreateView(PermissionRequiredMixin, CreateView):
model = Project
permission_required = ['projects.add_project']
permission_required = ('projects.add_project',)
raise_exception = True
form_class = ProjectForm
success_url = '/projects/'
success_url = '/projects/' # TODO: Use `reverse_lazy('projects-list')` from `django.core.urlresolvers`
def form_valid(self, form):
project = form.instance
project.user = self.request.user
project.save()
return super().form_valid(form)
class PortfolioCreateView(PermissionRequiredMixin, CreateView):
model = Portfolio
form_class = PortfolioForm
permission_required = ['projects.add_portfolio']
permission_required = ('projects.add_portfolio',)
success_url = '/projects/'
# import code; code.interact(local=dict(globals(), **locals()))

@ -5,7 +5,7 @@ from .models import User, Team
class UserAdmin(admin.ModelAdmin):
readonly_fields = ('pk',)
list_display = ('email','get_groups','is_active')
list_display = ('email','get_groups','is_active',)
def get_groups(self, obj):
return ', '.join(g.name for g in obj.groups.all())

@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.6 on 2016-05-19 14:52
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('auth', '0007_alter_validators_add_error_messages'),
('users', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='team',
name='groups',
field=models.ManyToManyField(blank=True, related_name='teams', to='auth.Group'),
),
]

@ -1,7 +1,5 @@
from django.db import models
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, AbstractUser
from django.contrib.auth.models import PermissionsMixin
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, AbstractUser, Group, PermissionsMixin
class UserManager(BaseUserManager):
def create_user(self, email, password=None):
@ -64,6 +62,7 @@ class Team(models.Model):
name = models.CharField(max_length=255)
users = models.ManyToManyField(User, related_name ='teams', blank=True)
owner = models.OneToOneField(User, related_name='team', null=True)
groups = models.ManyToManyField(Group, related_name='teams', blank=True)
def __str__(self):
return self.name

Loading…
Cancel
Save