Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve employee profile #18

Open
fullonic opened this issue Oct 1, 2020 · 6 comments
Open

Improve employee profile #18

fullonic opened this issue Oct 1, 2020 · 6 comments
Assignees
Labels
backend Dev team frontend UX team

Comments

@fullonic
Copy link

fullonic commented Oct 1, 2020

Right now there is only the name and gender information.
It would be nice to have fields like:

  • CV
  • Past jobs
  • Personal web urls: social networks (linkedin, twitter,...) , git profile page, personal page, etc...
  • etc...
@francescarpi francescarpi added the backend Dev team label Oct 2, 2020
@francescarpi francescarpi added the frontend UX team label Oct 9, 2020
@oriolpiera oriolpiera self-assigned this Oct 13, 2020
@oriolpiera
Copy link

@fullonic
I guess new fields types:

  • CV: Attachments (django-attachments 1.8)
  • Past jobs: Multiline text
  • Linkedin url: Text
  • Twitter url: Text
  • Github url: Text
  • Personal page url: Text

@francescarpi
Do you think that all fields can be in the same PR? Or we should split the Attachment field

@xdiume
Copy link

xdiume commented Oct 13, 2020

What about to create a new model to manage social/work profiles? I think a new model is better choice to handle design changes. Its more suitable.

@fullonic fullonic self-assigned this Oct 14, 2020
@fullonic
Copy link
Author

fullonic commented Oct 14, 2020

Hi @oriolpiera, I was thinking in that fields and some extras. After taking some ideas from other job portals I came out in this examples models.

class EmployeeProfile(models.Model):
    employee_id = models.ForeignKey(User, on_delete=models.CASCADE)
    employee_uuid = models.UUIDField(default=uuid.uuid4, editable=False, unique=True)
    first_name = models.CharField(max_length=32, blank=True, null=True, default="")
    last_name = models.CharField(max_length=32, blank=True, null=True, default="")
    # email should be populated automatically on user registration
    email = models.EmailField(unique=True, blank=False)
    avatar = models.ImageField(upload_to="img/avatares/",null=True, blank=True)
    location = models.CharField(max_length=32, blank=True, null=True, default="")
    contact_phone = models.CharField(max_length=32, blank=True, null=True, default="")
    # Example: Backend Developer 
    professional_title = models.CharField(
        max_length=64, blank=True, null=True, default=""
    )
    current_job = models.CharField(max_length=64, blank=True, null=True, default="")
    short_bio = models.TextField(max_length=512, blank=True, null=True)
    cv_file = models.FileField(upload_to="cvs/", null=True, blank=True)
    open_to_relocation = models.BooleanField(blank=True, null=True)
    prefer_remote = models.BooleanField(blank=True, null=True)
    # PostgreSQL array field
    additional_skills = pg_field.ArrayField(
        base_field=models.CharField(max_length=64), size=10, null=True, blank=True
    )
    # Online social network
    linked_in = models.URLField(unique=True, blank=True, null=True)
    twitter = models.URLField(unique=True, blank=True, null=True)
    git_profile = models.URLField(unique=True, blank=True, null=True)
    web_page = models.URLField(unique=True, blank=True, null=True)


class EmploymentHistory(models.Model):
    employee_id = models.ForeignKey(User, on_delete=models.CASCADE)
    uuid = models.UUIDField(default=uuid.uuid4, editable=False, unique=True)
    position = models.CharField(max_length=64, blank=True, null=True, default="")
    company = models.CharField(max_length=64, blank=True, null=True, default="")
    location = models.CharField(max_length=32, blank=True, null=True, default="")
    start_at = models.DateField(blank=True, null=True)
    end_at = models.DateField(blank=True, null=True)
    description = models.TextField(blank=True, null=True, max_length=512)


class EmployeeEducation(models.Model):
    employee_id = models.ForeignKey(User, on_delete=models.CASCADE)
    uuid = models.UUIDField(default=uuid.uuid4, editable=False, unique=True)
    school = models.CharField(max_length=64, blank=True, null=True, default="")
    degree = models.CharField(max_length=64, blank=True, null=True, default="")
    start_at = models.IntegerField(blank=True, null=True, default="")
    end_at = models.IntegerField(blank=True, null=True, default="")
    description = models.TextField(blank=True, null=True, max_length=512)

I'm not sure if best practices, but I was thinking in having the current User model only to handle authentication and registration related stuff and a model EmployeeProfile to hold all the personal information. What do you think?
All fields are optional, except the email, and the EmployeeProfile would be created automatically once the user sign up as employee.

This is just a proposal. Maybe to much fields? I saw that in some portals the provide a extra field to add certifications. Should we have as well?

@fullonic fullonic reopened this Oct 14, 2020
@oriolpiera oriolpiera removed their assignment Oct 14, 2020
@oriolpiera
Copy link

@fullonic @xdiume great aproach. I unassing from this issue because in the next few days, I can't do it.

@fullonic
Copy link
Author

@oriolpiera We don't have anything defined. I will let you know when we are done with the planning and if you can, we work together on this issue. @xdiume Would you like to work together on this issue?

@xdiume
Copy link

xdiume commented Oct 19, 2020

Yes @fullonic . There is another Issue #67 related with user/profile.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backend Dev team frontend UX team
Projects
None yet
Development

No branches or pull requests

4 participants