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/khaata_admin/admin.py b/khaata_admin/admin.py new file mode 100644 index 0000000..f298344 --- /dev/null +++ b/khaata_admin/admin.py @@ -0,0 +1,43 @@ +from django.contrib import admin +from django.contrib.auth.admin import UserAdmin +from django.utils.html import format_html +from .models import SettlementSummary, 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_links = ('transaction_id',) + list_filter = ('user_id', 'settlement_id') + + def get_queryset(self, request): + query_set = super(SettlementSummaryAdmin, self).get_queryset(request) + 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.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 58% rename from khaatatest/khaata_admin/serializers.py rename to khaata_admin/serializers.py index 1389f7d..7d6eba9 100644 --- a/khaatatest/khaata_admin/serializers.py +++ b/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' + ] 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/admin.py b/khaatatest/khaata_admin/admin.py deleted file mode 100644 index f260054..0000000 --- a/khaatatest/khaata_admin/admin.py +++ /dev/null @@ -1,15 +0,0 @@ -from django.contrib import admin -from .models import SettlementSummary -from django.utils.html import format_html - -# 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_links = ('transaction_id',) - list_filter = ('user_id','settlement_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 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)