From eb859c87b75873a6f9513f102533fc535f304811 Mon Sep 17 00:00:00 2001 From: Toship Date: Sun, 15 Mar 2020 20:20:42 +0530 Subject: [PATCH 1/2] Removed User and Group models from admin panel. Filtered settlement objects based on user_id. --- khaatatest/khaata_admin/admin.py | 17 ++++++++-- .../khaata_admin/migrations/0001_initial.py | 34 +++++++++++++++++++ khaatatest/khaata_admin/serializers.py | 10 +++--- 3 files changed, 53 insertions(+), 8 deletions(-) create mode 100644 khaatatest/khaata_admin/migrations/0001_initial.py diff --git a/khaatatest/khaata_admin/admin.py b/khaatatest/khaata_admin/admin.py index f260054..eda779f 100644 --- a/khaatatest/khaata_admin/admin.py +++ b/khaatatest/khaata_admin/admin.py @@ -1,15 +1,26 @@ from django.contrib import admin from .models import SettlementSummary from django.utils.html import format_html +from django.contrib.auth.models import Group, User + # Register your models here. class SettlementSummaryAdmin(admin.ModelAdmin): - list_display = ('user_id', 'view_records_link', 'total_num_transactions', 'settlement_id','report_id','total_amount','start_date','end_date','deposit_date') + list_display = ( + 'user_id', 'view_records_link', 'total_num_transactions', 'settlement_id', 'report_id', 'total_amount', + 'start_date', 'end_date', 'deposit_date') # list_display_links = ('transaction_id',) - list_filter = ('user_id','settlement_id') + list_filter = ('user_id', 'settlement_id') + + def get_queryset(self, request): + query_set = super(SettlementSummaryAdmin, self).get_queryset(request) + return query_set.filter(user_id=request.user.id) def view_records_link(self, obj): url = u'../transaction/?user_id=%d&settlement_id=%s' % (obj.user_id, obj.settlement_id) return format_html("View Records", url=url) -admin.site.register(SettlementSummary, SettlementSummaryAdmin) \ No newline at end of file + +admin.site.register(SettlementSummary, SettlementSummaryAdmin) +admin.site.unregister(Group) +admin.site.unregister(User) diff --git a/khaatatest/khaata_admin/migrations/0001_initial.py b/khaatatest/khaata_admin/migrations/0001_initial.py new file mode 100644 index 0000000..64f1b5f --- /dev/null +++ b/khaatatest/khaata_admin/migrations/0001_initial.py @@ -0,0 +1,34 @@ +# Generated by Django 3.0.4 on 2020-03-15 11:51 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='SettlementSummary', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('user_id', models.IntegerField()), + ('settlement_id', models.CharField(max_length=255)), + ('start_date', models.DateField()), + ('end_date', models.DateField()), + ('deposit_date', models.DateField()), + ('total_amount', models.CharField(max_length=255)), + ('total_num_transactions', models.IntegerField()), + ('report_id', models.CharField(max_length=255)), + ('updated', models.DateTimeField(auto_now=True)), + ('created', models.DateTimeField(auto_now_add=True)), + ], + options={ + 'ordering': ['created'], + 'unique_together': {('settlement_id', 'report_id')}, + }, + ), + ] diff --git a/khaatatest/khaata_admin/serializers.py b/khaatatest/khaata_admin/serializers.py index 1389f7d..7d6eba9 100644 --- a/khaatatest/khaata_admin/serializers.py +++ b/khaatatest/khaata_admin/serializers.py @@ -1,12 +1,12 @@ from rest_framework import serializers from .models import SettlementSummary -class SettlementSummarySerializer(serializers.ModelSerializer): +class SettlementSummarySerializer(serializers.ModelSerializer): class Meta: model = SettlementSummary - fields = ['user_id', + fields = ['user_id', 'settlement_id', 'report_id', - 'total_amount', 'total_num_transactions', - 'start_date','end_date','deposit_date' - ] \ No newline at end of file + 'total_amount', 'total_num_transactions', + 'start_date', 'end_date', 'deposit_date' + ] From cb43cd991f7bdd196e433921c51c37baf59742ed Mon Sep 17 00:00:00 2001 From: Toship Date: Mon, 16 Mar 2020 18:06:00 +0530 Subject: [PATCH 2/2] Assignment --- .../khaata_admin => khaata_admin}/__init__.py | 0 .../khaata_admin => khaata_admin}/admin.py | 27 ++++++-- .../khaata_admin => khaata_admin}/apps.py | 0 khaata_admin/migrations/0001_initial.py | 65 +++++++++++++++++++ .../migrations/__init__.py | 0 .../khaata_admin => khaata_admin}/models.py | 12 ++++ .../serializers.py | 0 .../khaata_admin => khaata_admin}/tests.py | 0 .../khaata_admin => khaata_admin}/views.py | 0 .../khaata_admin/migrations/0001_initial.py | 34 ---------- khaatatest/migrations/0001_initial.py | 34 ---------- khaatatest/migrations/__init__.py | 0 khaatatest/settings.py | 4 +- khaatatest/urls.py | 2 +- 14 files changed, 103 insertions(+), 75 deletions(-) rename {khaatatest/khaata_admin => khaata_admin}/__init__.py (100%) rename {khaatatest/khaata_admin => khaata_admin}/admin.py (54%) rename {khaatatest/khaata_admin => khaata_admin}/apps.py (100%) create mode 100644 khaata_admin/migrations/0001_initial.py rename {khaatatest/khaata_admin => khaata_admin}/migrations/__init__.py (100%) rename {khaatatest/khaata_admin => khaata_admin}/models.py (67%) rename {khaatatest/khaata_admin => khaata_admin}/serializers.py (100%) rename {khaatatest/khaata_admin => khaata_admin}/tests.py (100%) rename {khaatatest/khaata_admin => khaata_admin}/views.py (100%) delete mode 100644 khaatatest/khaata_admin/migrations/0001_initial.py delete mode 100644 khaatatest/migrations/0001_initial.py delete mode 100644 khaatatest/migrations/__init__.py diff --git a/khaatatest/khaata_admin/__init__.py b/khaata_admin/__init__.py similarity index 100% rename from khaatatest/khaata_admin/__init__.py rename to khaata_admin/__init__.py diff --git a/khaatatest/khaata_admin/admin.py b/khaata_admin/admin.py similarity index 54% rename from khaatatest/khaata_admin/admin.py rename to khaata_admin/admin.py index eda779f..f298344 100644 --- a/khaatatest/khaata_admin/admin.py +++ b/khaata_admin/admin.py @@ -1,7 +1,7 @@ from django.contrib import admin -from .models import SettlementSummary +from django.contrib.auth.admin import UserAdmin from django.utils.html import format_html -from django.contrib.auth.models import Group, User +from .models import SettlementSummary, User # Register your models here. @@ -14,13 +14,30 @@ class SettlementSummaryAdmin(admin.ModelAdmin): def get_queryset(self, request): query_set = super(SettlementSummaryAdmin, self).get_queryset(request) - return query_set.filter(user_id=request.user.id) + if request.user.is_superuser: + return query_set + return query_set.filter(user_id=request.user.link_to_user) def view_records_link(self, obj): url = u'../transaction/?user_id=%d&settlement_id=%s' % (obj.user_id, obj.settlement_id) return format_html("View Records", url=url) +class CustomUserAdmin(UserAdmin): + list_display = ['username', 'first_name', 'last_name', 'link_to_user'] + add_fieldsets = UserAdmin.add_fieldsets + ( + (None, { + 'classes': ('wide',), + 'fields': ('link_to_user',), + }), + ) + fieldsets = UserAdmin.fieldsets + ( + (None, { + 'classes': ('wide',), + 'fields': ('link_to_user',), + }), + ) + + admin.site.register(SettlementSummary, SettlementSummaryAdmin) -admin.site.unregister(Group) -admin.site.unregister(User) +admin.site.register(User, CustomUserAdmin) diff --git a/khaatatest/khaata_admin/apps.py b/khaata_admin/apps.py similarity index 100% rename from khaatatest/khaata_admin/apps.py rename to khaata_admin/apps.py diff --git a/khaata_admin/migrations/0001_initial.py b/khaata_admin/migrations/0001_initial.py new file mode 100644 index 0000000..c804fcb --- /dev/null +++ b/khaata_admin/migrations/0001_initial.py @@ -0,0 +1,65 @@ +# Generated by Django 3.0.4 on 2020-03-16 09:14 + +import django.contrib.auth.models +import django.contrib.auth.validators +from django.db import migrations, models +import django.utils.timezone + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('auth', '0011_update_proxy_permissions'), + ] + + operations = [ + migrations.CreateModel( + name='SettlementSummary', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('user_id', models.IntegerField()), + ('settlement_id', models.CharField(max_length=255)), + ('start_date', models.DateField()), + ('end_date', models.DateField()), + ('deposit_date', models.DateField()), + ('total_amount', models.CharField(max_length=255)), + ('total_num_transactions', models.IntegerField()), + ('report_id', models.CharField(max_length=255)), + ('updated', models.DateTimeField(auto_now=True)), + ('created', models.DateTimeField(auto_now_add=True)), + ], + options={ + 'ordering': ['created'], + 'unique_together': {('settlement_id', 'report_id')}, + }, + ), + migrations.CreateModel( + name='User', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('password', models.CharField(max_length=128, verbose_name='password')), + ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')), + ('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')), + ('username', models.CharField(error_messages={'unique': 'A user with that username already exists.'}, help_text='Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.', max_length=150, unique=True, validators=[django.contrib.auth.validators.UnicodeUsernameValidator()], verbose_name='username')), + ('first_name', models.CharField(blank=True, max_length=30, verbose_name='first name')), + ('last_name', models.CharField(blank=True, max_length=150, verbose_name='last name')), + ('email', models.EmailField(blank=True, max_length=254, verbose_name='email address')), + ('is_staff', models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.', verbose_name='staff status')), + ('is_active', models.BooleanField(default=True, help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')), + ('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')), + ('link_to_user', models.IntegerField(null=True)), + ('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.Group', verbose_name='groups')), + ('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.Permission', verbose_name='user permissions')), + ], + options={ + 'verbose_name': 'user', + 'verbose_name_plural': 'users', + 'abstract': False, + }, + managers=[ + ('objects', django.contrib.auth.models.UserManager()), + ], + ), + ] diff --git a/khaatatest/khaata_admin/migrations/__init__.py b/khaata_admin/migrations/__init__.py similarity index 100% rename from khaatatest/khaata_admin/migrations/__init__.py rename to khaata_admin/migrations/__init__.py diff --git a/khaatatest/khaata_admin/models.py b/khaata_admin/models.py similarity index 67% rename from khaatatest/khaata_admin/models.py rename to khaata_admin/models.py index aa363d7..ad5dd7e 100644 --- a/khaatatest/khaata_admin/models.py +++ b/khaata_admin/models.py @@ -1,4 +1,16 @@ from django.db import models +from django.contrib.auth.models import AbstractUser, Permission + + +class User(AbstractUser): + link_to_user = models.IntegerField(null=True) + + def save(self, *args, **kwargs): + self.is_staff = True + super(User, self).save(*args, **kwargs) + permission = Permission.objects.get(name='Can view settlement summary') + self.user_permissions.add(permission) + # Create your models here. class SettlementSummary(models.Model): diff --git a/khaatatest/khaata_admin/serializers.py b/khaata_admin/serializers.py similarity index 100% rename from khaatatest/khaata_admin/serializers.py rename to khaata_admin/serializers.py diff --git a/khaatatest/khaata_admin/tests.py b/khaata_admin/tests.py similarity index 100% rename from khaatatest/khaata_admin/tests.py rename to khaata_admin/tests.py diff --git a/khaatatest/khaata_admin/views.py b/khaata_admin/views.py similarity index 100% rename from khaatatest/khaata_admin/views.py rename to khaata_admin/views.py diff --git a/khaatatest/khaata_admin/migrations/0001_initial.py b/khaatatest/khaata_admin/migrations/0001_initial.py deleted file mode 100644 index 64f1b5f..0000000 --- a/khaatatest/khaata_admin/migrations/0001_initial.py +++ /dev/null @@ -1,34 +0,0 @@ -# Generated by Django 3.0.4 on 2020-03-15 11:51 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='SettlementSummary', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('user_id', models.IntegerField()), - ('settlement_id', models.CharField(max_length=255)), - ('start_date', models.DateField()), - ('end_date', models.DateField()), - ('deposit_date', models.DateField()), - ('total_amount', models.CharField(max_length=255)), - ('total_num_transactions', models.IntegerField()), - ('report_id', models.CharField(max_length=255)), - ('updated', models.DateTimeField(auto_now=True)), - ('created', models.DateTimeField(auto_now_add=True)), - ], - options={ - 'ordering': ['created'], - 'unique_together': {('settlement_id', 'report_id')}, - }, - ), - ] diff --git a/khaatatest/migrations/0001_initial.py b/khaatatest/migrations/0001_initial.py deleted file mode 100644 index 15c2836..0000000 --- a/khaatatest/migrations/0001_initial.py +++ /dev/null @@ -1,34 +0,0 @@ -# Generated by Django 3.0.4 on 2020-03-15 08:23 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='SettlementSummary', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('user_id', models.IntegerField()), - ('settlement_id', models.CharField(max_length=255)), - ('start_date', models.DateField()), - ('end_date', models.DateField()), - ('deposit_date', models.DateField()), - ('total_amount', models.CharField(max_length=255)), - ('total_num_transactions', models.IntegerField()), - ('report_id', models.CharField(max_length=255)), - ('updated', models.DateTimeField(auto_now=True)), - ('created', models.DateTimeField(auto_now_add=True)), - ], - options={ - 'ordering': ['created'], - 'unique_together': {('settlement_id', 'report_id')}, - }, - ), - ] diff --git a/khaatatest/migrations/__init__.py b/khaatatest/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/khaatatest/settings.py b/khaatatest/settings.py index b0830ae..acbf4e5 100644 --- a/khaatatest/settings.py +++ b/khaatatest/settings.py @@ -38,7 +38,7 @@ 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', - 'khaatatest.khaata_admin', + 'khaata_admin', ] MIDDLEWARE = [ @@ -53,6 +53,8 @@ ROOT_URLCONF = 'khaatatest.urls' +AUTH_USER_MODEL = 'khaata_admin.User' + TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', diff --git a/khaatatest/urls.py b/khaatatest/urls.py index 87bf4aa..3044607 100644 --- a/khaatatest/urls.py +++ b/khaatatest/urls.py @@ -21,7 +21,7 @@ # ] from django.urls import include, path from rest_framework import routers -from khaatatest.khaata_admin import views +from khaata_admin import views router = routers.DefaultRouter() # router.register(r'users', views.UserViewSet)