@@ -16,56 +16,111 @@ You plan to write a set of models and an assoicated admin for UMSRA researchers.
16
16
17
17
18
18
from django.db import models
19
+ from django.utils.text import slugify
19
20
from entities.models import Hero, Villain
20
-
21
+ from django.contrib.auth.models import User
22
+ import uuid
23
+
21
24
class Epic(models.Model):
22
25
name = models.CharField(max_length=255)
23
26
participating_heroes = models.ManyToManyField(Hero)
24
27
participating_villains = models.ManyToManyField(Villain)
25
-
26
-
28
+
29
+
27
30
class Event(models.Model):
31
+ id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
28
32
epic = models.ForeignKey(Epic, on_delete=models.CASCADE)
29
33
details = models.TextField()
30
34
years_ago = models.PositiveIntegerField()
31
-
32
-
35
+
36
+
33
37
class EventHero(models.Model):
34
38
event = models.ForeignKey(Event, on_delete=models.CASCADE)
35
39
hero = models.ForeignKey(Hero, on_delete=models.CASCADE)
36
40
is_primary = models.BooleanField()
37
-
38
-
41
+
42
+
39
43
class EventVillain(models.Model):
40
44
event = models.ForeignKey(Event, on_delete=models.CASCADE)
41
45
hero = models.ForeignKey(Villain, on_delete=models.CASCADE)
42
46
is_primary = models.BooleanField()
47
+
48
+
49
+ class UserParent(models.Model):
50
+ user = models.OneToOneField(
51
+ User,
52
+ on_delete=models.CASCADE,
53
+ primary_key=True,
54
+ )
55
+ father_name = models.CharField(max_length=100)
56
+ mother_name = models.CharField(max_length=100)
57
+
58
+ class Article(models.Model):
59
+ headline = models.CharField(max_length=100)
60
+ pub_date = models.DateField()
61
+ reporter = models.ForeignKey(User, on_delete=models.CASCADE, related_name='reporter')
62
+ slug = models.SlugField()
63
+
64
+ def save(self, *args, **kwargs):
65
+ self.slug = slugify(self.headline)
66
+ super(Article, self).save(*args, **kwargs)
67
+ def __str__(self):
68
+ return self.headline
69
+
70
+ class Meta:
71
+ ordering = ('headline',)
72
+
73
+ class TempUser(models.Model):
74
+ first_name = models.CharField(max_length=100)
75
+
76
+ class Meta:
77
+ managed = False
78
+ db_table = "temp_user"
79
+
80
+
81
+ class ColumnName(models.Model):
82
+ a = models.CharField(max_length=40,db_column='column1')
83
+ column2 = models.CharField(max_length=50)
84
+
85
+ def __str__(self):
86
+ return self.a
43
87
44
88
45
89
#### Entities
46
90
47
91
from django.db import models
48
92
49
-
93
+ from django.conf import settings
94
+
95
+
50
96
class Category(models.Model):
51
97
name = models.CharField(max_length=100)
52
-
53
-
98
+
99
+ class Meta:
100
+ verbose_name_plural = "Categories"
101
+
102
+ def __str__(self):
103
+ return self.name
104
+
105
+
54
106
class Origin(models.Model):
55
107
name = models.CharField(max_length=100)
56
-
57
-
108
+
109
+ def __str__(self):
110
+ return self.name
111
+
112
+
58
113
class Entity(models.Model):
59
114
GENDER_MALE = "Male"
60
115
GENDER_FEMALE = "Female"
61
116
GENDER_OTHERS = "Others/Unknown"
62
-
117
+
63
118
name = models.CharField(max_length=100)
64
119
alternative_name = models.CharField(
65
120
max_length=100, null=True, blank=True
66
121
)
67
-
68
-
122
+
123
+
69
124
category = models.ForeignKey(Category, on_delete=models.CASCADE)
70
125
origin = models.ForeignKey(Origin, on_delete=models.CASCADE)
71
126
gender = models.CharField(
@@ -77,36 +132,54 @@ You plan to write a set of models and an assoicated admin for UMSRA researchers.
77
132
)
78
133
)
79
134
description = models.TextField()
80
-
135
+
136
+ added_by = models.ForeignKey(settings.AUTH_USER_MODEL,
137
+ null=True, blank=True, on_delete=models.SET_NULL)
138
+ added_on = models.DateField(auto_now=True)
139
+
140
+ def __str__(self):
141
+ return self.name
142
+
81
143
class Meta:
82
144
abstract = True
83
-
84
-
145
+
146
+
85
147
class Hero(Entity):
86
-
148
+
149
+ class Meta:
150
+ verbose_name_plural = "Heroes"
151
+
87
152
is_immortal = models.BooleanField(default=True)
88
-
153
+
89
154
benevolence_factor = models.PositiveSmallIntegerField(
90
155
help_text="How benevolent this hero is?"
91
156
)
92
157
arbitrariness_factor = models.PositiveSmallIntegerField(
93
158
help_text="How arbitrary this hero is?"
94
159
)
160
+
161
+ headshot = models.ImageField(null=True, blank=True, upload_to="hero_headshots/")
162
+
95
163
# relationships
96
164
father = models.ForeignKey(
97
- "self", related_name="+ ", null=True, blank=True, on_delete=models.SET_NULL
165
+ "self", related_name="children ", null=True, blank=True, on_delete=models.SET_NULL
98
166
)
99
167
mother = models.ForeignKey(
100
168
"self", related_name="+", null=True, blank=True, on_delete=models.SET_NULL
101
169
)
102
170
spouse = models.ForeignKey(
103
171
"self", related_name="+", null=True, blank=True, on_delete=models.SET_NULL
104
172
)
105
-
106
-
173
+
174
+
175
+ class HeroProxy(Hero):
176
+
177
+ class Meta:
178
+ proxy = True
179
+
107
180
class Villain(Entity):
108
181
is_immortal = models.BooleanField(default=False)
109
-
182
+
110
183
malevolence_factor = models.PositiveSmallIntegerField(
111
184
help_text="How malevolent this villain is?"
112
185
)
@@ -115,3 +188,20 @@ You plan to write a set of models and an assoicated admin for UMSRA researchers.
115
188
)
116
189
is_unique = models.BooleanField(default=True)
117
190
count = models.PositiveSmallIntegerField(default=1)
191
+
192
+
193
+ class HeroAcquaintance(models.Model):
194
+ "Non family contacts of a Hero"
195
+ hero = models.OneToOneField(Hero, on_delete=models.CASCADE)
196
+
197
+ friends = models.ManyToManyField(Hero, related_name="+")
198
+ detractors = models.ManyToManyField(Hero, related_name="+")
199
+ main_anatagonists = models.ManyToManyField(Villain, related_name="+")
200
+
201
+
202
+ class AllEntity(models.Model):
203
+ name = models.CharField(max_length=100)
204
+
205
+ class Meta:
206
+ managed = False
207
+ db_table = "entities_entity"
0 commit comments