Skip to content

Commit 9e56ce7

Browse files
authored
Merge pull request #203 from ingindIsrael/development
Development
2 parents 7750e99 + 413385c commit 9e56ce7

24 files changed

+744
-108
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Generated by Django 2.2.8 on 2021-11-24 20:15
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('api', '0115_payrollperiod_total_employees'),
10+
]
11+
12+
operations = [
13+
migrations.AddField(
14+
model_name='employeepayment',
15+
name='over_time_earnings',
16+
field=models.DecimalField(decimal_places=2, default=0, max_digits=10, verbose_name='overtime earnings'),
17+
),
18+
]
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Generated by Django 2.2.8 on 2021-11-24 20:29
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('api', '0116_employeepayment_over_time_earnings'),
10+
]
11+
12+
operations = [
13+
migrations.AddField(
14+
model_name='employeepayment',
15+
name='hourly_rate',
16+
field=models.DecimalField(blank=True, decimal_places=2, default=0, max_digits=10),
17+
),
18+
]
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Generated by Django 2.2.8 on 2021-11-24 21:14
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('api', '0117_employeepayment_hourly_rate'),
10+
]
11+
12+
operations = [
13+
migrations.RemoveField(
14+
model_name='employeepayment',
15+
name='hourly_rate',
16+
),
17+
migrations.AddField(
18+
model_name='employeepayment',
19+
name='regular_hours_earnings',
20+
field=models.DecimalField(decimal_places=2, default=0, max_digits=10, verbose_name='regular hours earnings'),
21+
),
22+
]
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Generated by Django 2.2.8 on 2022-02-21 20:05
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('api', '0118_auto_20211124_2114'),
10+
]
11+
12+
operations = [
13+
migrations.AlterField(
14+
model_name='profile',
15+
name='resume',
16+
field=models.URLField(blank=True, default=True, null=True),
17+
),
18+
]
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# Generated by Django 3.2.12 on 2022-03-08 00:38
2+
3+
from django.conf import settings
4+
from django.db import migrations, models
5+
import django.db.models.deletion
6+
7+
8+
class Migration(migrations.Migration):
9+
10+
dependencies = [
11+
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
12+
('api', '0119_auto_20220221_2005'),
13+
]
14+
15+
operations = [
16+
migrations.CreateModel(
17+
name='Payment',
18+
fields=[
19+
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
20+
('stripe_charge_id', models.CharField(max_length=50)),
21+
('amount', models.FloatField()),
22+
('timestamp', models.DateTimeField(auto_now_add=True)),
23+
('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL)),
24+
],
25+
),
26+
migrations.CreateModel(
27+
name='Order',
28+
fields=[
29+
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
30+
('ref_code', models.CharField(blank=True, max_length=20, null=True)),
31+
('payment', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='api.payment')),
32+
('user', models.OneToOneField(blank=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
33+
],
34+
),
35+
]

api/migrations/0121_userprofile.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# Generated by Django 3.2.12 on 2022-03-08 16:41
2+
3+
from django.conf import settings
4+
from django.db import migrations, models
5+
import django.db.models.deletion
6+
7+
8+
class Migration(migrations.Migration):
9+
10+
dependencies = [
11+
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
12+
('api', '0120_order_payment'),
13+
]
14+
15+
operations = [
16+
migrations.CreateModel(
17+
name='UserProfile',
18+
fields=[
19+
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
20+
('stripe_customer_id', models.CharField(blank=True, max_length=50, null=True)),
21+
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
22+
],
23+
),
24+
]
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Generated by Django 3.2.12 on 2022-03-17 20:27
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('api', '0121_userprofile'),
10+
]
11+
12+
operations = [
13+
migrations.AddField(
14+
model_name='userprofile',
15+
name='stripe_sub_id',
16+
field=models.CharField(blank=True, max_length=100),
17+
),
18+
]
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# Generated by Django 3.2.12 on 2022-03-18 15:17
2+
3+
from django.db import migrations
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('api', '0122_userprofile_stripe_sub_id'),
10+
]
11+
12+
operations = [
13+
migrations.DeleteModel(
14+
name='Order',
15+
),
16+
]

api/models.py

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ def __str__(self):
5656
(APPROVED, 'Approved'),
5757
)
5858

59+
5960
class SubscriptionPlan(models.Model):
6061
unique_name = models.CharField(max_length=25, unique=True)
6162
visible_to_users = models.BooleanField(default=True)
@@ -100,7 +101,7 @@ class Employer(models.Model):
100101
total_ratings = models.IntegerField(blank=True, default=0) # in minutes
101102
badges = models.ManyToManyField(Badge, blank=True)
102103
status = models.CharField(max_length=25, choices=EMPLOYER_STATUS, default=APPROVED, blank=True)
103-
104+
104105
# talents on employer's favlist's will be automatically accepted
105106
automatically_accept_from_favlists = models.BooleanField(default=True)
106107

@@ -194,6 +195,7 @@ class EmployerSubscription(models.Model):
194195
status = models.CharField(max_length=25, choices=SUBSCRIPTION_STATUS, default=ACTIVE, blank=True)
195196
payment_mode = models.CharField(max_length=9,choices=SUBSCRIPTION_MODE,default=MONTHLY,blank=True)
196197
stripe_sub = models.CharField(max_length=100, blank=True)
198+
# stripe_sub_status = models.CharField(max_length=25, blank=True)
197199
stripe_cus = models.CharField(max_length=100, blank=True)
198200
due_at = models.DateTimeField()
199201

@@ -303,7 +305,7 @@ def calculate_tax_amount(self, period_wage, period_quantity):
303305
class Profile(models.Model):
304306
user = models.OneToOneField(User, on_delete=models.CASCADE, blank=True)
305307
picture = models.URLField(blank=True)
306-
resume = models.URLField(blank=True)
308+
resume = models.URLField(blank=True, null=True, default=True)
307309
bio = models.TextField(max_length=250, blank=True)
308310
show_tutorial = models.BooleanField(default=True)
309311

@@ -807,6 +809,8 @@ class EmployeePayment(models.Model):
807809
over_time = models.DecimalField(max_digits=10, decimal_places=2, blank=True, default=0)
808810
legal_over_time = models.DecimalField(max_digits=10, decimal_places=2, blank=True, default=0) # plus 40 hours/week
809811
breaktime_minutes = models.IntegerField(blank=True, default=0)
812+
regular_hours_earnings = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='regular hours earnings', default=0)
813+
over_time_earnings = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='overtime earnings', default=0)
810814
earnings = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='gross earnings')
811815
amount = models.DecimalField(max_digits=10, decimal_places=2, blank=True, default=0, verbose_name='net earnings')
812816
deductions = models.DecimalField(max_digits=10, decimal_places=2, blank=True, default=0)
@@ -1054,11 +1058,29 @@ class W4Form(models.Model):
10541058
updated_at = models.DateTimeField(auto_now=True, editable=False)
10551059
status = models.CharField(max_length=8, choices=W4_FORM_STATUS, default=PENDING)
10561060

1061+
class Payment(models.Model):
1062+
stripe_charge_id = models.CharField(max_length=50)
1063+
user = models.ForeignKey(User, on_delete=models.SET_NULL, blank=True, null=True)
1064+
amount = models.FloatField()
1065+
timestamp = models.DateTimeField(auto_now_add=True)
10571066

1067+
def __str__(self):
1068+
return self.user.username
1069+
1070+
def serialize(self):
1071+
return {
1072+
'stripe_charge_id': self.stripe_charge_id,
1073+
'user': self.user,
1074+
'amount': self.amount,
1075+
'timestamp': self.timestamp
1076+
}
1077+
1078+
class UserProfile(models.Model):
1079+
user = models.OneToOneField(User, on_delete=models.CASCADE)
1080+
# employer = models.ForeignKey(Employer, on_delete=models.CASCADE, blank=True, related_name="company_users_profile")
1081+
stripe_customer_id = models.CharField(max_length=50, blank=True, null=True)
1082+
stripe_sub_id = models.CharField(max_length=100, blank=True)
10581083

1059-
1060-
1061-
1062-
1063-
1084+
def __str__(self):
1085+
return self.user.username
10641086

api/serializers/auth_serializer.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from random import randint
55
from django.db import transaction
66
from django.utils.translation import ugettext_lazy as _
7-
7+
import stripe
88
from rest_framework_jwt.settings import api_settings
99
from rest_framework_jwt.serializers import JSONWebTokenSerializer
1010
from rest_framework import serializers
@@ -16,7 +16,7 @@
1616
from api.actions import employee_actions, auth_actions
1717
from api.models import (
1818
User, Employer, Employee, Profile,
19-
JobCoreInvite, FCMDevice)
19+
JobCoreInvite, FCMDevice, UserProfile)
2020
from api.utils import notifier
2121

2222
jwt_payload_handler = api_settings.JWT_PAYLOAD_HANDLER
@@ -36,7 +36,6 @@ class Meta:
3636
'token', 'employer', 'employee')
3737
extra_kwargs = {"password": {"write_only": True}}
3838

39-
4039
class CustomJWTSerializer(JSONWebTokenSerializer):
4140
username_field = 'username_or_email'
4241
user = UserLoginSerializer(required=False)
@@ -86,10 +85,13 @@ def validate(self, attrs):
8685
FCMDevice.objects.filter(registration_id=device_id).delete()
8786
device = FCMDevice(user=user, registration_id=device_id)
8887
device.save()
88+
89+
8990

9091
return {
9192
'token': jwt_encode_handler(payload),
92-
'user': user
93+
'user': user,
94+
9395
}
9496
def get_active_subscription(self, employer):
9597
_sub = employer.employersubscription_set.filter(status='ACTIVE').first()
@@ -181,6 +183,7 @@ def create(self, validated_data):
181183
# @TODO: Use IP address to get the initial address,
182184
# latitude and longitud.
183185
user = User.objects.filter(email=validated_data["email"]).first()
186+
184187
if not user:
185188
user = User.objects.create(**{**validated_data, "username": validated_data["email"]})
186189

0 commit comments

Comments
 (0)