Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Change users models #66

Merged
merged 12 commits into from
Nov 26, 2021
42 changes: 42 additions & 0 deletions conftest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import pytest
from users.models import Role, User, Team


@pytest.fixture
def new_team_factory(db):
def create_team(name="Team1",
description="very good team"):
team = Team.objects.create(name=name,
description=description)
return team
return create_team


@pytest.fixture
def team_1(db, new_team_factory):
return new_team_factory()


@pytest.fixture
def new_user_factory(db, new_team_factory):
def create_user(username="username",
email="username@redhat.com",
password="password",
first_name="first_name",
last_name="last_name",
role=Role.EMPLOYEE,
team=new_team_factory("Team1", "Best team")):
user = User.create_user(username=username,
email=email,
password=password,
first_name=first_name,
last_name=last_name,
role=role,
team=team)
return user
return create_user


@pytest.fixture
def employee_1(db, new_user_factory):
return new_user_factory()
6 changes: 3 additions & 3 deletions tasks/migrations/0002_initial.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,13 @@ class Migration(migrations.Migration):
),
migrations.AddField(
model_name='comment',
name='task_id',
name='task',
field=models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE, to='tasks.task'),
on_delete=django.db.models.deletion.CASCADE, to='tasks.task', related_name='comments'),
),
migrations.AddField(
model_name='comment',
name='user_id',
name='user',
field=models.ForeignKey(on_delete=django.db.models.deletion.RESTRICT, related_name='comments',
to='users.user'),
),
Expand Down
12 changes: 8 additions & 4 deletions tasks/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,10 @@ class Priority(ChoiceEnum):
class Task(models.Model):
title = models.CharField(max_length=200)
created_date = models.DateTimeField(auto_now_add=True)
assignee = models.ForeignKey(User, on_delete=models.RESTRICT, related_name='assigneeTasks')
created_by = models.ForeignKey(User, on_delete=models.RESTRICT, related_name='createdTasks')
assignee = models.ForeignKey(
User, on_delete=models.RESTRICT, related_name='assigneeTasks')
created_by = models.ForeignKey(
User, on_delete=models.RESTRICT, related_name='createdTasks')
priority = EnumChoiceField(Priority, default=Priority.LOW, max_length=1)
status = EnumChoiceField(Status, default=Status.BACKLOG, max_length=1)
description = models.TextField(null=True, blank=True)
Expand All @@ -30,8 +32,10 @@ def __str__(self) -> str:


class Comment(models.Model):
user_id = models.ForeignKey(User, on_delete=models.RESTRICT, related_name='comments')
task_id = models.ForeignKey(Task, on_delete=models.CASCADE)
user = models.ForeignKey(
User, on_delete=models.RESTRICT, related_name='comments')
task = models.ForeignKey(
Task, on_delete=models.CASCADE, related_name='comments')
title = models.CharField(max_length=200)
created_date = models.DateTimeField(auto_now_add=True)
description = models.TextField(null=True, blank=True)
Expand Down
2 changes: 0 additions & 2 deletions tests.py

This file was deleted.

7 changes: 2 additions & 5 deletions users/migrations/0001_initial.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,10 @@ class Migration(migrations.Migration):
('user',
models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False,
to='auth.user')),
('email', models.EmailField(max_length=255)),
('first_name', models.CharField(max_length=255)),
('last_name', models.CharField(max_length=255)),
('role', enumchoicefield.fields.EnumChoiceField(default=users.models.Role.EMPLOYEE,
enum_class=users.models.Role, max_length=1)),
('team_id', models.ForeignKey(on_delete=django.db.models.deletion.RESTRICT, related_name='users',
to='users.team')),
('team', models.ForeignKey(on_delete=django.db.models.deletion.RESTRICT, related_name='users',
to='users.team')),
],
),
]
21 changes: 16 additions & 5 deletions users/models.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from django.db import models
from enumchoicefield import ChoiceEnum, EnumChoiceField
from django.conf import settings
from django.contrib.auth.models import User as DjangoUser


# Enum
Expand All @@ -21,12 +22,22 @@ def __str__(self) -> str:
class User(models.Model):
user = models.OneToOneField(
settings.AUTH_USER_MODEL, on_delete=models.CASCADE, primary_key=True)
email = models.EmailField(max_length=255)
first_name = models.CharField(max_length=255)
last_name = models.CharField(max_length=255)
role = EnumChoiceField(Role, default=Role.EMPLOYEE, max_length=1)
team_id = models.ForeignKey(
team = models.ForeignKey(
Team, on_delete=models.RESTRICT, related_name='users')

@staticmethod
def create_user(username, email, password, first_name, last_name, role, team):
django_user = DjangoUser.objects.create_user(username=username,
email=email,
password=password,
first_name=first_name,
last_name=last_name)
user = User(user=django_user,
role=role,
team=team)
user.save()
return user

def __str__(self) -> str:
return self.first_name
return self.user.username
12 changes: 10 additions & 2 deletions users/tests.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
# from django.test import TestCase
from users.models import Role, User, Team

# Create your tests here.

def test_create_user(employee_1):
assert isinstance(employee_1, User)
assert employee_1.role == Role.EMPLOYEE


def test_create_team(team_1):
assert isinstance(team_1, Team)
assert team_1.name == "Team1"