diff --git a/archilance/management/commands/generate_teams.py b/archilance/management/commands/generate_teams.py new file mode 100644 index 0000000..52a9cf1 --- /dev/null +++ b/archilance/management/commands/generate_teams.py @@ -0,0 +1,32 @@ +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 random + +from archilance import util +from common.models import Location +from specializations.models import Specialization +from users.models import User, GENDERS, Team + + +class Command(BaseCommand): + def handle(self, *args, **options): + print('---------------------------------------') + print('Generating teams...') + print('---------------------------------------') + + + # ('owner', 'Relation? True', 'Null? True', '(relation)', 'Hidden? False'), + # ('users', 'Relation? True', 'Null? False', '(relation)', 'Hidden? False'), + # + # ('name', 'Relation? False', 'Null? False', 'Blank? False', 'Hidden? False'), + + + contractors = User.contractor_objects.order_by('?') + contractors = contractors[:contractors.count() // 2] + + for contr in contractors: + team = Team.objects.create(name="%s's team" % contr.username, owner=contr) + team.users = User.contractor_objects.filter(team=None)[:_.random(1, 4)] diff --git a/archilance/settings/base.py b/archilance/settings/base.py index 572c777..9cb8382 100644 --- a/archilance/settings/base.py +++ b/archilance/settings/base.py @@ -248,6 +248,7 @@ EMAIL_DEFAULT = 'noreply@archilance.ru' SHELL_PLUS_POST_IMPORTS = ( # Extra auto imports + 'natsort', ('archilance', 'util'), ('pprint', ('pprint', 'pformat')), ) diff --git a/requirements/base.txt b/requirements/base.txt index 61a9ced..790f1a6 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -36,7 +36,4 @@ six==1.10.0 sorl-thumbnail==12.3 sqlparse==0.1.19 tornado==4.3 - - - - +natsort diff --git a/users/forms.py b/users/forms.py index 9970216..8dde601 100644 --- a/users/forms.py +++ b/users/forms.py @@ -47,7 +47,13 @@ class ContractorFilterForm(forms.Form): # ('created', 'дате размещения'), # ('views', 'просмотрам'), # ) - # + + PARTY_TYPES = ( + ('', 'Все'), + ('teams', 'Группы'), + ('contractors', 'Исполнители'), + ) + # order_by = forms.ChoiceField(required=False, choices=PROJECT_ORDER_CHOICES) # last_order_by = forms.ChoiceField(required=False, choices=PROJECT_ORDER_CHOICES) # reverse_order = forms.BooleanField(required=False) @@ -84,6 +90,11 @@ class ContractorFilterForm(forms.Form): cro = forms.BooleanField(required=False) + party_types = forms.ChoiceField( + choices=PARTY_TYPES, + required=False, + ) + def __init__(self, *args, **kwargs): self.request = kwargs.pop('request') super().__init__(*args, **kwargs) diff --git a/users/models.py b/users/models.py index 2e51b55..f70e21f 100644 --- a/users/models.py +++ b/users/models.py @@ -15,7 +15,6 @@ GENDERS = ( class UserManager(BaseUserManager): def create_user(self, username, email, password=None, **kwargs): - # import code; code.interact(local=dict(globals(), **locals())) if not email: raise ValueError('Users must have an email address') @@ -77,6 +76,7 @@ class ContractorFinancialInfo(models.Model): verbose_name = 'Финансовая информация' verbose_name_plural = 'Финансовая информация' + class ContractorResume(models.Model): resume_file = models.FileField(upload_to='users/resume/files/') text = models.TextField() diff --git a/users/templates/contractor_filter.html b/users/templates/contractor_filter.html index 2c20381..84a02ac 100644 --- a/users/templates/contractor_filter.html +++ b/users/templates/contractor_filter.html @@ -137,9 +137,15 @@