Skip to content

Commit 4896fef

Browse files
committed
custum admin pages added and event model updated
1 parent 2fa49a5 commit 4896fef

File tree

6 files changed

+46
-11
lines changed

6 files changed

+46
-11
lines changed

api/admin.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,18 @@
22

33
from .models import *
44

5+
6+
class EventAdmin(admin.ModelAdmin):
7+
fieldsets = (
8+
(None, {
9+
'fields': ('event_name', 'contract', 'client', 'support_contact',
10+
'status', 'attendees', 'event_date_time', 'notes')
11+
}),
12+
)
13+
14+
readonly_fields = ['client', ]
15+
16+
517
admin.site.register(Client)
618
admin.site.register(Contract)
7-
admin.site.register(Event)
19+
admin.site.register(Event, EventAdmin)

api/models.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ class Event(models.Model):
5858
('CANCELLED', 'CANCELLED')
5959
)
6060

61-
name = models.CharField(max_length=50, null=True)
61+
event_name = models.CharField(max_length=50, null=True)
6262
contract = models.OneToOneField(to=Contract, # only one event per contract
6363
on_delete=models.CASCADE,
6464
related_name='contract')
@@ -69,8 +69,14 @@ class Event(models.Model):
6969
to=User, on_delete=models.SET_NULL, null=True)
7070
status = models.CharField(max_length=10, choices=STATUS_OPTIONS)
7171
attendees = models.IntegerField()
72-
event_date = models.DateTimeField(null=True)
72+
event_date_time = models.DateTimeField(null=True)
7373
notes = models.CharField(max_length=255, null=True)
7474

7575
def __str__(self):
76-
return self.name
76+
date = self.event_date_time.strftime("%m-%d-&Y, %H:%M")
77+
return f'{self.event_name} - {date}'
78+
79+
def save(self, *args, **kwargs):
80+
contract = self.contract
81+
self.client = contract.client
82+
super(Event, self).save(*args, **kwargs)

api/serializers.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@ class Meta:
2929
class ContractSerializer(serializers.ModelSerializer):
3030
"""Contract model serializer"""
3131
client = serializers.HyperlinkedRelatedField(
32-
view_name='existing_clients-detail', queryset=Client.objects.all())
32+
view_name='existing_clients-detail',
33+
queryset=Client.objects.all()
34+
)
3335

3436
def create(self, validated_data):
3537
"""Modified create method to convert the related client as 'existing'

authentication/admin.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,16 +33,17 @@ class EmployeeUserAdmin(UserAdmin):
3333

3434
list_display = ('email', 'first_name', 'last_name', 'is_staff')
3535
fieldsets = (
36-
('Personal info', {
36+
('Personal Information', {
3737
'fields': ('first_name', 'last_name', 'email', 'password', 'phone',
3838
'mobile', 'hire_date', 'birth_date')}),
39-
('Important dates', {
40-
'fields': ('last_login', 'date_joined')}),
39+
('Other Dates', {
40+
'fields': ('last_login', 'joined')}),
4141
('Permissions', {'fields': (
4242
'is_active', 'is_staff', 'is_superuser',
4343
# 'groups', 'user_permissions'
4444
)}),
4545
)
46+
readonly_fields = ['is_staff', 'is_superuser']
4647
add_fieldsets = (
4748
('Personal info', {'fields': (
4849
'first_name', 'last_name', 'email', 'phone', 'birth_date',

authentication/models.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,12 @@ class User(AbstractBaseUser, PermissionsMixin):
5656
last_name = models.CharField(max_length=50)
5757
phone = models.CharField(max_length=30, null=True)
5858
mobile = models.CharField(max_length=30, null=True)
59-
hire_date = models.DateField(null=True, default=timezone.now)
59+
hire_date = models.DateField(null=True)
6060
birth_date = models.DateField(null=True)
6161
is_staff = models.BooleanField(default=False)
6262
is_active = models.BooleanField(default=False)
6363
is_superuser = models.BooleanField(default=False)
64-
date_joined = models.DateField(default=timezone.now)
64+
joined = models.DateTimeField(default=timezone.now)
6565

6666
objects = UserManager()
6767

authentication/serializers.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,23 @@
88

99

1010
class UserSerializer(serializers.ModelSerializer):
11+
12+
team = serializers.SerializerMethodField() # -> get_team
13+
14+
def get_team(self, user):
15+
team_membership = TeamMembership.objects.filter(user=user).first()
16+
if team_membership:
17+
return TeamSerializer(
18+
team_membership.team, many=False, required=False
19+
).data['name']
20+
return None
21+
1122
class Meta:
1223
model = User
13-
fields = '__all__'
24+
fields = ['email', 'first_name', 'last_name', 'password', 'phone',
25+
'mobile', 'birth_date', 'last_login', 'hire_date',
26+
'joined', 'is_active', 'team']
27+
read_only_fields = ['is_staff', 'is_superuser', 'team']
1428

1529

1630
class TeamSerializer(serializers.ModelSerializer):

0 commit comments

Comments
 (0)