class User(AbstractUser): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False, unique=True) username = models.CharField(blank=True, null=True, max_length=50) email = models.EmailField(('email address'), unique=True) first_name = models.CharField(blank=False, max_length=50) last_name = models.CharField(blank=False, max_length=50) clout = models.IntegerField(default=0) courses = models.ArrayReferenceField(to='posts.Course', on_delete=models.SET_NULL, blank=True, null=True, related_name='+') posts = models.ArrayReferenceField(to='posts.Post', on_delete=models.SET_NULL, blank=True, null=True, related_name='+') comments = models.ArrayReferenceField(to='posts.Comment', on_delete=models.SET_NULL, blank=True, null=True, related_name='+') isTutor = models.BooleanField(default=False) # Overwriting default username field in Django's AbstractUser class. Allows for unique check for email and prevents usernames from being required. USERNAME_FIELD = 'email' REQUIRED_FIELDS = ['username', 'first_name', 'last_name'] def __str__(self): return "{} {}".format(self.first_name, self.last_name)
class UserProfile(models.Model): _id = models.ObjectIdField() user = models.ForeignKey(User, on_delete=models.CASCADE) first_name = models.CharField(max_length=50) last_name = models.CharField(max_length=50) email_address = models.EmailField(max_length=254) phone_number = models.CharField(max_length=10) alternate_phone = models.CharField(max_length=254) kyc_verified = models.BooleanField() accounts_linked = models.ArrayReferenceField(to=Accounts, blank=True) profile_pic = models.ImageField(upload_to=get_file_path, default='', blank=True, null=True) user_joined_date = models.CharField(max_length=50) transactions_linked = models.ArrayReferenceField(to=Transactions, on_delete=models.CASCADE, blank=True) tickets_linked = models.ArrayReferenceField(to=Ticket, on_delete=models.CASCADE, blank=True) cards_linked = models.ArrayReferenceField(to=Card, on_delete=models.CASCADE, blank=True) wallets_linked = models.ArrayReferenceField(to=Wallet, on_delete=models.CASCADE, blank=True) def __str__(self): return str(self.user.id)
class Course(models.Model): class Meta: unique_together = [['courseCode', 'university']] id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False, unique=True) courseCode = models.CharField(max_length=7) name = models.CharField(max_length=75) university = models.CharField(max_length=4, editable=False, choices=UNIVERSITY_CHOICES) description = models.CharField(max_length=255, blank=True) creator = models.ForeignKey('userAuth.User', on_delete=models.SET_NULL, null=True, editable=False, related_name='course') posts = models.ArrayReferenceField(to='Post', on_delete=models.SET_NULL, blank=True, null=True, related_name='+') members = models.ArrayReferenceField(to='userAuth.User', on_delete=models.SET_NULL, blank=True, null=True, related_name='+') def __str__(self): return "{}: {}".format(self.university, self.courseCode)
class Note(models.Model): title = models.CharField( 'Название', max_length=100, ) description = models.TextField(blank=True, null=True, default=None) theme = models.ArrayReferenceField(to=Theme, verbose_name='Тема заметки', on_delete=models.SET_NULL, blank=True, null=True, default=None) user = models.ArrayReferenceField(to=User, verbose_name='Автор заметки', validators=[ validate_user_field, ]) date = models.DateField( 'Дата напоминания', blank=True, default=None, null=True, ) time = models.TimeField( 'Время напоминания', blank=True, default=None, null=True, ) def __str__(self): return f'{self.title}'
class Comment(models.Model): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False, unique=True) author = models.ForeignKey('userAuth.User', null=True, on_delete=models.SET_NULL, editable=False, related_name='comment') dateTimePosted = models.DateTimeField(auto_now_add=True, editable=False) dateTimeEdited = models.DateTimeField(auto_now=True, null=True) parentPost = models.ForeignKey('Post', null=True, on_delete=models.CASCADE, editable=True, related_name='comment') content = models.OneToOneField(Content, on_delete=models.CASCADE, related_name='comment') points = models.IntegerField(default=0) likers = models.ArrayReferenceField(to='userAuth.User', on_delete=models.SET_NULL, blank=True, null=True, related_name='+') dislikers = models.ArrayReferenceField(to='userAuth.User', on_delete=models.SET_NULL, blank=True, null=True, related_name='+') def __str__(self): return "Reply to: {}".format(self.post.title)
class Classes(models.Model): class_id = models.UUIDField(primary_key=True, blank=False, default=uuid.uuid4, editable=False) credit = models.IntegerField(blank=False, verbose_name='credit') section_id = models.PositiveSmallIntegerField( verbose_name="class section ID", blank=False) start_time = models.TimeField(auto_now=False, blank=False, verbose_name="class start time") end_time = models.TimeField(auto_now=False, blank=False, verbose_name="class end time") course_part = models.ForeignKey(to='Courses', on_delete=models.CASCADE, verbose_name='Course part') grade_scale = models.ForeignKey(to='GpaScale', on_delete=models.CASCADE, verbose_name='Grade Scale', blank=False) weights = models.ForeignKey(to='Weights', on_delete=models.CASCADE, verbose_name='Grade weights', blank=False) students = models.ArrayReferenceField(to=Student, on_delete=models.CASCADE) teachers = models.ArrayReferenceField(to=Teacher, on_delete=models.CASCADE) def __str__(self): return str(self.course_part) + '_' + str(self.section_id)
class Concept(models.Model): _id = models.ObjectIdField(blank=True) name = models.CharField(max_length=255, unique=True) attributes = models.ArrayReferenceField(to=Attribute, default=list, blank=True) equations = models.ArrayReferenceField(to=Equation, default=list, blank=True)
class Article(models.Model): ''' Defines the Article class. An article refers to a specific article, for example a Twitter article, a news article ''' url = models.TextField(max_length=300) date = models.DateField(db_index=True) language = models.TextField(max_length=30) keywords = models.ArrayReferenceField(Keyword) gkg_themes = models.ArrayReferenceField(GKGTheme) actors = models.ArrayReferenceField(Actor)
class Bio(models.Model): #kimble information name = models.CharField(max_length=100, default='') title = models.CharField(max_length=100, default='') url = models.TextField(blank=True, null=True) location = models.CharField(max_length=50, default='') email = models.TextField(blank=True, null=True) cost = models.FloatField(blank=True, null=True) cost_type = models.TextField(blank=True, null=True) assignments = models.ArrayReferenceField(to=Assignments, on_delete=models.DO_NOTHING, blank=True, null=True) #bio Information profile = models.TextField(blank=True, null=True) technical_skills = models.TextField(blank=True, null=True) skills = models.TextField(blank=True, null=True) education = models.TextField(blank=True, null=True) experience = models.TextField(blank=True, null=True) def __str__(self): return '{0},{1}'.format(self.name, self.title) @comparison_validator def __lt__(self, other): return self.name < other.name @comparison_validator def __gt__(self, other): return self.name > other.name
class LectureGroups(models.Model): user = models.ForeignKey(AUTH_USER_MODEL, models.PROTECT, blank=False, null=False) groups_list = models.ArrayReferenceField(to=Group, on_delete=models.PROTECT, blank=True, null=True) objects = models.DjongoManager() def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs)
class Entry(models.Model): #blog = models.EmbeddedField(model_container=Blog) # #blog = models.EmbeddedField(model_container=Blog,model_form_class=BlogForm) blog = models.ForeignKey(Blog, on_delete=models.CASCADE) headline = models.CharField(max_length=255) body_text = models.TextField() pub_date = models.DateField() mod_date = models.DateField(default=datetime.now, ) authors = models.ArrayReferenceField( to=Author, on_delete=models.CASCADE, ) n_comments = models.IntegerField(null=True, blank=True) n_pingbacks = models.IntegerField(null=True, blank=True) rating = models.IntegerField(null=True, blank=True) objects = models.DjongoManager() class Meta: '' #indexes = [TextIndex(fields=['headline', ])] #constraints = [CheckConstraint(check=Q(author_age__gte=18), name='age_gte_18')] def __str__(self): return self.headline
class Dimension(models.Model): name = models.CharField(max_length=255) # log = models.ForeignKey(to=EventLog, on_delete=models.CASCADE) cube = models.ForeignKey(to=ProcessCube, on_delete=models.CASCADE, related_name="dimensions") attributes = models.ArrayReferenceField(to=Attribute) def get_num_elements(self): num = 1 for attr in self.attributes.all(): step = 1 if (attr.dtype == 'float' or attr.dtype == 'int'): hierarchy = self.num_hierarchy.filter(attribute=attr) if (hierarchy.exists()): step = hierarchy[0].step_size else: step = 1 elif (attr.dtype == 'date'): hierarchy = self.date_hierarchy.filter(attribute=attr) if (hierarchy.exists()): step = hierarchy[0].step_size else: step = 1 num_values = len(attr.values) num = num * math.ceil(num_values / step) return num
class HEResearchArea(models.Model): class Meta: verbose_name_plural = "HE Research Areas" verbose_name = "HE Research Area" hecategory = models.ForeignKey(HECategory, on_delete=models.CASCADE) name = models.CharField(max_length=255) gtrs = models.ArrayReferenceField(to=GTRCategory, on_delete=models.CASCADE, null=True, blank=True) objects = models.DjongoManager() def gtr_as_list(self): # Children query s = '' for g in self.gtrs.all(): s = s + str(g.name) + " , " return str(s) def children(self): return str(self.gtrs.all().count()) def __str__(self): return str(str(self.id) + "> " + self.name)
class StudentsAssignment(models.Model): student = models.OneToOneField(to=Student, on_delete=models.CASCADE, primary_key=True) assignments = models.ArrayReferenceField(to=Assignment, on_delete=models.CASCADE, blank=True)
class ReferenceEntry(models.Model): _id = models.ObjectIdField() headline = models.CharField(max_length=255) authors = models.ArrayReferenceField(ReferenceAuthor) def __str__(self): return self.headline
class ArrayRelationModel(models.Model): _id = models.ObjectIdField() int_val = models.IntegerField(default=-1234) arr_relation = models.ArrayReferenceField(to=ArrayRelatedModel, blank=True, on_delete=models.CASCADE) objects = models.DjongoManager()
class Role(models.Model): role_name = models.CharField(max_length=150) role_description = models.CharField(max_length=250) afs = djongomodels.ArrayReferenceField(to=AF, on_delete=models.CASCADE) objects = djongomodels.DjongoManager() def __str__(self): return self.role_name
class GF(models.Model): gf_name = models.CharField(max_length=150) gf_description = models.CharField(max_length=250) tfs = djongomodels.ArrayReferenceField(to=TF, on_delete=models.CASCADE) objects = djongomodels.DjongoManager() def __str__(self): return self.gf_name
class Accounts(models.Model): _id = models.ObjectIdField() account_type = models.CharField(max_length=50) phone_number = models.CharField(max_length=50) plan_activated = models.ArrayReferenceField(to=Plans, on_delete=models.CASCADE, null=True, blank=True) current_usage = models.EmbeddedModelField(model_container = Costing, model_form_class=CostingForm) main_balance = models.FloatField() expiry = models.CharField(max_length=50) amount_due = models.FloatField() payment_deadline = models.CharField(max_length=50) proofs_attached = models.ArrayReferenceField(to=Proofs, on_delete=models.CASCADE, null=True, blank=True) circle = models.CharField(max_length=50) imei = models.CharField(max_length=50) def __str__(self): return str(self.account_type)
class Analysis(models.Model): _id = models.ObjectIdField() name = models.CharField(max_length=100, unique=True) description = models.CharField(max_length=100, null=True, blank=True) input_sequences = models.ArrayReferenceField(to=Run) classify = models.EmbeddedField(model_container=Classification) def __str__(self): return self.name
class Profile(models.Model): _id = models.ObjectIdField() owner = models.CharField(max_length=200) directory = models.ArrayReferenceField( to=Directory, on_delete=models.DO_NOTHING, ) def __str__(self): return self.owner
class choice(models.Model): _id = models.ObjectIdField(primary_key=True) question = models.ArrayReferenceField(to=polls) choice_text = models.CharField(max_length=20) votes = models.IntegerField(default=0) def __str__(self): return self.choice_text class Meta: db_table = "choice"
class Member(models.Model): user = models.OneToOneField(settings.AUTH_USER_MODEL,on_delete = models.CASCADE) nickname = models.CharField(max_length=30) last_ipaddress = models.CharField(max_length=20, null=True) friend_list = models.ArrayReferenceField(to='self', null=True, blank=True, on_delete=models.CASCADE) objects = models.DjongoManager() def __str__(self): return self.nickname def get_absolute_url(self): return reverse('member_detail', kwargs={'pk': self.pk})
class Celebration(models.Model): liturgical_season = models.CharField( choices=LiturgicalSeasons.choices, max_length=9, ) name = models.CharField(max_length=40) antiphonas = models.ArrayReferenceField( to=Antiphona, on_delete=models.DO_NOTHING, ) objects = SupportARFManager()
class Migration(migrations.Migration): initial = True dependencies: list = [] operations = [ migrations.CreateModel( name='Antiphona', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('text', djongo_models.JSONField( default={}, validators=[ antiphona.validators.TypeValidator(dict), antiphona.validators.KeysTypeValidator(str), antiphona.validators.ValuesTypeValidator(str), antiphona.validators.ValidKeyValidator(valid_keys={ 'en_US', 'es_US', 'es_ES', 'es_AR', 'la', 'es_MX' }, ), ])), ('link', models.URLField()), ], ), migrations.CreateModel( name='Celebration', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('liturgical_season', models.CharField( choices=[('advent', 'Advent'), ('christmas', 'Christmas'), ('lent', 'Lent'), ('easter', 'Easter'), ('ordinary', 'Ordinary Time')], max_length=9, )), ('name', models.CharField(max_length=40)), ('antiphonas', djongo_models.ArrayReferenceField( on_delete=deletion.DO_NOTHING, to='antiphona.Antiphona', )), ], ), ]
class Directory(models.Model): _id = models.ObjectIdField() directory_name = models.CharField(max_length=200) # user = models.EmbeddedModelField(model_container=User,) owner = models.CharField(max_length=200) file = models.ArrayReferenceField( to=File, on_delete=models.CASCADE, ) def __str__(self): return self.directory_name
class Competition(BaseModel): name = models.CharField(max_length=255, ) date = models.DateTimeField(default=timezone.now) status = models.CharField(max_length=25, ) phases = models.ArrayReferenceField(to=Phase, on_delete=models.CASCADE, blank=True) competitors = models.ArrayReferenceField(to=Competitor, on_delete=models.CASCADE, blank=True) open_inscription_during_competition = models.BooleanField(default=True) STATUS_CREATED = 'created' STATUS_STARTED_WITH_INSCRIPTION_OPEN = 'started_with_inscription_open' STATUS_STARTED = 'started' STATUS_FINISHED = 'finished' STATUSES = [ STATUS_CREATED, STATUS_STARTED_WITH_INSCRIPTION_OPEN, STATUS_STARTED, STATUS_FINISHED ] objects = CompetitionManager()
class Dish(models.Model): name = models.CharField(max_length=40) author = models.CharField(max_length=40) types = models.ArrayField(model_container=TextElement, model_form_class=TextForm) description = models.CharField(max_length=1000) Ingredients = models.ArrayField(model_container=Ingredient, model_form_class=IngredientForm) reviews = models.ArrayReferenceField( to=Review, on_delete=models.CASCADE, ) img = models.CharField(max_length=100)
class Movie(models.Model): _id = models.ObjectIdField() title = models.CharField(max_length=200, unique=True, db_index=True) price = models.FloatField(db_index=True) categories = ArrayField(model_container=_Category, db_index=True) units_available = IntegerField(default=0) description = models.CharField(max_length=512) length = models.IntegerField() # in seconds main_actors = models.ArrayReferenceField(to=Actor) production_date = models.DateField(db_index=True) director = models.EmbeddedField(model_container=Director) user_ratings_count = models.IntegerField(default=0) total_rates = models.IntegerField(default=0) image_src = models.CharField(max_length=256)
class MusicMaps(models.Model): class OpenRange(models.IntegerChoices): PUBLIC = 0, 'Public' FOLLOW = 1, 'Follow' FOLLOW_BACK = 2, 'Follow Back' # 맞팔로우 PRIVATE = 4, 'Private' images = models.ArrayField(model_container=Image) content = models.TextField() date_created = models.DateTimeField(verbose_name='Date Created', default=timezone.now) date_updated = models.DateTimeField(verbose_name='Date Updated', default=timezone.now) open_range = models.IntegerField(choices=OpenRange.choices) comments_on = models.BooleanField() author = models.ForeignKey(User, on_delete=models.CASCADE, related_name='author') memorize_users = models.ArrayReferenceField(to=User, on_delete=models.CASCADE, related_name='memorize_users') location = models.EmbeddedField(model_container=Location) comments = models.ArrayReferenceField(to=Comment, on_delete=models.CASCADE) playlist = models.ArrayReferenceField(to=Music, on_delete=models.CASCADE) street_address = models.CharField(max_length=200) building_number = models.CharField(max_length=30) class Meta: ordering = ("date_updated", ) @property def memorize_count(self): return self.memorize_users.all().count() @property def comments_count(self): return self.comments.all().count()