Skip to content

Commit 498eebe

Browse files
Nabin OliNabin Oli
authored andcommitted
Updated the models.py with ER diagram picture
1 parent 2ddfb41 commit 498eebe

27 files changed

Lines changed: 586 additions & 1317 deletions
285 KB
Loading

backend/heritage_graph/erd.dot

Lines changed: 0 additions & 777 deletions
This file was deleted.
Lines changed: 59 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,48 @@
11
from django.contrib import admin
2-
from .models import Submission, Moderation,ActivityLog, UserProfile
2+
from .models import Submission, Moderation, ActivityLog, UserProfile, CulturalHeritage, Media, Contributor
3+
4+
# Admin for CulturalHeritage model
5+
class CulturalHeritageAdmin(admin.ModelAdmin):
6+
list_display = ('title', 'heritage_type', 'location', 'created_at') # Key fields for display
7+
list_filter = ('heritage_type', 'created_at') # Filters for narrowing search
8+
search_fields = ('title', 'description', 'location') # Searchable fields
9+
ordering = ('-created_at',) # Recent heritage entries first
10+
11+
12+
# Admin for Media model
13+
class MediaAdmin(admin.ModelAdmin):
14+
list_display = ('submission', 'media_type', 'file', 'description') # Key fields for display
15+
list_filter = ('media_type', 'submission') # Filters for narrowing search
16+
search_fields = ('file', 'description') # Searchable fields
17+
ordering = ('submission',)
18+
19+
20+
# Admin for Contributor model
21+
class ContributorAdmin(admin.ModelAdmin):
22+
list_display = ('user_username', 'relationship_to_heritage', 'consent_to_share') # Key fields for display
23+
list_filter = ('user', 'consent_to_share') # Filters for narrowing search
24+
search_fields = ('user__username', 'relationship_to_heritage') # Searchable fields
25+
ordering = ('user',)
26+
27+
# Add a method to display the username of the related user
28+
def user_username(self, obj):
29+
return obj.user.username
30+
user_username.short_description = 'Username' # Optional: Sets the column header in the admin
331

432

533
# Admin for Submission model
634
class SubmissionAdmin(admin.ModelAdmin):
7-
list_display = ('title', 'contributor', 'status', 'created_at') # Key fields for display
8-
list_filter = ('status', 'contributor', 'created_at') # Filters for narrowing search
35+
list_display = ('title', 'status', 'created_at') # Key fields for display
36+
list_filter = ('status', 'created_at') # Filters for narrowing search
937
search_fields = ('title', 'description') # Searchable fields
1038
ordering = ('-created_at',) # Recent submissions first
1139

40+
# Add a method to display a short description
41+
def short_description(self, obj):
42+
return obj.description[:50] + ('...' if len(obj.description) > 50 else '')
43+
short_description.short_description = 'Description'
44+
45+
1246
# Admin for Moderation model
1347
class ModerationAdmin(admin.ModelAdmin):
1448
list_display = ('submission', 'moderator', 'reviewed_at', 'short_comment') # Add a truncated comment display
@@ -20,16 +54,34 @@ class ModerationAdmin(admin.ModelAdmin):
2054
def short_comment(self, obj):
2155
return obj.comment[:50] + ('...' if len(obj.comment) > 50 else '')
2256
short_comment.short_description = 'Comment'
23-
2457

2558

59+
# Admin for UserProfile model
2660
class UserProfileAdmin(admin.ModelAdmin):
27-
list_display = ('user', 'organization', 'score','position','birth_date','university_school')
61+
list_display = ('user', 'organization', 'score', 'position', 'birth_date', 'university_school') # Key fields for display
62+
list_filter = ('organization', 'university_school') # Filters for narrowing search
63+
search_fields = ('user__username', 'organization', 'university_school') # Searchable fields
64+
ordering = ('user__username',) # Order by username
65+
2866

67+
# Admin for ActivityLog model
2968
class ActivityLogAdmin(admin.ModelAdmin):
30-
lisst_display = ('user','action','description','timestamp')
69+
list_display = ('user', 'action', 'short_description', 'timestamp') # Key fields for display
70+
list_filter = ('action', 'timestamp') # Filters for narrowing search
71+
search_fields = ('user__username', 'action', 'description') # Searchable fields
72+
ordering = ('-timestamp',) # Recent logs first
73+
74+
# Add a short version of the description
75+
def short_description(self, obj):
76+
return obj.description[:50] + ('...' if len(obj.description) > 50 else '')
77+
short_description.short_description = 'Description'
78+
3179

32-
admin.site.register(UserProfile, UserProfileAdmin)
80+
# Register all models with their respective admin classes
81+
admin.site.register(CulturalHeritage, CulturalHeritageAdmin)
82+
admin.site.register(Media, MediaAdmin)
83+
admin.site.register(Contributor, ContributorAdmin)
3384
admin.site.register(Submission, SubmissionAdmin)
3485
admin.site.register(Moderation, ModerationAdmin)
3586
admin.site.register(ActivityLog, ActivityLogAdmin)
87+
admin.site.register(UserProfile, UserProfileAdmin)

backend/heritage_graph/heritage_data/migrations/0001_initial.py

Lines changed: 64 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
# Generated by Django 5.1.3 on 2024-11-20 09:04
1+
# Generated by Django 5.1.3 on 2025-01-14 13:01
22

3+
import django.core.validators
34
import django.db.models.deletion
45
from django.conf import settings
56
from django.db import migrations, models
@@ -14,25 +15,85 @@ class Migration(migrations.Migration):
1415
]
1516

1617
operations = [
18+
migrations.CreateModel(
19+
name='CulturalHeritage',
20+
fields=[
21+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
22+
('heritage_type', models.CharField(choices=[('tangible', 'Tangible Heritage'), ('intangible', 'Intangible Heritage'), ('natural', 'Natural Heritage')], max_length=50)),
23+
('title', models.CharField(max_length=255)),
24+
('description', models.TextField()),
25+
('location', models.CharField(max_length=255)),
26+
('historical_context', models.TextField()),
27+
('created_at', models.DateTimeField(auto_now_add=True)),
28+
],
29+
),
30+
migrations.CreateModel(
31+
name='ActivityLog',
32+
fields=[
33+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
34+
('action', models.CharField(choices=[('add', 'Added'), ('edit', 'Edited'), ('delete', 'Deleted'), ('review', 'Reviewed'), ('comment', 'Commented')], max_length=50)),
35+
('description', models.TextField()),
36+
('timestamp', models.DateTimeField(auto_now_add=True)),
37+
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='activity_logs', to=settings.AUTH_USER_MODEL)),
38+
],
39+
),
40+
migrations.CreateModel(
41+
name='Contributor',
42+
fields=[
43+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
44+
('relationship_to_heritage', models.TextField()),
45+
('consent_to_share', models.BooleanField(default=False)),
46+
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='contributions', to=settings.AUTH_USER_MODEL)),
47+
],
48+
),
1749
migrations.CreateModel(
1850
name='Submission',
1951
fields=[
2052
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
2153
('title', models.CharField(max_length=255)),
2254
('description', models.TextField()),
23-
('status', models.CharField(choices=[('pending', 'Pending'), ('review', 'Review'), ('accepted', 'Accepted'), ('rejected', 'Rejected')], default='pending', max_length=10)),
55+
('status', models.CharField(choices=[('pending', 'Pending'), ('accepted', 'Accepted'), ('rejected', 'Rejected'), ('review', 'Review')], default='pending', max_length=10)),
2456
('created_at', models.DateTimeField(auto_now_add=True)),
57+
('contribution_type', models.CharField(choices=[('historical_figure', 'Historical Figure'), ('historical_event', 'Historical Event'), ('cultural_artifact', 'Cultural Artifact'), ('tradition_custom', 'Tradition/Custom'), ('other', 'Other')], default='historical_figure', max_length=50)),
58+
('contribution_data', models.JSONField(default=dict)),
2559
('contributor', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='submissions', to=settings.AUTH_USER_MODEL)),
60+
('cultural_heritage', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='heritage_data.culturalheritage')),
2661
],
2762
),
2863
migrations.CreateModel(
2964
name='Moderation',
3065
fields=[
3166
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
3267
('comment', models.TextField(blank=True)),
33-
('reviewed_at', models.DateTimeField(auto_now=True)),
68+
('reviewed_at', models.DateTimeField(auto_now_add=True)),
3469
('moderator', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='moderated_items', to=settings.AUTH_USER_MODEL)),
3570
('submission', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='moderation', to='heritage_data.submission')),
3671
],
3772
),
73+
migrations.CreateModel(
74+
name='Media',
75+
fields=[
76+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
77+
('media_type', models.CharField(choices=[('image', 'Image'), ('video', 'Video'), ('audio', 'Audio')], max_length=50)),
78+
('file', models.FileField(upload_to='heritage_media/')),
79+
('description', models.TextField(blank=True)),
80+
('submission', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='media', to='heritage_data.submission')),
81+
],
82+
),
83+
migrations.CreateModel(
84+
name='UserProfile',
85+
fields=[
86+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
87+
('first_name', models.CharField(blank=True, max_length=50)),
88+
('middle_name', models.CharField(blank=True, max_length=50)),
89+
('last_name', models.CharField(blank=True, max_length=50)),
90+
('email', models.EmailField(blank=True, max_length=254)),
91+
('birth_date', models.DateField(blank=True, null=True)),
92+
('organization', models.CharField(blank=True, max_length=255)),
93+
('position', models.CharField(blank=True, max_length=255)),
94+
('score', models.IntegerField(default=0, validators=[django.core.validators.MinValueValidator(0), django.core.validators.MaxValueValidator(100)])),
95+
('university_school', models.CharField(blank=True, max_length=255)),
96+
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='profile', to=settings.AUTH_USER_MODEL)),
97+
],
98+
),
3899
]

backend/heritage_graph/heritage_data/migrations/0002_alter_moderation_submission.py

Lines changed: 0 additions & 19 deletions
This file was deleted.

backend/heritage_graph/heritage_data/migrations/0003_alter_moderation_submission_customuser.py

Lines changed: 0 additions & 51 deletions
This file was deleted.

backend/heritage_graph/heritage_data/migrations/0004_alter_moderation_submission.py

Lines changed: 0 additions & 19 deletions
This file was deleted.

backend/heritage_graph/heritage_data/migrations/0005_delete_customuser.py

Lines changed: 0 additions & 16 deletions
This file was deleted.

backend/heritage_graph/heritage_data/migrations/0006_alter_moderation_submission.py

Lines changed: 0 additions & 19 deletions
This file was deleted.

backend/heritage_graph/heritage_data/migrations/0007_alter_submission_status.py

Lines changed: 0 additions & 18 deletions
This file was deleted.

0 commit comments

Comments
 (0)