Skip to content

Commit 1ccc67e

Browse files
authored
Merge pull request #250 from PROCOLLAB-github/verybigsad-pro-85
add UserSkill & UserSkillTag models
2 parents 31f6432 + 3c0cb1c commit 1ccc67e

2 files changed

Lines changed: 146 additions & 1 deletion

File tree

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
# Generated by Django 4.2.3 on 2023-12-16 12:16
2+
3+
from django.db import migrations, models
4+
import django.db.models.deletion
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
("contenttypes", "0002_remove_content_type_name"),
11+
("core", "0004_alter_link_unique_together"),
12+
]
13+
14+
operations = [
15+
migrations.CreateModel(
16+
name="Skill",
17+
fields=[
18+
(
19+
"id",
20+
models.BigAutoField(
21+
auto_created=True,
22+
primary_key=True,
23+
serialize=False,
24+
verbose_name="ID",
25+
),
26+
),
27+
("skill", models.CharField(max_length=256)),
28+
],
29+
options={
30+
"verbose_name": "Навык",
31+
"verbose_name_plural": "Навыки",
32+
"ordering": ["skill"],
33+
},
34+
),
35+
migrations.CreateModel(
36+
name="UserSkillTag",
37+
fields=[
38+
(
39+
"id",
40+
models.BigAutoField(
41+
auto_created=True,
42+
primary_key=True,
43+
serialize=False,
44+
verbose_name="ID",
45+
),
46+
),
47+
("skill_tag", models.CharField(max_length=256)),
48+
(
49+
"skill",
50+
models.ForeignKey(
51+
on_delete=django.db.models.deletion.CASCADE,
52+
related_name="tags",
53+
to="core.skill",
54+
),
55+
),
56+
],
57+
options={
58+
"verbose_name": "Тег навыка",
59+
"verbose_name_plural": "Теги навыков",
60+
"ordering": ["skill_tag"],
61+
},
62+
),
63+
migrations.CreateModel(
64+
name="SkillToObject",
65+
fields=[
66+
(
67+
"id",
68+
models.BigAutoField(
69+
auto_created=True,
70+
primary_key=True,
71+
serialize=False,
72+
verbose_name="ID",
73+
),
74+
),
75+
("object_id", models.PositiveIntegerField()),
76+
(
77+
"content_type",
78+
models.ForeignKey(
79+
on_delete=django.db.models.deletion.CASCADE,
80+
related_name="skills",
81+
to="contenttypes.contenttype",
82+
),
83+
),
84+
(
85+
"skill",
86+
models.ForeignKey(
87+
on_delete=django.db.models.deletion.CASCADE,
88+
related_name="skills",
89+
to="core.skill",
90+
),
91+
),
92+
],
93+
),
94+
]

core/models.py

Lines changed: 52 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
from django.contrib.auth import get_user_model
22
from django.contrib.contenttypes.fields import GenericForeignKey
33
from django.contrib.contenttypes.models import ContentType
4-
from django.db.models import Model
54
from django.db import models
5+
from django.db.models import Model
66

77
User = get_user_model()
88

@@ -99,3 +99,54 @@ class Meta:
9999

100100
def __str__(self):
101101
return f"View<{self.user} - {self.content_object}>"
102+
103+
104+
class Skill(models.Model):
105+
"""
106+
Skill model
107+
"""
108+
109+
skill = models.CharField(max_length=256, null=False)
110+
111+
class Meta:
112+
verbose_name = "Навык"
113+
verbose_name_plural = "Навыки"
114+
ordering = ["skill"]
115+
116+
117+
class UserSkillTag(models.Model):
118+
"""
119+
User skill tag model
120+
"""
121+
122+
skill_tag = models.CharField(max_length=256, null=False)
123+
skill = models.ForeignKey(
124+
Skill,
125+
on_delete=models.CASCADE,
126+
related_name="tags",
127+
)
128+
129+
class Meta:
130+
verbose_name = "Тег навыка"
131+
verbose_name_plural = "Теги навыков"
132+
ordering = ["skill_tag"]
133+
134+
135+
class SkillToObject(models.Model):
136+
"""
137+
Skill model for skill_2_user/vacancy/project/etc relation
138+
"""
139+
140+
skill = models.ForeignKey(
141+
Skill,
142+
on_delete=models.CASCADE,
143+
related_name="skills",
144+
)
145+
146+
content_type = models.ForeignKey(
147+
ContentType,
148+
on_delete=models.CASCADE,
149+
related_name="skills",
150+
)
151+
object_id = models.PositiveIntegerField()
152+
content_object = GenericForeignKey("content_type", "object_id")

0 commit comments

Comments
 (0)