class DeveloperApplication(models.Model): first_name = models.CharField(max_length=30) last_name = models.CharField(max_length=30) email = models.EmailField(unique=True, validators=[validate_email]) phone_number = models.CharField(max_length=15) country = CountryField() city = models.CharField(max_length=50) stack = models.TextField() experience = models.TextField() discovery_story = models.TextField() status = models.PositiveSmallIntegerField( choices=APPLICATION_STATUS_CHOICES, help_text=','.join(['%s - %s' % (item[0], item[1]) for item in APPLICATION_STATUS_CHOICES]), default=REQUEST_STATUS_INITIAL ) created_at = models.DateTimeField(auto_now_add=True) confirmation_key = models.UUIDField(default=uuid.uuid4, editable=False, unique=True) confirmation_sent_at = models.DateTimeField(blank=True, null=True, editable=False) used = models.BooleanField(default=False) used_at = models.DateTimeField(blank=True, null=True, editable=False) def __str__(self): return self.display_name @property def display_name(self): return '%s %s' % (self.first_name, self.last_name) @property def country_name(self): return self.country.name country_name.fget.short_description = 'country'
class DeveloperInvitation(models.Model): first_name = models.CharField(max_length=30) last_name = models.CharField(max_length=30) email = models.EmailField(unique=True, validators=[validate_email]) type = models.IntegerField(choices=USER_TYPE_CHOICES, default=USER_TYPE_DEVELOPER) invitation_key = models.UUIDField(default=uuid.uuid4, editable=False, unique=True) invitation_sent_at = models.DateTimeField(blank=True, null=True, editable=False) used = models.BooleanField(default=False) used_at = models.DateTimeField(blank=True, null=True, editable=False) resent = models.BooleanField(default=False) resent_at = models.DateTimeField(blank=True, null=True, editable=False) created_by = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) created_at = models.DateTimeField(auto_now_add=True) class Meta: verbose_name = 'user invitation' def __unicode__(self): return self.display_name @property def display_name(self): return '%s %s' % (self.first_name, self.last_name)
class Inquirer(models.Model): name = models.CharField(max_length=50, blank=True, null=True) email = models.EmailField(blank=True, null=True) created_at = models.DateTimeField(auto_now_add=True) def __str__(self): return '%s (%s)' % (self.name, self.email or self.id) class Meta: ordering = ['-created_at']
class WhitePaperUser(models.Model): first_name = models.CharField(max_length=100) last_name = models.CharField(max_length=100) company = models.CharField(max_length=100) email = models.EmailField(max_length=100) phone_number = models.CharField(max_length=20) country = CountryField() created_at = models.DateTimeField(auto_now_add=True) def __str__(self): return '{} {} - {}'.format(self.first_name, self.email, self.company)
class WhitePaperUser(models.Model): white_paper_choices = ( ('best_african_countries_for_outsourcing', 'best_african_countries_for_outsourcing'), ('scaling_your_team_with_remote_developers', 'scaling_your_team_with_remote_developers') ) paper = models.CharField(max_length=255, choices=white_paper_choices) first_name = models.CharField(max_length=100) last_name = models.CharField(max_length=100) company = models.CharField(max_length=100) email = models.EmailField(max_length=100) phone_number = models.CharField(max_length=20) country = CountryField() created_at = models.DateTimeField(auto_now_add=True) def __str__(self): return '{} {} - {}'.format(self.first_name, self.email, self.company)
class Thesis(models.Model): """ This class defines the field that a thesis can have. The following fields are optional: additional, pdf A thesis can be promoted for either BSc, MSc, BEd, MEd, or as being part of a project. Each thesis is referenced with the chair that is providing it via a ForeignKey field. """ THESIS_CHOICES = ( ('BSC', 'Bachelor of Science'), ('MSC', 'Master of Science'), ('BED', 'Bachelor of Education'), ('MED', 'Master of Education'), ('PRO', 'Forschungsprojekt'), ('ETC', 'nach Absprache') ) title = models.CharField('Titel der Arbeit', blank=False, max_length=200) description = models.TextField('Beschreibung', blank=False) date_added = models.DateTimeField('Erstellungsdatum', default=timezone.now, editable=False) additional = models.TextField('weitere Beschreibung', blank=True, max_length=1000) contact = models.EmailField('E-Mail der Kontaktperson:', blank=False) chair = models.ForeignKey(Chair, on_delete=models.CASCADE, related_name="provided_by", verbose_name='angeboten durch Lehrstuhl') start_date = models.DateField('frühester Beginn', blank=False, default=timezone.now) is_active = models.BooleanField('aktiv', default=True) pdf = models.FileField('PDF mit Ausschreibung', validators=[FileExtensionValidator(allowed_extensions=['pdf'])], blank=True) type = MultiSelectField('Art der Arbeit', choices=THESIS_CHOICES, blank=False) tags = tagulous.models.TagField(get_absolute_url=lambda tag: reverse( 'by_tag', args=parse_tags(tag.slug))) user = models.ForeignKey(AAIUser, null=True, on_delete=models.DO_NOTHING, related_name="uploaded_by", verbose_name="hochgeladen von") def __str__(self): return self.title def get_absolute_url(self): return "/%i/" % self.id class Meta: verbose_name = "Abschlussarbeit" verbose_name_plural = "Abschlussarbeiten"