class Extra(models.Model): """ some wrongly analysed table that add extra column to existing one (not a django way of life) """ company = models.IntegerField() customer_id = models.IntegerField() sales_revenue = models.FloatField() customer = CompositeOneToOneField(Customer, on_delete=CASCADE, related_name='extra', to_fields=["company", "customer_id"])
class President(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE) assos_id = models.OneToOneField(Association, on_delete=models.CASCADE, related_name='president') manager = CompositeOneToOneField(Manager, on_delete=models.CASCADE, to_fields={"assos_id", "user"}) def clean(self): super(President, self).clean() manager_id = getattr(self.manager, 'id') if (manager_id is None): raise ValidationError( _("Can't create President where id of \ manager referenced is None")) else: try: Manager.objects.get(pk=manager_id) except Manager.DoesNotExist: raise ValidationError({ 'manager': _("Matching Manager does not \ exist, it was probably deleted") }) class Meta: verbose_name = _("President") verbose_name_plural = _("Presidents") def __str__(self): return '%s from %s' % (self.user.username, self.assos_id.name) def save(self, *args, **kwargs): super(President, self).save(*args, **kwargs) assign_perm('manage_manager', self.user, self.assos_id) assign_perm('delete_association', self.user, self.assos_id) assign_perm('change_association', self.user, self.assos_id) assign_perm('modify_event', self.user, self.assos_id) assign_perm('remove_event', self.user, self.assos_id) assign_perm('make_event_cancelable', self.user, self.assos_id) assign_perm('validate_event', self.user, self.assos_id) def delete(self): remove_perm('manage_manager', self.user, self.assos_id) remove_perm('delete_association', self.user, self.assos_id) remove_perm('change_association', self.user, self.assos_id) remove_perm('modify_event', self.user, self.assos_id) remove_perm('remove_event', self.user, self.assos_id) remove_perm('make_event_cancelable', self.user, self.assos_id) remove_perm('validate_event', self.user, self.assos_id) super(President, self).delete()
class Manager(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="managerships") assos_id = models.ForeignKey(Association, on_delete=models.CASCADE, related_name='managers') member = CompositeOneToOneField(Member, on_delete=models.CASCADE, to_fields={"assos_id", "user"}) def clean(self): super(Manager, self).clean() member_id = getattr(self.member, 'id') if (member_id is None): raise ValidationError( _("Can't create Manager where id of member\ referenced is None")) else: try: Member.objects.get(pk=member_id) except Member.DoesNotExist: raise ValidationError({ 'member': _("Matching member does not \ exist, it was probably deleted") }) class Meta: verbose_name = _("Member of the Bureau") verbose_name_plural = _("Members of the Bureau") def __str__(self): return '%s from %s' % (self.user.username, self.assos_id.name) def save(self, *args, **kwargs): super(Manager, self).save(*args, **kwargs) assign_perm('manage_member', self.user, self.assos_id) assign_perm('choose_staff', self.user, self.assos_id) def delete(self): remove_perm('choose_staff', self.user, self.assos_id) remove_perm('manage_member', self.user, self.assos_id) super(Manager, self).delete()
class Activity(models.Model): startdate = models.DateField( db_column='StartDate', primary_key=True) # Field name made lowercase. jobtitle = models.CharField(db_column='JobTitle', max_length=40) # Field name made lowercase. rownumber = models.IntegerField( db_column='RowNumber') # Field name made lowercase. jobdetail = models.TextField(db_column='JobDetail', blank=True, null=True) # Field name made lowercase. #virtual field job = CompositeOneToOneField(Job, on_delete=CASCADE, related_name='activity', to_fields=('startdate', 'jobtitle')) class Meta: managed = False db_table = 'activity' unique_together = (('startdate', 'jobtitle', 'rownumber'), )
class Activiteit(models.Model): startdatum = models.DateField( db_column='StartDatum', primary_key=True) # Field name made lowercase. functienaam = models.CharField(db_column='FunctieNaam', max_length=40) # Field name made lowercase. rijnummer = models.IntegerField( db_column='RijNummer') # Field name made lowercase. detailregel = models.TextField(db_column='DetailRegel', blank=True, null=True) # Field name made lowercase. #virtual field functie = CompositeOneToOneField(Functie, on_delete=CASCADE, related_name='activiteit', to_fields=('startdatum', 'functienaam')) class Meta: managed = False db_table = 'activiteit' unique_together = (('startdatum', 'functienaam', 'rijnummer'), )