Fakultas Ilmu Komputer UI

accounts.py 2.68 KB
Newer Older
1
2
3
4
5
import os
import uuid

from django.contrib.auth.models import User
from django.core.validators import MinValueValidator, MaxValueValidator
6
from django.db import models
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43

def get_file_path(instance, filename):
    extension = filename.split('.')[-1].lower()
    filename = "%s.%s" % (uuid.uuid4(), extension)
    return os.path.join("student-resume/", filename)


def get_display_name(user, full_name=False):
    """
    Return a display name that always works like "Benoit J."
    """
    if user.first_name and user.last_name:
        if full_name:
            last = user.last_name.title()
        else:
            last = user.last_name[:1].upper() + "."
        name = user.first_name.title() + " " + last
    elif user.first_name:
        name = user.first_name.title()
    elif user.last_name:
        name = user.last_name.title()
    else:
        name = user.username

    return name.strip()


class Student(models.Model):
    """
    A user subclass
    """
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    user = models.OneToOneField(User)
    npm = models.IntegerField(validators=[MinValueValidator(100000000), MaxValueValidator(9999999999)], unique=True)
    resume = models.FileField(upload_to=get_file_path, null=True, blank=True)
    phone_number = models.CharField(max_length=100, blank=True, db_index=True)
44
    bookmarked_vacancies = models.ManyToManyField('core.Vacancy', blank=True)
45

Zamil Majdy's avatar
Zamil Majdy committed
46
47
48
49
    @property
    def name(self):
        return get_display_name(self.user)

50
51
52
53
54
55
56
57
58
59
60
61
62
    def __unicode__(self):
        return u"Student {}".format(get_display_name(self.user))


class Company(models.Model):
    """
    A user subclass
    """
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    user = models.OneToOneField(User)
    description = models.TextField()
    verified = models.BooleanField(default=False)
63
64
    logo = models.CharField(max_length=1000, blank=True, null=True)
    alamat = models.CharField(max_length=1000, blank=True, null=True)
65

Zamil Majdy's avatar
Zamil Majdy committed
66
67
68
69
    @property
    def name(self):
        return get_display_name(self.user)

70
71
72
73
74
75
76
77
78
79
80
81
82
    def __unicode__(self):
        return u"Company {}".format(get_display_name(self.user))


class Supervisor(models.Model):
    """
    A user subclass
    """
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    user = models.OneToOneField(User)
    nip = models.IntegerField(validators=[MinValueValidator(100000000), MaxValueValidator(9999999999)], unique=True)

Zamil Majdy's avatar
Zamil Majdy committed
83
84
85
86
    @property
    def name(self):
        return get_display_name(self.user)

87
88
    def __unicode__(self):
        return u"Supervisor {}".format(get_display_name(self.user))